For the latest news and information visit The GNU Crypto project

## javax.crypto
Class Mac

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

All Implemented Interfaces:
  java.lang.Cloneable

public class Mac
extends java.lang.Object
implements java.lang.Cloneable

This class provides the functionality of a "Message Authentication Code" (MAC) algorithm.

A MAC provides a way to check the integrity of information transmitted over or stored in an unreliable medium, based on a secret key. Typically, message authentication codes are used between two parties that share a secret key in order to validate information transmitted between these parties.

A MAC mechanism that is based on cryptographic hash functions is referred to as HMAC. HMAC can be used with any cryptographic hash function, e.g., MD5 or SHA-1, in combination with a secret shared key. HMAC is specified in RFC 2104.

Since:
  1.4

Constructor Summary
`protected` `Mac(MacSpi macSpi, java.security.Provider provider, java.lang.String algorithm)` Creates a MAC object.

Method Summary
`java.lang.Object` `clone()` Returns a clone if the provider implementation is cloneable.
`byte[]` `doFinal()` Finishes the MAC operation.
`byte[]` `doFinal(byte[] input)` Processes the given array of bytes and finishes the MAC operation.
`void` `doFinal(byte[] output, int outOffset)` Finishes the MAC operation.
`java.lang.String` `getAlgorithm()` Returns the algorithm name of this `Mac` object.
`static Mac` `getInstance(java.lang.String algorithm)` Generates an `Mac` object that implements the specified MAC algorithm.
`static Mac` `getInstance(java.lang.String algorithm, java.security.Provider provider)` Generates a `Mac` object for the specified MAC algorithm from the specified provider.
`static Mac` `getInstance(java.lang.String algorithm, java.lang.String provider)` Generates an `Mac` object for the specified MAC algorithm from the specified provider.
`int` `getMacLength()` Returns the length of the MAC in bytes.
`java.security.Provider` `getProvider()` Returns the provider of this `Mac` object.
`void` `init(java.security.Key key)` Initializes this `Mac` object with the given key.
`void` `init(java.security.Key key, java.security.spec.AlgorithmParameterSpec params)` Initializes this `Mac` object with the given key and algorithm parameters.
`void` `reset()` Resets this `Mac` object.
`void` `update(byte input)` Processes the given byte.
`void` `update(byte[] input)` Processes the given array of bytes.
`void` `update(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

### Mac

    protected Mac(MacSpi macSpi,
                  java.security.Provider provider,
                  java.lang.String algorithm)

  Creates a MAC object.

Parameters:
  `macSpi` - the delegate
  `provider` - the provider
  `algorithm` - the algorithm

Method Detail

### getAlgorithm

    public final java.lang.String getAlgorithm()

  Returns the algorithm name of this `Mac` object.

  This is the same name that was specified in one of the `getInstance` calls that created this `Mac` object.

  Returns:
    the algorithm name of this `Mac` object.

### getInstance

    public static final Mac getInstance(java.lang.String algorithm)
                                 throws java.security.NoSuchAlgorithmException

  Generates an `Mac` object that implements the specified MAC algorithm. If the default provider package provides an implementation of the requested MAC algorithm, an instance of `Mac` containing that implementation is returned. If the algorithm is not available in the default provider package, other provider packages are searched.

  Parameters:
    `algorithm` - the standard name of the requested MAC algorithm. See Appendix A in the Java Cryptography Extension API Specification & Reference for information about standard algorithm names.
  Returns:
    the new `Mac` object.
  Throws:
    `java.security.NoSuchAlgorithmException` - if the specified algorithm is not available in the default provider package or any of the other provider packages that were searched.

### getInstance

    public static final Mac getInstance(java.lang.String algorithm,
                                        java.security.Provider provider)
                                 throws java.security.NoSuchAlgorithmException

  Generates a `Mac` object for the specified MAC algorithm from the specified provider. Note: the `provider` doesn't have to be registered.

  Parameters:
    `algorithm` - the standard name of the requested MAC algorithm. See Appendix A in the Java Cryptography Extension Reference Guide for information about standard algorithm names.
    `provider` - the name of the provider.
  Returns:
    the new `Mac` object.
  Throws:
    `java.security.NoSuchAlgorithmException` - if the specified algorithm is not available from the specified provider.
    `java.lang.IllegalArgumentException` - if the provider is null.

### getInstance

    public static final Mac getInstance(java.lang.String algorithm,
                                        java.lang.String provider)
                                 throws java.security.NoSuchAlgorithmException,
                                        java.security.NoSuchProviderException

  Generates an `Mac` object for the specified MAC algorithm from the specified provider.

  Parameters:
    `algorithm` - the standard name of the requested MAC algorithm. See Appendix A in the Java Cryptography Extension API Specification & Reference for information about standard algorithm names.
    `provider` - the name of the provider.
  Returns:
    the new `Mac` object.
  Throws:
    `java.security.NoSuchAlgorithmException` - if the specified algorithm is not available from the specified provider.
    `java.security.NoSuchProviderException` - if the specified provider has not been configured.

### getProvider

    public final java.security.Provider getProvider()

  Returns the provider of this `Mac` object.

  Returns:
    the provider of this `Mac` object.

### getMacLength

    public final int getMacLength()

  Returns the length of the MAC in bytes.

  Returns:
    the MAC length in bytes.

### init

    public final void init(java.security.Key key)
                    throws java.security.InvalidKeyException

  Initializes this `Mac` object with the given key.

  Parameters:
    `key` - the key.
  Throws:
    `java.security.InvalidKeyException` - if the given key is inappropriate for initializing this MAC.

### init

    public final void init(java.security.Key key,
                           java.security.spec.AlgorithmParameterSpec params)
                    throws java.security.InvalidKeyException,
                           java.security.InvalidAlgorithmParameterException

  Initializes this `Mac` object with the given key and algorithm parameters.

  Parameters:
    `key` - the 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.

### update

    public final void update(byte input)
                      throws java.lang.IllegalStateException

  Processes the given byte.

  Parameters:
    `input` - the input byte to be processed.
  Throws:
    `java.lang.IllegalStateException` - if this `Mac` has not been initialized.

### update

    public final void update(byte[] input)
                      throws java.lang.IllegalStateException

  Processes the given array of bytes.

  Parameters:
    `input` - the array of bytes to be processed.
  Throws:
    `java.lang.IllegalStateException` - if this `Mac` has not been initialized.

### update

    public final void update(byte[] input,
                             int offset,
                             int len)
                      throws java.lang.IllegalStateException

  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.
  Throws:
    `java.lang.IllegalStateException` - if this `Mac` has not been initialized.

### doFinal

    public final byte[] doFinal()
                         throws java.lang.IllegalStateException

  Finishes the MAC operation.

  A call to this method resets this `Mac` object to the state it was in when previously initialized via a call to `init(Key)` or `init(Key, AlgorithmParameterSpec)`. That is, the object is reset and available to generate another MAC from the same key, if desired, via new calls to `update` and `doFinal`. (In order to reuse this `Mac` object with a different key, it must be reinitialized via a call to `init(Key)` or `init(Key, AlgorithmParameterSpec)`.

  Returns:
    the MAC result.
  Throws:
    `java.lang.IllegalStateException` - if this `Mac` has not been initialized.

### doFinal

    public final void doFinal(byte[] output,
                              int outOffset)
                       throws ShortBufferException,
                              java.lang.IllegalStateException

  Finishes the MAC operation.

  A call to this method resets this `Mac` object to the state it was in when previously initialized via a call to `init(Key)` or `init(Key, AlgorithmParameterSpec)`. That is, the object is reset and available to generate another MAC from the same key, if desired, via new calls to `update` and `doFinal`. (In order to reuse this `Mac` object with a different key, it must be reinitialized via a call to `init(Key)` or `init(Key, AlgorithmParameterSpec)`.

  The MAC result is stored in `output`, starting at `outOffset` inclusive.

  Parameters:
    `output` - the buffer where the MAC result is stored
    `outOffset` - the offset in `output` where the MAC is stored
  Throws:
    `ShortBufferException` - if the given output buffer is too small to hold the result
    `java.lang.IllegalStateException` - if this `Mac` has not been initialized.

### doFinal

    public final byte[] doFinal(byte[] input)
                         throws java.lang.IllegalStateException

  Processes the given array of bytes and finishes the MAC operation.

  A call to this method resets this `Mac` object to the state it was in when previously initialized via a call to `init(Key)` or `init(Key, AlgorithmParameterSpec)`. That is, the object is reset and available to generate another MAC from the same key, if desired, via new calls to `update` and `doFinal`. (In order to reuse this `Mac` object with a different key, it must be reinitialized via a call to `init(Key)` or `init(Key, AlgorithmParameterSpec)`.

  Returns:
    the MAC result.
  Throws:
    `java.lang.IllegalStateException` - if this `Mac` has not been initialized.

### reset

    public final void reset()

  Resets this `Mac` object.

  A call to this method resets this `Mac` object to the state it was in when previously initialized via a call to `init(Key)` or `init(Key, AlgorithmParameterSpec)`. That is, the object is reset and available to generate another MAC from the same key, if desired, via new calls to `update` and `doFinal`. (In order to reuse this `Mac` object with a different key, it must be reinitialized via a call to `init(Key)` or `init(Key, AlgorithmParameterSpec)`.

### clone

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

  Returns a clone if the provider implementation is cloneable.

  Overrides:
    `clone` in class `java.lang.Object`
  Returns:
    a clone if the provider implementation is cloneable.
  Throws:
    `java.lang.CloneNotSupportedException` - if this is called on a delegate 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.