diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java index a149ccc57..faf8f7a27 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java @@ -39,6 +39,20 @@ public class RequiredInputParcel implements Parcelable { return new String(mInputData[0]); } + public boolean isTextInput() { + switch (mType) { + case BACKUP_CODE: + case NUMERIC_9X4: + case NUMERIC_9X4_AUTOCRYPT: + case PASSPHRASE: + case PASSPHRASE_AUTH: + case PASSPHRASE_SYMMETRIC: + return true; + default: + return false; + } + } + public enum RequiredInputType { PASSPHRASE, PASSPHRASE_SYMMETRIC, PASSPHRASE_AUTH, BACKUP_CODE, NUMERIC_9X4, NUMERIC_9X4_AUTOCRYPT, diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java index 9c3f01212..61ee62cdf 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java @@ -107,7 +107,7 @@ public class PassphraseDialogActivity extends FragmentActivity { // this activity itself has no content view (see manifest) RequiredInputParcel requiredInput = getIntent().getParcelableExtra(EXTRA_REQUIRED_INPUT); - if (requiredInput.mType != RequiredInputType.PASSPHRASE) { + if (!requiredInput.isTextInput()) { return; } @@ -115,7 +115,9 @@ public class PassphraseDialogActivity extends FragmentActivity { try { KeyRepository keyRepository = KeyRepository.create(this); // use empty passphrase for empty passphrase - if (keyRepository.getSecretKeyType(requiredInput.getSubKeyId()) == SecretKeyType.PASSPHRASE_EMPTY) { + Long subKeyId = requiredInput.getSubKeyId(); + if (subKeyId != null && + keyRepository.getSecretKeyType(subKeyId) == SecretKeyType.PASSPHRASE_EMPTY) { // also return passphrase back to activity Intent returnIntent = new Intent(); cryptoInputParcel = cryptoInputParcel.withPassphrase(new Passphrase(""), requiredInput.getSubKeyId());