From 363dcb62b81cff2a2b5ec275ece76c00045d2ec9 Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Sat, 15 May 2010 15:19:56 +0000 Subject: password cache introduced, not cleared yet. --- src/org/thialfihar/android/apg/Apg.java | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'src/org/thialfihar/android/apg/Apg.java') diff --git a/src/org/thialfihar/android/apg/Apg.java b/src/org/thialfihar/android/apg/Apg.java index 12b4719b2..a453cdf4a 100644 --- a/src/org/thialfihar/android/apg/Apg.java +++ b/src/org/thialfihar/android/apg/Apg.java @@ -155,7 +155,8 @@ public class Apg { PublicKeys.KEY_DATA, PublicKeys.WHO_ID, }; - private static String mPassPhrase = null; + private static HashMap mPassPhraseCache = + new HashMap(); public static class GeneralException extends Exception { static final long serialVersionUID = 0xf812773342L; @@ -271,12 +272,28 @@ public class Apg { } } - public static void setPassPhrase(String passPhrase) { - mPassPhrase = passPhrase; + public static void setCachedPassPhrase(long keyId, String passPhrase) { + mPassPhraseCache.put(keyId, new CachedPassPhrase(new Date().getTime(), passPhrase)); } - public static String getPassPhrase() { - return mPassPhrase; + public static String getCachedPassPhrase(long keyId) { + long realId = keyId; + if (realId != Id.key.symmetric) { + PGPSecretKeyRing keyRing = findSecretKeyRing(keyId); + if (keyRing == null) { + return null; + } + PGPSecretKey masterKey = getMasterKey(keyRing); + if (masterKey == null) { + return null; + } + realId = masterKey.getKeyID(); + } + CachedPassPhrase cpp = mPassPhraseCache.get(realId); + if (cpp == null) { + return null; + } + return cpp.passPhrase; } public static PGPSecretKey createKey(Context context, @@ -1440,7 +1457,7 @@ public class Apg { } if (secretKey == null) { - return 0; + return Id.key.none; } return secretKey.getKeyID(); -- cgit v1.2.3