aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java26
1 files changed, 21 insertions, 5 deletions
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!
}
}