in source/lambda/calculateTreehash/lib/treehash.js [51:91]
for await (const chunk of readStream) {
let newMark = watermark + chunk.length
if (newMark < ONE_MB) {
buffer += chunk.toString('binary')
watermark = newMark;
continue;
}
if (newMark === ONE_MB) {
buffer += chunk.toString('binary')
const hash = crypto.createHash('sha256');
hash.update(Buffer.from(buffer, 'binary'), input_encoding = 'binary');
const hashValue = hash.digest('hex')
leafHashes.push(hashValue);
watermark = 0
buffer = ""
continue
}
if (newMark > ONE_MB) {
let remainder = ONE_MB - watermark;
let newWatermark = (chunk.length - remainder);
let this_buffer = buffer + chunk.slice(0, remainder).toString('binary')
let next_buffer = chunk.slice(remainder, remainder + newWatermark).toString('binary')
const hash = crypto.createHash('sha256');
hash.update(Buffer.from(this_buffer, 'binary'), input_encoding = 'binary');
const hashValue = hash.digest('hex')
leafHashes.push(hashValue);
buffer = next_buffer
watermark = newWatermark;
continue
}
}