use std::fmt::Debug;
#[derive(Clone, Debug, Eq, thiserror::Error, PartialEq)]
pub enum ValidationError<SignatureError> {
#[error("no assertion with the label {0:#?} in the claim")]
AssertionNotInClaim(String),
#[error("the assertion with the label {0:#?} is not the same as in the claim")]
AssertionMismatch(String),
#[error("the named with the label {0:#?} is referenced multiple times")]
DuplicateAssertionReference(String),
#[error("no hard binding assertion is referenced")]
NoHardBindingAssertion,
#[error("unable to parse a signature of type {0:#?}")]
UnknownSignatureType(String),
#[error("signature is invalid")]
SignatureMismatch,
#[error("invalid padding")]
InvalidPadding,
#[error(transparent)]
SignatureError(#[from] SignatureError),
#[error("internal error ({0})")]
InternalError(String),
}