Bouncy Castle Cryptography Library 1.77.0

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
protected  int bitsInQueue
           
protected  byte[] dataQueue
           
protected  int fixedOutputLength
           
protected  CryptoServicePurpose purpose
           
protected  int rate
           
protected  boolean squeezing
           
protected  long[] state
           
 
Constructor Summary
KeccakDigest()
           
KeccakDigest(CryptoServicePurpose purpose)
           
KeccakDigest(int bitLength)
           
KeccakDigest(int bitLength, CryptoServicePurpose purpose)
           
KeccakDigest(KeccakDigest source)
           
 
Method Summary
protected  void absorb(byte data)
           
protected  void absorb(byte[] data, int off, int len)
           
protected  void absorbBits(int data, int bits)
           
protected  CryptoServiceProperties 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)
           
 java.lang.String getAlgorithmName()
          return the algorithm name
 int 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

purpose

protected final 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)
Method Detail

getAlgorithmName

public java.lang.String getAlgorithmName()
Description copied from interface: Digest
return the algorithm name
Specified by:
getAlgorithmName in interface Digest
Following copied from interface: org.bouncycastle.crypto.Digest
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 interface Digest
Following copied from interface: org.bouncycastle.crypto.Digest
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.
Specified by:
update in interface Digest
Following copied from interface: org.bouncycastle.crypto.Digest
Parameters:
in - the input byte to be entered.

update

public void update(byte[] in,
                   int inOff,
                   int len)
Description copied from interface: Digest
update the message digest with a block of bytes.
Specified by:
update in interface Digest
Following copied from interface: org.bouncycastle.crypto.Digest
Parameters:
in - the byte array containing the data.
inOff - the offset into the byte array where the data starts.
len - the length of the data.

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.
Specified by:
doFinal in interface Digest
Following copied from interface: org.bouncycastle.crypto.Digest
Parameters:
out - the array the digest is to be copied into.
outOff - the offset into the out array the digest is to start at.

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.
Specified by:
reset in interface Digest

getByteLength

public int getByteLength()
Return the size of block that the compression function is applied to in bytes.
Specified by:
getByteLength in interface ExtendedDigest
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()

Bouncy Castle Cryptography Library 1.77.0