blueprint_crypto_hashing/
lib.rs

1#[cfg(feature = "sha2")]
2pub fn sha2_256(data: &[u8]) -> [u8; 32] {
3    use sha2::Digest;
4
5    let mut hasher = sha2::Sha256::new();
6    hasher.update(data);
7    let result = hasher.finalize();
8    let mut hash = [0u8; 32];
9    hash.copy_from_slice(&result);
10    hash
11}
12
13#[cfg(feature = "sha2")]
14pub fn sha2_512(data: &[u8]) -> [u8; 64] {
15    use sha2::Digest;
16
17    let mut hasher = sha2::Sha512::new();
18    hasher.update(data);
19    let result = hasher.finalize();
20    let mut hash = [0u8; 64];
21    hash.copy_from_slice(&result);
22    hash
23}
24
25#[cfg(feature = "sha3")]
26pub fn keccak_256(data: &[u8]) -> [u8; 32] {
27    use sha3::Digest;
28
29    let mut hasher = sha3::Keccak256::new();
30    hasher.update(data);
31    let output = hasher.finalize();
32    output.into()
33}
34
35#[cfg(feature = "blake3")]
36pub fn blake3_256(data: &[u8]) -> [u8; 32] {
37    let mut hasher = blake3::Hasher::new();
38    hasher.update(data);
39    let output = hasher.finalize();
40    output.into()
41}