For the latest news and information visit The GNU Crypto project

## javax.crypto
Class MacSpi

    java.lang.Object
      |
      +--javax.crypto.MacSpi

Direct Known Subclasses:
  gnu.crypto.jce.mac.MacAdapter

public abstract class MacSpi
extends java.lang.Object

This class defines the Service Provider Interface (SPI) for the `Mac` class. All the abstract methods in this class must be implemented by each cryptographic service provider who wishes to supply the implementation of a particular MAC algorithm.

Implementations are free to implement the Cloneable interface.

Constructor Summary
`MacSpi()`

Method Summary
`java.lang.Object` `clone()` Returns a clone if the implementation is cloneable.
`protected abstract byte[]` `engineDoFinal()` Completes the MAC computation and resets the MAC for further use, maintaining the secret key that the MAC was initialized with.
`protected abstract int` `engineGetMacLength()` Returns the length of the MAC in bytes.
`protected abstract void` `engineInit(java.security.Key key, java.security.spec.AlgorithmParameterSpec params)` Initializes the MAC with the given (secret) key and algorithm parameters.
`protected abstract void` `engineReset()` Resets the MAC for further use, maintaining the secret key that the MAC was initialized with.
`protected abstract void` `engineUpdate(byte input)` Processes the given byte.
`protected abstract void` `engineUpdate(byte[] input, int offset, int len)` Processes the first `len` bytes in `input`, starting at `offset` inclusive.

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### MacSpi

    public MacSpi()

Method Detail

### engineGetMacLength

    protected abstract int engineGetMacLength()

  Returns the length of the MAC in bytes.

  Returns:
    the MAC length in bytes.

### engineInit

    protected abstract void engineInit(java.security.Key key,
                                       java.security.spec.AlgorithmParameterSpec params)
                                throws java.security.InvalidKeyException,
                                       java.security.InvalidAlgorithmParameterException

  Initializes the MAC with the given (secret) key and algorithm parameters.

  Parameters:
    `key` - - the (secret) key.
    `params` - - the algorithm parameters.
  Throws:
    `java.security.InvalidKeyException` - if the given key is inappropriate for initializing this MAC.
    `java.security.InvalidAlgorithmParameterException` - - if the given algorithm parameters are inappropriate for this MAC.

### engineUpdate

    protected abstract void engineUpdate(byte input)

  Processes the given byte.

  Parameters:
    `input` - - the input byte to be processed.

### engineUpdate

    protected abstract void engineUpdate(byte[] input,
                                         int offset,
                                         int len)

  Processes the first `len` bytes in `input`, starting at `offset` inclusive.

  Parameters:
    `input` - the input buffer.
    `offset` - the offset in `input` where the input starts.
    `len` - the number of bytes to process.

### engineDoFinal

    protected abstract byte[] engineDoFinal()

  Completes the MAC computation and resets the MAC for further use, maintaining the secret key that the MAC was initialized with.

  Returns:
    the MAC result.

### engineReset

    protected abstract void engineReset()

  Resets the MAC for further use, maintaining the secret key that the MAC was initialized with.

### clone

    public java.lang.Object clone()
                           throws java.lang.CloneNotSupportedException

  Returns a clone if the implementation is cloneable.

  Overrides:
    `clone` in class `java.lang.Object`
  Returns:
    a clone if the implementation is cloneable.
  Throws:
    `java.lang.CloneNotSupportedException` - if this is called on an implementation that does not support `Cloneable`.

For the latest news and information visit The GNU Crypto project

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