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}