Class Argon2KeySpec

  • All Implemented Interfaces:
    java.security.spec.KeySpec

    public class Argon2KeySpec
    extends java.lang.Object
    implements java.security.spec.KeySpec
    Key spec for use with the Argon2 SecretKeyFactory (RFC 9106).

    Memory cost is expressed in KiB and the key length in bits, following the convention of ScryptKeySpec. The variant (ARGON2_d/ARGON2_i/ARGON2_id) and version (ARGON2_VERSION_10/ARGON2_VERSION_13) constants mirror those on Argon2Parameters; an optional secret (key) and additional/associated data may also be supplied per RFC 9106.

    • Constructor Summary

      Constructors 
      Constructor Description
      Argon2KeySpec​(char[] password, byte[] salt, int iterations, int memory, int parallelism, int keySize)
      Argon2id, version 1.3, with no secret or additional data.
      Argon2KeySpec​(int type, int version, char[] password, byte[] salt, byte[] secret, byte[] additional, int iterations, int memory, int parallelism, int keySize)
      Argon2 with full control over variant, version, optional secret and additional data.
      Argon2KeySpec​(int type, int version, char[] password, byte[] salt, int iterations, int memory, int parallelism, int keySize)
      Argon2 with an explicit variant and version, no secret or additional data.
    • Constructor Detail

      • Argon2KeySpec

        public Argon2KeySpec​(char[] password,
                             byte[] salt,
                             int iterations,
                             int memory,
                             int parallelism,
                             int keySize)
        Argon2id, version 1.3, with no secret or additional data.
        Parameters:
        password - the password to derive the key from.
        salt - the salt.
        iterations - the number of passes (time cost).
        memory - the memory cost in KiB.
        parallelism - the degree of parallelism (lanes).
        keySize - the length of the key to generate, in bits.
      • Argon2KeySpec

        public Argon2KeySpec​(int type,
                             int version,
                             char[] password,
                             byte[] salt,
                             int iterations,
                             int memory,
                             int parallelism,
                             int keySize)
        Argon2 with an explicit variant and version, no secret or additional data.
        Parameters:
        type - the Argon2 variant (ARGON2_d, ARGON2_i or ARGON2_id).
        version - the Argon2 version (ARGON2_VERSION_10 or ARGON2_VERSION_13).
        password - the password to derive the key from.
        salt - the salt.
        iterations - the number of passes (time cost).
        memory - the memory cost in KiB.
        parallelism - the degree of parallelism (lanes).
        keySize - the length of the key to generate, in bits.
      • Argon2KeySpec

        public Argon2KeySpec​(int type,
                             int version,
                             char[] password,
                             byte[] salt,
                             byte[] secret,
                             byte[] additional,
                             int iterations,
                             int memory,
                             int parallelism,
                             int keySize)
        Argon2 with full control over variant, version, optional secret and additional data.
        Parameters:
        type - the Argon2 variant (ARGON2_d, ARGON2_i or ARGON2_id).
        version - the Argon2 version (ARGON2_VERSION_10 or ARGON2_VERSION_13).
        password - the password to derive the key from.
        salt - the salt.
        secret - the optional secret (key) value; may be null.
        additional - the optional additional/associated data; may be null.
        iterations - the number of passes (time cost).
        memory - the memory cost in KiB.
        parallelism - the degree of parallelism (lanes).
        keySize - the length of the key to generate, in bits.
    • Method Detail

      • getType

        public int getType()
      • getVersion

        public int getVersion()
      • getPassword

        public char[] getPassword()
      • getSalt

        public byte[] getSalt()
      • getSecret

        public byte[] getSecret()
      • getAdditional

        public byte[] getAdditional()
      • getIterations

        public int getIterations()
      • getMemory

        public int getMemory()
        Returns:
        the memory cost in KiB.
      • getParallelism

        public int getParallelism()
      • getKeyLength

        public int getKeyLength()
        Key length (in bits).
        Returns:
        length of the key to generate in bits.