pub enum ChainError {
EmptyChain,
ChainTooDeep {
depth: usize,
max: usize,
},
NameMismatch,
DomainMismatch,
Link(CredentialError),
DelegationOutOfNamespace {
subject: String,
delegated_namespace: String,
},
}Expand description
Reasons a certificate chain fails to verify. tag() yields a stable
machine string for structured logging + JSON error envelopes, mirroring
CredentialError::tag.
Variants§
EmptyChain
The chain carried no leaf at all (structurally impossible to present
a CertChain, retained for completeness of the error surface).
ChainTooDeep
The chain is deeper than the receiver’s configured maximum.
NameMismatch
A cert’s issuer_id does not equal its parent’s subject_agent_id:
the key chain links but the name chain does not, so the parent
never vouched for this issuer name.
DomainMismatch
Two adjacent links disagree on trust_domain — a credential from one
tenant must not ride a chain anchored in another.
Link(CredentialError)
A credential-layer failure at some link (bad signature, expired, not-yet-valid, unknown/anchor issuer, bad subject key, unsupported version).
DelegationOutOfNamespace
#1554 — an intermediate signed a child whose subject_agent_id falls
OUTSIDE the namespace that intermediate is delegated to (e.g.
region/nyc/ca minting region/sfo/node-1). The key + name chain link,
but the parent has no authority to vouch for this subject. Enforcing
this inside verify (not as caller-optional policy) closes the
delegation-confinement bypass.
Implementations§
Trait Implementations§
Source§impl Clone for ChainError
impl Clone for ChainError
Source§fn clone(&self) -> ChainError
fn clone(&self) -> ChainError
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ChainError
impl Debug for ChainError
Source§impl Display for ChainError
impl Display for ChainError
impl Eq for ChainError
Source§impl Error for ChainError
impl Error for ChainError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<CredentialError> for ChainError
impl From<CredentialError> for ChainError
Source§fn from(e: CredentialError) -> Self
fn from(e: CredentialError) -> Self
Source§impl PartialEq for ChainError
impl PartialEq for ChainError
Source§fn eq(&self, other: &ChainError) -> bool
fn eq(&self, other: &ChainError) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for ChainError
Auto Trait Implementations§
impl Freeze for ChainError
impl RefUnwindSafe for ChainError
impl Send for ChainError
impl Sync for ChainError
impl Unpin for ChainError
impl UnsafeUnpin for ChainError
impl UnwindSafe for ChainError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read moreSource§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.