1    package org.bouncycastle.crypto.io;
2    
3    import java.io.*;
4    
5    import org.bouncycastle.crypto.Digest;
6    
7    public class DigestInputStream
8        extends FilterInputStream
9    {
10       protected Digest digest;
11   
12       public DigestInputStream(
13           InputStream stream,
14           Digest      digest)
15       {
16           super(stream);
17           this.digest = digest;
18       }
19   
20       public int read()
21           throws IOException
22       {
23           int b = in.read();
24   
25           if (b >= 0)
26           {
27               digest.update((byte)b);
28           }
29           return b;
30       }
31   
32       public int read(
33           byte[] b,
34           int off,
35           int len)
36           throws IOException
37       {
38           int n = in.read(b, off, len);
39           if (n > 0)
40           {
41               digest.update(b, off, n);
42           }
43           return n;
44       }
45   
46       public Digest getDigest()
47       {
48           return digest;
49       }
50   }
51