aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-04-11 03:21:39 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-04-11 03:44:13 +0200
commitb77fb2fcc0371248beaf86a1db092e7ad99e6446 (patch)
tree29acb0cd66761200805603c5925c626650aac6c9 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java
parent9af532880c728ccd343769078b008a9b31dc4ce1 (diff)
downloadopen-keychain-b77fb2fcc0371248beaf86a1db092e7ad99e6446.tar.gz
open-keychain-b77fb2fcc0371248beaf86a1db092e7ad99e6446.tar.bz2
open-keychain-b77fb2fcc0371248beaf86a1db092e7ad99e6446.zip
get rid of more getMasterKeyId usage, work on getKeyRingsAsArmoredString
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java17
1 files changed, 10 insertions, 7 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java
index 66411ce0b..91d9b5584 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java
@@ -200,7 +200,7 @@ public class PassphraseCacheService extends Service {
return cachedPassphrase;
}
- public static boolean hasPassphrase(PGPSecretKeyRing secretKeyRing) throws PGPException {
+ public static boolean hasPassphrase(PGPSecretKeyRing secretKeyRing) {
PGPSecretKey secretKey = null;
boolean foundValidKey = false;
for (Iterator keys = secretKeyRing.getSecretKeys(); keys.hasNext(); ) {
@@ -214,10 +214,15 @@ public class PassphraseCacheService extends Service {
return false;
}
- PBESecretKeyDecryptor keyDecryptor = new JcePBESecretKeyDecryptorBuilder()
- .setProvider("SC").build("".toCharArray());
- PGPPrivateKey testKey = secretKey.extractPrivateKey(keyDecryptor);
- return testKey == null;
+ try {
+ PBESecretKeyDecryptor keyDecryptor = new JcePBESecretKeyDecryptorBuilder()
+ .setProvider("SC").build("".toCharArray());
+ PGPPrivateKey testKey = secretKey.extractPrivateKey(keyDecryptor);
+ return testKey == null;
+ } catch(PGPException e) {
+ // this means the crc check failed -> passphrase required
+ return true;
+ }
}
/**
@@ -231,8 +236,6 @@ public class PassphraseCacheService extends Service {
try {
PGPSecretKeyRing secRing = ProviderHelper.getPGPSecretKeyRing(context, secretKeyId);
return hasPassphrase(secRing);
- } catch (PGPException e) {
- // silently catch
} catch (ProviderHelper.NotFoundException e) {
Log.e(Constants.TAG, "key not found!", e);
}