cache_vault/
digest.rs

1use argon2::Argon2;
2
3use crate::error::CacheVaultError;
4use crate::key::Key;
5
6pub fn digest(data: &[u8]) -> Result<[u8; 32], CacheVaultError> {
7    let pepper = Key::pepper().get()?;
8    let mut output = [0u8; 32];
9    let _ = Argon2::default().hash_password_into(data, &pepper, &mut output);
10    Ok(output)
11}
12
13#[cfg(test)]
14mod tests {
15    use super::*;
16
17    #[test]
18    fn test_digest() -> Result<(), CacheVaultError> {
19        let v1 = digest(b"secret-password")?;
20        let v2 = digest(b"secret-password")?;
21        let v3 = digest(b"secret-password2")?;
22
23        assert_eq!(v1, v2);
24        assert_ne!(v1, v3);
25        Ok(())
26    }
27}