aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-05-31 05:16:41 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-05-31 05:16:41 +0200
commit3976eadf060a0f5f18a05587dc597f9e83466f84 (patch)
tree6f73b368529dff64f0dd2beec085916582d3b2fe /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java
parent5d87872245ed781fa610cfa61a35d5e3f85a984e (diff)
downloadopen-keychain-3976eadf060a0f5f18a05587dc597f9e83466f84.tar.gz
open-keychain-3976eadf060a0f5f18a05587dc597f9e83466f84.tar.bz2
open-keychain-3976eadf060a0f5f18a05587dc597f9e83466f84.zip
handle empty passphrases in PassphraseDialogActivity
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java25
1 files changed, 25 insertions, 0 deletions
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 4ec4e2c84..4b4e71f6e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java
@@ -45,6 +45,7 @@ import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.compatibility.DialogFragmentWorkaround;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey;
+import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey.SecretKeyType;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKeyRing;
import org.sufficientlysecure.keychain.pgp.KeyRing;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
@@ -52,6 +53,7 @@ import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException;
import org.sufficientlysecure.keychain.provider.CachedPublicKeyRing;
import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
+import org.sufficientlysecure.keychain.provider.ProviderHelper.NotFoundException;
import org.sufficientlysecure.keychain.remote.CryptoInputParcelCacheService;
import org.sufficientlysecure.keychain.service.PassphraseCacheService;
import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
@@ -102,6 +104,29 @@ public class PassphraseDialogActivity extends FragmentActivity {
break;
}
case PASSPHRASE: {
+
+ // handle empty passphrases by directly returning an empty crypto input parcel
+ try {
+ CanonicalizedSecretKeyRing pubRing =
+ new ProviderHelper(this).getCanonicalizedSecretKeyRing(
+ requiredInput.getMasterKeyId());
+ // use empty passphrase for empty passphrase
+ if (pubRing.getSecretKey(requiredInput.getSubKeyId()).getSecretKeyType() ==
+ SecretKeyType.PASSPHRASE_EMPTY) {
+ // also return passphrase back to activity
+ Intent returnIntent = new Intent();
+ returnIntent.putExtra(RESULT_CRYPTO_INPUT, new CryptoInputParcel(new Passphrase("")));
+ setResult(RESULT_OK, returnIntent);
+ finish();
+ return;
+ }
+ } catch (NotFoundException e) {
+ Log.e(Constants.TAG, "Key not found?!", e);
+ setResult(RESULT_CANCELED);
+ finish();
+ return;
+ }
+
keyId = requiredInput.getSubKeyId();
break;
}