Class PBEKeyEncryptionMethodGenerator

    • Constructor Detail

      • PBEKeyEncryptionMethodGenerator

        protected PBEKeyEncryptionMethodGenerator​(char[] passPhrase,
                                                  PGPDigestCalculator s2kDigestCalculator)
        Construct a PBE key generator using the default iteration count (0x60 == 65536 iterations).
        Parameters:
        passPhrase - the pass phrase to encrypt with.
        s2kDigestCalculator - a digest calculator to use in the string-to-key function.
      • PBEKeyEncryptionMethodGenerator

        protected PBEKeyEncryptionMethodGenerator​(char[] passPhrase,
                                                  S2K.Argon2Params params)
        Construct a PBE key generator using Argon2 as S2K mechanism.
        Parameters:
        passPhrase - passphrase
        params - argon2 parameters
      • PBEKeyEncryptionMethodGenerator

        protected PBEKeyEncryptionMethodGenerator​(char[] passPhrase,
                                                  PGPDigestCalculator s2kDigestCalculator,
                                                  int s2kCount)
        Construct a PBE key generator using a specific iteration level.
        Parameters:
        passPhrase - the pass phrase to encrypt with.
        s2kDigestCalculator - a digest calculator to use in the string-to-key function.
        s2kCount - a single byte S2K iteration count specifier, which is translated to an actual iteration count by the S2K class.
    • Method Detail

      • setSecureRandom

        public PBEKeyEncryptionMethodGenerator setSecureRandom​(java.security.SecureRandom random)
        Sets a user defined source of randomness.

        If no SecureRandom is configured, a default SecureRandom will be used.

        Returns:
        the current generator.
      • setSessionKeyWrapperAlgorithm

        public PBEKeyEncryptionMethodGenerator setSessionKeyWrapperAlgorithm​(int wrapAlg)
        Set a specific algorithm to be used where this PBE method generator is used to wrap a session key for encrypting data, rather than providing the encryption key for the data.

        The default wrapping algorithm is the same algorithm as the one specified for data encryption with the PGPEncryptedDataGenerator used.

        Returns:
        the current generator.
      • getSessionKeyWrapperAlgorithm

        public int getSessionKeyWrapperAlgorithm​(int defaultWrapAlg)
        Return the key wrapping algorithm this PBE key method is associated with.
        Parameters:
        defaultWrapAlg - the default wrapping algorithm if none was set.
        Returns:
        the PBE method's wrapping algorithm, defaultWrapAlg is setSessionKeyWrapperAlgorithm was not called.
      • getKey

        public byte[] getKey​(int encAlgorithm)
                      throws PGPException
        Generate a key for a symmetric encryption algorithm using the PBE configuration in this method.
        Parameters:
        encAlgorithm - the encryption algorithm to generate the key for.
        Returns:
        the bytes of the generated key.
        Throws:
        PGPException - if an error occurs performing the string-to-key generation.
      • encryptSessionInfo

        protected abstract byte[] encryptSessionInfo​(int encAlgorithm,
                                                     byte[] key,
                                                     byte[] sessionInfo)
                                              throws PGPException
        Throws:
        PGPException
      • getEskAndTag

        protected abstract byte[] getEskAndTag​(int kekAlgorithm,
                                               int aeadAlgorithm,
                                               byte[] sessionInfo,
                                               byte[] key,
                                               byte[] iv,
                                               byte[] info)
                                        throws PGPException
        Throws:
        PGPException
      • generateV6KEK

        protected abstract byte[] generateV6KEK​(int kekAlgorithm,
                                                byte[] ikm,
                                                byte[] info)
                                         throws PGPException
        Throws:
        PGPException