jwt_simple/
error.rs

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