doFinal method
Implementation
@override
int doFinal(Uint8List out, int outOff) {
final bitLength = _totalLength * 8;
updateByte(0x80);
while (_bufferPos != 56) {
if (_bufferPos > 56) {
while (_bufferPos < _blockSize) {
updateByte(0x00);
}
} else {
updateByte(0x00);
}
}
final lengthBytes = ByteData(8);
lengthBytes.setUint32(0, bitLength & 0xFFFFFFFF, Endian.little);
lengthBytes.setUint32(
4, (bitLength >> 32) & 0xFFFFFFFF, Endian.little);
update(lengthBytes.buffer.asUint8List(), 0, 8);
final output = ByteData(16);
output.setUint32(0, _state[0], Endian.little);
output.setUint32(4, _state[1], Endian.little);
output.setUint32(8, _state[2], Endian.little);
output.setUint32(12, _state[3], Endian.little);
out.setRange(outOff, outOff + 16, output.buffer.asUint8List());
reset();
return 16;
}