diff options
author | Ash Hughes <spirit.returned@googlemail.com> | 2013-03-18 18:51:24 +0000 |
---|---|---|
committer | Ash Hughes <spirit.returned@googlemail.com> | 2013-03-18 18:51:24 +0000 |
commit | 2d856c5f0e4f0ba9e1973ad85fde14ad06a1133c (patch) | |
tree | 047268e97e2469f53015381d6e5ddd782ecaf5b3 /OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/PgpHelper.java | |
parent | 12d6cfefd7f36d90780d0eea6863311dd5c2ae2d (diff) | |
download | open-keychain-2d856c5f0e4f0ba9e1973ad85fde14ad06a1133c.tar.gz open-keychain-2d856c5f0e4f0ba9e1973ad85fde14ad06a1133c.tar.bz2 open-keychain-2d856c5f0e4f0ba9e1973ad85fde14ad06a1133c.zip |
use db to mark keys which can certify
Diffstat (limited to 'OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/PgpHelper.java')
-rw-r--r-- | OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/PgpHelper.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/PgpHelper.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/PgpHelper.java index bb5f8eccd..0ff957b66 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/PgpHelper.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/PgpHelper.java @@ -333,6 +333,36 @@ public class PgpHelper { return isSigningKey(key.getPublicKey()); } + @SuppressWarnings("unchecked") + public static boolean isCertificationKey(PGPPublicKey key) { + if (key.getVersion() <= 3) { + return true; + } + + for (PGPSignature sig : new IterableIterator<PGPSignature>(key.getSignatures())) { + if (key.isMasterKey() && sig.getKeyID() != key.getKeyID()) { + continue; + } + PGPSignatureSubpacketVector hashed = sig.getHashedSubPackets(); + + if (hashed != null && (hashed.getKeyFlags() & KeyFlags.CERTIFY_OTHER) != 0) { + return true; + } + + PGPSignatureSubpacketVector unhashed = sig.getUnhashedSubPackets(); + + if (unhashed != null && (unhashed.getKeyFlags() & KeyFlags.CERTIFY_OTHER) != 0) { + return true; + } + } + + return false; + } + + public static boolean isCertificationKey(PGPSecretKey key) { + return isCertificationKey(key.getPublicKey()); + } + public static String getAlgorithmInfo(PGPPublicKey key) { return getAlgorithmInfo(key.getAlgorithm(), key.getBitStrength()); } |