#[derive(Clone, Debug, Eq, PartialEq)]
pub enum AccessError {
Truncated,
TrailingBytes,
UnsupportedVersion(u16),
WrongObjectType,
InvalidIdentifier,
InvalidUtf8,
LengthLimit(usize),
InvalidEpoch,
InvalidKeyIdentity,
NonCanonicalEncoding,
DuplicateRule,
InvalidSignature,
UntrustedIssuer,
SubjectMismatch,
NotYetValid,
Expired,
StaleRevision,
Revoked,
InvalidPermissions,
CryptographicFailure,
}
impl core::fmt::Display for AccessError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
Self::Truncated => f.write_str("access object is truncated"),
Self::TrailingBytes => f.write_str("access object has trailing bytes"),
Self::UnsupportedVersion(version) => {
write!(f, "unsupported access object version {version}")
}
Self::WrongObjectType => f.write_str("wrong access object type"),
Self::InvalidIdentifier => f.write_str("invalid access identifier"),
Self::InvalidUtf8 => f.write_str("access identifier is not UTF-8"),
Self::LengthLimit(length) => write!(f, "access length {length} exceeds its limit"),
Self::InvalidEpoch => f.write_str("invalid access epoch or revision"),
Self::InvalidKeyIdentity => f.write_str("invalid access key identity"),
Self::NonCanonicalEncoding => f.write_str("non-canonical access object encoding"),
Self::DuplicateRule => f.write_str("duplicate capability rule"),
Self::InvalidSignature => f.write_str("invalid access object signature"),
Self::UntrustedIssuer => f.write_str("access object issuer is not trusted"),
Self::SubjectMismatch => {
f.write_str("access object tenant, subject, or scope does not match")
}
Self::NotYetValid => f.write_str("access object is not active yet"),
Self::Expired => f.write_str("access object has expired"),
Self::StaleRevision => f.write_str("access object revision is stale"),
Self::Revoked => f.write_str("access object epoch has been revoked"),
Self::InvalidPermissions => f.write_str("invalid access permissions"),
Self::CryptographicFailure => f.write_str("access cryptographic operation failed"),
}
}
}
impl std::error::Error for AccessError {}