Skip to main content

KeyStoreError

Enum KeyStoreError 

Source
#[non_exhaustive]
pub enum KeyStoreError { NotFound(KeyId), AlreadyExists(KeyId), AlgorithmMismatch { key: KeyId, key_alg: JwsAlgorithm, requested: JwsAlgorithm, }, Unsupported(&'static str), UnsupportedAlgorithm(JwsAlgorithm), UnsupportedKeyType(KeyType), InvalidSpec { key_type: KeyType, alg: JwsAlgorithm, }, InvalidKey { key: KeyId, reason: String, source: Option<Box<dyn Error + Send + Sync + 'static>>, }, Io { path: PathBuf, source: Error, }, InsecurePermissions { path: PathBuf, mode: u32, }, InvalidKeySet { path: PathBuf, reason: String, source: Option<Box<dyn Error + Send + Sync + 'static>>, }, Backend(Box<dyn Error + Send + Sync + 'static>), }
Expand description

Why a KeyStore operation failed.

The first variants are the contract every backend follows (the test suite checks them); the file variants are reported by SoftwareKeyStore, and Backend carries whatever a remote backend reports.

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.
§

NotFound(KeyId)

No key has this id.

§

AlreadyExists(KeyId)

A key with this id exists already, so it cannot be generated or imported.

§

AlgorithmMismatch

The key signs with another algorithm than the one requested.

Fields

§key: KeyId

The key.

§key_alg: JwsAlgorithm

The algorithm the key was created for.

§requested: JwsAlgorithm

The algorithm that was requested.

§

Unsupported(&'static str)

The backend does not implement this operation (generate or delete).

§

UnsupportedAlgorithm(JwsAlgorithm)

The backend does not sign with this algorithm; see KeyStoreCapabilities::algorithms.

§

UnsupportedKeyType(KeyType)

The backend cannot generate keys of this type.

§

InvalidSpec

The algorithm of a KeySpec does not fit its key type, for example ES256 with an Ed25519 key.

Fields

§key_type: KeyType

The requested key type.

§alg: JwsAlgorithm

The requested algorithm.

§

InvalidKey

The key exists but its material cannot be used: it does not decode, the public part does not match the private part, the type is unknown, and so on. The source is the error that says why, when there is one: the JwkError of a public key that does not convert to a JWK, the error of a private scalar out of range.

Fields

§key: KeyId

The key.

§reason: String

What is wrong with it.

§source: Option<Box<dyn Error + Send + Sync + 'static>>

The underlying error.

§

Io

Reading or writing the key store file failed.

Fields

§path: PathBuf

The file.

§source: Error

The I/O error.

§

InsecurePermissions

The key store file is readable or writable by other users.

Fields

§path: PathBuf

The file.

§mode: u32

Its permission bits.

§

InvalidKeySet

The key store file is not a usable JWK set. The source is the JSON error, or the error that makes one of its keys unusable, when there is one.

Fields

§path: PathBuf

The file.

§reason: String

What is wrong with it.

§source: Option<Box<dyn Error + Send + Sync + 'static>>

The underlying error.

§

Backend(Box<dyn Error + Send + Sync + 'static>)

An error of a remote backend (an HSM, a cloud service).

Implementations§

Source§

impl KeyStoreError

Source

pub fn invalid_key(key: KeyId, reason: impl Into<String>) -> Self

KeyStoreError::InvalidKey for key, without an underlying error.

Source

pub fn backend<E: Error + Send + Sync + 'static>(error: E) -> Self

Wraps a backend’s own error as KeyStoreError::Backend.

Trait Implementations§

Source§

impl Debug for KeyStoreError

Source§

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

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

impl Display for KeyStoreError

Source§

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

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

impl Error for KeyStoreError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<KeyStoreError> for IdentityError

Source§

fn from(source: KeyStoreError) -> Self

Converts to this type from the input type.

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more