identity_iota::storage

Trait JwkStorage

Source
pub trait JwkStorage: StorageSendSyncMaybe {
    // Required methods
    fn generate<'life0, 'async_trait>(
        &'life0 self,
        key_type: KeyType,
        alg: JwsAlgorithm,
    ) -> Pin<Box<dyn Future<Output = Result<JwkGenOutput, SingleStructError<KeyStorageErrorKind>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn insert<'life0, 'async_trait>(
        &'life0 self,
        jwk: Jwk,
    ) -> Pin<Box<dyn Future<Output = Result<KeyId, SingleStructError<KeyStorageErrorKind>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn sign<'life0, 'life1, 'life2, 'life3, 'async_trait>(
        &'life0 self,
        key_id: &'life1 KeyId,
        data: &'life2 [u8],
        public_key: &'life3 Jwk,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, SingleStructError<KeyStorageErrorKind>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait,
             Self: 'async_trait;
    fn delete<'life0, 'life1, 'async_trait>(
        &'life0 self,
        key_id: &'life1 KeyId,
    ) -> Pin<Box<dyn Future<Output = Result<(), SingleStructError<KeyStorageErrorKind>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;
    fn exists<'life0, 'life1, 'async_trait>(
        &'life0 self,
        key_id: &'life1 KeyId,
    ) -> Pin<Box<dyn Future<Output = Result<bool, SingleStructError<KeyStorageErrorKind>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;
}
Expand description

Secure storage for cryptographic keys represented as JWKs.

Required Methods§

Source

fn generate<'life0, 'async_trait>( &'life0 self, key_type: KeyType, alg: JwsAlgorithm, ) -> Pin<Box<dyn Future<Output = Result<JwkGenOutput, SingleStructError<KeyStorageErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Generate a new key represented as a JSON Web Key.

It is recommended that the implementer exposes constants for the supported KeyType.

Source

fn insert<'life0, 'async_trait>( &'life0 self, jwk: Jwk, ) -> Pin<Box<dyn Future<Output = Result<KeyId, SingleStructError<KeyStorageErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Insert an existing JSON Web Key into the storage.

All private key components of the jwk must be set.

Source

fn sign<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, key_id: &'life1 KeyId, data: &'life2 [u8], public_key: &'life3 Jwk, ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, SingleStructError<KeyStorageErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, Self: 'async_trait,

Sign the provided data using the private key identified by key_id according to the requirements of the corresponding public_key (see Jwk::alg etc.).

§Note

High level methods from this library calling this method are designed to always pass a public_key that corresponds to key_id and additional checks for this in the sign implementation are normally not required. This is however based on the expectation that the key material associated with a given KeyId is immutable.

Source

fn delete<'life0, 'life1, 'async_trait>( &'life0 self, key_id: &'life1 KeyId, ) -> Pin<Box<dyn Future<Output = Result<(), SingleStructError<KeyStorageErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Deletes the key identified by key_id.

If the corresponding key does not exist in storage, a KeyStorageError with kind KeyNotFound must be returned.

§Warning

This operation cannot be undone. The keys are purged permanently.

Source

fn exists<'life0, 'life1, 'async_trait>( &'life0 self, key_id: &'life1 KeyId, ) -> Pin<Box<dyn Future<Output = Result<bool, SingleStructError<KeyStorageErrorKind>>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Returns true if the key with the given key_id exists in storage, false otherwise.

Implementors§