ytls_rustcrypto/hasher/
sha256.rs

1//! yTLS RustCrypto Hashers
2
3use sha2::{Digest, Sha256};
4use ytls_traits::CryptoSha256TranscriptProcessor;
5
6/// RustCrypto Sha256Hasher
7#[derive(Clone)]
8pub struct Sha256Hasher {
9    hasher: Sha256,
10}
11
12impl Sha256Hasher {
13    pub fn sha256_init() -> Self {
14        let hasher = Sha256::new();
15        Sha256Hasher { hasher }
16    }
17}
18
19impl CryptoSha256TranscriptProcessor for Sha256Hasher {
20    fn sha256_update(&mut self, d: &[u8]) -> () {
21        self.hasher.update(d);
22    }
23    fn sha256_fork(&self) -> Self {
24        self.clone()
25    }
26    fn sha256_finalize(self) -> [u8; 32] {
27        self.hasher.finalize().into()
28    }
29}