From b77fb2fcc0371248beaf86a1db092e7ad99e6446 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Fri, 11 Apr 2014 03:21:39 +0200 Subject: get rid of more getMasterKeyId usage, work on getKeyRingsAsArmoredString --- .../keychain/service/PassphraseCacheService.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java') 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); } -- cgit v1.2.3