Trait sp_keystore::CryptoStore[][src]

pub trait CryptoStore: Send + Sync {
#[must_use]    fn sr25519_public_keys<'life0, 'async_trait>(
        &'life0 self,
        id: KeyTypeId
    ) -> Pin<Box<dyn Future<Output = Vec<Public>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: 'async_trait
;
#[must_use] fn sr25519_generate_new<'life0, 'life1, 'async_trait>(
        &'life0 self,
        id: KeyTypeId,
        seed: Option<&'life1 str>
    ) -> Pin<Box<dyn Future<Output = Result<Public, Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: 'async_trait
;
#[must_use] fn ed25519_public_keys<'life0, 'async_trait>(
        &'life0 self,
        id: KeyTypeId
    ) -> Pin<Box<dyn Future<Output = Vec<Public>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: 'async_trait
;
#[must_use] fn ed25519_generate_new<'life0, 'life1, 'async_trait>(
        &'life0 self,
        id: KeyTypeId,
        seed: Option<&'life1 str>
    ) -> Pin<Box<dyn Future<Output = Result<Public, Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: 'async_trait
;
#[must_use] fn ecdsa_public_keys<'life0, 'async_trait>(
        &'life0 self,
        id: KeyTypeId
    ) -> Pin<Box<dyn Future<Output = Vec<Public>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: 'async_trait
;
#[must_use] fn ecdsa_generate_new<'life0, 'life1, 'async_trait>(
        &'life0 self,
        id: KeyTypeId,
        seed: Option<&'life1 str>
    ) -> Pin<Box<dyn Future<Output = Result<Public, Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: 'async_trait
;
#[must_use] fn insert_unknown<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        id: KeyTypeId,
        suri: &'life1 str,
        public: &'life2 [u8]
    ) -> Pin<Box<dyn Future<Output = Result<(), ()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        'life1: 'async_trait,
        'life2: 'async_trait,
        Self: 'async_trait
;
#[must_use] fn supported_keys<'life0, 'async_trait>(
        &'life0 self,
        id: KeyTypeId,
        keys: Vec<CryptoTypePublicPair>
    ) -> Pin<Box<dyn Future<Output = Result<Vec<CryptoTypePublicPair>, Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: 'async_trait
;
#[must_use] fn keys<'life0, 'async_trait>(
        &'life0 self,
        id: KeyTypeId
    ) -> Pin<Box<dyn Future<Output = Result<Vec<CryptoTypePublicPair>, Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: 'async_trait
;
#[must_use] fn has_keys<'life0, 'life1, 'async_trait>(
        &'life0 self,
        public_keys: &'life1 [(Vec<u8>, KeyTypeId)]
    ) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: 'async_trait
;
#[must_use] fn sign_with<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        id: KeyTypeId,
        key: &'life1 CryptoTypePublicPair,
        msg: &'life2 [u8]
    ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        'life1: 'async_trait,
        'life2: 'async_trait,
        Self: 'async_trait
;
#[must_use] fn sr25519_vrf_sign<'life0, 'life1, 'async_trait>(
        &'life0 self,
        key_type: KeyTypeId,
        public: &'life1 Public,
        transcript_data: VRFTranscriptData
    ) -> Pin<Box<dyn Future<Output = Result<VRFSignature, Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: 'async_trait
; #[must_use] fn sign_with_any<'life0, 'life1, 'async_trait>(
        &'life0 self,
        id: KeyTypeId,
        keys: Vec<CryptoTypePublicPair>,
        msg: &'life1 [u8]
    ) -> Pin<Box<dyn Future<Output = Result<(CryptoTypePublicPair, Vec<u8>), Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: 'async_trait
, { ... }
#[must_use] fn sign_with_all<'life0, 'life1, 'async_trait>(
        &'life0 self,
        id: KeyTypeId,
        keys: Vec<CryptoTypePublicPair>,
        msg: &'life1 [u8]
    ) -> Pin<Box<dyn Future<Output = Result<Vec<Result<Vec<u8>, Error>>, ()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: 'async_trait
, { ... } }

Something that generates, stores and provides access to keys.

Required methods

#[must_use]fn sr25519_public_keys<'life0, 'async_trait>(
    &'life0 self,
    id: KeyTypeId
) -> Pin<Box<dyn Future<Output = Vec<Public>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    Self: 'async_trait, 
[src]

Returns all sr25519 public keys for the given key type.

#[must_use]fn sr25519_generate_new<'life0, 'life1, 'async_trait>(
    &'life0 self,
    id: KeyTypeId,
    seed: Option<&'life1 str>
) -> Pin<Box<dyn Future<Output = Result<Public, Error>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    Self: 'async_trait, 
[src]

Generate a new sr25519 key pair for the given key type and an optional seed.

If the given seed is Some(_), the key pair will only be stored in memory.

Returns the public key of the generated key pair.

#[must_use]fn ed25519_public_keys<'life0, 'async_trait>(
    &'life0 self,
    id: KeyTypeId
) -> Pin<Box<dyn Future<Output = Vec<Public>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    Self: 'async_trait, 
[src]

Returns all ed25519 public keys for the given key type.

