mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 21:41:12 +00:00
Keystore overhaul (#13615)
* Remove 'supported_keys' 'sign_with_any' and 'sign_with_all' from keystore trait * Remove the aync keystore * Renaming: - SyncCryptoStore -> Keystore - SyncCryptoStorePtr -> KeystorePtr - KeyStore -> MemoryKeystore * Fix authority discovery worker and tests * Rename 'insert_unknown' to 'insert' * Remove leftover
This commit is contained in:
@@ -245,7 +245,7 @@ where
|
||||
mod tests {
|
||||
use sc_keystore::LocalKeystore;
|
||||
use sc_network_test::Block;
|
||||
use sp_keystore::{SyncCryptoStore, SyncCryptoStorePtr};
|
||||
use sp_keystore::{Keystore, KeystorePtr};
|
||||
|
||||
use crate::keystore::BeefyKeystore;
|
||||
use sp_consensus_beefy::{
|
||||
@@ -306,8 +306,8 @@ mod tests {
|
||||
}
|
||||
|
||||
fn sign_commitment<BN: Encode>(who: &Keyring, commitment: &Commitment<BN>) -> Signature {
|
||||
let store: SyncCryptoStorePtr = std::sync::Arc::new(LocalKeystore::in_memory());
|
||||
SyncCryptoStore::ecdsa_generate_new(&*store, KEY_TYPE, Some(&who.to_seed())).unwrap();
|
||||
let store: KeystorePtr = std::sync::Arc::new(LocalKeystore::in_memory());
|
||||
Keystore::ecdsa_generate_new(&*store, KEY_TYPE, Some(&who.to_seed())).unwrap();
|
||||
let beefy_keystore: BeefyKeystore = Some(store).into();
|
||||
|
||||
beefy_keystore.sign(&who.public(), &commitment.encode()).unwrap()
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
use sp_application_crypto::RuntimeAppPublic;
|
||||
use sp_core::keccak_256;
|
||||
use sp_keystore::{SyncCryptoStore, SyncCryptoStorePtr};
|
||||
use sp_keystore::{Keystore, KeystorePtr};
|
||||
|
||||
use log::warn;
|
||||
|
||||
@@ -33,9 +33,9 @@ use crate::{error, LOG_TARGET};
|
||||
pub(crate) type BeefySignatureHasher = sp_runtime::traits::Keccak256;
|
||||
|
||||
/// A BEEFY specific keystore implemented as a `Newtype`. This is basically a
|
||||
/// wrapper around [`sp_keystore::SyncCryptoStore`] and allows to customize
|
||||
/// wrapper around [`sp_keystore::Keystore`] and allows to customize
|
||||
/// common cryptographic functionality.
|
||||
pub(crate) struct BeefyKeystore(Option<SyncCryptoStorePtr>);
|
||||
pub(crate) struct BeefyKeystore(Option<KeystorePtr>);
|
||||
|
||||
impl BeefyKeystore {
|
||||
/// Check if the keystore contains a private key for one of the public keys
|
||||
@@ -50,7 +50,7 @@ impl BeefyKeystore {
|
||||
// we do check for multiple private keys as a key store sanity check.
|
||||
let public: Vec<Public> = keys
|
||||
.iter()
|
||||
.filter(|k| SyncCryptoStore::has_keys(&*store, &[(k.to_raw_vec(), KEY_TYPE)]))
|
||||
.filter(|k| Keystore::has_keys(&*store, &[(k.to_raw_vec(), KEY_TYPE)]))
|
||||
.cloned()
|
||||
.collect();
|
||||
|
||||
@@ -77,7 +77,7 @@ impl BeefyKeystore {
|
||||
let msg = keccak_256(message);
|
||||
let public = public.as_ref();
|
||||
|
||||
let sig = SyncCryptoStore::ecdsa_sign_prehashed(&*store, KEY_TYPE, public, &msg)
|
||||
let sig = Keystore::ecdsa_sign_prehashed(&*store, KEY_TYPE, public, &msg)
|
||||
.map_err(|e| error::Error::Keystore(e.to_string()))?
|
||||
.ok_or_else(|| error::Error::Signature("ecdsa_sign_prehashed() failed".to_string()))?;
|
||||
|
||||
@@ -94,7 +94,7 @@ impl BeefyKeystore {
|
||||
pub fn public_keys(&self) -> Result<Vec<Public>, error::Error> {
|
||||
let store = self.0.clone().ok_or_else(|| error::Error::Keystore("no Keystore".into()))?;
|
||||
|
||||
let pk: Vec<Public> = SyncCryptoStore::ecdsa_public_keys(&*store, KEY_TYPE)
|
||||
let pk: Vec<Public> = Keystore::ecdsa_public_keys(&*store, KEY_TYPE)
|
||||
.drain(..)
|
||||
.map(Public::from)
|
||||
.collect();
|
||||
@@ -110,8 +110,8 @@ impl BeefyKeystore {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Option<SyncCryptoStorePtr>> for BeefyKeystore {
|
||||
fn from(store: Option<SyncCryptoStorePtr>) -> BeefyKeystore {
|
||||
impl From<Option<KeystorePtr>> for BeefyKeystore {
|
||||
fn from(store: Option<KeystorePtr>) -> BeefyKeystore {
|
||||
BeefyKeystore(store)
|
||||
}
|
||||
}
|
||||
@@ -128,7 +128,7 @@ pub mod tests {
|
||||
use super::*;
|
||||
use crate::error::Error;
|
||||
|
||||
fn keystore() -> SyncCryptoStorePtr {
|
||||
fn keystore() -> KeystorePtr {
|
||||
Arc::new(LocalKeystore::in_memory())
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ pub mod tests {
|
||||
let store = keystore();
|
||||
|
||||
let alice: crypto::Public =
|
||||
SyncCryptoStore::ecdsa_generate_new(&*store, KEY_TYPE, Some(&Keyring::Alice.to_seed()))
|
||||
Keystore::ecdsa_generate_new(&*store, KEY_TYPE, Some(&Keyring::Alice.to_seed()))
|
||||
.ok()
|
||||
.unwrap()
|
||||
.into();
|
||||
@@ -224,7 +224,7 @@ pub mod tests {
|
||||
let store = keystore();
|
||||
|
||||
let alice: crypto::Public =
|
||||
SyncCryptoStore::ecdsa_generate_new(&*store, KEY_TYPE, Some(&Keyring::Alice.to_seed()))
|
||||
Keystore::ecdsa_generate_new(&*store, KEY_TYPE, Some(&Keyring::Alice.to_seed()))
|
||||
.ok()
|
||||
.unwrap()
|
||||
.into();
|
||||
@@ -243,10 +243,9 @@ pub mod tests {
|
||||
fn sign_error() {
|
||||
let store = keystore();
|
||||
|
||||
let _ =
|
||||
SyncCryptoStore::ecdsa_generate_new(&*store, KEY_TYPE, Some(&Keyring::Bob.to_seed()))
|
||||
.ok()
|
||||
.unwrap();
|
||||
let _ = Keystore::ecdsa_generate_new(&*store, KEY_TYPE, Some(&Keyring::Bob.to_seed()))
|
||||
.ok()
|
||||
.unwrap();
|
||||
|
||||
let store: BeefyKeystore = Some(store).into();
|
||||
|
||||
@@ -276,7 +275,7 @@ pub mod tests {
|
||||
let store = keystore();
|
||||
|
||||
let alice: crypto::Public =
|
||||
SyncCryptoStore::ecdsa_generate_new(&*store, KEY_TYPE, Some(&Keyring::Alice.to_seed()))
|
||||
Keystore::ecdsa_generate_new(&*store, KEY_TYPE, Some(&Keyring::Alice.to_seed()))
|
||||
.ok()
|
||||
.unwrap()
|
||||
.into();
|
||||
@@ -302,7 +301,7 @@ pub mod tests {
|
||||
let store = keystore();
|
||||
|
||||
let add_key = |key_type, seed: Option<&str>| {
|
||||
SyncCryptoStore::ecdsa_generate_new(&*store, key_type, seed).unwrap()
|
||||
Keystore::ecdsa_generate_new(&*store, key_type, seed).unwrap()
|
||||
};
|
||||
|
||||
// test keys
|
||||
|
||||
@@ -49,7 +49,7 @@ use sp_consensus_beefy::{
|
||||
crypto::AuthorityId, BeefyApi, MmrRootHash, PayloadProvider, ValidatorSet, BEEFY_ENGINE_ID,
|
||||
GENESIS_AUTHORITY_SET_ID,
|
||||
};
|
||||
use sp_keystore::SyncCryptoStorePtr;
|
||||
use sp_keystore::KeystorePtr;
|
||||
use sp_mmr_primitives::MmrApi;
|
||||
use sp_runtime::traits::{Block, Zero};
|
||||
use std::{collections::VecDeque, marker::PhantomData, sync::Arc};
|
||||
@@ -197,7 +197,7 @@ pub struct BeefyParams<B: Block, BE, C, N, P, R, S> {
|
||||
/// Runtime Api Provider
|
||||
pub runtime: Arc<R>,
|
||||
/// Local key store
|
||||
pub key_store: Option<SyncCryptoStorePtr>,
|
||||
pub key_store: Option<KeystorePtr>,
|
||||
/// BEEFY voter network params
|
||||
pub network_params: BeefyNetworkParams<B, N, S>,
|
||||
/// Minimal delta between blocks, BEEFY should vote for
|
||||
|
||||
@@ -54,7 +54,7 @@ use sp_consensus_beefy::{
|
||||
VersionedFinalityProof, BEEFY_ENGINE_ID, KEY_TYPE as BeefyKeyType,
|
||||
};
|
||||
use sp_core::H256;
|
||||
use sp_keystore::{testing::KeyStore as TestKeystore, SyncCryptoStore, SyncCryptoStorePtr};
|
||||
use sp_keystore::{testing::MemoryKeystore, Keystore, KeystorePtr};
|
||||
use sp_mmr_primitives::{Error as MmrError, MmrApi};
|
||||
use sp_runtime::{
|
||||
codec::Encode,
|
||||
@@ -339,9 +339,9 @@ pub(crate) fn make_beefy_ids(keys: &[BeefyKeyring]) -> Vec<AuthorityId> {
|
||||
keys.iter().map(|&key| key.public().into()).collect()
|
||||
}
|
||||
|
||||
pub(crate) fn create_beefy_keystore(authority: BeefyKeyring) -> SyncCryptoStorePtr {
|
||||
let keystore = Arc::new(TestKeystore::new());
|
||||
SyncCryptoStore::ecdsa_generate_new(&*keystore, BeefyKeyType, Some(&authority.to_seed()))
|
||||
pub(crate) fn create_beefy_keystore(authority: BeefyKeyring) -> KeystorePtr {
|
||||
let keystore = Arc::new(MemoryKeystore::new());
|
||||
Keystore::ecdsa_generate_new(&*keystore, BeefyKeyType, Some(&authority.to_seed()))
|
||||
.expect("Creates authority key");
|
||||
keystore
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user