mirror of
https://github.com/arnaucube/miden-crypto.git
synced 2026-01-12 00:51:29 +01:00
feat: optimized hash_elements for blake3 hasher
This commit is contained in:
@@ -1,6 +1,22 @@
|
||||
use super::*;
|
||||
use crate::utils::collections::Vec;
|
||||
use proptest::prelude::*;
|
||||
use rand_utils::rand_vector;
|
||||
|
||||
#[test]
|
||||
fn blake3_hash_elements() {
|
||||
// test multiple of 8
|
||||
let elements = rand_vector::<Felt>(16);
|
||||
let expected = compute_expected_element_hash(&elements);
|
||||
let actual: [u8; 32] = hash_elements(&elements);
|
||||
assert_eq!(&expected, &actual);
|
||||
|
||||
// test not multiple of 8
|
||||
let elements = rand_vector::<Felt>(17);
|
||||
let expected = compute_expected_element_hash(&elements);
|
||||
let actual: [u8; 32] = hash_elements(&elements);
|
||||
assert_eq!(&expected, &actual);
|
||||
}
|
||||
|
||||
proptest! {
|
||||
#[test]
|
||||
@@ -18,3 +34,14 @@ proptest! {
|
||||
Blake3_256::hash(vec);
|
||||
}
|
||||
}
|
||||
|
||||
// HELPER FUNCTIONS
|
||||
// ================================================================================================
|
||||
|
||||
fn compute_expected_element_hash(elements: &[Felt]) -> blake3::Hash {
|
||||
let mut bytes = Vec::new();
|
||||
for element in elements.iter() {
|
||||
bytes.extend_from_slice(&element.as_int().to_le_bytes());
|
||||
}
|
||||
blake3::hash(&bytes)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user