From 935af80d148da0d505b76cd037f0dc2ec1380f89 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sun, 29 Nov 2020 19:06:49 +0100 Subject: [PATCH] Add some more utility methods --- .../org/pgpainless/key/util/KeyRingUtils.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/util/KeyRingUtils.java b/pgpainless-core/src/main/java/org/pgpainless/key/util/KeyRingUtils.java index 5ececa47..beedd521 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/util/KeyRingUtils.java +++ b/pgpainless-core/src/main/java/org/pgpainless/key/util/KeyRingUtils.java @@ -18,8 +18,10 @@ package org.pgpainless.key.util; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.NoSuchElementException; import org.bouncycastle.openpgp.PGPException; +import org.bouncycastle.openpgp.PGPKeyRing; import org.bouncycastle.openpgp.PGPPrivateKey; import org.bouncycastle.openpgp.PGPPublicKey; import org.bouncycastle.openpgp.PGPPublicKeyRing; @@ -30,6 +32,38 @@ import org.pgpainless.key.protection.SecretKeyRingProtector; public class KeyRingUtils { + public static PGPSecretKey requirePrimarySecretKeyFrom(PGPSecretKeyRing secretKeys) { + PGPSecretKey primarySecretKey = getPrimarySecretKeyFrom(secretKeys); + if (primarySecretKey == null) { + throw new NoSuchElementException("Provided PGPSecretKeyRing has no primary secret key."); + } + return primarySecretKey; + } + + public static PGPSecretKey getPrimarySecretKeyFrom(PGPSecretKeyRing secretKeys) { + PGPSecretKey secretKey = secretKeys.getSecretKey(); + if (secretKey.isMasterKey()) { + return secretKey; + } + return null; + } + + public static PGPPublicKey requirePrimaryPublicKeyFrom(PGPKeyRing keyRing) { + PGPPublicKey primaryPublicKey = getPrimaryPublicKeyFrom(keyRing); + if (primaryPublicKey == null) { + throw new NoSuchElementException("Provided PGPKeyRing has no primary public key."); + } + return primaryPublicKey; + } + + public static PGPPublicKey getPrimaryPublicKeyFrom(PGPKeyRing keyRing) { + PGPPublicKey primaryPublicKey = keyRing.getPublicKey(); + if (primaryPublicKey.isMasterKey()) { + return primaryPublicKey; + } + return null; + } + public static PGPPublicKeyRing publicKeyRingFrom(PGPSecretKeyRing secretKeys) { List publicKeyList = new ArrayList<>(); Iterator publicKeyIterator = secretKeys.getPublicKeys();