summary refs log tree commit diff
path: root/crypto/src/crypto/digests/ShakeDigest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/crypto/digests/ShakeDigest.cs')
-rw-r--r--crypto/src/crypto/digests/ShakeDigest.cs16
1 files changed, 13 insertions, 3 deletions
diff --git a/crypto/src/crypto/digests/ShakeDigest.cs b/crypto/src/crypto/digests/ShakeDigest.cs

index fd7d85681..a7bddccba 100644 --- a/crypto/src/crypto/digests/ShakeDigest.cs +++ b/crypto/src/crypto/digests/ShakeDigest.cs
@@ -53,15 +53,25 @@ namespace Org.BouncyCastle.Crypto.Digests public virtual int DoFinal(byte[] output, int outOff, int outLen) { - Absorb(new byte[]{ 0x0F }, 0, 4); - - Squeeze(output, outOff, ((long)outLen) * 8); + DoOutput(output, outOff, outLen); Reset(); return outLen; } + public virtual int DoOutput(byte[] output, int outOff, int outLen) + { + if (!squeezing) + { + Absorb(new byte[] { 0x0F }, 0, 4); + } + + Squeeze(output, outOff, ((long)outLen) * 8); + + return outLen; + } + /* * TODO Possible API change to support partial-byte suffixes. */