rok-core 0.6.1

Core primitives for the rok ecosystem — errors, crypto, i18n, config, DI, and more
Documentation
#[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,
}