Class S2K

All Implemented Interfaces:
org.bouncycastle.util.Encodable

public class S2K extends BCPGObject
Parameter specifier for the PGP string-to-key password based key derivation function.

In iterated mode, S2K takes a single byte iteration count specifier, which is converted to an actual iteration count using a formula that grows the iteration count exponentially as the byte value increases.

e.g. 0x01 == 1088 iterations, and 0xFF == 65,011,712 iterations.

  • Field Details

    • SIMPLE

      public static final int SIMPLE
      Simple key generation. A single non-salted iteration of a hash function
      See Also:
    • SALTED

      public static final int SALTED
      Salted key generation. A single iteration of a hash function with a (unique) salt
      See Also:
    • SALTED_AND_ITERATED

      public static final int SALTED_AND_ITERATED
      Salted and iterated key generation. Multiple iterations of a hash function, with a salt
      See Also:
    • GNU_DUMMY_S2K

      public static final int GNU_DUMMY_S2K
      See Also:
    • GNU_PROTECTION_MODE_NO_PRIVATE_KEY

      public static final int GNU_PROTECTION_MODE_NO_PRIVATE_KEY
      See Also:
    • GNU_PROTECTION_MODE_DIVERT_TO_CARD

      public static final int GNU_PROTECTION_MODE_DIVERT_TO_CARD
      See Also:
  • Constructor Details

    • S2K

      public S2K(int algorithm)
      Constructs a specifier for a simple S2K generation.
      Parameters:
      algorithm - the digest algorithm to use.
    • S2K

      public S2K(int algorithm, byte[] iv)
      Constructs a specifier for a salted S2K generation.
      Parameters:
      algorithm - the digest algorithm to use.
      iv - the salt to apply to input to the key generation.
    • S2K

      public S2K(int algorithm, byte[] iv, int itCount)
      Constructs a specifier for a salted and iterated S2K generation.
      Parameters:
      algorithm - the digest algorithm to iterate.
      iv - the salt to apply to input to the key generation.
      itCount - the single byte iteration count specifier.
  • Method Details

    • getType

      public int getType()
      Gets the digest algorithm specified.
    • getHashAlgorithm

      public int getHashAlgorithm()
      Gets the hash algorithm for this S2K.
    • getIV

      public byte[] getIV()
      Gets the iv/salt to use for the key generation.
    • getIterationCount

      public long getIterationCount()
      Gets the actual (expanded) iteration count.
    • getProtectionMode

      public int getProtectionMode()
      Gets the protection mode - only if GNU_DUMMY_S2K
    • encode

      public void encode(BCPGOutputStream out) throws IOException
      Specified by:
      encode in class BCPGObject
      Throws:
      IOException