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 a116ea665..a6a15d2e9 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java
@@ -78,7 +78,7 @@ public class OpenPgpSignatureResultBuilder {
if (mKnownKey) {
if (mValidSignature) {
result.setKeyId(mKeyId);
- result.setUserId(mUserId);
+ result.setPrimaryUserId(mUserId);
if (mIsSignatureKeyCertified) {
Log.d(Constants.TAG, "SIGNATURE_SUCCESS_CERTIFIED");
@@ -94,8 +94,8 @@ public class OpenPgpSignatureResultBuilder {
} else {
result.setKeyId(mKeyId);
- Log.d(Constants.TAG, "SIGNATURE_UNKNOWN_PUB_KEY");
- result.setStatus(OpenPgpSignatureResult.SIGNATURE_UNKNOWN_PUB_KEY);
+ Log.d(Constants.TAG, "SIGNATURE_KEY_MISSING");
+ result.setStatus(OpenPgpSignatureResult.SIGNATURE_KEY_MISSING);
}
return result;
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 20dfac36d..cc9912c30 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
@@ -31,7 +31,6 @@ import org.openintents.openpgp.OpenPgpError;
import org.openintents.openpgp.OpenPgpSignatureResult;
import org.openintents.openpgp.util.OpenPgpApi;
import org.openkeychain.nfc.NfcActivity;
-import org.spongycastle.util.Arrays;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.PgpDecryptVerify;
@@ -447,7 +446,15 @@ public class OpenPgpService extends RemoteService {
if (signatureResult != null) {
result.putExtra(OpenPgpApi.RESULT_SIGNATURE, signatureResult);
- if (signatureResult.getStatus() == OpenPgpSignatureResult.SIGNATURE_UNKNOWN_PUB_KEY) {
+ if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) < 5) {
+ // SIGNATURE_KEY_REVOKED and SIGNATURE_KEY_EXPIRED have been added in version 5
+ if (signatureResult.getStatus() == OpenPgpSignatureResult.SIGNATURE_KEY_REVOKED
+ || signatureResult.getStatus() == OpenPgpSignatureResult.SIGNATURE_KEY_EXPIRED) {
+ signatureResult.setStatus(OpenPgpSignatureResult.SIGNATURE_ERROR);
+ }
+ }
+
+ if (signatureResult.getStatus() == OpenPgpSignatureResult.SIGNATURE_KEY_MISSING) {
// If signature is unknown we return an _additional_ PendingIntent
// to retrieve the missing key
Intent intent = new Intent(getBaseContext(), ImportKeysActivity.class);
@@ -577,9 +584,10 @@ public class OpenPgpService extends RemoteService {
// version code is required and needs to correspond to version code of service!
// History of versions in org.openintents.openpgp.util.OpenPgpApi
- // we support 3 and 4
+ // we support 3, 4, 5
if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 3
- && data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 4) {
+ && data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 4
+ && data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 5) {
Intent result = new Intent();
OpenPgpError error = new OpenPgpError
(OpenPgpError.INCOMPATIBLE_API_VERSIONS, "Incompatible API versions!\n"
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
index 211a20ec8..9abe48d64 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
@@ -110,7 +110,7 @@ public abstract class DecryptFragment extends Fragment {
mSignatureKeyId = signatureResult.getKeyId();
- String userId = signatureResult.getUserId();
+ String userId = signatureResult.getPrimaryUserId();
String[] userIdSplit = KeyRing.splitUserId(userId);
if (userIdSplit[0] != null) {
mUserId.setText(userIdSplit[0]);
@@ -153,7 +153,7 @@ public abstract class DecryptFragment extends Fragment {
break;
}
- case OpenPgpSignatureResult.SIGNATURE_UNKNOWN_PUB_KEY: {
+ case OpenPgpSignatureResult.SIGNATURE_KEY_MISSING: {
if (signatureResult.isSignatureOnly()) {
mResultText.setText(R.string.decrypt_result_signature_unknown_pub_key);
} else {
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index 2a2d18c0d..b451939cf 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -596,7 +596,7 @@
Canonicalizing public keyring %s
Canonicalizing secret keyring %s
- This is an OpenPGP version 3 key, which have been deprecated and are no longer supported!
+ This is an OpenPGP version 3 key, which has been deprecated and is no longer supported!
Keyring has no valid user ids!
The master key uses an unknown (%s) algorithm!
Processing master key
@@ -604,7 +604,7 @@
Removing keyring revocation certificate with "local" flag
Removing keyring revocation certificate with future timestamp
Removing master key certificate of unknown type (%s)
- Removing user id certification in bad position
+ Removing user id certificate in bad position
Removing bad keyring revocation certificate
Removing redundant keyring revocation certificate
Processing subkey %s
@@ -644,7 +644,7 @@
Removing outdated revocation certificate for user id "%s"
No valid self-certificate found for user id %s, removing from ring
Removing invalid user id %s
- Removing duplicate user id "%s". The secret key contained two of them. This may result in missing certifications!
+ Removing duplicate user id "%s". The secret key contained two of them. This may result in missing certificates!
New public subkey found, but secret subkey dummy generation is not supported!
diff --git a/extern/openpgp-api-lib b/extern/openpgp-api-lib
index 1d0eeef04..8b36d2866 160000
--- a/extern/openpgp-api-lib
+++ b/extern/openpgp-api-lib
@@ -1 +1 @@
-Subproject commit 1d0eeef047c4938f4e25bc06f7e92e83aa46a4c4
+Subproject commit 8b36d286680ee57b2181e86a3f02ba1278a81166