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}