mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 06:21:02 +00:00
Overhaul crypto (Schnorr/Ristretto, HDKD, BIP39) (#1795)
* Rijig to Ristretto * Rebuild wasm * adds compatibility test with the wasm module * Add Ed25519-BIP39 support * Bump subkey version * Update CLI output * New keys. * Standard phrase/password/path keys. * Subkey uses S-URI for secrets * Move everything to use new HDKD crypto. * Test fixes * Ignore old test vector. * fix the ^^ old test vector. * Fix tests * Test fixes * Cleanups * Fix broken key conversion logic in grandpa CC @rphmeier * Remove legacy Keyring usage * Traitify `Pair` * Replace Ed25519AuthorityId with ed25519::Public * Expunge Ed25519AuthorityId type! * Replace Sr25519AuthorityId with sr25519::Public * Remove dodgy crypto type-punning conversions * Fix some tests * Avoid trait * Deduplicate DeriveJunction string decode * Remove cruft code * Fix test * Minor removals * Build fix * Subkey supports sign and verify * Inspect works for public key URIs * Remove more crypto type-punning * Fix typo * Fix tests
This commit is contained in:
@@ -42,7 +42,8 @@ use runtime_primitives::generic::BlockId;
|
||||
use runtime_primitives::traits::{
|
||||
NumberFor, Block as BlockT, Header as HeaderT, One,
|
||||
};
|
||||
use substrate_primitives::{Ed25519AuthorityId, H256};
|
||||
use substrate_primitives::{ed25519, H256};
|
||||
use ed25519::Public as AuthorityId;
|
||||
|
||||
use crate::justification::GrandpaJustification;
|
||||
|
||||
@@ -189,7 +190,7 @@ fn do_check_finality_proof<Block: BlockT<Hash=H256>, C, J>(
|
||||
call_data: vec![],
|
||||
retry_count: None,
|
||||
})?;
|
||||
let grandpa_authorities: Vec<(Ed25519AuthorityId, u64)> = Decode::decode(&mut &grandpa_authorities[..])
|
||||
let grandpa_authorities: Vec<(AuthorityId, u64)> = Decode::decode(&mut &grandpa_authorities[..])
|
||||
.ok_or_else(|| ClientErrorKind::BadJustification("failed to decode GRANDPA authorities set proof".into()))?;
|
||||
|
||||
// and now check justification
|
||||
@@ -222,7 +223,7 @@ trait ProvableJustification<Header: HeaderT>: Encode + Decode {
|
||||
fn target_block(&self) -> (Header::Number, Header::Hash);
|
||||
|
||||
/// Verify justification with respect to authorities set and authorities set id.
|
||||
fn verify(&self, set_id: u64, authorities: &VoterSet<Ed25519AuthorityId>) -> ClientResult<()>;
|
||||
fn verify(&self, set_id: u64, authorities: &VoterSet<AuthorityId>) -> ClientResult<()>;
|
||||
}
|
||||
|
||||
impl<Block: BlockT<Hash=H256>> ProvableJustification<Block::Header> for GrandpaJustification<Block>
|
||||
@@ -233,7 +234,7 @@ impl<Block: BlockT<Hash=H256>> ProvableJustification<Block::Header> for GrandpaJ
|
||||
(self.commit.target_number, self.commit.target_hash)
|
||||
}
|
||||
|
||||
fn verify(&self, set_id: u64, authorities: &VoterSet<Ed25519AuthorityId>) -> ClientResult<()> {
|
||||
fn verify(&self, set_id: u64, authorities: &VoterSet<AuthorityId>) -> ClientResult<()> {
|
||||
GrandpaJustification::verify(self, set_id, authorities)
|
||||
}
|
||||
}
|
||||
@@ -253,12 +254,12 @@ mod tests {
|
||||
impl ProvableJustification<Header> for ValidFinalityProof {
|
||||
fn target_block(&self) -> (u64, H256) { (3, header(3).hash()) }
|
||||
|
||||
fn verify(&self, set_id: u64, authorities: &VoterSet<Ed25519AuthorityId>) -> ClientResult<()> {
|
||||
fn verify(&self, set_id: u64, authorities: &VoterSet<AuthorityId>) -> ClientResult<()> {
|
||||
assert_eq!(set_id, 1);
|
||||
assert_eq!(authorities, &vec![
|
||||
(Ed25519AuthorityId([1u8; 32]), 1),
|
||||
(Ed25519AuthorityId([2u8; 32]), 2),
|
||||
(Ed25519AuthorityId([3u8; 32]), 3),
|
||||
(AuthorityId([1u8; 32]), 1),
|
||||
(AuthorityId([2u8; 32]), 2),
|
||||
(AuthorityId([3u8; 32]), 3),
|
||||
].into_iter().collect());
|
||||
Ok(())
|
||||
}
|
||||
@@ -387,7 +388,7 @@ mod tests {
|
||||
impl ProvableJustification<Header> for InvalidFinalityProof {
|
||||
fn target_block(&self) -> (u64, H256) { (3, header(3).hash()) }
|
||||
|
||||
fn verify(&self, _set_id: u64, _authorities: &VoterSet<Ed25519AuthorityId>) -> ClientResult<()> {
|
||||
fn verify(&self, _set_id: u64, _authorities: &VoterSet<AuthorityId>) -> ClientResult<()> {
|
||||
Err(ClientErrorKind::Backend("test error".into()).into())
|
||||
}
|
||||
}
|
||||
@@ -415,9 +416,9 @@ mod tests {
|
||||
.unwrap().unwrap();
|
||||
assert_eq!(do_check_finality_proof::<Block, _, ValidFinalityProof>(
|
||||
|_| Ok(vec![
|
||||
(Ed25519AuthorityId([1u8; 32]), 1u64),
|
||||
(Ed25519AuthorityId([2u8; 32]), 2u64),
|
||||
(Ed25519AuthorityId([3u8; 32]), 3u64),
|
||||
(AuthorityId([1u8; 32]), 1u64),
|
||||
(AuthorityId([2u8; 32]), 2u64),
|
||||
(AuthorityId([3u8; 32]), 3u64),
|
||||
].encode()),
|
||||
header(1),
|
||||
(2, header(2).hash()),
|
||||
|
||||
Reference in New Issue
Block a user