1//! Error types for the Common Access Token library
23use std::io::Error as IoError;
4use thiserror::Error;
56/// Errors that can occur when working with Common Access Tokens
7#[derive(Error, Debug)]
8pub enum Error {
9/// Error during CBOR encoding
10#[error("CBOR encoding error: {0}")]
11CborEncode(#[from] minicbor::encode::Error<IoError>),
1213/// Error during CBOR encoding with infallible writer
14#[error("CBOR encoding error: {0}")]
15CborEncodeInfallible(#[from] minicbor::encode::Error<std::convert::Infallible>),
1617/// Error during CBOR decoding
18#[error("CBOR decode error: {0}")]
19CborDecode(#[from] minicbor::decode::Error),
2021/// Invalid token format
22#[error("Invalid token format: {0}")]
23InvalidFormat(String),
2425/// Invalid algorithm
26#[error("Invalid algorithm: {0}")]
27InvalidAlgorithm(String),
2829/// Signature verification failed
30#[error("Signature verification failed. The token's signature does not match the expected signature")]
31SignatureVerification,
3233/// Missing required claim
34#[error("Missing required claim: {0}. The token does not contain a required claim")]
35MissingClaim(String),
3637/// Token expired
38#[error("Token expired. The token's expiration time (exp) is in the past")]
39Expired,
4041/// Token not yet valid
42#[error("Token not yet valid. The token's not-before time (nbf) is in the future")]
43NotYetValid,
4445/// Invalid issuer
46#[error("Invalid issuer. The token's issuer (iss) does not match the expected issuer")]
47InvalidIssuer,
4849/// Invalid audience
50#[error("Invalid audience. The token's audience (aud) does not match the expected audience")]
51InvalidAudience,
5253/// Invalid claim value
54#[error("Invalid claim value: {0}")]
55InvalidClaimValue(String),
5657/// Invalid URI claim
58#[error("Invalid URI claim: {0}")]
59InvalidUriClaim(String),
6061/// Invalid method claim
62#[error("Invalid method claim: {0}")]
63InvalidMethodClaim(String),
6465/// Invalid renewal claim
66#[error("Invalid renewal claim: {0}")]
67InvalidRenewalClaim(String),
6869/// Token replay violation
70#[error("Token replay violation: {0}")]
71ReplayViolation(String),
7273/// Other error
74#[error("Other error: {0}")]
75Other(String),
76}