pythnet_sdk/hashers/
keccak256.rs1use {
2 crate::hashers::Hasher,
3 serde::Serialize,
4 sha3::{Digest, Keccak256 as Keccak256Digest},
5};
6
7#[derive(Clone, Default, Debug, Eq, PartialEq, Serialize)]
8pub struct Keccak256 {}
9
10impl Hasher for Keccak256 {
11 type Hash = [u8; 32];
12
13 fn hashv(data: &[impl AsRef<[u8]>]) -> [u8; 32] {
14 let mut hasher = Keccak256Digest::new();
15 data.iter().for_each(|d| hasher.update(d));
16 hasher.finalize().into()
17 }
18}
19
20#[cfg(test)]
21mod tests {
22 use {super::*, crate::hashers::Hasher};
23
24 #[test]
25 fn test_keccak256() {
26 let data = b"helloworld";
27 let hash_a = Keccak256::hashv(&[data]);
28
29 let data = [b"hello", b"world"];
30 let hash_b = Keccak256::hashv(&data);
31
32 assert_eq!(hash_a, hash_b);
33 }
34}