Skip to main content

ErrorKind

Enum ErrorKind 

Source
#[non_exhaustive]
pub enum ErrorKind {
Show 13 variants InvalidLength, InvalidParameter, AuthenticationFailed, Unsupported, NotApprovedInFipsMode, SelfTestFailed, ModuleErrorState, EntropyFailure, CounterExhausted, MalformedEncoding, ProviderUnavailable, ProviderRefused, Internal,
}
Expand description

Machine-actionable classification of a failure.

The discriminants are stable and are mirrored verbatim into the ontology (ic-ontology::error_catalog) so an agent can reason about recovery strategy without parsing English prose.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

InvalidLength

A buffer was too short or too long for the algorithm’s contract.

§

InvalidParameter

A key, nonce, or parameter was structurally unacceptable.

§

AuthenticationFailed

Authentication (MAC / AEAD tag / signature) failed to verify.

§

Unsupported

The requested algorithm exists but is not implemented in this build.

§

NotApprovedInFipsMode

The operation is not permitted while the module is in FIPS approved mode.

§

SelfTestFailed

A FIPS 140-3 self-test failed; the module has entered the error state.

§

ModuleErrorState

The module is in a hard error state and refuses all cryptographic service.

§

EntropyFailure

The entropy source failed or did not pass its health tests.

§

CounterExhausted

A counter (DRBG reseed, GCM invocation, sequence number) was exhausted.

§

MalformedEncoding

Input could not be decoded (hex, base64, DER, point encoding).

§

ProviderUnavailable

Whatever holds the key – a token, a TPM, a key service – could not be reached or could not answer, and the inputs were not at fault: a device error, a lost session, a network failure. The same call may succeed later.

Nothing in this library returns it. It is for implementations of Signer and the like over keys held elsewhere, which otherwise have no honest kind to report.

§

ProviderRefused

Whatever holds the key answered, and the answer was no: a PIN expired or locked out, a policy that forbids the operation, a credential without the permission. The inputs were not at fault and the same call will be refused again until someone changes that.

A provider that cannot tell this from ProviderUnavailable reports this one, so that nothing retries into a lockout.

§

Internal

An internal invariant was violated — always a library bug.

Implementations§

Source§

impl ErrorKind

Source

pub const ALL: &'static [ErrorKind]

Every kind, for callers that enumerate them.

This type is #[non_exhaustive], so no other crate can match on it exhaustively and none can tell whether it has seen them all. That is deliberate — it lets a variant be added without breaking callers — but it also means a list like the ontology’s error catalog cannot check its own completeness. This crate can, so the list is published from here and a test keeps it honest.

Source

pub const fn id(self) -> &'static str

Stable kebab-case identifier used in ontology exports and CLI/MCP output.

Source

pub const fn retryable(self) -> bool

Whether retrying the identical call could plausibly succeed.

Agents use this to decide between retry, re-parameterize, and abort.

Source

pub const fn caller_correctable(self) -> bool

Whether the caller should change inputs and try again.

Trait Implementations§

Source§

impl Clone for ErrorKind

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for ErrorKind

Source§

impl Debug for ErrorKind

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for ErrorKind

Source§

impl Hash for ErrorKind

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for ErrorKind

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

fn clamp_to<R>(self, range: R) -> Self
where Self: Sized, R: ClampBounds<Self>,

🔬This is a nightly-only experimental API. (clamp_to)
Restrict a value to a certain range. Read more
Source§

impl PartialEq for ErrorKind

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl PartialOrd for ErrorKind

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl StructuralPartialEq for ErrorKind

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.