aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-09-20 00:12:50 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-09-20 00:14:33 +0200
commit344bc1736deabd343191080f78a9865283ea4703 (patch)
tree2631e013e9d8a4a551b7d4da33fe8597096efa30 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java
parent6536ca825bd916d01f8617d9144a3576bb6a75e6 (diff)
downloadopen-keychain-344bc1736deabd343191080f78a9865283ea4703.tar.gz
open-keychain-344bc1736deabd343191080f78a9865283ea4703.tar.bz2
open-keychain-344bc1736deabd343191080f78a9865283ea4703.zip
respect user id revocation signatures
Closes #836
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java15
1 files changed, 14 insertions, 1 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java
index 4d4c0e5d1..c0bc7769b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java
@@ -20,6 +20,8 @@ package org.sufficientlysecure.keychain.pgp;
import org.spongycastle.bcpg.SignatureSubpacket;
import org.spongycastle.bcpg.SignatureSubpacketTags;
+import org.spongycastle.bcpg.sig.Exportable;
+import org.spongycastle.bcpg.sig.Revocable;
import org.spongycastle.bcpg.sig.RevocationReason;
import org.spongycastle.openpgp.PGPException;
import org.spongycastle.openpgp.PGPObjectFactory;
@@ -218,12 +220,23 @@ public class WrappedSignature {
return new WrappedSignature(signatures.get(0));
}
+ /** Returns true if this certificate is revocable in general. */
+ public boolean isRevokable () {
+ // If nothing is specified, the packet is considered revocable
+ if (mSig.getHashedSubPackets() == null
+ || !mSig.getHashedSubPackets().hasSubpacket(SignatureSubpacketTags.REVOCABLE)) {
+ return true;
+ }
+ SignatureSubpacket p = mSig.getHashedSubPackets().getSubpacket(SignatureSubpacketTags.REVOCABLE);
+ return ((Revocable) p).isRevocable();
+ }
+
public boolean isLocal() {
if (mSig.getHashedSubPackets() == null
|| !mSig.getHashedSubPackets().hasSubpacket(SignatureSubpacketTags.EXPORTABLE)) {
return false;
}
SignatureSubpacket p = mSig.getHashedSubPackets().getSubpacket(SignatureSubpacketTags.EXPORTABLE);
- return p.getData()[0] == 0;
+ return ((Exportable) p).isExportable();
}
}