fun consume()

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
    }