1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.bouncycastle.crypto.io;
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FilterOutputStream;
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException;
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.OutputStream;
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.bouncycastle.crypto.Digest;
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class DigestOutputStream
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    extends FilterOutputStream
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project{
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected Digest digest;
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public DigestOutputStream(
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        OutputStream    stream,
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Digest          digest)
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        super(stream);
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.digest = digest;
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void write(int b)
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        throws IOException
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        digest.update((byte)b);
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        out.write(b);
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void write(
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        byte[] b,
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int off,
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int len)
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        throws IOException
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        digest.update(b, off, len);
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        out.write(b, off, len);
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public Digest getDigest()
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return digest;
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
44