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