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.
*/
|