public class S2K extends BCPGObject
SIMPLE mode, a single iteration of the hash algorithm is performed to derived a key
from the given passphrase.
This mode is deprecated and MUST NOT be generated.
SALTED mode is like SIMPLE, but uses an additional salt value.
This mode is deprecated and MUST NOT be generated.
SALTED_AND_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.
SALTED_AND_ITERATED mode uses both iteration and a salt value.
This mode is recommended for applications that want to stay backwards compatible.
ARGON_2 mode does key derivation using salted Argon2, which is a memory-hard hash algorithm.
This mode is generally recommended over SALTED_AND_ITERATED.
| Modifier and Type | Class and Description |
|---|---|
static class |
S2K.Argon2Params
Parameters for Argon2 S2K.
|
static class |
S2K.GNUDummyParams
Parameters for the
GNU_DUMMY_S2K method. |
| Modifier and Type | Field and Description |
|---|---|
static int |
ARGON_2
Memory-hard, salted key generation using Argon2 hash algorithm.
|
static int |
GNU_DUMMY_S2K
GNU S2K extension.
|
static int |
GNU_PROTECTION_MODE_DIVERT_TO_CARD
A stub to access smartcards.
|
static int |
GNU_PROTECTION_MODE_INTERNAL
The (GnuPG) internal representation of a private key.
|
static int |
GNU_PROTECTION_MODE_NO_PRIVATE_KEY
Do not store the secret part at all.
|
static int |
SALTED
Deprecated.
use
SALTED_AND_ITERATED or ARGON_2 instead. |
static int |
SALTED_AND_ITERATED
Salted and iterated key generation.
|
static int |
SIMPLE
Deprecated.
use
SALTED_AND_ITERATED or ARGON_2 instead. |
| Constructor and Description |
|---|
S2K(int algorithm)
Constructs a specifier for a
simple S2K generation. |
S2K(int algorithm,
byte[] iv)
Constructs a specifier for a
salted S2K generation. |
S2K(int algorithm,
byte[] iv,
int itCount)
Constructs a specifier for a
salted and iterated S2K generation. |
S2K(S2K.Argon2Params argon2Params)
Constructs a specifier for an
S2K method using Argon2. |
S2K(S2K.GNUDummyParams gnuDummyParams)
Construct a specifier for an S2K using the
GNU_DUMMY_S2K method. |
| Modifier and Type | Method and Description |
|---|---|
static S2K |
argon2S2K(S2K.Argon2Params parameters)
Return a new S2K instance using the
ARGON_2 method, using the given argon2 |
void |
encode(BCPGOutputStream out)
Encode the packet into the given
BCPGOutputStream. |
int |
getHashAlgorithm()
Gets the
hash algorithm for this S2K. |
long |
getIterationCount()
Gets the actual (expanded) iteration count.
|
byte[] |
getIV()
Gets the iv/salt to use for the key generation.
|
int |
getMemorySizeExponent()
Gets the memory size exponent - only if ARGON_2.
|
int |
getParallelism()
Gets the degree of parallelism - only if ARGON_2.
|
int |
getPasses()
Return the number of passes - only Argon2.
|
int |
getProtectionMode()
Gets the protection mode - only if GNU_DUMMY_S2K.
|
int |
getType()
Gets the S2K specifier type.
|
static S2K |
gnuDummyS2K(S2K.GNUDummyParams parameters)
Return a new S2K instance using the
GNU_DUMMY_S2K method, using the given GNU Dummy S2K |
static S2K |
saltedAndIteratedS2K(int algorithm,
byte[] salt,
int iterationCount)
Return a new S2K instance using the
SALTED_AND_ITERATED method, using the given hash |
static S2K |
saltedS2K(int algorithm,
byte[] salt)
Return a new S2K instance using the
SALTED method, using the given hash |
static S2K |
simpleS2K(int algorithm)
Return a new S2K instance using the
SIMPLE method, using the given hash |
getEncodedpublic static final int SIMPLE
SALTED_AND_ITERATED or ARGON_2 instead.public static final int SALTED
SALTED_AND_ITERATED or ARGON_2 instead.public static final int SALTED_AND_ITERATED
ARGON_2 is not available.public static final int ARGON_2
S2K.Argon2Params,
Constant Field Valuespublic static final int GNU_DUMMY_S2K
S2K.GNUDummyParams,
Constant Field Valuespublic static final int GNU_PROTECTION_MODE_NO_PRIVATE_KEY
S2K.GNUDummyParams,
Constant Field Valuespublic static final int GNU_PROTECTION_MODE_DIVERT_TO_CARD
S2K.GNUDummyParams,
Constant Field Valuespublic static final int GNU_PROTECTION_MODE_INTERNAL
S2K.GNUDummyParams,
Constant Field Valuespublic S2K(int algorithm)
simple S2K generation.algorithm - the digest algorithm to use.public S2K(int algorithm,
byte[] iv)
salted S2K generation.algorithm - the digest algorithm to use.iv - the salt to apply to input to the key generation.public S2K(int algorithm,
byte[] iv,
int itCount)
salted and iterated S2K generation.algorithm - the digest algorithm to iterate.iv - the salt to apply to input to the key generation.itCount - the single byte iteration count specifier.public S2K(S2K.Argon2Params argon2Params)
S2K method using Argon2.argon2Params - argon2 parameterspublic S2K(S2K.GNUDummyParams gnuDummyParams)
GNU_DUMMY_S2K method.gnuDummyParams - GNU_DUMMY_S2K parameterspublic static S2K simpleS2K(int algorithm)
SIMPLE method, using the given hash algorithm.
algorithm - hash algorithm tagpublic static S2K saltedS2K(int algorithm, byte[] salt)
algorithm - hash algorithm tagsalt - saltpublic static S2K saltedAndIteratedS2K(int algorithm, byte[] salt, int iterationCount)
SALTED_AND_ITERATED method, using the given hash algorithm,
saltand
iterationCount.
algorithm - hash algorithm tagsalt - saltiterationCount - number of iterationspublic static S2K argon2S2K(S2K.Argon2Params parameters)
ARGON_2 method, using the given argon2 parameters.
parameters - argon2 parameterspublic static S2K gnuDummyS2K(S2K.GNUDummyParams parameters)
GNU_DUMMY_S2K method, using the given GNU Dummy S2K parameters.
parameters - GNU Dummy S2K parameterspublic int getType()
SIMPLE,
SALTED,
SALTED_AND_ITERATED,
ARGON_2public int getHashAlgorithm()
public byte[] getIV()
type:
SIMPLE: null
SALTED: 8 octetsSALTED_AND_ITERATED: 8 octetsARGON_2: 16 octetspublic long getIterationCount()
SALTED_AND_ITERATED.public int getPasses()
public int getProtectionMode()
GNU_PROTECTION_MODE_NO_PRIVATE_KEY,
GNU_PROTECTION_MODE_DIVERT_TO_CARDpublic int getParallelism()
public int getMemorySizeExponent()
public void encode(BCPGOutputStream out) throws java.io.IOException
BCPGOutputStream.encode in class BCPGObjectout - packet output streamjava.io.IOException