Package org.bouncycastle.openpgp.operator

## 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 Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `PBEKeyEncryptionMethodGenerator​(char[] passPhrase, PGPDigestCalculator s2kDigestCalculator)` | Construct a PBE key generator using the default iteration count (`0x60` == 65536 iterations).
    `protected` | `PBEKeyEncryptionMethodGenerator​(char[] passPhrase, PGPDigestCalculator s2kDigestCalculator, int s2kCount)` | Construct a PBE key generator using a specific iteration level.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected abstract byte[]` | `encryptSessionInfo​(int encAlgorithm, byte[] key, byte[] sessionInfo)` |
    `ContainedPacket` | `generate​(int encAlgorithm, byte[] sessionInfo)` | Generates a packet encoding the details of this encryption method.
    `byte[]` | `getKey​(int encAlgorithm)` | Generate a key for a symmetric encryption algorithm using the PBE configuration in this method.
    `PBEKeyEncryptionMethodGenerator` | `setSecureRandom​(java.security.SecureRandom random)` | Sets a user defined source of randomness.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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,
                                                    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.

    - #### 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`