Class PBEKeyEncryptionMethodGenerator

java.lang.Object
org.bouncycastle.openpgp.operator.PGPKeyEncryptionMethodGenerator
org.bouncycastle.openpgp.operator.PBEKeyEncryptionMethodGenerator
Direct Known Subclasses:
BcPBEKeyEncryptionMethodGenerator, JcePBEKeyEncryptionMethodGenerator

public abstract class PBEKeyEncryptionMethodGenerator extends PGPKeyEncryptionMethodGenerator
PGP style PBE encryption method.

A pass phrase is used to generate an encryption key using the PGP string-to-key method. This class always uses the salted and iterated form of the S2K algorithm.

Note that the iteration count provided to this method is a single byte as described by the S2K algorithm, and the actual iteration count ranges exponentially from 0x01 == 1088 to 0xFF == 65,011,712.

  • Constructor Details

    • 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, 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 Details

    • setSecureRandom

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

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

      Returns:
      the current generator.
    • 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.
    • generate

      public ContainedPacket generate(int encAlgorithm, byte[] sessionInfo) throws PGPException
      Description copied from class: PGPKeyEncryptionMethodGenerator
      Generates a packet encoding the details of this encryption method.
      Specified by:
      generate in class PGPKeyEncryptionMethodGenerator
      Parameters:
      encAlgorithm - the encryption algorithm being used
      sessionInfo - session data generated by the encrypted data generator.
      Returns:
      a packet encoding the provided information and the configuration of this instance.
      Throws:
      PGPException - if an error occurs constructing the packet.
    • encryptSessionInfo

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