diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-08-13 16:37:28 +0200 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-08-13 16:37:28 +0200 |
commit | 38da2af0e89ca05f2a01ed08801dee635784168e (patch) | |
tree | f90f3190edb27d92e76f8a1dae6b9eeea6ddd890 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui | |
parent | e4c86747926f6c9ae8c3eafd55409107886565b9 (diff) | |
download | open-keychain-38da2af0e89ca05f2a01ed08801dee635784168e.tar.gz open-keychain-38da2af0e89ca05f2a01ed08801dee635784168e.tar.bz2 open-keychain-38da2af0e89ca05f2a01ed08801dee635784168e.zip |
Better error handling for passphrase cache if key is missing
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui')
3 files changed, 31 insertions, 14 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java index 467e0c14a..c1986825c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java @@ -231,7 +231,14 @@ public class CertifyKeyActivity extends ActionBarActivity implements */ private void initiateCertifying() { // get the user's passphrase for this key (if required) - String passphrase = PassphraseCacheService.getCachedPassphrase(this, mMasterKeyId); + String passphrase = null; + try { + passphrase = PassphraseCacheService.getCachedPassphrase(this, mMasterKeyId); + } catch (PassphraseCacheService.KeyNotFoundException e) { + Log.e(Constants.TAG, "Key not found!", e); + finish(); + return; + } if (passphrase == null) { PassphraseDialogFragment.show(this, mMasterKeyId, new Handler() { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java index ae294547f..03074bb6a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java @@ -475,8 +475,14 @@ public class EditKeyFragment extends LoaderFragment implements } private void cachePassphraseForEdit() { - mCurrentPassphrase = PassphraseCacheService.getCachedPassphrase(getActivity(), - mSaveKeyringParcel.mMasterKeyId); + try { + mCurrentPassphrase = PassphraseCacheService.getCachedPassphrase(getActivity(), + mSaveKeyringParcel.mMasterKeyId); + } catch (PassphraseCacheService.KeyNotFoundException e) { + Log.e(Constants.TAG, "Key not found!", e); + getActivity().finish(); + return; + } if (mCurrentPassphrase == null) { PassphraseDialogFragment.show(getActivity(), mSaveKeyringParcel.mMasterKeyId, new Handler() { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java index 33deddd81..7e08f6b7c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java @@ -450,20 +450,24 @@ public class EncryptActivity extends DrawerActivity implements EncryptActivityIn return false; } - if (mSigningKeyId != 0 && PassphraseCacheService.getCachedPassphrase(this, mSigningKeyId) == null) { - PassphraseDialogFragment.show(this, mSigningKeyId, - new Handler() { - @Override - public void handleMessage(Message message) { - if (message.what == PassphraseDialogFragment.MESSAGE_OKAY) { - // restart - startEncrypt(); + try { + if (mSigningKeyId != 0 && PassphraseCacheService.getCachedPassphrase(this, mSigningKeyId) == null) { + PassphraseDialogFragment.show(this, mSigningKeyId, + new Handler() { + @Override + public void handleMessage(Message message) { + if (message.what == PassphraseDialogFragment.MESSAGE_OKAY) { + // restart + startEncrypt(); + } } } - } - ); + ); - return false; + return false; + } + } catch (PassphraseCacheService.KeyNotFoundException e) { + Log.e(Constants.TAG, "Key not found!", e); } } return true; |