use crate::encryption::EncryptionFunction; use crate::kdf::KdfFunction; use crate::Error; pub(crate) type SchemeSerializeType = u32; #[derive(Copy, Clone, Debug, PartialEq)] pub enum Scheme { XChaCha20Poly1305WithBlake3 = 1, } impl Scheme { pub(crate) fn get_kdf(&self) -> Box { match self { Scheme::XChaCha20Poly1305WithBlake3 => Box::new(crate::kdf::blake3_derive), } } pub(crate) fn get_encryption(&self) -> Box { match self { Scheme::XChaCha20Poly1305WithBlake3 => { Box::new(crate::encryption::xchacha20poly1305_encrypt) } } } } impl TryFrom for Scheme { type Error = Error; fn try_from(value: SchemeSerializeType) -> Result { match value { 1 => Ok(Scheme::XChaCha20Poly1305WithBlake3), _ => Err(Error::ParsingSchemeUnknownScheme(value)), } } }