Class AsconCXof128

java.lang.Object
org.bouncycastle.crypto.digests.AsconCXof128
All Implemented Interfaces:
Digest, ExtendedDigest, Xof

public class AsconCXof128 extends Object
Ascon-CXOF128 was introduced in NIST Special Publication (SP) 800-232

Additional details and the specification can be found in: NIST SP 800-232 Ascon-Based Lightweight Cryptography Standards for Constrained Devices. For reference source code and implementation details, please see: Reference, highly optimized, masked C and ASM implementations of Ascon (NIST SP 800-232).

  • Field Details

    • ASCON_PB_ROUNDS

      protected int ASCON_PB_ROUNDS
    • DigestSize

      protected int DigestSize
    • BlockSize

      protected int BlockSize
    • m_buf

      protected byte[] m_buf
    • m_bufPos

      protected int m_bufPos
    • algorithmName

      protected String algorithmName
    • processor

      protected org.bouncycastle.crypto.digests.BufferBaseDigest.ProcessingBuffer processor
  • Constructor Details

    • AsconCXof128

      public AsconCXof128()
    • AsconCXof128

      public AsconCXof128(byte[] s)
    • AsconCXof128

      public AsconCXof128(byte[] s, int off, int len)
  • Method Details

    • pad

      protected long pad(int i)
    • loadBytes

      protected long loadBytes(byte[] bytes, int inOff)
    • loadBytes

      protected long loadBytes(byte[] bytes, int inOff, int n)
    • setBytes

      protected void setBytes(long w, byte[] bytes, int inOff)
    • setBytes

      protected void setBytes(long w, byte[] bytes, int inOff, int n)
    • reset

      public void reset()
      Description copied from interface: Digest
      reset the digest back to it's initial state.
      Specified by:
      reset in interface 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[] input, 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:
      input - the byte array containing the data.
      inOff - the offset into the byte array where the data starts.
      len - the length of the data.
    • doOutput

      public int doOutput(byte[] output, int outOff, int outLen)
      Description copied from interface: Xof
      Start outputting the results of the final calculation for this digest. Unlike doFinal, this method will continue producing output until the Xof is explicitly reset, or signals otherwise.
      Specified by:
      doOutput in interface Xof
      Parameters:
      output - output array to write the output bytes to.
      outOff - offset to start writing the bytes at.
      outLen - the number of output bytes requested.
      Returns:
      the number of bytes written
    • doFinal

      public int doFinal(byte[] output, int outOff, int outLen)
      Description copied from interface: Xof
      Output the results of the final calculation for this digest to outLen number of bytes.
      Specified by:
      doFinal in interface Xof
      Parameters:
      output - output array to write the output bytes to.
      outOff - offset to start writing the bytes at.
      outLen - the number of output bytes requested.
      Returns:
      the number of bytes written
    • padAndAbsorb

      protected void padAndAbsorb()
    • processBytes

      protected void processBytes(byte[] input, int inOff)
    • finish

      protected void finish(byte[] output, int outOff)
    • squeeze

      protected void squeeze(byte[] output, int outOff, int len)
    • hash

      protected int hash(byte[] output, int outOff, int outLen)
    • ensureSufficientOutputBuffer

      protected void ensureSufficientOutputBuffer(byte[] output, int outOff, int len)
    • 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.
    • getByteLength

      public int getByteLength()
      Description copied from interface: ExtendedDigest
      Return the size in bytes of the internal buffer the digest applies it's compression function to.
      Specified by:
      getByteLength in interface ExtendedDigest
      Returns:
      byte length of the digests internal buffer.
    • doFinal

      public int doFinal(byte[] output, 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:
      output - the array the digest is to be copied into.
      outOff - the offset into the out array the digest is to start at.
    • ensureSufficientInputBuffer

      protected void ensureSufficientInputBuffer(byte[] input, int inOff, int len)
    • ensureSufficientOutputBuffer

      protected void ensureSufficientOutputBuffer(byte[] output, int outOff)