Top Description Inners Fields Constructors Methods
org.bouncycastle.crypto.generators

public Class Argon2BytesGenerator

extends Object
Class Inheritance
Imports
org.bouncycastle.crypto.Digest, org.bouncycastle.crypto.digests.Blake2bDigest, org.bouncycastle.crypto.params.Argon2Parameters, org.bouncycastle.util.Arrays, .Longs, .Pack

Argon2 PBKDF - Based on the results of https://password-hashing.net/ and https://www.ietf.org/archive/id/draft-irtf-cfrg-argon2-03.txt

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class
private static class
private static class

Field Summary

Modifier and TypeField and Description
private static final int
private static final int
private static final int
private static final int
private static final int
private static final int
private int
private static final long
private static final int
private Argon2BytesGenerator.Block[]
private static final int
private static final int
private static final int
private Argon2Parameters
private int
private static final byte[]

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private static void
addByteString(byte[] tmpBlockBytes, Digest digest, byte[] octets)

private void
digest(byte[] tmpBlockBytes, byte[] out, int outOff, int outLen)

private void
private static void
F(long[] v, int a, int b, int c, int d)

private void
fillFirstBlocks(byte[] tmpBlockBytes, byte[] initialHashWithZeros)

(H0 || 0 || i) 72 byte -> 1024 byte (H0 || 1 || i) 72 byte -> 1024 byte

private void
private void
public int
generateBytes(char[] password, byte[] out)

public int
generateBytes(char[] password, byte[] out, int outOff, int outLen)

public int
generateBytes(byte[] password, byte[] out)

public int
generateBytes(byte[] password, byte[] out, int outOff, int outLen)

private int
getPrevOffset(int currentOffset)

private long
getPseudoRandom(Argon2BytesGenerator.FillBlock filler, int index, Argon2BytesGenerator.Block addressBlock, Argon2BytesGenerator.Block inputBlock, int prevOffset, boolean dataIndependentAddressing)

private int
getRefColumn(Argon2BytesGenerator.Position position, int index, long pseudoRandom, boolean sameLane)

private int
getRefLane(Argon2BytesGenerator.Position position, long pseudoRandom)

private static int
private void
hash(byte[] input, byte[] out, int outOff, int outLen)

H' - hash - variable length hash function

public void
init(Argon2Parameters
Argon2 configuration.
parameters
)

Initialise the Argon2BytesGenerator from the parameters.

private void
private void
initialize(byte[] tmpBlockBytes, byte[] password, int outputLength)

private void
initMemory(int memoryBlocks)

private long
intToLong(int x)

private boolean
private boolean
private void
private static void
quarterRound(long[] v, int x, int y, int z, int s)

private void
private static void
roundFunction(Argon2BytesGenerator.Block block, int v0, int v1, int v2, int v3, int v4, int v5, int v6, int v7, int v8, int v9, int v10, int v11, int v12, int v13, int v14, int v15)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

ARGON2_ADDRESSES_IN_BLOCKback to summary
private static final int ARGON2_ADDRESSES_IN_BLOCK
ARGON2_BLOCK_SIZEback to summary
private static final int ARGON2_BLOCK_SIZE
ARGON2_PREHASH_DIGEST_LENGTHback to summary
private static final int ARGON2_PREHASH_DIGEST_LENGTH
ARGON2_PREHASH_SEED_LENGTHback to summary
private static final int ARGON2_PREHASH_SEED_LENGTH
ARGON2_QWORDS_IN_BLOCKback to summary
private static final int ARGON2_QWORDS_IN_BLOCK
ARGON2_SYNC_POINTSback to summary
private static final int ARGON2_SYNC_POINTS
laneLengthback to summary
private int laneLength
M32Lback to summary
private static final long M32L
MAX_PARALLELISMback to summary
private static final int MAX_PARALLELISM
memoryback to summary
private Argon2BytesGenerator.Block[] memory
MIN_ITERATIONSback to summary
private static final int MIN_ITERATIONS
MIN_OUTLENback to summary
private static final int MIN_OUTLEN
MIN_PARALLELISMback to summary
private static final int MIN_PARALLELISM
parametersback to summary
private Argon2Parameters parameters
segmentLengthback to summary
private int segmentLength
ZERO_BYTESback to summary
private static final byte[] ZERO_BYTES

Constructor Detail

Argon2BytesGeneratorback to summary
public Argon2BytesGenerator()

Method Detail

addByteStringback to summary
private static void addByteString(byte[] tmpBlockBytes, Digest digest, byte[] octets)
digestback to summary
private void digest(byte[] tmpBlockBytes, byte[] out, int outOff, int outLen)
doInitback to summary
private void doInit(Argon2Parameters parameters)
Fback to summary
private static void F(long[] v, int a, int b, int c, int d)
fillFirstBlocksback to summary
private void fillFirstBlocks(byte[] tmpBlockBytes, byte[] initialHashWithZeros)

(H0 || 0 || i) 72 byte -> 1024 byte (H0 || 1 || i) 72 byte -> 1024 byte

