use base64; use serde_json; use ring; error_chain! { errors { /// When a token doesn't have a valid JWT shape InvalidToken { description("invalid token") display("Invalid token") } /// When the signature doesn't match InvalidSignature { description("invalid signature") display("Invalid signature") } /// When the secret given is not a valid RSA key InvalidKey { description("invalid key") display("Invalid Key") } // Validation error /// When a token’s `exp` claim indicates that it has expired ExpiredSignature { description("expired signature") display("Expired Signature") } /// When a token’s `iss` claim does not match the expected issuer InvalidIssuer { description("invalid issuer") display("Invalid Issuer") } /// When a token’s `aud` claim does not match one of the expected audience values InvalidAudience { description("invalid audience") display("Invalid Audience") } /// When a token’s `aud` claim does not match one of the expected audience values InvalidSubject { description("invalid subject") display("Invalid Subject") } /// When a token’s `iat` claim is in the future InvalidIssuedAt { description("invalid issued at") display("Invalid Issued At") } /// When a token’s nbf claim represents a time in the future ImmatureSignature { description("immature signature") display("Immature Signature") } /// When the algorithm in the header doesn't match the one passed to `decode` InvalidAlgorithm { description("Invalid algorithm") display("Invalid Algorithm") } } foreign_links { Unspecified(ring::error::Unspecified) #[doc = "An error happened while signing/verifying a token with RSA"]; Base64(base64::DecodeError) #[doc = "An error happened while decoding some base64 text"]; Json(serde_json::Error) #[doc = "An error happened while serializing/deserializing JSON"]; Utf8(::std::string::FromUtf8Error) #[doc = "An error happened while trying to convert the result of base64 decoding to a String"]; } }