fix merkle tree malleability

This commit is contained in:
Garrick Ollivander 2016-10-29 17:55:47 +02:00
parent fdaf2ba6af
commit ab3ffafdcd
No known key found for this signature in database
GPG key ID: C6A92846C2C60645

View file

@ -163,13 +163,13 @@ impl Hashed for HPair {
}
}
/// An iterator over hashes in a vector that pairs them to build a row in a
/// Merkle tree. If the vector has an odd number of hashes, duplicates the last.
/// Merkle tree. If the vector has an odd number of hashes, it appends a zero hash
struct HPairIter(Vec<Hash>);
impl Iterator for HPairIter {
type Item = HPair;
fn next(&mut self) -> Option<HPair> {
self.0.pop().map(|first| HPair(first, self.0.pop().unwrap_or(first)))
self.0.pop().map(|first| HPair(first, self.0.pop().unwrap_or(ZERO_HASH)))
}
}
/// A row in a Merkle tree. Can be built from a vector of hashes. Calculates