#[must_use]fn ed25519_generate_new<'life0, 'life1, 'async_trait>(
    &'life0 self,
    id: KeyTypeId,
    seed: Option<&'life1 str>
) -> Pin<Box<dyn Future<Output = Result<Public, Error>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    Self: 'async_trait, 
[src]

Generate a new ed25519 key pair for the given key type and an optional seed.

If the given seed is Some(_), the key pair will only be stored in memory.

Returns the public key of the generated key pair.

#[must_use]fn ecdsa_public_keys<'life0, 'async_trait>(
    &'life0 self,
    id: KeyTypeId
) -> Pin<Box<dyn Future<Output = Vec<Public>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    Self: 'async_trait, 
[src]

Returns all ecdsa public keys for the given key type.

#[must_use]fn ecdsa_generate_new<'life0, 'life1, 'async_trait>(
    &'life0 self,
    id: KeyTypeId,
    seed: Option<&'life1 str>
) -> Pin<Box<dyn Future<Output = Result<Public, Error>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    Self: 'async_trait, 
[src]

Generate a new ecdsa key pair for the given key type and an optional seed.

If the given seed is Some(_), the key pair will only be stored in memory.

Returns the public key of the generated key pair.

#[must_use]fn insert_unknown<'life0, 'life1, 'life2, 'async_trait>(
    &'life0 self,
    id: KeyTypeId,
    suri: &'life1 str,
    public: &'life2 [u8]
) -> Pin<Box<dyn Future<Output = Result<(), ()>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    'life2: 'async_trait,
    Self: 'async_trait, 
[src]

Insert a new key. This doesn't require any known of the crypto; but a public key must be manually provided.

Places it into the file system store.

Err if there's some sort of weird filesystem error, but should generally be Ok.

#[must_use]fn supported_keys<'life0, 'async_trait>(
    &'life0 self,
    id: KeyTypeId,
    keys: Vec<CryptoTypePublicPair>
) -> Pin<Box<dyn Future<Output = Result<Vec<CryptoTypePublicPair>, Error>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    Self: 'async_trait, 
[src]

Find intersection between provided keys and supported keys

Provided a list of (CryptoTypeId,u8) pairs, this would return a filtered set of public keys which are supported by the keystore.

#[must_use]fn keys<'life0, 'async_trait>(
    &'life0 self,
    id: KeyTypeId
) -> Pin<Box<dyn Future<Output = Result<Vec<CryptoTypePublicPair>, Error>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    Self: 'async_trait, 
[src]

List all supported keys

Returns a set of public keys the signer supports.

#[must_use]fn has_keys<'life0, 'life1, 'async_trait>(
    &'life0 self,
    public_keys: &'life1 [(Vec<u8>, KeyTypeId)]
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    Self: 'async_trait, 
[src]

Checks if the private keys for the given public key and key type combinations exist.

Returns true iff all private keys could be found.

#[must_use]fn sign_with<'life0, 'life1, 'life2, 'async_trait>(
    &'life0 self,
    id: KeyTypeId,
    key: &'life1 CryptoTypePublicPair,
    msg: &'life2 [u8]
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, Error>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    'life2: 'async_trait,
    Self: 'async_trait, 
[src]

Sign with key

Signs a message with the private key that matches the public key passed.

Returns the SCALE encoded signature if key is found & supported, an error otherwise.

#[must_use]fn sr25519_vrf_sign<'life0, 'life1, 'async_trait>(
    &'life0 self,
    key_type: KeyTypeId,
    public: &'life1 Public,
    transcript_data: VRFTranscriptData
) -> Pin<Box<dyn Future<Output = Result<VRFSignature, Error>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    Self: 'async_trait, 
[src]

Generate VRF signature for given transcript data.

Receives KeyTypeId and Public key to be able to map them to a private key that exists in the keystore which is, in turn, used for signing the provided transcript.

Returns a result containing the signature data. Namely, VRFOutput and VRFProof which are returned inside the VRFSignature container struct.

This function will return an error in the cases where the public key and key type provided do not match a private key in the keystore. Or, in the context of remote signing an error could be a network one.

Loading content...

Provided methods

#[must_use]fn sign_with_any<'life0, 'life1, 'async_trait>(
    &'life0 self,
    id: KeyTypeId,
    keys: Vec<CryptoTypePublicPair>,
    msg: &'life1 [u8]
) -> Pin<Box<dyn Future<Output = Result<(CryptoTypePublicPair, Vec<u8>), Error>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    Self: 'async_trait, 
[src]

Sign with any key

Given a list of public keys, find the first supported key and sign the provided message with that key.

Returns a tuple of the used key and the SCALE encoded signature.

#[must_use]fn sign_with_all<'life0, 'life1, 'async_trait>(
    &'life0 self,
    id: KeyTypeId,
    keys: Vec<CryptoTypePublicPair>,
    msg: &'life1 [u8]
) -> Pin<Box<dyn Future<Output = Result<Vec<Result<Vec<u8>, Error>>, ()>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    Self: 'async_trait, 
[src]

Sign with all keys

Provided a list of public keys, sign a message with each key given that the key is supported.

Returns a list of Results each representing the SCALE encoded signature of each key or a Error for non-supported keys.

Loading content...

Implementors

impl CryptoStore for KeyStore[src]

Loading content...