function computeSHA256TreeHash()

in source/lambda/calculateTreehash/lib/treehash.js [102:125]


function computeSHA256TreeHash(chunkHashes) {

    let prevLvlHashes = [];
    for (const entry of chunkHashes) {
        prevLvlHashes.push(CryptoJS.enc.Hex.parse(entry))
    }

    while (prevLvlHashes.length > 1) {
        let currLvlHashes = []
        for (let i = 0; i < prevLvlHashes.length; i = i + 2) {

            // If there are at least two elements remaining
            if (prevLvlHashes.length - i > 1) {
                let entry = prevLvlHashes[i].clone().concat(prevLvlHashes[i + 1])
                let entryHash = CryptoJS.SHA256(entry)
                currLvlHashes.push(entryHash)
            } else { // Take care of remaining odd chunk
                currLvlHashes.push(prevLvlHashes[i])
            }
        }
        prevLvlHashes = currLvlHashes
    }
    return prevLvlHashes[0].toString(CryptoJS.enc.Hex)
}