From 9855f4d1441ac1e5dc7df19ebd0272e5f94e2aa2 Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Sun, 16 May 2010 13:17:45 +0000 Subject: honour the pass phrase cache TTL by running a timer and removing expired cached pass phrases --- src/org/thialfihar/android/apg/Apg.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (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 a453cdf4a..5071e3d01 100644 --- a/src/org/thialfihar/android/apg/Apg.java +++ b/src/org/thialfihar/android/apg/Apg.java @@ -41,6 +41,7 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Iterator; +import java.util.Map; import java.util.Vector; import java.util.regex.Pattern; @@ -293,9 +294,26 @@ public class Apg { if (cpp == null) { return null; } + // set it again to reset the cache life cycle + setCachedPassPhrase(realId, cpp.passPhrase); return cpp.passPhrase; } + public static void cleanUpCache(int ttl) { + long now = new Date().getTime(); + + Vector oldKeys = new Vector(); + for (Map.Entry pair : mPassPhraseCache.entrySet()) { + if ((now - pair.getValue().timestamp) >= 1000 * ttl) { + oldKeys.add(pair.getKey()); + } + } + + for (long keyId : oldKeys) { + mPassPhraseCache.remove(keyId); + } + } + public static PGPSecretKey createKey(Context context, int algorithmChoice, int keySize, String passPhrase, PGPSecretKey masterKey) @@ -1266,7 +1284,7 @@ public class Apg { PGPSignatureGenerator signatureGenerator = null; progress.setProgress(R.string.progress_preparingStreams, 5, 100); - // encryptFile and compress input file content + // encrypt and compress input file content PGPEncryptedDataGenerator cPk = new PGPEncryptedDataGenerator(symmetricAlgorithm, true, new SecureRandom(), new BouncyCastleProvider()); -- cgit v1.2.3