use crate::{Hasher, HashingAlgorithm};
#[derive(Debug, Default, Copy, Clone)]
pub struct Sha256;
impl Hasher for Sha256 {
fn algorithm(&self) -> HashingAlgorithm {
HashingAlgorithm::Sha256
}
fn digest(&self, input: &[u8]) -> Vec<u8> {
openssl::sha::sha256(input).to_vec()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn sha256_test_vectors() {
assert_eq!(Sha256.algorithm(), HashingAlgorithm::Sha256);
assert_eq!(
&hex::encode(Sha256.digest(b"")),
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
);
assert_eq!(
&hex::encode(Sha256.digest(b"Some test content")),
"0a8d48be37831ed288c5d2d0c2eb7d359c4732c34f0a7c8f9bd0797dc5459029"
);
assert_eq!(
&hex::encode(Sha256.digest(b"Some other test content")),
"a37a5724520c0e4cd8181057f99edecf7fd4d4e44524af432d2d2f93276fc304"
);
}
}