2024-02-15 10:56:21 +01:00
|
|
|
use crate::Error;
|
|
|
|
|
2024-02-15 10:00:06 +01:00
|
|
|
#[derive(Copy, Clone, Debug, PartialEq)]
|
|
|
|
pub enum Scheme {
|
|
|
|
XChaCha20Poly1305WithBlake3 = 1,
|
|
|
|
}
|
|
|
|
|
2024-02-15 23:45:21 +01:00
|
|
|
impl Scheme {
|
|
|
|
pub(crate) fn canonicalization_hasher(&self) -> impl digest::Digest {
|
|
|
|
match self {
|
|
|
|
Scheme::XChaCha20Poly1305WithBlake3 => blake3::Hasher::new(),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub(crate) fn get_kdf(&self) -> impl Fn(&[u8], &[u8]) -> Vec<u8> {
|
|
|
|
match self {
|
|
|
|
Scheme::XChaCha20Poly1305WithBlake3 => crate::kdf::blake3_derive,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub(crate) fn key_size(&self) -> usize {
|
|
|
|
match self {
|
|
|
|
Scheme::XChaCha20Poly1305WithBlake3 => 32,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-02-15 10:00:06 +01:00
|
|
|
impl TryFrom<u32> for Scheme {
|
2024-02-15 10:56:21 +01:00
|
|
|
type Error = Error;
|
2024-02-15 10:00:06 +01:00
|
|
|
|
|
|
|
fn try_from(value: u32) -> Result<Self, Self::Error> {
|
|
|
|
match value {
|
|
|
|
1 => Ok(Scheme::XChaCha20Poly1305WithBlake3),
|
2024-02-15 10:56:21 +01:00
|
|
|
_ => Err(Error::ParsingUnknownScheme(value)),
|
2024-02-15 10:00:06 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|