Package org.bouncycastle.crypto.digests
Class KeccakDigest
java.lang.Object
org.bouncycastle.crypto.digests.KeccakDigest
- All Implemented Interfaces:
Digest
,ExtendedDigest
- Direct Known Subclasses:
SHA3Digest
,SHAKEDigest
implementation of Keccak based on following KeccakNISTInterface.c from https://keccak.noekeon.org/
Following the naming conventions used in the C source code to enable easy review of the implementation.
-
Field Summary
Modifier and TypeFieldDescriptionprotected int
protected byte[]
protected int
protected final CryptoServicePurpose
protected int
protected boolean
protected long[]
-
Constructor Summary
ConstructorDescriptionKeccakDigest
(int bitLength) KeccakDigest
(int bitLength, CryptoServicePurpose purpose) KeccakDigest
(CryptoServicePurpose purpose) KeccakDigest
(KeccakDigest source) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
absorb
(byte data) protected void
absorb
(byte[] data, int off, int len) protected void
absorbBits
(int data, int bits) protected CryptoServiceProperties
int
doFinal
(byte[] out, int outOff) close the digest, producing the final digest value.protected int
doFinal
(byte[] out, int outOff, byte partialByte, int partialBits) return the algorithm nameint
Return the size of block that the compression function is applied to in bytes.int
return the size, in bytes, of the digest produced by this message digest.void
reset()
reset the digest back to it's initial state.protected void
squeeze
(byte[] output, int offset, long outputLength) void
update
(byte in) update the message digest with a single byte.void
update
(byte[] in, int inOff, int len) update the message digest with a block of bytes.
-
Field Details
-
purpose
-
state
protected long[] state -
dataQueue
protected byte[] dataQueue -
rate
protected int rate -
bitsInQueue
protected int bitsInQueue -
fixedOutputLength
protected int fixedOutputLength -
squeezing
protected boolean squeezing
-
-
Constructor Details
-
KeccakDigest
public KeccakDigest() -
KeccakDigest
-
KeccakDigest
public KeccakDigest(int bitLength) -
KeccakDigest
-
KeccakDigest
-
-
Method Details
-
getAlgorithmName
Description copied from interface:Digest
return the algorithm name- Specified by:
getAlgorithmName
in interfaceDigest
- Returns:
- the algorithm name
-
getDigestSize
public int getDigestSize()Description copied from interface:Digest
return the size, in bytes, of the digest produced by this message digest.- Specified by:
getDigestSize
in interfaceDigest
- Returns:
- the size, in bytes, of the digest produced by this message digest.
-
update
public void update(byte in) Description copied from interface:Digest
update the message digest with a single byte. -
update
public void update(byte[] in, int inOff, int len) Description copied from interface:Digest
update the message digest with a block of bytes. -
doFinal
public int doFinal(byte[] out, int outOff) Description copied from interface:Digest
close the digest, producing the final digest value. The doFinal call leaves the digest reset. -
doFinal
protected int doFinal(byte[] out, int outOff, byte partialByte, int partialBits) -
reset
public void reset()Description copied from interface:Digest
reset the digest back to it's initial state. -
getByteLength
public int getByteLength()Return the size of block that the compression function is applied to in bytes.- Specified by:
getByteLength
in interfaceExtendedDigest
- Returns:
- internal byte length of a block.
-
absorb
protected void absorb(byte data) -
absorb
protected void absorb(byte[] data, int off, int len) -
absorbBits
protected void absorbBits(int data, int bits) -
squeeze
protected void squeeze(byte[] output, int offset, long outputLength) -
cryptoServiceProperties
-