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
FieldsModifier and TypeFieldDescriptionprotected intprotected byte[]protected intprotected final CryptoServicePurposeprotected intprotected booleanprotected long[] -
Constructor Summary
ConstructorsConstructorDescriptionKeccakDigest(int bitLength) KeccakDigest(int bitLength, CryptoServicePurpose purpose) KeccakDigest(CryptoServicePurpose purpose) KeccakDigest(KeccakDigest source) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidabsorb(byte data) protected voidabsorb(byte[] data, int off, int len) protected voidabsorbBits(int data, int bits) protected CryptoServicePropertiesintdoFinal(byte[] out, int outOff) close the digest, producing the final digest value.protected intdoFinal(byte[] out, int outOff, byte partialByte, int partialBits) return the algorithm nameintReturn the size of block that the compression function is applied to in bytes.intreturn the size, in bytes, of the digest produced by this message digest.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 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: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
-