use anyhow::anyhow;
use argon2::{
password_hash::{Salt, SaltString},
Argon2, PasswordHasher,
};
pub fn argon2_hash_from_salt(bytes: &[u8], salt: Salt<'_>) -> anyhow::Result<[u8; 32]> {
let argon2 = Argon2::default();
Ok(argon2
.hash_password(bytes, salt)
.map_err(|err| anyhow!(err))?
.hash
.ok_or_else(|| anyhow!("Hash was not valid"))?
.as_bytes()
.try_into()?)
}
pub fn argon2_hash_from_unsecure_salt(
bytes: &[u8],
unsecure_salt: String,
) -> anyhow::Result<[u8; 32]> {
argon2_hash_from_salt(
bytes,
SaltString::encode_b64(unsecure_salt.as_bytes())
.map_err(|err| anyhow!(err))?
.as_salt(),
)
}