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