Package org.bouncycastle.bcpg
Class S2K
- java.lang.Object
-
- org.bouncycastle.bcpg.BCPGObject
-
- org.bouncycastle.bcpg.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, and0xFF== 65,011,712 iterations.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classS2K.Argon2ParamsParameters for Argon2 S2K.static classS2K.GNUDummyParamsParameters for theGNU_DUMMY_S2Kmethod.
-
Field Summary
Fields Modifier and Type Field Description static intARGON_2Memory-hard, salted key generation using Argon2 hash algorithm.static intGNU_DUMMY_S2Kstatic intGNU_PROTECTION_MODE_DIVERT_TO_CARDstatic intGNU_PROTECTION_MODE_NO_PRIVATE_KEYstatic intSALTEDSalted key generation.static intSALTED_AND_ITERATEDSalted and iterated key generation.static intSIMPLESimple key generation.
-
Constructor Summary
Constructors Constructor Description S2K(int algorithm)Constructs a specifier for asimpleS2K generation.S2K(int algorithm, byte[] iv)Constructs a specifier for asaltedS2K generation.S2K(int algorithm, byte[] iv, int itCount)Constructs a specifier for asalted and iteratedS2K generation.S2K(S2K.Argon2Params argon2Params)Constructs a specifier for anS2K method using Argon2.S2K(S2K.GNUDummyParams gnuDummyParams)Construct a specifier for an S2K using theGNU_DUMMY_S2Kmethod.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static S2Kargon2S2K(S2K.Argon2Params parameters)Return a new S2K instance using theARGON_2method, using the given argon2voidencode(BCPGOutputStream out)intgetHashAlgorithm()Gets thehash algorithmfor this S2K.longgetIterationCount()Gets the actual (expanded) iteration count.byte[]getIV()Gets the iv/salt to use for the key generation.intgetMemorySizeExponent()Gets the memory size exponent - only if ARGON_2intgetParallelism()Gets the degree of parallelism - only if ARGON_2intgetPasses()Return the number of passes - only Argon2intgetProtectionMode()Gets the protection mode - only if GNU_DUMMY_S2KintgetType()Gets thedigest algorithmspecified.static S2KgnuDummyS2K(S2K.GNUDummyParams parameters)Return a new S2K instance using theGNU_DUMMY_S2Kmethod, using the given GNU Dummy S2Kstatic S2KsaltedAndIteratedS2K(int algorithm, byte[] salt, int iterationCount)Return a new S2K instance using theSALTED_AND_ITERATEDmethod, using the given hashstatic S2KsaltedS2K(int algorithm, byte[] salt)Return a new S2K instance using theSALTEDmethod, using the given hashstatic S2KsimpleS2K(int algorithm)Return a new S2K instance using theSIMPLEmethod, using the given hash-
Methods inherited from class org.bouncycastle.bcpg.BCPGObject
getEncoded
-
-
-
-
Field Detail
-
SIMPLE
public static final int SIMPLE
Simple key generation. A single non-salted iteration of a hash function- See Also:
- Constant Field Values
-
SALTED
public static final int SALTED
Salted key generation. A single iteration of a hash function with a (unique) salt- See Also:
- Constant Field Values
-
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:
- Constant Field Values
-
ARGON_2
public static final int ARGON_2
Memory-hard, salted key generation using Argon2 hash algorithm.- See Also:
- Constant Field Values
-
GNU_DUMMY_S2K
public static final int GNU_DUMMY_S2K
- See Also:
- Constant Field Values
-
GNU_PROTECTION_MODE_NO_PRIVATE_KEY
public static final int GNU_PROTECTION_MODE_NO_PRIVATE_KEY
- See Also:
- Constant Field Values
-
GNU_PROTECTION_MODE_DIVERT_TO_CARD
public static final int GNU_PROTECTION_MODE_DIVERT_TO_CARD
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
S2K
public S2K(int algorithm)
Constructs a specifier for asimpleS2K generation.- Parameters:
algorithm- thedigest algorithmto use.
-
S2K
public S2K(int algorithm, byte[] iv)Constructs a specifier for asaltedS2K generation.- Parameters:
algorithm- thedigest algorithmto 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 asalted and iteratedS2K generation.- Parameters:
algorithm- thedigest algorithmto iterate.iv- the salt to apply to input to the key generation.itCount- the single byte iteration count specifier.
-
S2K
public S2K(S2K.Argon2Params argon2Params)
Constructs a specifier for anS2K method using Argon2.- Parameters:
argon2Params- argon2 parameters
-
S2K
public S2K(S2K.GNUDummyParams gnuDummyParams)
Construct a specifier for an S2K using theGNU_DUMMY_S2Kmethod.- Parameters:
gnuDummyParams- GNU_DUMMY_S2K parameters
-
-
Method Detail
-
simpleS2K
public static S2K simpleS2K(int algorithm)
Return a new S2K instance using theSIMPLEmethod, using the given hashalgorithm
.- Parameters:
algorithm- hash algorithm tag- Returns:
- S2K
-
saltedS2K
public static S2K saltedS2K(int algorithm, byte[] salt)
- Parameters:
algorithm- hash algorithm tagsalt- salt- Returns:
- S2K
-
saltedAndIteratedS2K
public static S2K saltedAndIteratedS2K(int algorithm, byte[] salt, int iterationCount)
Return a new S2K instance using theSALTED_AND_ITERATEDmethod, using the given hashalgorithm
,salt
anditerationCount
.- Parameters:
algorithm- hash algorithm tagsalt- saltiterationCount- number of iterations- Returns:
- S2K
-
argon2S2K
public static S2K argon2S2K(S2K.Argon2Params parameters)
Return a new S2K instance using theARGON_2method, using the given argon2parameters
.- Parameters:
parameters- argon2 parameters- Returns:
- S2K
-
gnuDummyS2K
public static S2K gnuDummyS2K(S2K.GNUDummyParams parameters)
Return a new S2K instance using theGNU_DUMMY_S2Kmethod, using the given GNU Dummy S2Kparameters
.- Parameters:
parameters- GNU Dummy S2K parameters- Returns:
- S2K
-
getType
public int getType()
Gets thedigest algorithmspecified.
-
getHashAlgorithm
public int getHashAlgorithm()
Gets thehash algorithmfor 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.
-
getPasses
public int getPasses()
Return the number of passes - only Argon2- Returns:
- number of passes
-
getProtectionMode
public int getProtectionMode()
Gets the protection mode - only if GNU_DUMMY_S2K
-
getParallelism
public int getParallelism()
Gets the degree of parallelism - only if ARGON_2- Returns:
- parallelism
-
getMemorySizeExponent
public int getMemorySizeExponent()
Gets the memory size exponent - only if ARGON_2- Returns:
- memory size exponent
-
encode
public void encode(BCPGOutputStream out) throws java.io.IOException
- Specified by:
encodein classBCPGObject- Throws:
java.io.IOException
-
-