Skip to main content

Keystore

Trait Keystore 

Source
pub trait Keystore:
    Send
    + Sync
    + 'static {
    // Required methods
    fn id(&self) -> &KeystoreId;
    fn contains(
        &self,
        key_spec: &dyn KeySpecifier,
        item_type: &KeystoreItemType,
    ) -> Result<bool>;
    fn get(
        &self,
        key_spec: &dyn KeySpecifier,
        item_type: &KeystoreItemType,
    ) -> Result<Option<ErasedKey>>;
    fn raw_entry_id(&self, raw_id: &str) -> Result<RawEntryId>;
    fn insert(
        &self,
        key: &dyn EncodableItem,
        key_spec: &dyn KeySpecifier,
    ) -> Result<()>;
    fn remove(
        &self,
        key_spec: &dyn KeySpecifier,
        item_type: &KeystoreItemType,
    ) -> Result<Option<()>>;
    fn remove_unchecked(&self, entry_id: &RawEntryId) -> Result<()>;
    fn list(&self) -> Result<Vec<KeystoreEntryResult<KeystoreEntry<'_>>>>;
}
Available on crate feature keymgr only.
Expand description

A generic key store.

Required Methods§

Source

fn id(&self) -> &KeystoreId

An identifier for this key store instance.

This identifier is used by some KeyMgr APIs to identify a specific key store.

Source

fn contains( &self, key_spec: &dyn KeySpecifier, item_type: &KeystoreItemType, ) -> Result<bool>

Check if the key identified by key_spec exists in this key store.

Source

fn get( &self, key_spec: &dyn KeySpecifier, item_type: &KeystoreItemType, ) -> Result<Option<ErasedKey>>

Retrieve the key identified by key_spec.

Returns Ok(Some(key)) if the key was successfully retrieved. Returns Ok(None) if the key does not exist in this key store.

Source

fn raw_entry_id(&self, raw_id: &str) -> Result<RawEntryId>

Available on crate feature onion-service-cli-extra only.

Convert the specified string to a RawEntryId that represents the raw unique identifier of an entry in this keystore.

The specified raw_id is allowed to represent an unrecognized or nonexistent entry.

Implementations that do not have RawEntryIds that are deserializable from string will return an error.

Returns a RawEntryId that is specific to this Keystore implementation.

Returns an error if raw_id cannot be converted to the correct variant for this keystore implementation (e.g.: RawEntryId::Path(PathBuf) for [ArtiNativeKeystore`](crate::ArtiNativeKeystore)).

Important: a RawEntryId should only be used to access the entries of the keystore it originates from (if used with a different keystore, the behavior is unspecified: the operation may fail, it may succeed, or it may lead to the wrong entry being accessed).

Source

fn insert( &self, key: &dyn EncodableItem, key_spec: &dyn KeySpecifier, ) -> Result<()>

Write key to the key store.

Source

fn remove( &self, key_spec: &dyn KeySpecifier, item_type: &KeystoreItemType, ) -> Result<Option<()>>

Remove the specified key.

A return value of Ok(None) indicates the key doesn’t exist in this key store, whereas Ok(Some(()) means the key was successfully removed.

Returns Err if an error occurred while trying to remove the key.

Source

fn remove_unchecked(&self, entry_id: &RawEntryId) -> Result<()>

Available on crate feature onion-service-cli-extra only.

Remove a keystore entry given its RawEntryId.

Unlike remove, this method can also remove entries that are unrecognized (i.e. those that do not have a corresponding KeySpecifier and KeystoreItemType).

Returns an error if the entry couldn’t be removed, or if the entry doesn’t exist.

Source

fn list(&self) -> Result<Vec<KeystoreEntryResult<KeystoreEntry<'_>>>>

List all the entries in this keystore.

Returns a list of results, where Ok signifies a recognized entry, and Err(KeystoreListError) an unrecognized one. An entry is said to be recognized if it has a valid KeyPath.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl Keystore for ArtiEphemeralKeystore

Available on crate feature ephemeral-keystore only.
Source§

impl Keystore for ArtiNativeKeystore

Source§

impl Keystore for CTorClientKeystore

Available on crate feature ctor-keystore only.
Source§

impl Keystore for CTorServiceKeystore

Available on crate feature ctor-keystore only.