diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java index 853f99a04..c89b335bb 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java @@ -238,7 +238,6 @@ public class PgpDecryptVerify { } if (enc == null) { -// throw new PgpGeneralException(mContext.getString(R.string.error_invalid_data)); throw new InvalidDataException(); } @@ -308,8 +307,6 @@ public class PgpDecryptVerify { if (mPassphrase == null) { // returns "" if key has no passphrase mPassphrase = mPassphraseCache.getCachedPassphrase(masterKeyId); -// mPassphrase = -// PassphraseCacheService.getCachedPassphrase(mContext, masterKeyId); // if passphrase was not cached, return here // indicating that a passphrase is missing! @@ -368,12 +365,9 @@ public class PgpDecryptVerify { mPassphrase.toCharArray()); privateKey = secretKey.extractPrivateKey(keyDecryptor); } catch (PGPException e) { -// throw new PGPException(mContext.getString(R.string.error_wrong_passphrase)); throw new WrongPassphraseException(); } if (privateKey == null) { -// throw new PgpGeneralException( -// mContext.getString(R.string.error_could_not_extract_private_key)); throw new KeyExtractionException(); } currentProgress += 5; @@ -388,7 +382,6 @@ public class PgpDecryptVerify { currentProgress += 5; } else { // no packet has been found where we have the corresponding secret key in our db -// throw new PgpGeneralException(mContext.getString(R.string.error_no_secret_key_found)); throw new NoSecretKeyException(); } @@ -539,7 +532,6 @@ public class PgpDecryptVerify { } else { // failed Log.d(Constants.TAG, "Integrity verification: failed!"); -// throw new PgpGeneralException(mContext.getString(R.string.error_integrity_check_failed)); throw new IntegrityCheckFailedException(); } } else { @@ -597,7 +589,6 @@ public class PgpDecryptVerify { PGPSignatureList sigList = (PGPSignatureList) pgpFact.nextObject(); if (sigList == null) { -// throw new PgpGeneralException(mContext.getString(R.string.error_corrupt_data)); throw new InvalidDataException(); } PGPSignature signature = null; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java index 3a3ee3e10..8e4dbca34 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java @@ -287,17 +287,13 @@ public class PgpSignEncrypt { signingKeyRing = mProviderHelper.getPGPSecretKeyRing(mSignatureMasterKeyId); } catch (ProviderHelper.NotFoundException e) { throw new NoSigningKeyException(); -// throw new PgpGeneralException(mContext.getString(R.string.error_signature_failed)); } signingKey = PgpKeyHelper.getFirstSigningSubkey(signingKeyRing); if (signingKey == null) { throw new NoSigningKeyException(); -// throw new PgpGeneralException(mContext.getString(R.string.error_signature_failed)); } if (mSignaturePassphrase == null) { -// throw new PgpGeneralException( -// mContext.getString(R.string.error_no_signature_passphrase)); throw new NoPassphraseException(); } @@ -307,8 +303,6 @@ public class PgpSignEncrypt { Constants.BOUNCY_CASTLE_PROVIDER_NAME).build(mSignaturePassphrase.toCharArray()); signaturePrivateKey = signingKey.extractPrivateKey(keyDecryptor); if (signaturePrivateKey == null) { -// throw new PgpGeneralException( -// mContext.getString(R.string.error_could_not_extract_private_key)); throw new KeyExtractionException(); } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java index e2f4e9d95..1e0da7cb9 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java @@ -862,15 +862,36 @@ public class KeychainIntentService extends IntentService if (this.mIsCanceled) { return; } + // TODO: Implement a better exception handling here // contextualize the exception, if necessary + String message; if (e instanceof PgpGeneralMsgIdException) { e = ((PgpGeneralMsgIdException) e).getContextualized(this); + message = e.getMessage(); + } else if (e instanceof PgpSignEncrypt.KeyExtractionException) { + message = getString(R.string.error_could_not_extract_private_key); + } else if (e instanceof PgpSignEncrypt.NoPassphraseException) { + message = getString(R.string.error_no_signature_passphrase); + } else if (e instanceof PgpSignEncrypt.NoSigningKeyException) { + message = getString(R.string.error_signature_failed); + } else if (e instanceof PgpDecryptVerify.InvalidDataException) { + message = getString(R.string.error_invalid_data); + } else if (e instanceof PgpDecryptVerify.KeyExtractionException) { + message = getString(R.string.error_could_not_extract_private_key); + } else if (e instanceof PgpDecryptVerify.WrongPassphraseException) { + message = getString(R.string.error_wrong_passphrase); + } else if (e instanceof PgpDecryptVerify.NoSecretKeyException) { + message = getString(R.string.error_no_secret_key_found); + } else if (e instanceof PgpDecryptVerify.IntegrityCheckFailedException) { + message = getString(R.string.error_integrity_check_failed); + } else { + message = e.getMessage(); } + Log.e(Constants.TAG, "KeychainIntentService Exception: ", e); - e.printStackTrace(); Bundle data = new Bundle(); - data.putString(KeychainIntentServiceHandler.DATA_ERROR, e.getMessage()); + data.putString(KeychainIntentServiceHandler.DATA_ERROR, message); sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_EXCEPTION, null, data); }