Skip to main content

bench_blake2b/
lib.rs

1//! Blake2b-256 hashing benchmark.
2
3#![cfg_attr(target_os = "none", no_std)]
4
5use subsoil as _;
6
7use blake2::digest::{consts::U32, Digest};
8use blake2::Blake2b;
9
10type Blake2b256 = Blake2b<U32>;
11
12const MSG_LEN: usize = 1024;
13
14/// Hash a 1KB message with Blake2b-256. Returns first 4 bytes of hash as u32.
15pub fn blake2b_bench() -> u32 {
16    let mut msg = [0u8; MSG_LEN];
17    let mut i: usize = 0;
18    while i < MSG_LEN {
19        msg[i] = (i & 0xFF) as u8;
20        i += 1;
21    }
22
23    let mut hasher = Blake2b256::new();
24    hasher.update(msg);
25    let result = hasher.finalize();
26
27    u32::from_le_bytes([result[0], result[1], result[2], result[3]])
28}