Class CachingBcPublicKeyDataDecryptorFactory

  • All Implemented Interfaces:
    org.bouncycastle.openpgp.operator.PGPDataDecryptorFactory, org.bouncycastle.openpgp.operator.PublicKeyDataDecryptorFactory, CustomPublicKeyDataDecryptorFactory

    public class CachingBcPublicKeyDataDecryptorFactory
    extends org.bouncycastle.openpgp.operator.bc.BcPublicKeyDataDecryptorFactory
    implements CustomPublicKeyDataDecryptorFactory
    Implementation of the PublicKeyDataDecryptorFactory which caches decrypted session keys. That way, if a message needs to be decrypted multiple times, expensive private key operations can be omitted. This implementation changes the behavior or recoverSessionData(int, byte[][]) to first return any cache hits. If no hit is found, the method call is delegated to the underlying PublicKeyDataDecryptorFactory. The result of that is then placed in the cache and returned.
    • Constructor Detail

      • CachingBcPublicKeyDataDecryptorFactory

        public CachingBcPublicKeyDataDecryptorFactory​(org.bouncycastle.openpgp.PGPPrivateKey privateKey,
                                                      SubkeyIdentifier decryptionKey)
    • Method Detail

      • recoverSessionData

        public byte[] recoverSessionData​(int keyAlgorithm,
                                         byte[][] secKeyData)
                                  throws org.bouncycastle.openpgp.PGPException
        Specified by:
        recoverSessionData in interface org.bouncycastle.openpgp.operator.PublicKeyDataDecryptorFactory
        Overrides:
        recoverSessionData in class org.bouncycastle.openpgp.operator.bc.BcPublicKeyDataDecryptorFactory
        Throws:
        org.bouncycastle.openpgp.PGPException
      • costlyRecoverSessionData

        public byte[] costlyRecoverSessionData​(int keyAlgorithm,
                                               byte[][] secKeyData)
                                        throws org.bouncycastle.openpgp.PGPException
        Throws:
        org.bouncycastle.openpgp.PGPException
      • clear

        public void clear()