1 package org.bouncycastle.crypto;
2 
3 /**
4  * interface that a message digest conforms to.
5  */
6 public interface Digest
7 {
8     /**
9      * return the algorithm name
10      *
11      * @return the algorithm name
12      */
getAlgorithmName()13     public String getAlgorithmName();
14 
15     /**
16      * return the size, in bytes, of the digest produced by this message digest.
17      *
18      * @return the size, in bytes, of the digest produced by this message digest.
19      */
getDigestSize()20     public int getDigestSize();
21 
22     /**
23      * update the message digest with a single byte.
24      *
25      * @param in the input byte to be entered.
26      */
update(byte in)27     public void update(byte in);
28 
29     /**
30      * update the message digest with a block of bytes.
31      *
32      * @param in the byte array containing the data.
33      * @param inOff the offset into the byte array where the data starts.
34      * @param len the length of the data.
35      */
update(byte[] in, int inOff, int len)36     public void update(byte[] in, int inOff, int len);
37 
38     /**
39      * close the digest, producing the final digest value. The doFinal
40      * call leaves the digest reset.
41      *
42      * @param out the array the digest is to be copied into.
43      * @param outOff the offset into the out array the digest is to start at.
44      */
doFinal(byte[] out, int outOff)45     public int doFinal(byte[] out, int outOff);
46 
47     /**
48      * reset the digest back to it's initial state.
49      */
reset()50     public void reset();
51 }
52