msg_auth_status/dkim/
algorithm.rs

1//! DKIM Algorithms
2
3/// DKIM Algorithms per IANA and RFC
4#[derive(Clone, Debug, PartialEq)]
5#[allow(non_camel_case_types)]
6pub enum DkimAlgorithm<'hdr> {
7    /// Do not use
8    Rsa_Sha1,
9    /// Widely supported
10    Rsa_Sha256,
11    /// Please support this - not widely supported yet
12    Ed25519_Sha256,
13    /// Unknown algorithm not specified by RFC / IANA
14    Unknown(&'hdr str),
15}
16
17use crate::error::DkimAlgorithmError;
18
19impl<'hdr> TryFrom<&'hdr str> for DkimAlgorithm<'hdr> {
20    type Error = DkimAlgorithmError;
21
22    fn try_from(algo: &'hdr str) -> Result<Self, Self::Error> {
23        let ret = match algo {
24            "rsa-sha1" => Self::Rsa_Sha1,
25            "rsa-sha256" => Self::Rsa_Sha256,
26            "ed25519-sha256" => Self::Ed25519_Sha256,
27            _ => Self::Unknown(algo),
28        };
29        Ok(ret)
30    }
31}