Class SkeinDigest

java.lang.Object
org.bouncycastle.crypto.digests.SkeinDigest
All Implemented Interfaces:
Digest, ExtendedDigest, Memoable

public class SkeinDigest extends Object implements ExtendedDigest, Memoable
Implementation of the Skein parameterised hash function in 256, 512 and 1024 bit block sizes, based on the Threefish tweakable block cipher.

This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3 competition in October 2010.

Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    1024 bit block size - Skein-1024
    static final int
    256 bit block size - Skein-256
    static final int
    512 bit block size - Skein-512
  • Constructor Summary

    Constructors
    Constructor
    Description
    SkeinDigest(int stateSizeBits, int digestSizeBits)
    Constructs a Skein digest with an internal state size and output size.
    SkeinDigest(int stateSizeBits, int digestSizeBits, CryptoServicePurpose purpose)
     
     
  • Method Summary

    Modifier and Type
    Method
    Description
    Produce a copy of this object with its configuration and in its current state.
    int
    doFinal(byte[] out, int outOff)
    close the digest, producing the final digest value.
    return the algorithm name
    int
    Return the size in bytes of the internal buffer the digest applies it's compression function to.
    int
    return the size, in bytes, of the digest produced by this message digest.
    void
    Optionally initialises the Skein digest with the provided parameters.
    See SkeinParameters for details on the parameterisation of the Skein hash function.
    void
    reset the digest back to it's initial state.
    void
    reset(Memoable other)
    Restore a copied object state into this object.
    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

    • SKEIN_256

      public static final int SKEIN_256
      256 bit block size - Skein-256
      See Also:
    • SKEIN_512

      public static final int SKEIN_512
      512 bit block size - Skein-512
      See Also:
    • SKEIN_1024

      public static final int SKEIN_1024
      1024 bit block size - Skein-1024
      See Also:
  • Constructor Details

    • SkeinDigest

      public SkeinDigest(int stateSizeBits, int digestSizeBits)
      Constructs a Skein digest with an internal state size and output size.
      Parameters:
      stateSizeBits - the internal state size in bits - one of SKEIN_256, SKEIN_512 or SKEIN_1024.
      digestSizeBits - the output/digest size to produce in bits, which must be an integral number of bytes.
    • SkeinDigest

      public SkeinDigest(int stateSizeBits, int digestSizeBits, CryptoServicePurpose purpose)
    • SkeinDigest

      public SkeinDigest(SkeinDigest digest)
  • Method Details

    • reset

      public void reset(Memoable other)
      Description copied from interface: Memoable
      Restore a copied object state into this object.

      Implementations of this method should try to avoid or minimise memory allocation to perform the reset.

      Specified by:
      reset in interface Memoable
      Parameters:
      other - an object originally copied from an object of the same type as this instance.
    • copy

      public Memoable copy()
      Description copied from interface: Memoable
      Produce a copy of this object with its configuration and in its current state.

      The returned object may be used simply to store the state, or may be used as a similar object starting from the copied state.

      Specified by:
      copy in interface Memoable
    • 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.
    • init

      public void init(SkeinParameters params)
      Optionally initialises the Skein digest with the provided parameters.
      See SkeinParameters for details on the parameterisation of the Skein hash function.
      Parameters:
      params - the parameters to apply to this engine, or null to use no parameters.
    • 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[] 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.