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
`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
`protected` `BaseHashStandalone(String name, int hashSize, int blockSize)` Trivial constructor for use by concrete subclasses.

### Method Summary

Methods
`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.