public int DoOutput(byte[] output, int outOff, int outLen) { if (firstOutput) { if (!initialised) { throw new InvalidOperationException("KMAC not initialized"); } byte[] encOut = XofUtilities.RightEncode(0); cshake.BlockUpdate(encOut, 0, encOut.Length); firstOutput = false; } return(cshake.DoOutput(output, outOff, outLen)); }
public int DoFinal(byte[] output, int outOff, int outLen) { if (firstOutput) { if (!initialised) { throw new InvalidOperationException("KMAC not initialized"); } byte[] encOut = XofUtilities.RightEncode(outLen * 8); cshake.BlockUpdate(encOut, 0, encOut.Length); } int rv = cshake.DoFinal(output, outOff, outLen); Reset(); return(rv); }