aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-04-13 18:13:34 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-04-13 18:13:34 +0200
commit9b1a4a456a35fc78ee0562c861967406cb5c6050 (patch)
treeae420b70495232d1cce0c32836d46a458ae196e2 /OpenKeychain/src/main
parent194523303fd3a11f7a36f0312a4ce1605557be67 (diff)
downloadopen-keychain-9b1a4a456a35fc78ee0562c861967406cb5c6050.tar.gz
open-keychain-9b1a4a456a35fc78ee0562c861967406cb5c6050.tar.bz2
open-keychain-9b1a4a456a35fc78ee0562c861967406cb5c6050.zip
Handle new exceptions in KeychainIntentService
Diffstat (limited to 'OpenKeychain/src/main')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java9
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java6
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java25
3 files changed, 23 insertions, 17 deletions
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);
}