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 CryptoServicePurposeprotected intprotected booleanprotected long[] -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedKeccakDigest(byte[] encodedState) protectedKeccakDigest(byte[] encodedState, CryptoServicePurpose purpose) KeccakDigest(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 voidcopyIn(KeccakDigest source) 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.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 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
-
KeccakDigest
protected KeccakDigest(byte[] encodedState) -
KeccakDigest
-
-
Method Details
-
copyIn
-
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
-
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
-
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
-
getEncodedState
protected byte[] getEncodedState(byte[] encState)
-