Browse Source

chg: first convert all elements to little endian bytes and then consume them in a single call to blake3 hasher

Signed-off-by: Anjan Roy <hello@itzmeanjan.in>
al-gkr-basic-workflow
Anjan Roy 2 years ago
parent
commit
aa4e313690
No known key found for this signature in database GPG Key ID: 10EB1439BE2E1142
1 changed files with 8 additions and 3 deletions
  1. +8
    -3
      src/hash/blake/mod.rs

+ 8
- 3
src/hash/blake/mod.rs

@ -276,10 +276,15 @@ where
let digest = if Felt::IS_CANONICAL { let digest = if Felt::IS_CANONICAL {
blake3::hash(E::elements_as_bytes(elements)) blake3::hash(E::elements_as_bytes(elements))
} else { } else {
let mut hasher = blake3::Hasher::new();
for element in E::as_base_elements(elements) {
hasher.update(&element.as_int().to_le_bytes());
let blen = elements.len() << 3;
let mut bytes = vec![0u8; blen];
for (idx, element) in E::as_base_elements(elements).iter().enumerate() {
bytes[idx * 8..(idx + 1) * 8].copy_from_slice(&element.as_int().to_le_bytes());
} }
let mut hasher = blake3::Hasher::new();
hasher.update(&bytes);
hasher.finalize() hasher.finalize()
}; };
*shrink_bytes(&digest.into()) *shrink_bytes(&digest.into())

Loading…
Cancel
Save