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
public class KeccakDigest extends java.lang.Object implements ExtendedDigest
implementation of Keccak based on following KeccakNISTInterface.c from http://keccak.noekeon.org/Following the naming conventions used in the C source code to enable easy review of the implementation.
-
-
Field Summary
Fields Modifier and Type Field Description protected int
bitsInQueue
protected byte[]
dataQueue
protected int
fixedOutputLength
protected int
rate
protected boolean
squeezing
protected long[]
state
-
Constructor Summary
Constructors Constructor Description KeccakDigest()
KeccakDigest(int bitLength)
KeccakDigest(KeccakDigest source)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
absorb(byte data)
protected void
absorb(byte[] data, int off, int len)
protected void
absorbBits(int data, int bits)
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)
protected byte[]
dumpState()
java.lang.String
getAlgorithmName()
return the algorithm nameint
getByteLength()
Return the size of block that the compression function is applied to in bytes.int
getDigestSize()
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.
-
-
-
Constructor Detail
-
KeccakDigest
public KeccakDigest()
-
KeccakDigest
public KeccakDigest(int bitLength)
-
KeccakDigest
public KeccakDigest(KeccakDigest source)
-
-
Method Detail
-
getAlgorithmName
public java.lang.String 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)
-
dumpState
protected byte[] dumpState()
-
squeeze
protected void squeeze(byte[] output, int offset, long outputLength)
-
-