Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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 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, Provider provider, String algorithm)` Creates a MAC object.

Method Summary
`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.
`String` | `getAlgorithm()` Returns the algorithm name of this `Mac` object.
`static Mac` | `getInstance(String algorithm)` Generates an `Mac` object that implements the specified MAC algorithm.
`static Mac` | `getInstance(String algorithm, Provider provider)` Generates an `Mac` object for the specified MAC algorithm from the specified provider.
`static Mac` | `getInstance(String algorithm, 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.
`Provider` | `getProvider()` Returns the provider of this `Mac` object.
`void` | `init(Key key)` Initializes this `Mac` object with the given key.
`void` | `init(Key key, 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,
                  Provider provider,
                  String algorithm)

  Creates a MAC object.

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

Method Detail

### getAlgorithm

    public final 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(String algorithm)
                                 throws 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 Reference Guide for information about standard algorithm names.
  Returns:
    the new `Mac` object.
  Throws:
    `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(String algorithm,
                                        String provider)
                                 throws NoSuchAlgorithmException,
                                        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 Reference Guide for information about standard algorithm names.
    `provider` - the name of the provider.
  Returns:
    the new `Mac` object.
  Throws:
    `NoSuchAlgorithmException` - if the specified algorithm is not available from the specified provider.
    `NoSuchProviderException` - if the specified provider has not been configured.
    `IllegalArgumentException` - if the `provider` is null.

### getInstance

    public static final Mac getInstance(String algorithm,
                                        Provider provider)
                                 throws NoSuchAlgorithmException

  Generates an `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:
    `NoSuchAlgorithmException` - if the specified algorithm is not available from the specified provider.
    `IllegalArgumentException` - if the `provider` is null.

### getProvider

    public final 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(Key key)
                    throws InvalidKeyException

  Initializes this `Mac` object with the given key.

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

### init

    public final void init(Key key,
                           AlgorithmParameterSpec params)
                    throws InvalidKeyException,
                           InvalidAlgorithmParameterException

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

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

### update

    public final void update(byte input)
                      throws IllegalStateException

  Processes the given byte.

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

### update

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

  Processes the given array of bytes.

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

### update

    public final void update(byte[] input,
                             int offset,
                             int len)
                      throws 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:
    `IllegalStateException` - if this `Mac` has not been initialized.

### doFinal

    public final byte[] doFinal()
                         throws 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:
    `IllegalStateException` - if this `Mac` has not been initialized.

### doFinal

    public final void doFinal(byte[] output,
                              int outOffset)
                       throws ShortBufferException,
                              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
    `IllegalStateException` - if this `Mac` has not been initialized.

### doFinal

    public final byte[] doFinal(byte[] input)
                         throws 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)`.

  Parameters:
    `input` - data in bytes
  Returns:
    the MAC result.
  Throws:
    `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 Object clone()
                       throws CloneNotSupportedException

  Returns a clone if the provider implementation is cloneable.

  Overrides:
    `clone` in class `Object`
  Returns:
    a clone if the provider implementation is cloneable.
  Throws:
    `CloneNotSupportedException` - if this is called on a delegate that does not support `Cloneable`.
  See Also:
    `Cloneable`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.