postgresql_archive/hasher/
sha2_256.rs

1use crate::Result;
2use sha2::{Digest, Sha256};
3
4/// Hashes the data using SHA2-256.
5///
6/// # Errors
7/// * If the data cannot be hashed.
8pub fn hash(data: &Vec<u8>) -> Result<String> {
9    let mut hasher = Sha256::new();
10    hasher.update(data);
11    let hash = hex::encode(hasher.finalize());
12    Ok(hash)
13}
14
15#[cfg(test)]
16mod tests {
17    use super::*;
18
19    #[test]
20    fn test_hash() -> Result<()> {
21        let data = vec![4, 2];
22        let hash = hash(&data)?;
23        assert_eq!(
24            "b7586d310e5efb1b7d10a917ba5af403adbf54f4f77fe7fdcb4880a95dac7e7e",
25            hash
26        );
27        Ok(())
28    }
29}