in lib/src/main/kotlin/org/jetbrains/zip/signer/digest/ChunkDigester.kt [18:38]
fun consume(chunk: ByteBuffer) {
if (position >= chunkCount) error("Too many chunks provided")
val chunkPrefix = ByteArray(5).apply {
set(0, chunkPrefix)
setUnsignedInt32LittleEndian(chunk.remaining().toUInt(), 1)
}
messageDigest.update(chunkPrefix)
messageDigest.update(chunk)
val bytesWritten = messageDigest.digest(
digest,
5 + position * digestAlgorithm.chunkDigestOutputSizeBytes,
digestAlgorithm.chunkDigestOutputSizeBytes
)
require(bytesWritten == digestAlgorithm.chunkDigestOutputSizeBytes) {
"Digest algorithm output has an unexpected size"
}
position += 1
}