Class Argon2Parameters


  • public class Argon2Parameters
    extends java.lang.Object
    Configuration parameters for the Argon2 PBKDF.

    Build instances with Argon2Parameters.Builder, e.g.

     Argon2Parameters params = new Argon2Parameters.Builder(Argon2Parameters.ARGON2_id)
         .withVersion(Argon2Parameters.ARGON2_VERSION_13)
         .withSalt(salt)
         .withIterations(3)
         .withMemoryPowOfTwo(16)
         .withParallelism(4)
         .build();
     
    • Field Detail

      • MAX_MEMORY_EXP

        public static final java.lang.String MAX_MEMORY_EXP
        System/security property setting the maximum permitted memory exponent (i.e. memory <= 1 << MAX_MEMORY_EXP). Defaults to 24 (16 GiB); the property may be raised up to a ceiling of 30. The default was lowered from the historical 30 (1 TiB) so that a single key derivation driven by attacker-chosen cost parameters - notably an OpenPGP Argon2 S2K specifier read from an unauthenticated packet - cannot exhaust the heap of a typical host.
        See Also:
        Constant Field Values
      • MAX_PASSES

        public static final java.lang.String MAX_PASSES
        System/security property bounding the number of Argon2 passes (iterations) accepted when a key is derived from untrusted cost parameters - notably an OpenPGP Argon2 S2K specifier. Defaults to 10; OpenPGP key derivation rejects a larger value rather than spend unbounded CPU on attacker-chosen iterations. Read via Properties.asInteger(java.lang.String, int).
        See Also:
        Constant Field Values
      • MAX_PARALLELISM

        public static final java.lang.String MAX_PARALLELISM
        System/security property bounding the Argon2 parallelism (lanes) accepted when a key is derived from untrusted cost parameters - notably an OpenPGP Argon2 S2K specifier. Defaults to 16. Read via Properties.asInteger(java.lang.String, int).
        See Also:
        Constant Field Values
      • ARGON2_d

        public static final int ARGON2_d
        Argon2d - data-dependent memory access.
        See Also:
        Constant Field Values
      • ARGON2_i

        public static final int ARGON2_i
        Argon2i - data-independent memory access.
        See Also:
        Constant Field Values
      • ARGON2_VERSION_10

        public static final int ARGON2_VERSION_10
        Argon2 v1.0 (legacy).
        See Also:
        Constant Field Values
      • ARGON2_VERSION_13

        public static final int ARGON2_VERSION_13
        Argon2 v1.3 - the version standardised by RFC 9106.
        See Also:
        Constant Field Values
    • Method Detail

      • getSalt

        public byte[] getSalt()
        Returns:
        a defensive copy of the salt, or null if none was set.
      • getSecret

        public byte[] getSecret()
        Returns:
        a defensive copy of the secret value, or null if none was set.
      • getAdditional

        public byte[] getAdditional()
        Returns:
        a defensive copy of the additional data, or null if none was set.
      • getIterations

        public int getIterations()
        Returns:
        the number of passes (time cost).
      • getMemory

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

        public int getLanes()
        Returns:
        the parallelism (lane count).
      • getCharToByteConverter

        public CharToByteConverter getCharToByteConverter()
        Returns:
        the character-to-byte converter used to encode char[] passwords.
      • clear

        public void clear()
        Zeroise sensitive state (salt, secret, additional) held by these parameters.