gnu.crypto.hash

## Class BaseHashStandalone

- java.lang.Object
- - gnu.crypto.hash.BaseHashStandalone

- All Implemented Interfaces:
    IMessageDigestStandalone, Cloneable
  Direct Known Subclasses:
    Sha256Standalone

      public abstract class BaseHashStandalone
      extends Object
      implements IMessageDigestStandalone

  A base abstract class to facilitate hash implementations.

  Version:
    $Revision: 1.1 $

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `blockSize` The hash (inner) block size in bytes.
    `protected byte[]` | `buffer` Temporary input buffer.
    `protected long` | `count` Number of bytes processed so far.
    `protected int` | `hashSize` The hash (output) size in bytes.
    `protected String` | `name` The canonical name prefix of the hash.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `BaseHashStandalone(String name, int hashSize, int blockSize)` Trivial constructor for use by concrete subclasses.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `blockSize()` Returns the algorithm's (inner) block size in bytes.
    `abstract Object` | `clone()` Returns a clone copy of this instance.
    `byte[]` | `digest()` Completes the message digest by performing final operations such as padding and resetting the instance.
    `protected abstract byte[]` | `getResult()` Constructs the result from the contents of the current context.
    `int` | `hashSize()` Returns the output length in bytes of this message digest algorithm.
    `String` | `name()` Returns the canonical name of this algorithm.
    `protected abstract byte[]` | `padBuffer()` Returns the byte array to use as padding before completing a hash operation.
    `void` | `reset()` Resets the current context of this instance clearing any eventually cached intermediary values.
    `protected abstract void` | `resetContext()` Resets the instance for future re-use.
    `abstract boolean` | `selfTest()` A basic test.
    `protected abstract void` | `transform(byte[] in, int offset)` The block digest transformation per se.
    `void` | `update(byte b)` Continues a message digest operation using the input byte.
    `void` | `update(byte[] b)` Continues a message digest operation, by filling the buffer, processing data in the algorithm's HASH_SIZE-bit block(s), updating the context and count, and buffering the remaining bytes in buffer for the next operation.
    `void` | `update(byte[] b, int offset, int len)` Continues a message digest operation, by filling the buffer, processing data in the algorithm's HASH_SIZE-bit block(s), updating the context and count, and buffering the remaining bytes in buffer for the next operation.

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### name

          protected String name

      The canonical name prefix of the hash.

    - #### hashSize

          protected int hashSize

      The hash (output) size in bytes.

    - #### blockSize

          protected int blockSize

      The hash (inner) block size in bytes.

    - #### count

          protected long count

      Number of bytes processed so far.

    - #### buffer

          protected byte[] buffer

      Temporary input buffer.

  - ### Constructor Detail

    - #### BaseHashStandalone

          protected BaseHashStandalone(String name,
                            int hashSize,
                            int blockSize)

      Trivial constructor for use by concrete subclasses.

      Parameters:
        `name` - the canonical name prefix of this instance.
        `hashSize` - the block size of the output in bytes.
        `blockSize` - the block size of the internal transform.

  - ### Method Detail

    - #### name

          public String name()

      Description copied from interface: `IMessageDigestStandalone`

      Returns the canonical name of this algorithm.

      Specified by:
        `name` in interface `IMessageDigestStandalone`
      Returns:
        the canonical name of this instance.

    - #### hashSize

          public int hashSize()

      Description copied from interface: `IMessageDigestStandalone`

      Returns the output length in bytes of this message digest algorithm.

      Specified by:
        `hashSize` in interface `IMessageDigestStandalone`
      Returns:
        the output length in bytes of this message digest algorithm.

    - #### blockSize

          public int blockSize()

      Description copied from interface: `IMessageDigestStandalone`

      Returns the algorithm's (inner) block size in bytes.

      Specified by:
        `blockSize` in interface `IMessageDigestStandalone`
      Returns:
        the algorithm's inner block size in bytes.

    - #### update

          public void update(byte b)

      Description copied from interface: `IMessageDigestStandalone`

      Continues a message digest operation using the input byte.

      Specified by:
        `update` in interface `IMessageDigestStandalone`
      Parameters:
        `b` - the input byte to digest.

    - #### update

          public void update(byte[] b)

      Description copied from interface: `IMessageDigestStandalone`

      Continues a message digest operation, by filling the buffer, processing data in the algorithm's HASH_SIZE-bit block(s), updating the context and count, and buffering the remaining bytes in buffer for the next operation.

      Specified by:
        `update` in interface `IMessageDigestStandalone`
      Parameters:
        `b` - the input block.

    - #### update

          public void update(byte[] b,
                    int offset,
                    int len)

      Description copied from interface: `IMessageDigestStandalone`

      Continues a message digest operation, by filling the buffer, processing data in the algorithm's HASH_SIZE-bit block(s), updating the context and count, and buffering the remaining bytes in buffer for the next operation.

      Specified by:
        `update` in interface `IMessageDigestStandalone`
      Parameters:
        `b` - the input block.
        `offset` - start of meaningful bytes in input block.
        `len` - number of bytes, in input block, to consider.

    - #### digest

          public byte[] digest()

      Description copied from interface: `IMessageDigestStandalone`

      Completes the message digest by performing final operations such as padding and resetting the instance.

      Specified by:
        `digest` in interface `IMessageDigestStandalone`
      Returns:
        the array of bytes representing the hash value.

    - #### reset

          public void reset()

      Description copied from interface: `IMessageDigestStandalone`

      Resets the current context of this instance clearing any eventually cached intermediary values.

      Specified by:
        `reset` in interface `IMessageDigestStandalone`

    - #### clone

          public abstract Object clone()

      Description copied from interface: `IMessageDigestStandalone`

      Returns a clone copy of this instance.

      Specified by:
        `clone` in interface `IMessageDigestStandalone`
      Overrides:
        `clone` in class `Object`
      Returns:
        a clone copy of this instance.

    - #### selfTest

          public abstract boolean selfTest()

      Description copied from interface: `IMessageDigestStandalone`

      A basic test. Ensures that the digest of a pre-determined message is equal to a known pre-computed value.

      Specified by:
        `selfTest` in interface `IMessageDigestStandalone`
      Returns:
        `true` if the implementation passes a basic self-test. Returns `false` otherwise.

    - #### padBuffer

          protected abstract byte[] padBuffer()

      Returns the byte array to use as padding before completing a hash operation.

      Returns:
        the bytes to pad the remaining bytes in the buffer before completing a hash operation.

    - #### getResult

          protected abstract byte[] getResult()

      Constructs the result from the contents of the current context.

      Returns:
        the output of the completed hash operation.

    - #### resetContext

          protected abstract void resetContext()

      Resets the instance for future re-use.

    - #### transform

          protected abstract void transform(byte[] in,
                       int offset)

      The block digest transformation per se.

      Parameters:
        `in` - the blockSize long block, as an array of bytes to digest.
        `offset` - the index where the data to digest is located within the input buffer.