#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub enum Driver {
#[default]
Argon2,
Bcrypt,
Scrypt,
}
#[derive(Debug, Clone)]
pub struct Argon2Config {
pub memory_kib: u32,
pub iterations: u32,
pub parallelism: u32,
}
impl Default for Argon2Config {
fn default() -> Self {
Self {
memory_kib: 19_456,
iterations: 2,
parallelism: 1,
}
}
}
#[derive(Debug, Clone)]
pub struct BcryptConfig {
pub cost: u32,
}
impl Default for BcryptConfig {
fn default() -> Self {
Self { cost: 12 }
}
}
#[derive(Debug, Clone)]
pub struct ScryptConfig {
pub log_n: u8,
pub r: u32,
pub p: u32,
}
impl Default for ScryptConfig {
fn default() -> Self {
Self {
log_n: 17,
r: 8,
p: 1,
}
}
}
#[derive(Debug, Clone, Default)]
pub struct HashConfig {
pub driver: Driver,
pub argon2: Argon2Config,
pub bcrypt: BcryptConfig,
pub scrypt: ScryptConfig,
}