diff options
Diffstat (limited to 'core/src/main/java/org/spongycastle/crypto/io/SignerInputStream.java')
-rw-r--r-- | core/src/main/java/org/spongycastle/crypto/io/SignerInputStream.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/core/src/main/java/org/spongycastle/crypto/io/SignerInputStream.java b/core/src/main/java/org/spongycastle/crypto/io/SignerInputStream.java new file mode 100644 index 00000000..f7f6935f --- /dev/null +++ b/core/src/main/java/org/spongycastle/crypto/io/SignerInputStream.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.Signer; + +public class SignerInputStream + extends FilterInputStream +{ + protected Signer signer; + + public SignerInputStream( + InputStream stream, + Signer signer) + { + super(stream); + this.signer = signer; + } + + public int read() + throws IOException + { + int b = in.read(); + + if (b >= 0) + { + signer.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) + { + signer.update(b, off, n); + } + return n; + } + + public Signer getSigner() + { + return signer; + } +} |