Package javax.crypto

Class Mac

java.lang.Object
javax.crypto.Mac
All Implemented Interfaces:
Cloneable

public class Mac
extends Object
implements Cloneable
This class provides the public API for Message Authentication Code (MAC) algorithms.
  • Constructor Summary

    Constructors
    Modifier Constructor Description
    protected Mac​(MacSpi macSpi, Provider provider, String algorithm)
    Creates a new Mac instance.
  • Method Summary

    Modifier and Type Method Description
    Object clone()
    Clones this Mac instance and the underlying implementation.
    byte[] doFinal()
    Computes the digest of this MAC based on the data previously specified in update(byte) calls.
    byte[] doFinal​(byte[] input)
    Computes the digest of this MAC based on the data previously specified on update(byte) calls and on the final bytes specified by input (or based on those bytes only).
    void doFinal​(byte[] output, int outOffset)
    Computes the digest of this MAC based on the data previously specified in update(byte) calls and stores the digest in the specified output buffer at offset outOffset.
    String getAlgorithm()
    Returns the name of the MAC algorithm.
    static Mac getInstance​(String algorithm)
    Creates a new Mac instance that provides the specified MAC algorithm.
    static Mac getInstance​(String algorithm, String provider)
    Creates a new Mac instance that provides the specified MAC algorithm from the specified provider.
    static Mac getInstance​(String algorithm, Provider provider)
    Creates a new Mac instance that provides the specified MAC algorithm from the specified provider.
    int getMacLength()
    Returns the length of this MAC (in bytes).
    Provider getProvider()
    Returns the provider of this Mac instance.
    void init​(Key key)
    Initializes this Mac instance with the specified key.
    void init​(Key key, AlgorithmParameterSpec params)
    Initializes this Mac instance with the specified key and algorithm parameters.
    void reset()
    Resets this Mac instance to its initial state.
    void update​(byte input)
    Updates this Mac instance with the specified byte.
    void update​(byte[] input)
    Copies the buffer provided as input for further processing.
    void update​(byte[] input, int offset, int len)
    Updates this Mac instance with the data from the specified buffer input from the specified offset and length len.
    void update​(ByteBuffer input)
    Updates this Mac instance with the data from the specified buffer, starting at Buffer.position(), including the next Buffer.remaining() bytes.

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Mac

      protected Mac​(MacSpi macSpi, Provider provider, String algorithm)
      Creates a new Mac instance.
      Parameters:
      macSpi - the implementation delegate.
      provider - the implementation provider.
      algorithm - the name of the MAC algorithm.
  • Method Details

    • getAlgorithm

      public final String getAlgorithm()
      Returns the name of the MAC algorithm.
      Returns:
      the name of the MAC algorithm.
    • getProvider

      public final Provider getProvider()
      Returns the provider of this Mac instance.
      Returns:
      the provider of this Mac instance.
    • getInstance

      public static final Mac getInstance​(String algorithm) throws NoSuchAlgorithmException
      Creates a new Mac instance that provides the specified MAC algorithm.
      Parameters:
      algorithm - the name of the requested MAC algorithm.
      Returns:
      the new Mac instance.
      Throws:
      NoSuchAlgorithmException - if the specified algorithm is not available by any provider.
      NullPointerException - if algorithm is null (instead of NoSuchAlgorithmException as in 1.4 release).
    • getInstance

      public static final Mac getInstance​(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
      Creates a new Mac instance that provides the specified MAC algorithm from the specified provider.
      Parameters:
      algorithm - the name of the requested MAC algorithm.
      provider - the name of the provider that is providing the algorithm.
      Returns:
      the new Mac instance.
      Throws:
      NoSuchAlgorithmException - if the specified algorithm is not provided by the specified provider.
      NoSuchProviderException - if the specified provider is not available.
      IllegalArgumentException - if the specified provider name is null or empty.
      NullPointerException - if algorithm is null (instead of NoSuchAlgorithmException as in 1.4 release).
    • getInstance

      public static final Mac getInstance​(String algorithm, Provider provider) throws NoSuchAlgorithmException
      Creates a new Mac instance that provides the specified MAC algorithm from the specified provider.
      Parameters:
      algorithm - the name of the requested MAC algorithm.
      provider - the provider that is providing the algorithm.
      Returns:
      the new Mac instance.
      Throws:
      NoSuchAlgorithmException - if the specified algorithm is not provided by the specified provider.
      IllegalArgumentException - if provider is null.
      NullPointerException - if algorithm is null (instead of NoSuchAlgorithmException as in 1.4 release).
    • getMacLength

      public final int getMacLength()
      Returns the length of this MAC (in bytes).
      Returns:
      the length of this MAC (in bytes).
    • init

      public final void init​(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
      Initializes this Mac instance with the specified key and algorithm parameters.
      Parameters:
      key - the key to initialize this algorithm.
      params - the parameters for this algorithm.
      Throws:
      InvalidKeyException - if the specified key cannot be used to initialize this algorithm, or it is null.
      InvalidAlgorithmParameterException - if the specified parameters cannot be used to initialize this algorithm.
    • init

      public final void init​(Key key) throws InvalidKeyException
      Initializes this Mac instance with the specified key.
      Parameters:
      key - the key to initialize this algorithm.
      Throws:
      InvalidKeyException - if initialization fails because the provided key is null.
      RuntimeException - if the specified key cannot be used to initialize this algorithm.
    • update

      public final void update​(byte input) throws IllegalStateException
      Updates this Mac instance with the specified byte.
      Parameters:
      input - the byte
      Throws:
      IllegalStateException - if this MAC is not initialized.
    • update

      public final void update​(byte[] input, int offset, int len) throws IllegalStateException
      Updates this Mac instance with the data from the specified buffer input from the specified offset and length len.
      Parameters:
      input - the buffer.
      offset - the offset in the buffer.
      len - the length of the data in the buffer.
      Throws:
      IllegalStateException - if this MAC is not initialized.
      IllegalArgumentException - if offset and len do not specified a valid chunk in input buffer.
    • update

      public final void update​(byte[] input) throws IllegalStateException
      Copies the buffer provided as input for further processing.
      Parameters:
      input - the buffer.
      Throws:
      IllegalStateException - if this MAC is not initialized.
    • update

      public final void update​(ByteBuffer input)
      Updates this Mac instance with the data from the specified buffer, starting at Buffer.position(), including the next Buffer.remaining() bytes.
      Parameters:
      input - the buffer.
      Throws:
      IllegalStateException - if this MAC is not initialized.
    • doFinal

      public final byte[] doFinal() throws IllegalStateException
      Computes the digest of this MAC based on the data previously specified in update(byte) calls.

      This Mac instance is reverted to its initial state and can be used to start the next MAC computation with the same parameters or initialized with different parameters.

      Returns:
      the generated digest.
      Throws:
      IllegalStateException - if this MAC is not initialized.
    • doFinal

      public final void doFinal​(byte[] output, int outOffset) throws ShortBufferException, IllegalStateException
      Computes the digest of this MAC based on the data previously specified in update(byte) calls and stores the digest in the specified output buffer at offset outOffset.

      This Mac instance is reverted to its initial state and can be used to start the next MAC computation with the same parameters or initialized with different parameters.

      Parameters:
      output - the output buffer
      outOffset - the offset in the output buffer
      Throws:
      ShortBufferException - if the specified output buffer is either too small for the digest to be stored, the specified output buffer is null, or the specified offset is negative or past the length of the output buffer.
      IllegalStateException - if this MAC is not initialized.
    • doFinal

      public final byte[] doFinal​(byte[] input) throws IllegalStateException
      Computes the digest of this MAC based on the data previously specified on update(byte) calls and on the final bytes specified by input (or based on those bytes only).

      This Mac instance is reverted to its initial state and can be used to start the next MAC computation with the same parameters or initialized with different parameters.

      Parameters:
      input - the final bytes.
      Returns:
      the generated digest.
      Throws:
      IllegalStateException - if this MAC is not initialized.
    • reset

      public final void reset()
      Resets this Mac instance to its initial state.

      This Mac instance is reverted to its initial state and can be used to start the next MAC computation with the same parameters or initialized with different parameters.

    • clone

      public final Object clone() throws CloneNotSupportedException
      Clones this Mac instance and the underlying implementation.
      Overrides:
      clone in class Object
      Returns:
      the cloned instance.
      Throws:
      CloneNotSupportedException - if the underlying implementation does not support cloning.