diff options
Diffstat (limited to 'libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/io/DigestInputStream.java')
-rw-r--r-- | libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/io/DigestInputStream.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/io/DigestInputStream.java b/libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/io/DigestInputStream.java new file mode 100644 index 000000000..23a719640 --- /dev/null +++ b/libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/io/DigestInputStream.java @@ -0,0 +1,52 @@ +package org.spongycastle.crypto.io; + +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; + +import org.spongycastle.crypto.Digest; + +public class DigestInputStream + extends FilterInputStream +{ + protected Digest digest; + + public DigestInputStream( + InputStream stream, + Digest digest) + { + super(stream); + this.digest = digest; + } + + public int read() + throws IOException + { + int b = in.read(); + + if (b >= 0) + { + digest.update((byte)b); + } + return b; + } + + public int read( + byte[] b, + int off, + int len) + throws IOException + { + int n = in.read(b, off, len); + if (n > 0) + { + digest.update(b, off, n); + } + return n; + } + + public Digest getDigest() + { + return digest; + } +} |