ps-hash-core 0.1.0-27

Core hashing primitives for ps-hash.
Documentation
use sha2::{Digest, Sha256};

use crate::DIGEST_SIZE;

#[inline]
#[must_use]
pub fn sha256(data: &[u8]) -> [u8; DIGEST_SIZE] {
    let mut hasher = Sha256::new();

    hasher.update(data);
    hasher.finalize().into()
}

#[inline]
#[must_use]
pub fn blake3(data: &[u8]) -> blake3::Hash {
    blake3::hash(data)
}

#[cfg(test)]
mod tests {
    use sha2::{Digest, Sha256};

    #[test]
    fn sha256_matches_reference_implementation() {
        let data = b"sha256 test";
        let ours = super::sha256(data);
        let expected: [u8; super::DIGEST_SIZE] = Sha256::digest(data).into();

        assert_eq!(ours, expected);
    }

    #[test]
    fn blake3_matches_reference_implementation() {
        let data = b"blake3 test";
        let ours = super::blake3(data);
        let expected = blake3::hash(data);

        assert_eq!(ours.as_bytes(), expected.as_bytes());
    }
}