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