• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.bouncycastle.crypto;
2 
3 
4 /**
5  * The base interface for implementations of message authentication codes (MACs).
6  */
7 public interface Mac
8 {
9     /**
10      * Initialise the MAC.
11      *
12      * @param params the key and other data required by the MAC.
13      * @exception IllegalArgumentException if the params argument is
14      * inappropriate.
15      */
init(CipherParameters params)16     public void init(CipherParameters params)
17         throws IllegalArgumentException;
18 
19     /**
20      * Return the name of the algorithm the MAC implements.
21      *
22      * @return the name of the algorithm the MAC implements.
23      */
getAlgorithmName()24     public String getAlgorithmName();
25 
26     /**
27      * Return the block size for this MAC (in bytes).
28      *
29      * @return the block size for this MAC in bytes.
30      */
getMacSize()31     public int getMacSize();
32 
33     /**
34      * add a single byte to the mac for processing.
35      *
36      * @param in the byte to be processed.
37      * @exception IllegalStateException if the MAC is not initialised.
38      */
update(byte in)39     public void update(byte in)
40         throws IllegalStateException;
41 
42     /**
43      * @param in the array containing the input.
44      * @param inOff the index in the array the data begins at.
45      * @param len the length of the input starting at inOff.
46      * @exception IllegalStateException if the MAC is not initialised.
47      * @exception DataLengthException if there isn't enough data in in.
48      */
update(byte[] in, int inOff, int len)49     public void update(byte[] in, int inOff, int len)
50         throws DataLengthException, IllegalStateException;
51 
52     /**
53      * Compute the final stage of the MAC writing the output to the out
54      * parameter.
55      * <p>
56      * doFinal leaves the MAC in the same state it was after the last init.
57      *
58      * @param out the array the MAC is to be output to.
59      * @param outOff the offset into the out buffer the output is to start at.
60      * @exception DataLengthException if there isn't enough space in out.
61      * @exception IllegalStateException if the MAC is not initialised.
62      */
doFinal(byte[] out, int outOff)63     public int doFinal(byte[] out, int outOff)
64         throws DataLengthException, IllegalStateException;
65 
66     /**
67      * Reset the MAC. At the end of resetting the MAC should be in the
68      * in the same state it was after the last init (if there was one).
69      */
reset()70     public void reset();
71 }
72