From cb11c0ec848cf0f0d7d87871364538d957c982db Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Thu, 2 Jun 2016 15:49:04 +0200 Subject: [PATCH] make OpenPgpSignatureResult immutable --- .../pgp/OpenPgpSignatureResultBuilder.java | 37 ++++++------------- .../keychain/remote/OpenPgpService.java | 9 ++--- extern/openpgp-api-lib | 2 +- 3 files changed, 16 insertions(+), 32 deletions(-) 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 99b44e848..9403a2744 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java @@ -97,10 +97,6 @@ public class OpenPgpSignatureResultBuilder { this.mConfirmedUserIds = confirmedUserIds; } - public boolean isValidSignature() { - return mValidSignature; - } - public boolean isInsecure() { return mInsecure; } @@ -147,52 +143,41 @@ public class OpenPgpSignatureResultBuilder { } public OpenPgpSignatureResult build() { - OpenPgpSignatureResult result = new OpenPgpSignatureResult(); - if (!mSignatureAvailable) { Log.d(Constants.TAG, "RESULT_NO_SIGNATURE"); - result.setResult(OpenPgpSignatureResult.RESULT_NO_SIGNATURE); - return result; + return OpenPgpSignatureResult.createWithNoSignature(); } if (!mKnownKey) { - result.setKeyId(mKeyId); - Log.d(Constants.TAG, "RESULT_KEY_MISSING"); - result.setResult(OpenPgpSignatureResult.RESULT_KEY_MISSING); - return result; + return OpenPgpSignatureResult.createWithKeyMissing(mKeyId); } if (!mValidSignature) { Log.d(Constants.TAG, "RESULT_INVALID_SIGNATURE"); - result.setResult(OpenPgpSignatureResult.RESULT_INVALID_SIGNATURE); - return result; + return OpenPgpSignatureResult.createWithInvalidSignature(); } - result.setKeyId(mKeyId); - result.setPrimaryUserId(mPrimaryUserId); - result.setUserIds(mUserIds); - result.setConfirmedUserIds(mConfirmedUserIds); - result.setSenderResult(mSenderStatus); - + int signatureStatus; if (mIsKeyRevoked) { Log.d(Constants.TAG, "RESULT_INVALID_KEY_REVOKED"); - result.setResult(OpenPgpSignatureResult.RESULT_INVALID_KEY_REVOKED); + signatureStatus = OpenPgpSignatureResult.RESULT_INVALID_KEY_REVOKED; } else if (mIsKeyExpired) { Log.d(Constants.TAG, "RESULT_INVALID_KEY_EXPIRED"); - result.setResult(OpenPgpSignatureResult.RESULT_INVALID_KEY_EXPIRED); + signatureStatus = OpenPgpSignatureResult.RESULT_INVALID_KEY_EXPIRED; } else if (mInsecure) { Log.d(Constants.TAG, "RESULT_INVALID_INSECURE"); - result.setResult(OpenPgpSignatureResult.RESULT_INVALID_INSECURE); + signatureStatus = OpenPgpSignatureResult.RESULT_INVALID_INSECURE; } else if (mIsSignatureKeyCertified) { Log.d(Constants.TAG, "RESULT_VALID_CONFIRMED"); - result.setResult(OpenPgpSignatureResult.RESULT_VALID_CONFIRMED); + signatureStatus = OpenPgpSignatureResult.RESULT_VALID_CONFIRMED; } else { Log.d(Constants.TAG, "RESULT_VALID_UNCONFIRMED"); - result.setResult(OpenPgpSignatureResult.RESULT_VALID_UNCONFIRMED); + signatureStatus = OpenPgpSignatureResult.RESULT_VALID_UNCONFIRMED; } - return result; + return OpenPgpSignatureResult.createWithValidSignature( + signatureStatus, mPrimaryUserId, mKeyId, mUserIds, mConfirmedUserIds, mSenderStatus); } public void setSenderAddress(String senderAddress) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java index b1454eea8..cd941ad72 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java @@ -514,8 +514,6 @@ public class OpenPgpService extends Service { OpenPgpSignatureResult signatureResult = pgpResult.getSignatureResult(); - result.putExtra(OpenPgpApi.RESULT_SIGNATURE, signatureResult); - switch (signatureResult.getResult()) { case OpenPgpSignatureResult.RESULT_KEY_MISSING: { // If signature key is missing we return a PendingIntent to retrieve the key @@ -545,14 +543,14 @@ public class OpenPgpService extends Service { // RESULT_INVALID_KEY_REVOKED and RESULT_INVALID_KEY_EXPIRED have been added in version 5 if (signatureResult.getResult() == OpenPgpSignatureResult.RESULT_INVALID_KEY_REVOKED || signatureResult.getResult() == OpenPgpSignatureResult.RESULT_INVALID_KEY_EXPIRED) { - signatureResult.setResult(OpenPgpSignatureResult.RESULT_INVALID_SIGNATURE); + signatureResult = OpenPgpSignatureResult.createWithInvalidSignature(); } } if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) < 8) { // RESULT_INVALID_INSECURE has been added in version 8, fallback to RESULT_INVALID_SIGNATURE if (signatureResult.getResult() == OpenPgpSignatureResult.RESULT_INVALID_INSECURE) { - signatureResult.setResult(OpenPgpSignatureResult.RESULT_INVALID_SIGNATURE); + signatureResult = OpenPgpSignatureResult.createWithInvalidSignature(); } // RESULT_NO_SIGNATURE has been added in version 8, before the signatureResult was null @@ -568,7 +566,7 @@ public class OpenPgpService extends Service { if (decryptionResult.getResult() == OpenPgpDecryptionResult.RESULT_NOT_ENCRYPTED && signatureResult.getResult() != OpenPgpSignatureResult.RESULT_NO_SIGNATURE) { // noinspection deprecation - signatureResult.setSignatureOnly(true); + signatureResult = signatureResult.withSignatureOnlyFlag(); } // case RESULT_INSECURE, simply accept as a fallback like in previous API versions @@ -597,6 +595,7 @@ public class OpenPgpService extends Service { result.putExtra(OpenPgpApi.RESULT_CHARSET, charset); } + result.putExtra(OpenPgpApi.RESULT_SIGNATURE, signatureResult); result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_SUCCESS); return result; } else { diff --git a/extern/openpgp-api-lib b/extern/openpgp-api-lib index 84fdd0c37..4be4e488f 160000 --- a/extern/openpgp-api-lib +++ b/extern/openpgp-api-lib @@ -1 +1 @@ -Subproject commit 84fdd0c37dc2ef6e303a3488cc412c8d2cc4fd28 +Subproject commit 4be4e488f29fa6e8b953357d047b090537703831