pub trait SyncCryptoStore: CryptoStore + Send + Sync {
Show 15 methods // Required methods fn sr25519_public_keys(&self, id: KeyTypeId) -> Vec<Public>; fn sr25519_generate_new( &self, id: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>; fn ed25519_public_keys(&self, id: KeyTypeId) -> Vec<Public>; fn ed25519_generate_new( &self, id: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>; fn ecdsa_public_keys(&self, id: KeyTypeId) -> Vec<Public>; fn ecdsa_generate_new( &self, id: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>; fn insert_unknown( &self, key_type: KeyTypeId, suri: &str, public: &[u8] ) -> Result<(), ()>; fn supported_keys( &self, id: KeyTypeId, keys: Vec<CryptoTypePublicPair> ) -> Result<Vec<CryptoTypePublicPair>, Error>; fn has_keys(&self, public_keys: &[(Vec<u8>, KeyTypeId)]) -> bool; fn sign_with( &self, id: KeyTypeId, key: &CryptoTypePublicPair, msg: &[u8] ) -> Result<Option<Vec<u8>>, Error>; fn sr25519_vrf_sign( &self, key_type: KeyTypeId, public: &Public, transcript_data: VRFTranscriptData ) -> Result<Option<VRFSignature>, Error>; fn ecdsa_sign_prehashed( &self, id: KeyTypeId, public: &Public, msg: &[u8; 32] ) -> Result<Option<Signature>, Error>; // Provided methods fn keys(&self, id: KeyTypeId) -> Result<Vec<CryptoTypePublicPair>, Error> { ... } fn sign_with_any( &self, id: KeyTypeId, keys: Vec<CryptoTypePublicPair>, msg: &[u8] ) -> Result<Option<(CryptoTypePublicPair, Vec<u8>)>, Error> { ... } fn sign_with_all( &self, id: KeyTypeId, keys: Vec<CryptoTypePublicPair>, msg: &[u8] ) -> Result<Vec<Result<Option<Vec<u8>>, Error>>, ()> { ... }
}
Expand description

Sync version of the CryptoStore

Some parts of Substrate still rely on a sync version of the CryptoStore. To make the transition easier this auto trait wraps any async CryptoStore and exposes a sync interface using block_on. Usage of this is deprecated and it will be removed as soon as the internal usage has transitioned successfully. If you are starting out building something new do not use this, instead, use CryptoStore.

Required Methods§

source

fn sr25519_public_keys(&self, id: KeyTypeId) -> Vec<Public>

Returns all sr25519 public keys for the given key type.

source

fn sr25519_generate_new( &self, id: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>

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.

source

fn ed25519_public_keys(&self, id: KeyTypeId) -> Vec<Public>

Returns all ed25519 public keys for the given key type.

source

fn ed25519_generate_new( &self, id: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>

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.

source

fn ecdsa_public_keys(&self, id: KeyTypeId) -> Vec<Public>

Returns all ecdsa public keys for the given key type.

source

fn ecdsa_generate_new( &self, id: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>

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.

source

fn insert_unknown( &self, key_type: KeyTypeId, suri: &str, public: &[u8] ) -> Result<(), ()>

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.

source

fn supported_keys( &self, id: KeyTypeId, keys: Vec<CryptoTypePublicPair> ) -> Result<Vec<CryptoTypePublicPair>, Error>

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.

source

fn has_keys(&self, public_keys: &[(Vec<u8>, KeyTypeId)]) -> bool

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

Returns true iff all private keys could be found.

source

fn sign_with( &self, id: KeyTypeId, key: &CryptoTypePublicPair, msg: &[u8] ) -> Result<Option<Vec<u8>>, Error>

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 and supported, None if the key doesn’t exist or an error when something failed.

source

fn sr25519_vrf_sign( &self, key_type: KeyTypeId, public: &Public, transcript_data: VRFTranscriptData ) -> Result<Option<VRFSignature>, Error>

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 None if the given key_type and public combination doesn’t exist in the keystore or an Err when something failed.

source

fn ecdsa_sign_prehashed( &self, id: KeyTypeId, public: &Public, msg: &[u8; 32] ) -> Result<Option<Signature>, Error>

Generate an ECDSA signature for a given pre-hashed message.

Receives KeyTypeId and an ecdsa::Public key to be able to map them to a private key that exists in the keystore. This private key is, in turn, used for signing the provided pre-hashed message.

The msg argument provided should be a hashed message for which an ECDSA signature should be generated.

Returns an ecdsa::Signature or None in case the given id and public combination doesn’t exist in the keystore. An Err will be returned if generating the signature itself failed.

Provided Methods§

source

fn keys(&self, id: KeyTypeId) -> Result<Vec<CryptoTypePublicPair>, Error>

List all supported keys

Returns a set of public keys the signer supports.

source

fn sign_with_any( &self, id: KeyTypeId, keys: Vec<CryptoTypePublicPair>, msg: &[u8] ) -> Result<Option<(CryptoTypePublicPair, Vec<u8>)>, Error>

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 or None if no key could be found to sign.

source

fn sign_with_all( &self, id: KeyTypeId, keys: Vec<CryptoTypePublicPair>, msg: &[u8] ) -> Result<Vec<Result<Option<Vec<u8>>, Error>>, ()>

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, None if the key doesn’t exist or an error when something failed.

Implementors§