use failure_derive::*;
#[derive(Debug, Fail)]
pub enum ParseError {
#[fail(display = "Invalid token structure")]
InvalidTokenStructure,
#[fail(display = "base64 decoding error: {}", _0)]
Base64(#[fail(cause)] base64::DecodeError),
#[fail(display = "Malformed token header: {}", _0)]
MalformedHeader(#[fail(cause)] serde_json::Error),
#[fail(display = "Unsupported content type: {}", _0)]
UnsupportedContentType(String),
}
impl From<base64::DecodeError> for ParseError {
fn from(error: base64::DecodeError) -> Self {
ParseError::Base64(error)
}
}
#[derive(Debug, Fail)]
pub enum ValidationError {
#[fail(display = "Token algorithm differs from the expected one")]
AlgorithmMismatch,
#[fail(display = "Malformed token signature: {}", _0)]
MalformedSignature(#[fail(cause)] failure::Error),
#[fail(display = "Signature has failed verification")]
InvalidSignature,
#[fail(display = "Cannot deserialize claims: {}", _0)]
MalformedClaims(#[fail(cause)] serde_json::Error),
#[fail(display = "Cannot deserialize claims: {}", _0)]
MalformedCborClaims(#[fail(cause)] serde_cbor::error::Error),
#[fail(display = "Claim requested during validation is not present in the token")]
NoClaim,
#[fail(display = "Token has expired")]
Expired,
#[fail(display = "Token is not yet ready")]
NotMature,
}
#[derive(Debug, Fail)]
pub enum CreationError {
#[fail(display = "Cannot serialize header: {}", _0)]
Header(#[fail(cause)] serde_json::Error),
#[fail(display = "Cannot serialize claims: {}", _0)]
Claims(#[fail(cause)] serde_json::Error),
#[fail(display = "Cannot serialize claims into CBOR: {}", _0)]
CborClaims(#[fail(cause)] serde_cbor::error::Error),
}