reddb_server/crypto/
sha256.rs1use sha2::{Digest, Sha256 as Sha256Impl};
2
3pub fn sha256(data: &[u8]) -> [u8; 32] {
5 let mut hasher = Sha256Impl::new();
6 hasher.update(data);
7 let digest = hasher.finalize();
8 let mut out = [0u8; 32];
9 out.copy_from_slice(&digest);
10 out
11}
12
13#[derive(Clone)]
15pub struct Sha256 {
16 hasher: Sha256Impl,
17}
18
19impl Sha256 {
20 pub fn new() -> Self {
21 Self {
22 hasher: Sha256Impl::new(),
23 }
24 }
25
26 pub fn update(&mut self, data: &[u8]) {
27 self.hasher.update(data);
28 }
29
30 pub fn finalize(self) -> [u8; 32] {
31 let digest = self.hasher.finalize();
32 let mut out = [0u8; 32];
33 out.copy_from_slice(&digest);
34 out
35 }
36}