Package org.bouncycastle.crypto.params
Class Argon2Parameters
- java.lang.Object
-
- org.bouncycastle.crypto.params.Argon2Parameters
-
public class Argon2Parameters extends java.lang.ObjectConfiguration parameters for theArgon2 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();
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classArgon2Parameters.BuilderFluent builder forArgon2Parameters.
-
Field Summary
Fields Modifier and Type Field Description static intARGON2_dArgon2d - data-dependent memory access.static intARGON2_iArgon2i - data-independent memory access.static intARGON2_idstatic intARGON2_VERSION_10Argon2 v1.0 (legacy).static intARGON2_VERSION_13Argon2 v1.3 - the version standardised by RFC 9106.static java.lang.StringMAX_MEMORY_EXPSystem/security property setting the maximum permitted memory exponent (i.e.static java.lang.StringMAX_PARALLELISMSystem/security property bounding the Argon2 parallelism (lanes) accepted when a key is derived from untrusted cost parameters - notably an OpenPGP Argon2 S2K specifier.static java.lang.StringMAX_PASSESSystem/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.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()Zeroise sensitive state (salt, secret, additional) held by these parameters.byte[]getAdditional()Argon2BytesGenerator.BlockPoolgetBlockPool()CharToByteConvertergetCharToByteConverter()intgetIterations()intgetLanes()intgetMemory()byte[]getSalt()byte[]getSecret()intgetType()intgetVersion()
-
-
-
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 viaProperties.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 viaProperties.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_id
public static final int ARGON2_id
- 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).
-
getVersion
public int getVersion()
- Returns:
- the Argon2 version constant (
ARGON2_VERSION_10orARGON2_VERSION_13).
-
getType
public int getType()
-
getCharToByteConverter
public CharToByteConverter getCharToByteConverter()
- Returns:
- the character-to-byte converter used to encode
char[]passwords.
-
getBlockPool
public Argon2BytesGenerator.BlockPool getBlockPool()
- Returns:
- the user-supplied
Argon2BytesGenerator.BlockPool, or null if the generator should use its default per-call pool.
-
clear
public void clear()
Zeroise sensitive state (salt, secret, additional) held by these parameters.
-
-