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 https://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 intbitsInQueueprotected byte[]dataQueueprotected intfixedOutputLengthprotected CryptoServicePurposepurposeprotected intrateprotected booleansqueezingprotected long[]state
-
Constructor Summary
Constructors Modifier Constructor Description KeccakDigest()protectedKeccakDigest(byte[] encodedState)protectedKeccakDigest(byte[] encodedState, CryptoServicePurpose purpose)KeccakDigest(int bitLength)KeccakDigest(int bitLength, CryptoServicePurpose purpose)KeccakDigest(CryptoServicePurpose purpose)KeccakDigest(KeccakDigest source)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidabsorb(byte data)protected voidabsorb(byte[] data, int off, int len)protected voidabsorbBits(int data, int bits)protected voidcopyIn(KeccakDigest source)protected CryptoServicePropertiescryptoServiceProperties()intdoFinal(byte[] out, int outOff)close the digest, producing the final digest value.protected intdoFinal(byte[] out, int outOff, byte partialByte, int partialBits)java.lang.StringgetAlgorithmName()return the algorithm nameintgetByteLength()Return the size of block that the compression function is applied to in bytes.intgetDigestSize()return the size, in bytes, of the digest produced by this message digest.protected byte[]getEncodedState(byte[] encState)voidreset()reset the digest back to it's initial state.protected voidsqueeze(byte[] output, int offset, long outputLength)voidupdate(byte in)update the message digest with a single byte.voidupdate(byte[] in, int inOff, int len)update the message digest with a block of bytes.
-
-
-
Field Detail
-
purpose
protected CryptoServicePurpose 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 Detail
-
KeccakDigest
public KeccakDigest()
-
KeccakDigest
public KeccakDigest(CryptoServicePurpose purpose)
-
KeccakDigest
public KeccakDigest(int bitLength)
-
KeccakDigest
public KeccakDigest(int bitLength, CryptoServicePurpose purpose)
-
KeccakDigest
public KeccakDigest(KeccakDigest source)
-
KeccakDigest
protected KeccakDigest(byte[] encodedState)
-
KeccakDigest
protected KeccakDigest(byte[] encodedState, CryptoServicePurpose purpose)
-
-
Method Detail
-
copyIn
protected void copyIn(KeccakDigest source)
-
getAlgorithmName
public java.lang.String getAlgorithmName()
Description copied from interface:Digestreturn the algorithm name- Specified by:
getAlgorithmNamein interfaceDigest- Returns:
- the algorithm name
-
getDigestSize
public int getDigestSize()
Description copied from interface:Digestreturn the size, in bytes, of the digest produced by this message digest.- Specified by:
getDigestSizein interfaceDigest- Returns:
- the size, in bytes, of the digest produced by this message digest.
-
update
public void update(byte in)
Description copied from interface:Digestupdate the message digest with a single byte.
-
update
public void update(byte[] in, int inOff, int len)Description copied from interface:Digestupdate the message digest with a block of bytes.
-
doFinal
public int doFinal(byte[] out, int outOff)Description copied from interface:Digestclose 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:Digestreset 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:
getByteLengthin 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
protected CryptoServiceProperties cryptoServiceProperties()
-
getEncodedState
protected byte[] getEncodedState(byte[] encState)
-
-