use crate::CryptoError;
pub trait Kdf: Send + Sync {
#[must_use]
fn name(&self) -> &'static str;
#[must_use = "result must be checked"]
fn derive(
&self,
ikm: &[u8],
salt: &[u8],
info: &[u8],
okm_out: &mut [u8],
) -> Result<(), CryptoError>;
}
pub trait PasswordHashParams: Send + Sync {
#[must_use]
fn memory_cost(&self) -> Option<u32>;
#[must_use]
fn time_cost(&self) -> Option<u32>;
#[must_use]
fn parallelism(&self) -> Option<u32>;
}
pub trait PasswordHash: Send + Sync {
#[must_use]
fn name(&self) -> &'static str;
#[must_use = "result must be checked"]
fn hash_password(
&self,
password: &[u8],
salt: &[u8],
params: &dyn PasswordHashParams,
out: &mut [u8],
) -> Result<(), CryptoError>;
}