use thiserror::Error;
#[derive(Debug, Error)]
pub enum JwtError {
#[error("failed to encode JWT")]
EncodingFailed,
#[error("failed to decode JWT: {0}")]
DecodingFailed(String),
#[error("token has expired")]
Expired,
#[error("invalid signature")]
InvalidSignature,
#[error("token has been revoked")]
Revoked,
#[error("invalid secret or key: {0}")]
InvalidSecret(String),
#[error("failed to load signing key: {0}")]
KeyLoading(String),
#[error("JWKS error: {0}")]
Jwks(String),
#[error("algorithm mismatch: token header `{token_alg}` vs key `{key_alg}`")]
AlgorithmMismatch {
token_alg: String,
key_alg: String,
},
}