From bb0d04de82895adca2f701446a813fc4f0efdd42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sun, 7 Sep 2014 20:09:36 +0200 Subject: Fix for user ids in API --- .../keychain/pgp/CanonicalizedKeyRing.java | 5 +++++ .../pgp/OpenPgpSignatureResultBuilder.java | 22 ++++++++++++++++++ .../keychain/pgp/PgpDecryptVerify.java | 26 ++-------------------- extern/openpgp-api-lib | 2 +- 4 files changed, 30 insertions(+), 25 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java index 8076a14f3..0d3e5676a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java @@ -24,6 +24,7 @@ import org.sufficientlysecure.keychain.util.IterableIterator; import java.io.IOException; import java.io.OutputStream; +import java.util.ArrayList; /** A generic wrapped PGPKeyRing object. * @@ -58,6 +59,10 @@ public abstract class CanonicalizedKeyRing extends KeyRing { return getPublicKey().getPrimaryUserIdWithFallback(); } + public ArrayList getUnorderedUserIds() { + return getPublicKey().getUnorderedUserIds(); + } + public boolean isRevoked() throws PgpGeneralException { // Is the master key revoked? return getRing().getPublicKey().isRevoked(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java index ab88d1b4b..3d41c928b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java @@ -19,6 +19,7 @@ package org.sufficientlysecure.keychain.pgp; import org.openintents.openpgp.OpenPgpSignatureResult; import org.sufficientlysecure.keychain.Constants; +import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException; import org.sufficientlysecure.keychain.util.Log; import java.util.ArrayList; @@ -86,6 +87,27 @@ public class OpenPgpSignatureResultBuilder { return mValidSignature; } + public void initValid(CanonicalizedPublicKeyRing signingRing, + CanonicalizedPublicKey signingKey) { + setSignatureAvailable(true); + setKnownKey(true); + + // from RING + setKeyId(signingRing.getMasterKeyId()); + try { + setPrimaryUserId(signingRing.getPrimaryUserIdWithFallback()); + } catch (PgpGeneralException e) { + Log.d(Constants.TAG, "No primary user id in keyring with master key id " + signingRing.getMasterKeyId()); + } + setSignatureKeyCertified(signingRing.getVerified() > 0); + Log.d(Constants.TAG, "signingRing.getUnorderedUserIds(): " + signingRing.getUnorderedUserIds()); + setUserIds(signingRing.getUnorderedUserIds()); + + // from KEY + setKeyExpired(signingKey.isExpired()); + setKeyRevoked(signingKey.isRevoked()); + } + public OpenPgpSignatureResult build() { if (mSignatureAvailable) { OpenPgpSignatureResult result = new OpenPgpSignatureResult(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java index e7bb6d7b1..cb077c55c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java @@ -421,18 +421,7 @@ public class PgpDecryptVerify { // key found in our database! signature = sigList.get(signatureIndex); - signatureResultBuilder.setSignatureAvailable(true); - signatureResultBuilder.setKnownKey(true); - signatureResultBuilder.setKeyId(signingRing.getMasterKeyId()); - try { - signatureResultBuilder.setPrimaryUserId(signingRing.getPrimaryUserIdWithFallback()); - } catch (PgpGeneralException e) { - Log.d(Constants.TAG, "No primary user id in keyring with master key id " + signingRing.getMasterKeyId()); - } - signatureResultBuilder.setSignatureKeyCertified(signingRing.getVerified() > 0); - signatureResultBuilder.setKeyExpired(signingKey.isExpired()); - signatureResultBuilder.setKeyRevoked(signingKey.isRevoked()); - signatureResultBuilder.setUserIds(signingKey.getUnorderedUserIds()); + signatureResultBuilder.initValid(signingRing, signingKey); JcaPGPContentVerifierBuilderProvider contentVerifierBuilderProvider = new JcaPGPContentVerifierBuilderProvider() @@ -658,18 +647,7 @@ public class PgpDecryptVerify { // key found in our database! signature = sigList.get(signatureIndex); - signatureResultBuilder.setSignatureAvailable(true); - signatureResultBuilder.setKnownKey(true); - signatureResultBuilder.setKeyId(signingRing.getMasterKeyId()); - try { - signatureResultBuilder.setPrimaryUserId(signingRing.getPrimaryUserIdWithFallback()); - } catch (PgpGeneralException e) { - Log.d(Constants.TAG, "No primary user id in key with master key id " + signingRing.getMasterKeyId()); - } - signatureResultBuilder.setSignatureKeyCertified(signingRing.getVerified() > 0); - signatureResultBuilder.setKeyExpired(signingKey.isExpired()); - signatureResultBuilder.setKeyRevoked(signingKey.isRevoked()); - signatureResultBuilder.setUserIds(signingKey.getUnorderedUserIds()); + signatureResultBuilder.initValid(signingRing, signingKey); JcaPGPContentVerifierBuilderProvider contentVerifierBuilderProvider = new JcaPGPContentVerifierBuilderProvider() diff --git a/extern/openpgp-api-lib b/extern/openpgp-api-lib index ac927df10..2cebac6a2 160000 --- a/extern/openpgp-api-lib +++ b/extern/openpgp-api-lib @@ -1 +1 @@ -Subproject commit ac927df10abfd73b48d5971dee91e6d1bfc144b2 +Subproject commit 2cebac6a23e55627131947ba4d515c781fb5d31c -- cgit v1.2.3