From c846e65d7c112233839840842c00cf42db0efa74 Mon Sep 17 00:00:00 2001 From: Vasyl Gello Date: Tue, 13 Feb 2024 07:07:00 +0200 Subject: [PATCH 1/2] Fix theme reversal Signed-off-by: Vasyl Gello --- .../main/java/org/sufficientlysecure/keychain/Constants.java | 2 +- OpenKeychain/src/main/res/values/arrays.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java index 3e6454da5..05a7476fc 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java @@ -148,8 +148,8 @@ public final class Constants { public static final class Theme { public static final String AUTO = "auto"; - public static final String LIGHT = "light"; public static final String DARK = "dark"; + public static final String LIGHT = "light"; public static final String DEFAULT = Constants.Pref.Theme.AUTO; } diff --git a/OpenKeychain/src/main/res/values/arrays.xml b/OpenKeychain/src/main/res/values/arrays.xml index bf43600e6..bbf38d3e2 100644 --- a/OpenKeychain/src/main/res/values/arrays.xml +++ b/OpenKeychain/src/main/res/values/arrays.xml @@ -33,8 +33,8 @@ @string/theme_auto - @string/theme_light @string/theme_dark + @string/theme_light "auto" From 4ebf335821b7083a88de9edd45d69ca8b13841bd Mon Sep 17 00:00:00 2001 From: Vasyl Gello Date: Mon, 12 Feb 2024 16:39:45 +0200 Subject: [PATCH 2/2] 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());