diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2014-04-11 01:48:08 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2014-04-11 02:58:08 +0200 |
commit | 9af532880c728ccd343769078b008a9b31dc4ce1 (patch) | |
tree | ff371e7db10f4507e607234a878950f164922720 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java | |
parent | 0f06b8a1d6df7682d4216ec685c907bbf5774ff0 (diff) | |
download | open-keychain-9af532880c728ccd343769078b008a9b31dc4ce1.tar.gz open-keychain-9af532880c728ccd343769078b008a9b31dc4ce1.tar.bz2 open-keychain-9af532880c728ccd343769078b008a9b31dc4ce1.zip |
fix EditKeyActivity
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.java | 40 |
1 files changed, 21 insertions, 19 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 cbc71ce6a..66411ce0b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java @@ -200,6 +200,26 @@ public class PassphraseCacheService extends Service { return cachedPassphrase; } + public static boolean hasPassphrase(PGPSecretKeyRing secretKeyRing) throws PGPException { + PGPSecretKey secretKey = null; + boolean foundValidKey = false; + for (Iterator keys = secretKeyRing.getSecretKeys(); keys.hasNext(); ) { + secretKey = (PGPSecretKey) keys.next(); + if (!secretKey.isPrivateKeyEmpty()) { + foundValidKey = true; + break; + } + } + if(!foundValidKey) { + return false; + } + + PBESecretKeyDecryptor keyDecryptor = new JcePBESecretKeyDecryptorBuilder() + .setProvider("SC").build("".toCharArray()); + PGPPrivateKey testKey = secretKey.extractPrivateKey(keyDecryptor); + return testKey == null; + } + /** * Checks if key has a passphrase. * @@ -210,25 +230,7 @@ public class PassphraseCacheService extends Service { // check if the key has no passphrase try { PGPSecretKeyRing secRing = ProviderHelper.getPGPSecretKeyRing(context, secretKeyId); - PGPSecretKey secretKey = null; - boolean foundValidKey = false; - for (Iterator keys = secRing.getSecretKeys(); keys.hasNext(); ) { - secretKey = (PGPSecretKey) keys.next(); - if (!secretKey.isPrivateKeyEmpty()) { - foundValidKey = true; - break; - } - } - - if (!foundValidKey) { - return false; - } - PBESecretKeyDecryptor keyDecryptor = new JcePBESecretKeyDecryptorBuilder().setProvider( - "SC").build("".toCharArray()); - PGPPrivateKey testKey = secretKey.extractPrivateKey(keyDecryptor); - if (testKey != null) { - return false; - } + return hasPassphrase(secRing); } catch (PGPException e) { // silently catch } catch (ProviderHelper.NotFoundException e) { |