Class KeccakDigest

java.lang.Object
org.bouncycastle.crypto.digests.KeccakDigest
All Implemented Interfaces:
Digest, ExtendedDigest
Direct Known Subclasses:
SHA3Digest, SHAKEDigest

public class KeccakDigest extends 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 int
     
    protected byte[]
     
    protected int
     
    protected int
     
    protected boolean
     
    protected long[]
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
    KeccakDigest(int bitLength)
     
     
  • Method Summary

    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)
     
    return the algorithm name
    int
    Return the size of block that the compression function is applied to in bytes.
    int
    return the size, in bytes, of the digest produced by this message digest.
    void
    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 Details

    • 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

      public KeccakDigest(int bitLength)
    • KeccakDigest

      public KeccakDigest(KeccakDigest source)
  • Method Details

    • getAlgorithmName

      public String getAlgorithmName()
      Description copied from interface: Digest
      return the algorithm name
      Specified by:
      getAlgorithmName in interface 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
      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
      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
      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
      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)