fillMemoryBlocksback to summary
private void fillMemoryBlocks()
fillSegmentback to summary
private void fillSegment(Argon2BytesGenerator.FillBlock filler, Argon2BytesGenerator.Position position)
generateBytesback to summary
public int generateBytes(char[] password, byte[] out)
generateBytesback to summary
public int generateBytes(char[] password, byte[] out, int outOff, int outLen)
generateBytesback to summary
public int generateBytes(byte[] password, byte[] out)
generateBytesback to summary
public int generateBytes(byte[] password, byte[] out, int outOff, int outLen)
getPrevOffsetback to summary
private int getPrevOffset(int currentOffset)
getPseudoRandomback to summary
private long getPseudoRandom(Argon2BytesGenerator.FillBlock filler, int index, Argon2BytesGenerator.Block addressBlock, Argon2BytesGenerator.Block inputBlock, int prevOffset, boolean dataIndependentAddressing)
getRefColumnback to summary
private int getRefColumn(Argon2BytesGenerator.Position position, int index, long pseudoRandom, boolean sameLane)
getRefLaneback to summary
private int getRefLane(Argon2BytesGenerator.Position position, long pseudoRandom)
getStartingIndexback to summary
private static int getStartingIndex(Argon2BytesGenerator.Position position)
hashback to summary
private void hash(byte[] input, byte[] out, int outOff, int outLen)

H' - hash - variable length hash function

initback to summary
public void init(Argon2Parameters parameters)

Initialise the Argon2BytesGenerator from the parameters.

Parameters
parameters:Argon2Parameters

Argon2 configuration.

initAddressBlocksback to summary
private void initAddressBlocks(Argon2BytesGenerator.FillBlock filler, Argon2BytesGenerator.Position position, Argon2BytesGenerator.Block inputBlock, Argon2BytesGenerator.Block addressBlock)
initializeback to summary
private void initialize(byte[] tmpBlockBytes, byte[] password, int outputLength)
initMemoryback to summary
private void initMemory(int memoryBlocks)
intToLongback to summary
private long intToLong(int x)
isDataIndependentAddressingback to summary
private boolean isDataIndependentAddressing(Argon2BytesGenerator.Position position)
isWithXorback to summary
private boolean isWithXor(Argon2BytesGenerator.Position position)
nextAddressesback to summary
private void nextAddresses(Argon2BytesGenerator.FillBlock filler, Argon2BytesGenerator.Block inputBlock, Argon2BytesGenerator.Block addressBlock)
quarterRoundback to summary
private static void quarterRound(long[] v, int x, int y, int z, int s)
resetback to summary
private void reset()
roundFunctionback to summary
private static void roundFunction(Argon2BytesGenerator.Block block, int v0, int v1, int v2, int v3, int v4, int v5, int v6, int v7, int v8, int v9, int v10, int v11, int v12, int v13, int v14, int v15)
org.bouncycastle.crypto.generators back to summary

private Class Argon2BytesGenerator.Block

extends Object
Class Inheritance
  • java.lang.Object
  • org.bouncycastle.crypto.generators.Argon2BytesGenerator.Block

Field Summary

Modifier and TypeField and Description
private static final int
private final long[]
v

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public Argon2BytesGenerator.Block
private void
pack-priv void
fromBytes(byte[] input)

pack-priv void
toBytes(byte[] output)

private void
private void
private void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

SIZEback to summary
private static final int SIZE
vback to summary
private final long[] v

Constructor Detail

Blockback to summary
private Block()

Method Detail

clearback to summary
public Argon2BytesGenerator.Block clear()
copyBlockback to summary
private void copyBlock(Argon2BytesGenerator.Block other)
fromBytesback to summary
pack-priv void fromBytes(byte[] input)
toBytesback to summary
pack-priv void toBytes(byte[] output)
xorback to summary
private void xor(Argon2BytesGenerator.Block b1, Argon2BytesGenerator.Block b2)
xorWithback to summary
private void xorWith(Argon2BytesGenerator.Block b1)
xorWithback to summary
private void xorWith(Argon2BytesGenerator.Block b1, Argon2BytesGenerator.Block b2)
org.bouncycastle.crypto.generators back to summary

private Class Argon2BytesGenerator.FillBlock

extends Object
Class Inheritance
  • java.lang.Object
  • org.bouncycastle.crypto.generators.Argon2BytesGenerator.FillBlock

Field Summary

Modifier and TypeField and Description
pack-priv Argon2BytesGenerator.Block
pack-priv Argon2BytesGenerator.Block
pack-priv Argon2BytesGenerator.Block
R

pack-priv Argon2BytesGenerator.Block
Z

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
private void
private void
private void
private void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

addressBlockback to summary
pack-priv Argon2BytesGenerator.Block addressBlock
inputBlockback to summary
pack-priv Argon2BytesGenerator.Block inputBlock
Rback to summary
pack-priv Argon2BytesGenerator.Block R
Zback to summary
pack-priv Argon2BytesGenerator.Block Z

Constructor Detail

FillBlockback to summary
private FillBlock()

Method Detail

applyBlakeback to summary
private void applyBlake()
fillBlockback to summary
private void fillBlock(Argon2BytesGenerator.Block Y, Argon2BytesGenerator.Block currentBlock)
fillBlockback to summary
private void fillBlock(Argon2BytesGenerator.Block X, Argon2BytesGenerator.Block Y, Argon2BytesGenerator.Block currentBlock)
fillBlockWithXorback to summary
private void fillBlockWithXor(Argon2BytesGenerator.Block X, Argon2BytesGenerator.Block Y, Argon2BytesGenerator.Block currentBlock)
org.bouncycastle.crypto.generators back to summary

private Class Argon2BytesGenerator.Position

extends Object
Class Inheritance
  • java.lang.Object
  • org.bouncycastle.crypto.generators.Argon2BytesGenerator.Position

Field Summary

Modifier and TypeField and Description
pack-priv int
pack-priv int
pack-priv int

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

laneback to summary
pack-priv int lane
passback to summary
pack-priv int pass
sliceback to summary
pack-priv int slice

Constructor Detail

Positionback to summary
pack-priv Position()