jwt_simple/
error.rs

1pub use anyhow::{anyhow, bail, ensure, Error};
2
3#[derive(Debug, thiserror::Error)]
4pub enum JWTError {
5    #[error("Internal error: [{0}]")]
6    InternalError(String),
7    #[error("JWT compact encoding error")]
8    CompactEncodingError,
9    #[error("CWT decoding error")]
10    CWTDecodingError,
11    #[error("JWT header too large")]
12    HeaderTooLarge,
13    #[error("JWT algorithm mismatch")]
14    AlgorithmMismatch,
15    #[error("JWT key identifier mismatch")]
16    KeyIdentifierMismatch,
17    #[error("Missing JWT key identifier")]
18    MissingJWTKeyIdentifier,
19    #[error("Authentication tag didn't verify")]
20    InvalidAuthenticationTag,
21    #[error("Signature tag didn't verify")]
22    InvalidSignature,
23    #[error("Old token reused")]
24    OldTokenReused,
25    #[error("Clock drift detected")]
26    ClockDrift,
27    #[error("Token is too old")]
28    TokenIsTooOld,
29    #[error("Token not valid yet")]
30    TokenNotValidYet,
31    #[error("Token has expired")]
32    TokenHasExpired,
33    #[error("Required nonce missing")]
34    RequiredNonceMissing,
35    #[error("Required nonce mismatch")]
36    RequiredNonceMismatch,
37    #[error("Required issuer mismatch")]
38    RequiredIssuerMismatch,
39    #[error("Required issuer missing")]
40    RequiredIssuerMissing,
41    #[error("Required subject mismatch")]
42    RequiredSubjectMismatch,
43    #[error("Required subject missing")]
44    RequiredSubjectMissing,
45    #[error("Required audience missing")]
46    RequiredAudienceMissing,
47    #[error("Required audience mismatch")]
48    RequiredAudienceMismatch,
49    #[error("Unsupported RSA modulus")]
50    UnsupportedRSAModulus,
51    #[error("Invalid public key")]
52    InvalidPublicKey,
53    #[error("Invalid key pair")]
54    InvalidKeyPair,
55    #[error("At most one audience can be represented as a string instead of a set")]
56    TooManyAudiences,
57    #[error("Too many issuers to be represented as a string")]
58    TooManyIssuers,
59    #[error("Invalid certificate thumbprint")]
60    InvalidCertThumprint,
61    #[error("Not a JWT token")]
62    NotJWT,
63    #[error("Token is too long")]
64    TokenTooLong,
65}
66
67impl From<&str> for JWTError {
68    fn from(e: &str) -> JWTError {
69        JWTError::InternalError(e.into())
70    }
71}