From 4ebf335821b7083a88de9edd45d69ca8b13841bd Mon Sep 17 00:00:00 2001 From: Vasyl Gello Date: Mon, 12 Feb 2024 16:39:45 +0200 Subject: [PATCH] Show passphrase fragment for all textable types PR #2864 removed the code unconditionally displaying passphrase dialog and the codepath inside onCreate has become the only one that can display the fragment. However, the if-clause does not consider new types other than PASSPHRASE that emerged with development of OKC. Signed-off-by: Vasyl Gello --- .../service/input/RequiredInputParcel.java | 14 ++++++++++++++ .../keychain/ui/PassphraseDialogActivity.java | 6 ++++-- 2 files changed, 18 insertions(+), 2 deletions(-) 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());