For the latest news and information visit The GNU Crypto project

## gnu.crypto.mac
Class BaseMac

    java.lang.Object
      |
      +--gnu.crypto.mac.BaseMac

All Implemented Interfaces:
  java.lang.Cloneable, IMac

Direct Known Subclasses:
  HMac, TMMH16, UHash32, UMac32

public abstract class BaseMac
extends java.lang.Object
implements IMac

A base abstract class to facilitate MAC (Message Authentication Code) implementations.

Field Summary
`protected java.lang.String` `name` The canonical name prefix of the MAC.
`protected int` `truncatedSize` The length of the truncated output in bytes.
`protected IMessageDigest` `underlyingHash` Reference to the underlying hash algorithm instance.

Fields inherited from interface gnu.crypto.mac.IMac
`MAC_KEY_MATERIAL, TRUNCATED_SIZE`

Constructor Summary
`protected` `BaseMac(java.lang.String name)` Trivial constructor for use by concrete subclasses.
`protected` `BaseMac(java.lang.String name, IMessageDigest underlyingHash)` Trivial constructor for use by concrete subclasses.

Method Summary
`abstract java.lang.Object` `clone()` Returns a clone copy of this instance.
`abstract byte[]` `digest()` Completes the MAC by performing final operations such as padding and resetting the instance.
`abstract void` `init(java.util.Map attributes)` Initialises the algorithm with designated attributes.
`int` `macSize()` Returns the output length in bytes of this MAC algorithm.
`java.lang.String` `name()` Returns the canonical name of this algorithm.
`void` `reset()` Resets the algorithm instance for re-initialisation and use with other characteristics.
`abstract boolean` `selfTest()` A basic test.
`void` `update(byte b)` Continues a MAC operation using the input byte.
`void` `update(byte[] b, int offset, int len)` Continues a MAC operation, by filling the buffer, processing data in the algorithm's MAC_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 java.lang.String name

  The canonical name prefix of the MAC.

### underlyingHash

    protected IMessageDigest underlyingHash

  Reference to the underlying hash algorithm instance.

### truncatedSize

    protected int truncatedSize

  The length of the truncated output in bytes.

Constructor Detail

### BaseMac

    protected BaseMac(java.lang.String name)

  Trivial constructor for use by concrete subclasses.

Parameters:
  `name` - the canonical name of this instance.

### BaseMac

    protected BaseMac(java.lang.String name,
                      IMessageDigest underlyingHash)

  Trivial constructor for use by concrete subclasses.

Parameters:
  `name` - the canonical name of this instance.
  `underlyingHash` - the underlying message digest algorithm instance.

Method Detail

### name

    public java.lang.String name()

  Description copied from interface: `IMac`

  Returns the canonical name of this algorithm.

  Specified by:
    `name` in interface `IMac`
  Returns:
    the canonical name of this algorithm.

### macSize

    public int macSize()

  Description copied from interface: `IMac`

  Returns the output length in bytes of this MAC algorithm.

  Specified by:
    `macSize` in interface `IMac`
  Returns:
    the output length in bytes of this MAC algorithm.

### update

    public void update(byte b)

  Description copied from interface: `IMac`

  Continues a MAC operation using the input byte.

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

### update

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

  Description copied from interface: `IMac`

  Continues a MAC operation, by filling the buffer, processing data in the algorithm's MAC_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 `IMac`
  Parameters:
    `b` - the input block.
    `offset` - start of meaningful bytes in input block.
    `len` - number of bytes, in input block, to consider.

### reset

    public void reset()

  Description copied from interface: `IMac`

  Resets the algorithm instance for re-initialisation and use with other characteristics. This method always succeeds.

  Specified by:
    `reset` in interface `IMac`

### clone

    public abstract java.lang.Object clone()

  Description copied from interface: `IMac`

  Returns a clone copy of this instance.

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

### init

    public abstract void init(java.util.Map attributes)
                       throws java.security.InvalidKeyException,
                              java.lang.IllegalStateException

  Description copied from interface: `IMac`

  Initialises the algorithm with designated attributes. Permissible names and values are described in the class documentation above.

  Specified by:
    `init` in interface `IMac`
  Parameters:
    `attributes` - a set of name-value pairs that describe the desired future instance behaviour.
  Throws:
    `java.security.InvalidKeyException` - if the key data is invalid.
    `java.lang.IllegalStateException` - if the instance is already initialised.
  See Also:
    `IMac.MAC_KEY_MATERIAL`

### digest

    public abstract byte[] digest()

  Description copied from interface: `IMac`

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

  Specified by:
    `digest` in interface `IMac`
  Returns:
    the array of bytes representing the MAC value.

### selfTest

    public abstract boolean selfTest()

  Description copied from interface: `IMac`

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

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

For the latest news and information visit The GNU Crypto project

Copyright © 2001, 2002, 2003, 2004 Free Software Foundation, Inc.