jwt-simple 0.12.14

Easy to use, secure, non opinionated JWT (JSON Web Tokens) implementation for Rust.
Documentation
#[allow(unused)]
pub use anyhow::{anyhow, bail, ensure, Error};

#[derive(Debug, thiserror::Error)]
pub enum JWTError {
    #[error("Internal error: [{0}]")]
    InternalError(String),
    #[error("JWT compact encoding error")]
    CompactEncodingError,
    #[error("CWT decoding error")]
    CWTDecodingError,
    #[error("JWT header too large")]
    HeaderTooLarge,
    #[error("JWT algorithm mismatch")]
    AlgorithmMismatch,
    #[error("JWT key identifier mismatch")]
    KeyIdentifierMismatch,
    #[error("Missing JWT key identifier")]
    MissingJWTKeyIdentifier,
    #[error("Authentication tag didn't verify")]
    InvalidAuthenticationTag,
    #[error("Signature tag didn't verify")]
    InvalidSignature,
    #[error("Old token reused")]
    OldTokenReused,
    #[error("Clock drift detected")]
    ClockDrift,
    #[error("Token is too old")]
    TokenIsTooOld,
    #[error("Token not valid yet")]
    TokenNotValidYet,
    #[error("Token has expired")]
    TokenHasExpired,
    #[error("Required key identifier missing")]
    RequiredKeyIdMissing,
    #[error("Required key identifier mismatch")]
    RequiredKeyIdMismatch,
    #[error("Required nonce missing")]
    RequiredNonceMissing,
    #[error("Required nonce mismatch")]
    RequiredNonceMismatch,
    #[error("Required issuer mismatch")]
    RequiredIssuerMismatch,
    #[error("Required issuer missing")]
    RequiredIssuerMissing,
    #[error("Required subject mismatch")]
    RequiredSubjectMismatch,
    #[error("Required subject missing")]
    RequiredSubjectMissing,
    #[error("Required audience missing")]
    RequiredAudienceMissing,
    #[error("Required audience mismatch")]
    RequiredAudienceMismatch,
    #[error("Unsupported RSA modulus")]
    UnsupportedRSAModulus,
    #[error("Invalid public key")]
    InvalidPublicKey,
    #[error("Invalid key pair")]
    InvalidKeyPair,
    #[error("At most one audience can be represented as a string instead of a set")]
    TooManyAudiences,
    #[error("Too many issuers to be represented as a string")]
    TooManyIssuers,
    #[error("Invalid certificate thumbprint")]
    InvalidCertThumprint,
    #[error("Not a JWT token")]
    NotJWT,
    #[error("Required signature type mismatch")]
    RequiredSignatureTypeMismatch,
    #[error("Required content type mismatch")]
    RequiredContentTypeMismatch,
    #[error("Token is too long")]
    TokenTooLong,
    #[error("Missing salt")]
    MissingSalt,
    #[error("Duplicate claim key in CWT: {0}")]
    DuplicateCWTClaimKey(String),
    #[error("Weak key (must be at least 96 bits)")]
    WeakKey,
    #[error("JWE decryption failed")]
    DecryptionFailed,
    #[error("JWE key unwrap failed")]
    KeyUnwrapFailed,
    #[error("Unsupported JWE algorithm: {0}")]
    UnsupportedJWEAlgorithm(String),
    #[error("Unsupported content encryption: {0}")]
    UnsupportedContentEncryption(String),
    #[error("Invalid JWE format")]
    InvalidJWEFormat,
    #[error("Missing ephemeral public key")]
    MissingEphemeralKey,
    #[error("Invalid ephemeral public key")]
    InvalidEphemeralKey,
    #[error("Invalid encryption key")]
    InvalidEncryptionKey,
    #[error("Invalid initialization vector")]
    InvalidIV,
    #[error("Invalid authentication tag")]
    InvalidJWEAuthTag,
    #[error("Unknown critical extension in JWE header")]
    UnknownCriticalExtension,
}

impl From<&str> for JWTError {
    fn from(e: &str) -> JWTError {
        JWTError::InternalError(e.into())
    }
}