soph_hash/config/
mod.rs

1use serde::Deserialize;
2
3#[derive(Debug, Default, Deserialize)]
4pub struct Hash {
5    #[serde(default)]
6    pub algorithm: Algorithm,
7    #[serde(default)]
8    pub version: Version,
9}
10
11#[derive(Debug, Default, Deserialize)]
12pub enum Algorithm {
13    #[serde(rename = "argon2d")]
14    Argon2d = 0,
15    #[serde(rename = "argon2i")]
16    Argon2i = 1,
17    #[serde(rename = "argon2id")]
18    #[default]
19    Argon2id = 2,
20}
21
22impl From<Algorithm> for argon2::Algorithm {
23    fn from(algorithm: Algorithm) -> Self {
24        match algorithm {
25            Algorithm::Argon2d => argon2::Algorithm::Argon2d,
26            Algorithm::Argon2i => argon2::Algorithm::Argon2i,
27            Algorithm::Argon2id => argon2::Algorithm::Argon2id,
28        }
29    }
30}
31
32#[derive(Debug, Default, Deserialize)]
33pub enum Version {
34    #[serde(rename = "v0x10")]
35    V0x10 = 0x10,
36
37    #[serde(rename = "v0x13")]
38    #[default]
39    V0x13 = 0x13,
40}
41
42impl From<Version> for argon2::Version {
43    fn from(version: Version) -> Self {
44        match version {
45            Version::V0x10 => argon2::Version::V0x10,
46            Version::V0x13 => argon2::Version::V0x13,
47        }
48    }
49}