diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2016-02-10 17:36:02 +0100 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2016-02-10 17:36:02 +0100 |
commit | da6dfb57a0aa816919cd23752e1707ba6a2e8cae (patch) | |
tree | d6ede03785491d4c56b10cad9062b8bcac3ea78b /OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/CachingDataDecryptorFactory.java | |
parent | 01b165ea88a032f31b8c2ff07351d3f893f6413d (diff) | |
parent | 751298a4d832f316244fd6345c46ba806dcfc860 (diff) | |
download | open-keychain-da6dfb57a0aa816919cd23752e1707ba6a2e8cae.tar.gz open-keychain-da6dfb57a0aa816919cd23752e1707ba6a2e8cae.tar.bz2 open-keychain-da6dfb57a0aa816919cd23752e1707ba6a2e8cae.zip |
Merge branch 'master' into performance
Diffstat (limited to 'OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/CachingDataDecryptorFactory.java')
-rw-r--r-- | OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/CachingDataDecryptorFactory.java | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/CachingDataDecryptorFactory.java b/OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/CachingDataDecryptorFactory.java deleted file mode 100644 index d35f1d751..000000000 --- a/OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/CachingDataDecryptorFactory.java +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Copyright (c) 2013-2014 Philipp Jakubeit, Signe Rüsch, Dominik Schürmann - * - * Licensed under the Bouncy Castle License (MIT license). See LICENSE file for details. - */ - -package org.spongycastle.openpgp.operator.jcajce; - -import org.spongycastle.jcajce.util.NamedJcaJceHelper; -import org.spongycastle.openpgp.PGPException; -import org.spongycastle.openpgp.PGPPublicKeyEncryptedData; -import org.spongycastle.openpgp.operator.PGPDataDecryptor; -import org.spongycastle.openpgp.operator.PublicKeyDataDecryptorFactory; - -import java.nio.ByteBuffer; -import java.util.Map; - -public class CachingDataDecryptorFactory implements PublicKeyDataDecryptorFactory -{ - private final PublicKeyDataDecryptorFactory mWrappedDecryptor; - private final Map<ByteBuffer, byte[]> mSessionKeyCache; - - private OperatorHelper mOperatorHelper; - - public CachingDataDecryptorFactory(String providerName, - final Map<ByteBuffer,byte[]> sessionKeyCache) - { - mWrappedDecryptor = null; - mSessionKeyCache = sessionKeyCache; - - mOperatorHelper = new OperatorHelper(new NamedJcaJceHelper(providerName)); - } - - public CachingDataDecryptorFactory(PublicKeyDataDecryptorFactory wrapped, - final Map<ByteBuffer,byte[]> sessionKeyCache) - { - mWrappedDecryptor = wrapped; - mSessionKeyCache = sessionKeyCache; - - } - - public boolean hasCachedSessionData(PGPPublicKeyEncryptedData encData) throws PGPException { - ByteBuffer bi = ByteBuffer.wrap(encData.getSessionKey()[0]); - return mSessionKeyCache.containsKey(bi); - } - - public Map<ByteBuffer, byte[]> getCachedSessionKeys() { - return mSessionKeyCache; - } - - public boolean canDecrypt() { - return mWrappedDecryptor != null; - } - - @Override - public byte[] recoverSessionData(int keyAlgorithm, byte[][] secKeyData) throws PGPException { - ByteBuffer bi = ByteBuffer.wrap(secKeyData[0]); // encoded MPI - if (mSessionKeyCache.containsKey(bi)) { - return mSessionKeyCache.get(bi); - } - - byte[] sessionData = mWrappedDecryptor.recoverSessionData(keyAlgorithm, secKeyData); - mSessionKeyCache.put(bi, sessionData); - return sessionData; - } - - @Override - public PGPDataDecryptor createDataDecryptor(boolean withIntegrityPacket, int encAlgorithm, byte[] key) - throws PGPException { - if (mWrappedDecryptor != null) { - return mWrappedDecryptor.createDataDecryptor(withIntegrityPacket, encAlgorithm, key); - } - return mOperatorHelper.createDataDecryptor(withIntegrityPacket, encAlgorithm, key); - } - -} |