public abstract class MacSpi extends Object
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 | Description | 
|---|---|
MacSpi() | 
| Modifier and Type | Method | Description | 
|---|---|---|
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(Key key,
          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. | 
protected void | 
engineUpdate(ByteBuffer input) | 
 Processes  
input.remaining() bytes in the ByteBuffer
 input, starting at input.position(). | 
protected abstract int engineGetMacLength()
protected abstract void engineInit(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
key - the (secret) key.params - the algorithm parameters.InvalidKeyException - if the given key is inappropriate for
 initializing this MAC.InvalidAlgorithmParameterException - if the given algorithm
 parameters are inappropriate for this MAC.protected abstract void engineUpdate(byte input)
input - the input byte to be processed.protected abstract void engineUpdate(byte[] input,
                                     int offset,
                                     int len)
len bytes in input,
 starting at offset inclusive.input - the input buffer.offset - the offset in input where the input starts.len - the number of bytes to process.protected void engineUpdate(ByteBuffer input)
input.remaining() bytes in the ByteBuffer
 input, starting at input.position().
 Upon return, the buffer's position will be equal to its limit;
 its limit will not have changed.
 Subclasses should consider overriding this method if they can process ByteBuffers more efficiently than byte arrays.
input - the ByteBufferprotected abstract byte[] engineDoFinal()
protected abstract void engineReset()
public Object clone() throws CloneNotSupportedException
clone in class ObjectCloneNotSupportedException - if this is called
 on an implementation that does not support Cloneable.Cloneable Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.