@Override public byte[] calculateMac(byte[] data) { mac.update(data, 0, data.length); Memoable memoable = underlying.copy(); byte[] out = new byte[mac.getMacSize()]; mac.doFinal(out, 0); underlying.reset(memoable); return out; }
public int doFinal( byte[] out, int outOff) { digest.doFinal(outputBuf, blockLength); if (opadState != null) { ((Memoable)digest).reset(opadState); digest.update(outputBuf, blockLength, digest.getDigestSize()); } else { digest.update(outputBuf, 0, outputBuf.length); } int len = digest.doFinal(out, outOff); for (int i = blockLength; i < outputBuf.length; i++) { outputBuf[i] = 0; } if (ipadState != null) { ((Memoable)digest).reset(ipadState); } else { digest.update(inputPad, 0, inputPad.length); } return len; }
public int doFinal( byte[] out, int outOff) { digest.doFinal(outputBuf, blockLength); if (opadState != null) { ((Memoable)digest).reset(opadState); digest.update(outputBuf, blockLength, digest.getDigestSize()); } else { digest.update(outputBuf, 0, outputBuf.length); } int len = digest.doFinal(out, outOff); for (int i = blockLength; i < outputBuf.length; i++) { outputBuf[i] = 0; } if (ipadState != null) { ((Memoable)digest).reset(ipadState); } else { digest.update(inputPad, 0, inputPad.length); } return len; }