resign_jwt/
algorithm.rs

1use std::str::FromStr;
2use frank_jwt::Algorithm as FrankAlgorithm;
3use crate::NewType;
4use std::fmt::{Debug, Formatter, Error};
5
6pub type Algorithm = NewType<FrankAlgorithm>;
7
8impl Debug for Algorithm {
9    fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
10        write!(f, "{}", self.to_string())
11    }
12}
13
14impl FromStr for Algorithm {
15    type Err = String;
16
17    fn from_str(s: &str) -> Result<Self, Self::Err> {
18        match s {
19            "HS256" => Ok(NewType::new(FrankAlgorithm::HS256)),
20            "HS384" => Ok(NewType::new(FrankAlgorithm::HS384)),
21            "HS512" => Ok(NewType::new(FrankAlgorithm::HS512)),
22            "RS256" => Ok(NewType::new(FrankAlgorithm::RS256)),
23            "RS384" => Ok(NewType::new(FrankAlgorithm::RS384)),
24            "RS512" => Ok(NewType::new(FrankAlgorithm::RS512)),
25            "ES256" => Ok(NewType::new(FrankAlgorithm::ES256)),
26            "ES384" => Ok(NewType::new(FrankAlgorithm::ES384)),
27            "ES512" => Ok(NewType::new(FrankAlgorithm::ES512)),
28            _ => {
29                Err(format!(
30                    "{}\n{}",
31                    format!("No Algorithm matching \"{}\"", s),
32                    format!("Supported algorithms: HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512")
33                ))
34            }
35        }
36    }
37}