From a7392eb99d4393382f8b0553853fd1a163403fba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Wed, 12 Aug 2015 15:58:41 +0200 Subject: API: Better fallback for OpenPgpDecryptionResult --- .../keychain/remote/OpenPgpService.java | 26 +++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java') 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 86c4f3597..ea016c657 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java @@ -594,11 +594,27 @@ public class OpenPgpService extends RemoteService { result.putExtra(OpenPgpApi.RESULT_SIGNATURE, (Parcelable[]) null); } - OpenPgpDecryptionResult decryptionResult = pgpResult.getDecryptionResult(); - if (decryptionResult.getResult() != OpenPgpDecryptionResult.RESULT_ENCRYPTED - && signatureResult.getResult() != OpenPgpSignatureResult.RESULT_NO_SIGNATURE) { - // not encrypted and signed, set deprecated signatureOnly variable - signatureResult.setSignatureOnly(true); + // OpenPgpDecryptionResult does not exist in API < 8 + { + OpenPgpDecryptionResult decryptionResult = pgpResult.getDecryptionResult(); + + // case RESULT_NOT_ENCRYPTED, but a signature, fallback to deprecated signatureOnly variable + if (decryptionResult.getResult() == OpenPgpDecryptionResult.RESULT_NOT_ENCRYPTED + && signatureResult.getResult() != OpenPgpSignatureResult.RESULT_NO_SIGNATURE) { + signatureResult.setSignatureOnly(true); + } + + // case RESULT_INSECURE, fallback to an error + if (decryptionResult.getResult() == OpenPgpDecryptionResult.RESULT_INSECURE) { + Intent resultError = new Intent(); + resultError.putExtra(OpenPgpApi.RESULT_ERROR, new OpenPgpError(OpenPgpError.GENERIC_ERROR, + "Insecure encryption: An outdated algorithm has been used!")); + resultError.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_ERROR); + return resultError; + } + + // case RESULT_ENCRYPTED + // nothing to do! } } -- cgit v1.2.3