diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2014-09-20 00:12:50 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2014-09-20 00:14:33 +0200 |
commit | 344bc1736deabd343191080f78a9865283ea4703 (patch) | |
tree | 2631e013e9d8a4a551b7d4da33fe8597096efa30 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java | |
parent | 6536ca825bd916d01f8617d9144a3576bb6a75e6 (diff) | |
download | open-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.java | 15 |
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(); } } |