use errors::{new_error, Error, ErrorKind, Result}; use std::str::FromStr; /// The algorithms supported for signing/verifying #[derive(Debug, PartialEq, Copy, Clone, Serialize, Deserialize)] pub enum Algorithm { /// HMAC using SHA-256 HS256, /// HMAC using SHA-384 HS384, /// HMAC using SHA-512 HS512, /// ECDSA using SHA-256 ES256, /// ECDSA using SHA-384 ES384, /// RSASSA-PKCS1-v1_5 using SHA-256 RS256, /// RSASSA-PKCS1-v1_5 using SHA-384 RS384, /// RSASSA-PKCS1-v1_5 using SHA-512 RS512, /// RSASSA-PSS using SHA-256 PS256, /// RSASSA-PSS using SHA-384 PS384, /// RSASSA-PSS using SHA-512 PS512, } impl Default for Algorithm { fn default() -> Self { Algorithm::HS256 } } impl FromStr for Algorithm { type Err = Error; fn from_str(s: &str) -> Result { match s { "HS256" => Ok(Algorithm::HS256), "HS384" => Ok(Algorithm::HS384), "HS512" => Ok(Algorithm::HS512), "ES256" => Ok(Algorithm::ES256), "ES384" => Ok(Algorithm::ES384), "RS256" => Ok(Algorithm::RS256), "RS384" => Ok(Algorithm::RS384), "PS256" => Ok(Algorithm::PS256), "PS384" => Ok(Algorithm::PS384), "PS512" => Ok(Algorithm::PS512), "RS512" => Ok(Algorithm::RS512), _ => Err(new_error(ErrorKind::InvalidAlgorithmName)), } } }