For the latest news and information visit
The GNU Crypto project

gnu.crypto.mac
Class BaseMac

java.lang.Object
  extended bygnu.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.

Version:
$Revision: 1.2 $

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

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 Free Software Foundation, Inc. All Rights Reserved.