Trait sp_keystore::Keystore
source · pub trait Keystore: Send + Sync {
Show 28 methods
// Required methods
fn sr25519_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>;
fn sr25519_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>;
fn sr25519_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>;
fn sr25519_vrf_sign(
&self,
key_type: KeyTypeId,
public: &Public,
data: &VrfSignData
) -> Result<Option<VrfSignature>, Error>;
fn sr25519_vrf_output(
&self,
key_type: KeyTypeId,
public: &Public,
input: &VrfInput
) -> Result<Option<VrfOutput>, Error>;
fn ed25519_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>;
fn ed25519_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>;
fn ed25519_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>;
fn ecdsa_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>;
fn ecdsa_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>;
fn ecdsa_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>;
fn ecdsa_sign_prehashed(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8; 32]
) -> Result<Option<Signature>, Error>;
fn bandersnatch_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>;
fn bandersnatch_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>;
fn bandersnatch_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>;
fn bandersnatch_vrf_sign(
&self,
key_type: KeyTypeId,
public: &Public,
input: &VrfSignData
) -> Result<Option<VrfSignature>, Error>;
fn bandersnatch_vrf_output(
&self,
key_type: KeyTypeId,
public: &Public,
input: &VrfInput
) -> Result<Option<VrfOutput>, Error>;
fn bandersnatch_ring_vrf_sign(
&self,
key_type: KeyTypeId,
public: &Public,
input: &VrfSignData,
prover: &RingProver
) -> Result<Option<RingVrfSignature>, Error>;
fn bls381_public_keys(&self, id: KeyTypeId) -> Vec<Public>;
fn bls377_public_keys(&self, id: KeyTypeId) -> Vec<Public>;
fn bls381_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>;
fn bls377_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>;
fn bls381_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>;
fn bls377_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>;
fn insert(
&self,
key_type: KeyTypeId,
suri: &str,
public: &[u8]
) -> Result<(), ()>;
fn keys(&self, key_type: KeyTypeId) -> Result<Vec<Vec<u8>>, Error>;
fn has_keys(&self, public_keys: &[(Vec<u8>, KeyTypeId)]) -> bool;
// Provided method
fn sign_with(
&self,
id: KeyTypeId,
crypto_id: CryptoTypeId,
public: &[u8],
msg: &[u8]
) -> Result<Option<Vec<u8>>, Error> { ... }
}
Expand description
Something that generates, stores and provides access to secret keys.
Required Methods§
sourcefn sr25519_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>
fn sr25519_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>
Returns all the sr25519 public keys for the given key type.
sourcefn sr25519_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>
fn sr25519_generate_new( &self, key_type: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>
Generate a new sr25519 key pair for the given key type and an optional seed.
Returns an sr25519::Public
key of the generated key pair or an Err
if
something failed during key generation.
sourcefn sr25519_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>
fn sr25519_sign( &self, key_type: KeyTypeId, public: &Public, msg: &[u8] ) -> Result<Option<Signature>, Error>
Generate an sr25519 signature for a given message.
Receives KeyTypeId
and an sr25519::Public
key to be able to map
them to a private key that exists in the keystore.
Returns an sr25519::Signature
or None
in case the given key_type
and public
combination doesn’t exist in the keystore.
An Err
will be returned if generating the signature itself failed.
sourcefn sr25519_vrf_sign(
&self,
key_type: KeyTypeId,
public: &Public,
data: &VrfSignData
) -> Result<Option<VrfSignature>, Error>
fn sr25519_vrf_sign( &self, key_type: KeyTypeId, public: &Public, data: &VrfSignData ) -> Result<Option<VrfSignature>, Error>
Generate an sr25519 VRF signature for the given data.
Receives KeyTypeId
and an sr25519::Public
key to be able to map
them to a private key that exists in the keystore.
Returns None
if the given key_type
and public
combination doesn’t
exist in the keystore or an Err
when something failed.
sourcefn sr25519_vrf_output(
&self,
key_type: KeyTypeId,
public: &Public,
input: &VrfInput
) -> Result<Option<VrfOutput>, Error>
fn sr25519_vrf_output( &self, key_type: KeyTypeId, public: &Public, input: &VrfInput ) -> Result<Option<VrfOutput>, Error>
Generate an sr25519 VRF output for a given input data.
Receives KeyTypeId
and an sr25519::Public
key to be able to map
them to a private key that exists in the keystore.
Returns None
if the given key_type
and public
combination doesn’t
exist in the keystore or an Err
when something failed.
sourcefn ed25519_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>
fn ed25519_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>
Returns all ed25519 public keys for the given key type.
sourcefn ed25519_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>
fn ed25519_generate_new( &self, key_type: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>
Generate a new ed25519 key pair for the given key type and an optional seed.
Returns an ed25519::Public
key of the generated key pair or an Err
if
something failed during key generation.
sourcefn ed25519_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>
fn ed25519_sign( &self, key_type: KeyTypeId, public: &Public, msg: &[u8] ) -> Result<Option<Signature>, Error>
Generate an ed25519 signature for a given message.
Receives KeyTypeId
and an ed25519::Public
key to be able to map
them to a private key that exists in the keystore.
Returns an ed25519::Signature
or None
in case the given key_type
and public
combination doesn’t exist in the keystore.
An Err
will be returned if generating the signature itself failed.
sourcefn ecdsa_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>
fn ecdsa_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>
Returns all ecdsa public keys for the given key type.
sourcefn ecdsa_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>
fn ecdsa_generate_new( &self, key_type: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>
Generate a new ecdsa key pair for the given key type and an optional seed.
Returns an ecdsa::Public
key of the generated key pair or an Err
if
something failed during key generation.
sourcefn ecdsa_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>
fn ecdsa_sign( &self, key_type: KeyTypeId, public: &Public, msg: &[u8] ) -> Result<Option<Signature>, Error>
Generate an ecdsa signature for a given message.
Receives KeyTypeId
and an ecdsa::Public
key to be able to map
them to a private key that exists in the keystore.
Returns an ecdsa::Signature
or None
in case the given key_type
and public
combination doesn’t exist in the keystore.
An Err
will be returned if generating the signature itself failed.
sourcefn ecdsa_sign_prehashed(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8; 32]
) -> Result<Option<Signature>, Error>
fn ecdsa_sign_prehashed( &self, key_type: 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.
Returns an ecdsa::Signature
or None
in case the given key_type
and public
combination doesn’t exist in the keystore.
An Err
will be returned if generating the signature itself failed.
sourcefn bandersnatch_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>
fn bandersnatch_public_keys(&self, key_type: KeyTypeId) -> Vec<Public>
Returns all the bandersnatch public keys for the given key type.
sourcefn bandersnatch_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>
fn bandersnatch_generate_new( &self, key_type: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>
Generate a new bandersnatch key pair for the given key type and an optional seed.
Returns an bandersnatch::Public
key of the generated key pair or an Err
if
something failed during key generation.
sourcefn bandersnatch_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>
fn bandersnatch_sign( &self, key_type: KeyTypeId, public: &Public, msg: &[u8] ) -> Result<Option<Signature>, Error>
Generate an bandersnatch signature for a given message.
Receives KeyTypeId
and an bandersnatch::Public
key to be able to map
them to a private key that exists in the keystore.
Returns an bandersnatch::Signature
or None
in case the given key_type
and public
combination doesn’t exist in the keystore.
An Err
will be returned if generating the signature itself failed.
sourcefn bandersnatch_vrf_sign(
&self,
key_type: KeyTypeId,
public: &Public,
input: &VrfSignData
) -> Result<Option<VrfSignature>, Error>
fn bandersnatch_vrf_sign( &self, key_type: KeyTypeId, public: &Public, input: &VrfSignData ) -> Result<Option<VrfSignature>, Error>
Generate a bandersnatch VRF signature for the given data.
Receives KeyTypeId
and an bandersnatch::Public
key to be able to map
them to a private key that exists in the keystore.
Returns None
if the given key_type
and public
combination doesn’t
exist in the keystore or an Err
when something failed.
sourcefn bandersnatch_vrf_output(
&self,
key_type: KeyTypeId,
public: &Public,
input: &VrfInput
) -> Result<Option<VrfOutput>, Error>
fn bandersnatch_vrf_output( &self, key_type: KeyTypeId, public: &Public, input: &VrfInput ) -> Result<Option<VrfOutput>, Error>
Generate a bandersnatch VRF (pre)output for a given input data.
Receives KeyTypeId
and an bandersnatch::Public
key to be able to map
them to a private key that exists in the keystore.
Returns None
if the given key_type
and public
combination doesn’t
exist in the keystore or an Err
when something failed.
sourcefn bandersnatch_ring_vrf_sign(
&self,
key_type: KeyTypeId,
public: &Public,
input: &VrfSignData,
prover: &RingProver
) -> Result<Option<RingVrfSignature>, Error>
fn bandersnatch_ring_vrf_sign( &self, key_type: KeyTypeId, public: &Public, input: &VrfSignData, prover: &RingProver ) -> Result<Option<RingVrfSignature>, Error>
Generate a bandersnatch ring-VRF signature for the given data.
Receives KeyTypeId
and an bandersnatch::Public
key to be able to map
them to a private key that exists in the keystore.
Also takes a [bandersnatch::ring_vrf::RingProver
] instance obtained from
a valid bandersnatch::ring_vrf::RingContext
.
The ring signature is verifiable if the public key corresponding to the
signing bandersnatch::Pair
is part of the ring from which the
[bandersnatch::ring_vrf::RingProver
] has been constructed.
If not, the produced signature is just useless.
Returns None
if the given key_type
and public
combination doesn’t
exist in the keystore or an Err
when something failed.
sourcefn bls381_public_keys(&self, id: KeyTypeId) -> Vec<Public>
fn bls381_public_keys(&self, id: KeyTypeId) -> Vec<Public>
Returns all bls12-381 public keys for the given key type.
sourcefn bls377_public_keys(&self, id: KeyTypeId) -> Vec<Public>
fn bls377_public_keys(&self, id: KeyTypeId) -> Vec<Public>
Returns all bls12-377 public keys for the given key type.
sourcefn bls381_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>
fn bls381_generate_new( &self, key_type: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>
Generate a new bls381 key pair for the given key type and an optional seed.
Returns an bls381::Public
key of the generated key pair or an Err
if
something failed during key generation.
sourcefn bls377_generate_new(
&self,
key_type: KeyTypeId,
seed: Option<&str>
) -> Result<Public, Error>
fn bls377_generate_new( &self, key_type: KeyTypeId, seed: Option<&str> ) -> Result<Public, Error>
Generate a new bls377 key pair for the given key type and an optional seed.
Returns an bls377::Public
key of the generated key pair or an Err
if
something failed during key generation.
sourcefn bls381_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>
fn bls381_sign( &self, key_type: KeyTypeId, public: &Public, msg: &[u8] ) -> Result<Option<Signature>, Error>
Generate a bls381 signature for a given message.
Receives KeyTypeId
and a bls381::Public
key to be able to map
them to a private key that exists in the keystore.
Returns an bls381::Signature
or None
in case the given key_type
and public
combination doesn’t exist in the keystore.
An Err
will be returned if generating the signature itself failed.
sourcefn bls377_sign(
&self,
key_type: KeyTypeId,
public: &Public,
msg: &[u8]
) -> Result<Option<Signature>, Error>
fn bls377_sign( &self, key_type: KeyTypeId, public: &Public, msg: &[u8] ) -> Result<Option<Signature>, Error>
Generate a bls377 signature for a given message.
Receives KeyTypeId
and a bls377::Public
key to be able to map
them to a private key that exists in the keystore.
Returns an bls377::Signature
or None
in case the given key_type
and public
combination doesn’t exist in the keystore.
An Err
will be returned if generating the signature itself failed.
sourcefn insert(
&self,
key_type: KeyTypeId,
suri: &str,
public: &[u8]
) -> Result<(), ()>
fn insert( &self, key_type: KeyTypeId, suri: &str, public: &[u8] ) -> Result<(), ()>
Insert a new secret key.
Provided Methods§
sourcefn sign_with(
&self,
id: KeyTypeId,
crypto_id: CryptoTypeId,
public: &[u8],
msg: &[u8]
) -> Result<Option<Vec<u8>>, Error>
fn sign_with( &self, id: KeyTypeId, crypto_id: CryptoTypeId, public: &[u8], msg: &[u8] ) -> Result<Option<Vec<u8>>, Error>
Convenience method to sign a message using the given key type and a raw public key for secret lookup.
The message is signed using the cryptographic primitive specified by crypto_id
.
Schemes supported by the default trait implementation:
- sr25519
- ed25519
- ecdsa
- bandersnatch
- bls381
- bls377
To support more schemes you can overwrite this method.
Returns the SCALE encoded signature if key is found and supported, None
if the key doesn’t
exist or an error when something failed.