1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.crypto.io;
2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.io.IOException;
4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.io.OutputStream;
5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.crypto.Digest;
7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class DigestOutputStream
94c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    extends OutputStream
10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{
11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    protected Digest digest;
12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public DigestOutputStream(
144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        Digest          Digest)
15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.digest = Digest;
17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public void write(int b)
20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        throws IOException
21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        digest.update((byte)b);
23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public void write(
26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        byte[] b,
27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        int off,
28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        int len)
29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        throws IOException
30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        digest.update(b, off, len);
32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public byte[] getDigest()
35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        byte[] res = new byte[digest.getDigestSize()];
374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        digest.doFinal(res, 0);
394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        return res;
41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam}
43