aboutsummaryrefslogtreecommitdiffstats
path: root/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/PgpHelper.java
diff options
context:
space:
mode:
authorAsh Hughes <spirit.returned@googlemail.com>2013-03-18 18:51:24 +0000
committerAsh Hughes <spirit.returned@googlemail.com>2013-03-18 18:51:24 +0000
commit2d856c5f0e4f0ba9e1973ad85fde14ad06a1133c (patch)
tree047268e97e2469f53015381d6e5ddd782ecaf5b3 /OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/PgpHelper.java
parent12d6cfefd7f36d90780d0eea6863311dd5c2ae2d (diff)
downloadopen-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.java30
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());
}