Methods Summary |
---|
public final java.lang.Object | clone()Clones this {@code Mac} instance and the underlying implementation.
MacSpi newSpiImpl = (MacSpi)spiImpl.clone();
Mac mac = new Mac(newSpiImpl, this.provider, this.algorithm);
mac.isInitMac = this.isInitMac;
return mac;
|
public final byte[] | doFinal()Computes the digest of this MAC based on the data previously specified in
{@link #update} calls.
This {@code 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.
if (!isInitMac) {
throw new IllegalStateException(Messages.getString("crypto.01"));
}
return spiImpl.engineDoFinal();
|
public final void | doFinal(byte[] output, int outOffset)Computes the digest of this MAC based on the data previously specified in
{@link #update} calls and stores the digest in the specified {@code
output} buffer at offset {@code outOffset}.
This {@code 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.
if (!isInitMac) {
throw new IllegalStateException(Messages.getString("crypto.01"));
}
if (output == null) {
throw new ShortBufferException(Messages.getString("crypto.08")); //$NON-NLS-1$
}
if ((outOffset < 0) || (outOffset >= output.length)) {
throw new ShortBufferException(Messages.getString("crypto.09", //$NON-NLS-1$
Integer.toString(outOffset)));
}
int t = spiImpl.engineGetMacLength();
if (t > (output.length - outOffset)) {
throw new ShortBufferException(
Messages.getString("crypto.0A", //$NON-NLS-1$
Integer.toString(t)));
}
byte[] result = spiImpl.engineDoFinal();
System.arraycopy(result, 0, output, outOffset, result.length);
|
public final byte[] | doFinal(byte[] input)Computes the digest of this MAC based on the data previously specified on
{@link #update} calls and on the final bytes specified by {@code input}
(or based on those bytes only).
This {@code 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.
if (!isInitMac) {
throw new IllegalStateException(Messages.getString("crypto.0B")); //$NON-NLS-1$
}
if (input != null) {
spiImpl.engineUpdate(input, 0, input.length);
}
return spiImpl.engineDoFinal();
|
public final java.lang.String | getAlgorithm()Returns the name of the MAC algorithm.
return algorithm;
|
public static final javax.crypto.Mac | getInstance(java.lang.String algorithm)Creates a new {@code Mac} instance that provides the specified MAC
algorithm.
if (algorithm == null) {
throw new NullPointerException(Messages.getString("crypto.02")); //$NON-NLS-1$
}
synchronized (engine) {
engine.getInstance(algorithm, null);
return new Mac((MacSpi) engine.spi, engine.provider, algorithm);
}
|
public static final javax.crypto.Mac | getInstance(java.lang.String algorithm, java.lang.String provider)Creates a new {@code Mac} instance that provides the specified MAC
algorithm from the specified provider.
if ((provider == null) || (provider.length() == 0)) {
throw new IllegalArgumentException(Messages.getString("crypto.03")); //$NON-NLS-1$
}
Provider impProvider = Security.getProvider(provider);
if (impProvider == null) {
throw new NoSuchProviderException(provider);
}
return getInstance(algorithm, impProvider);
|
public static final javax.crypto.Mac | getInstance(java.lang.String algorithm, java.security.Provider provider)Creates a new {@code Mac} instance that provides the specified MAC
algorithm from the specified provider.
if (provider == null) {
throw new IllegalArgumentException(Messages.getString("crypto.04")); //$NON-NLS-1$
}
if (algorithm == null) {
throw new NullPointerException(Messages.getString("crypto.02")); //$NON-NLS-1$
}
synchronized (engine) {
engine.getInstance(algorithm, provider, null);
return new Mac((MacSpi) engine.spi, provider, algorithm);
}
|
public final int | getMacLength()Returns the length of this MAC (in bytes).
return spiImpl.engineGetMacLength();
|
public final java.security.Provider | getProvider()Returns the provider of this {@code Mac} instance.
return provider;
|
public final void | init(java.security.Key key, java.security.spec.AlgorithmParameterSpec params)Initializes this {@code Mac} instance with the specified key and
algorithm parameters.
if (key == null) {
throw new InvalidKeyException(Messages.getString("crypto.05")); //$NON-NLS-1$
}
spiImpl.engineInit(key, params);
isInitMac = true;
|
public final void | init(java.security.Key key)Initializes this {@code Mac} instance with the specified key.
if (key == null) {
throw new InvalidKeyException(Messages.getString("crypto.05")); //$NON-NLS-1$
}
try {
spiImpl.engineInit(key, null);
isInitMac = true;
} catch (InvalidAlgorithmParameterException e) {
throw new RuntimeException(e);
}
|
public final void | reset()Resets this {@code Mac} instance to its initial state.
This {@code 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.
spiImpl.engineReset();
|
public final void | update(byte input)Updates this {@code Mac} instance with the specified byte.
if (!isInitMac) {
throw new IllegalStateException(Messages.getString("crypto.01"));
}
spiImpl.engineUpdate(input);
|
public final void | update(byte[] input, int offset, int len)Updates this {@code Mac} instance with the data from the specified buffer
{@code input} from the specified {@code offset} and length {@code len}.
if (!isInitMac) {
throw new IllegalStateException(Messages.getString("crypto.01"));
}
if (input == null) {
return;
}
if ((offset < 0) || (len < 0) || ((offset + len) > input.length)) {
throw new IllegalArgumentException(Messages.getString("crypto.06")); //$NON-NLS-1$
}
spiImpl.engineUpdate(input, offset, len);
|
public final void | update(byte[] input)Copies the buffer provided as input for further processing.
if (!isInitMac) {
throw new IllegalStateException(Messages.getString("crypto.01"));
}
if (input != null) {
spiImpl.engineUpdate(input, 0, input.length);
}
|
public final void | update(java.nio.ByteBuffer input)Updates this {@code Mac} instance with the data from the specified
buffer, starting at {@link ByteBuffer#position()}, including the next
{@link ByteBuffer#remaining()} bytes.
if (!isInitMac) {
throw new IllegalStateException(Messages.getString("crypto.01"));
}
if (input != null) {
spiImpl.engineUpdate(input);
} else {
throw new IllegalArgumentException(Messages.getString("crypto.07")); //$NON-NLS-1$
}
|