coven_crypto/
object_digest.rs1use sha2::{Digest, Sha256};
4
5#[derive(Clone, Copy, Debug, Eq, PartialEq)]
7pub struct ObjectDigest([u8; 32]);
8
9impl ObjectDigest {
10 pub fn as_bytes(&self) -> &[u8; 32] {
12 &self.0
13 }
14}
15
16#[derive(Clone)]
18pub struct ObjectHasher(Sha256);
19
20impl ObjectHasher {
21 pub fn new() -> Self {
23 Self(Sha256::new())
24 }
25
26 pub fn update(&mut self, bytes: &[u8]) {
28 #[cfg(any(test, feature = "test-utils"))]
29 coven_foundation::test_work::object_hashed(bytes.len());
30 self.0.update(bytes);
31 }
32
33 pub fn finish(self) -> ObjectDigest {
35 ObjectDigest(self.0.finalize().into())
36 }
37}
38
39impl std::fmt::Debug for ObjectHasher {
40 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
41 f.write_str("ObjectHasher(..)")
42 }
43}
44
45#[cfg(test)]
46#[path = "object_digest_tests.rs"]
47mod tests;