From 344bc1736deabd343191080f78a9865283ea4703 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 20 Sep 2014 00:12:50 +0200 Subject: respect user id revocation signatures Closes #836 --- .../sufficientlysecure/keychain/pgp/WrappedSignature.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java') 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(); } } -- cgit v1.2.3