in src/defs/eif_hasher.rs [251:286]
fn hash_more_values_than_block_size<T: Digest + Debug + Write + Clone>(
mut hasher_alg: T,
block_size: usize,
) {
let data = vec![78u8; block_size + block_size / 2 - 1];
let output_size = hasher_alg.finalize_reset().len();
let (data1, data2) = data.split_at(block_size);
let mut hasher = EifHasher::new(block_size, hasher_alg.clone()).unwrap();
hasher.write_all(&data).unwrap();
hasher_alg.write_all(&initial_digest(output_size)).unwrap();
hasher_alg.write_all(data1).unwrap();
let result = hasher_alg.finalize_reset();
hasher_alg.write_all(&result).unwrap();
hasher_alg.write_all(data2).unwrap();
let mut hasher_clone = hasher.clone();
let mut hasher_alg_clone = hasher_alg.clone();
assert_eq!(
hasher_alg.finalize_reset().to_vec(),
hasher.finalize_reset().unwrap()
);
let result = hasher_alg_clone.finalize_reset();
hasher_alg_clone
.write_all(&initial_digest(output_size)[..])
.unwrap();
hasher_alg_clone.write_all(&result[..]).unwrap();
assert_eq!(
hasher_clone.tpm_extend_finalize_reset().unwrap(),
hasher_alg_clone.finalize_reset().to_vec()
);
}