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}