diff --git a/Cargo.lock b/Cargo.lock index ea69f6c7e0..85fefe6b81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2949,15 +2949,6 @@ dependencies = [ "spki 0.7.2", ] -[[package]] -name = "ed25519" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" -dependencies = [ - "signature 1.6.4", -] - [[package]] name = "ed25519" version = "2.2.2" @@ -2970,27 +2961,16 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek 3.2.0", - "ed25519 1.5.3", - "sha2 0.9.9", - "zeroize", -] - -[[package]] -name = "ed25519-dalek" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" +checksum = "1f628eaec48bfd21b865dc2950cfa014450c01d2fa2b69a86c2fd5844ec523c0" dependencies = [ "curve25519-dalek 4.1.1", - "ed25519 2.2.2", + "ed25519", "rand_core 0.6.4", "serde", "sha2 0.10.8", + "subtle", "zeroize", ] @@ -5667,7 +5647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce" dependencies = [ "bs58 0.4.0", - "ed25519-dalek 2.0.0", + "ed25519-dalek", "log", "multiaddr 0.17.1", "multihash 0.17.0", @@ -5685,7 +5665,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "999ec70441b2fb35355076726a6bc466c932e9bdc66f6a11c6c0aa17c7ab9be0" dependencies = [ "bs58 0.5.0", - "ed25519-dalek 2.0.0", + "ed25519-dalek", "hkdf", "multihash 0.19.1", "quick-protobuf", @@ -7460,7 +7440,7 @@ dependencies = [ name = "pallet-grandpa-finality-verifier" version = "0.1.0" dependencies = [ - "ed25519-dalek 1.0.1", + "ed25519-dalek", "finality-grandpa", "frame-support", "frame-system", @@ -11095,7 +11075,7 @@ version = "23.0.0" source = "git+https://github.com/subspace/polkadot-sdk?rev=0831dfc3c54b10ab46e82acf98603b4af1a47bd5#0831dfc3c54b10ab46e82acf98603b4af1a47bd5" dependencies = [ "bytes", - "ed25519-dalek 2.0.0", + "ed25519-dalek", "libsecp256k1", "log", "parity-scale-codec", @@ -11323,7 +11303,7 @@ source = "git+https://github.com/subspace/polkadot-sdk?rev=0831dfc3c54b10ab46e82 dependencies = [ "aes-gcm 0.10.2", "curve25519-dalek 4.1.1", - "ed25519-dalek 2.0.0", + "ed25519-dalek", "hkdf", "parity-scale-codec", "rand 0.8.5", diff --git a/crates/pallet-grandpa-finality-verifier/Cargo.toml b/crates/pallet-grandpa-finality-verifier/Cargo.toml index d297dfbe25..e45ea3ade2 100644 --- a/crates/pallet-grandpa-finality-verifier/Cargo.toml +++ b/crates/pallet-grandpa-finality-verifier/Cargo.toml @@ -27,7 +27,7 @@ sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "0831dfc3 sp-std = { git = "https://github.com/subspace/polkadot-sdk", rev = "0831dfc3c54b10ab46e82acf98603b4af1a47bd5", default-features = false } [dev-dependencies] -ed25519-dalek = { version = "1.0", default-features = false, features = ["u64_backend"] } +ed25519-dalek = { version = "2.1.0", default-features = false } sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "0831dfc3c54b10ab46e82acf98603b4af1a47bd5" } sp-application-crypto = { git = "https://github.com/subspace/polkadot-sdk", rev = "0831dfc3c54b10ab46e82acf98603b4af1a47bd5" } diff --git a/crates/pallet-grandpa-finality-verifier/src/tests/keyring.rs b/crates/pallet-grandpa-finality-verifier/src/tests/keyring.rs index 17c51ea23c..857d008fb3 100644 --- a/crates/pallet-grandpa-finality-verifier/src/tests/keyring.rs +++ b/crates/pallet-grandpa-finality-verifier/src/tests/keyring.rs @@ -1,7 +1,9 @@ //! Utilities for working with test accounts. use codec::Encode; -use ed25519_dalek::{Keypair, PublicKey, SecretKey, Signature}; +use ed25519_dalek::{ + SecretKey, Signature, Signer, SigningKey, PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH, +}; use finality_grandpa::voter_set::VoterSet; use sp_consensus_grandpa::{AuthorityId, AuthorityList, AuthorityWeight}; use sp_std::prelude::*; @@ -18,41 +20,29 @@ pub(crate) const EVE: Account = Account(4); pub(crate) struct Account(pub u16); impl Account { - pub(crate) fn public(&self) -> PublicKey { - PublicKey::from(&self.secret()) + pub(crate) fn public(&self) -> [u8; PUBLIC_KEY_LENGTH] { + self.signing_key().to_keypair_bytes()[SECRET_KEY_LENGTH..][..PUBLIC_KEY_LENGTH] + .try_into() + .unwrap() } - pub(crate) fn secret(&self) -> SecretKey { + pub(crate) fn signing_key(&self) -> SigningKey { let data = self.0.encode(); - let mut bytes = [0_u8; 32]; - bytes[0..data.len()].copy_from_slice(&data); - SecretKey::from_bytes(&bytes) - .expect("A static array of the correct length is a known good.") - } - - pub(crate) fn pair(&self) -> Keypair { - let mut pair: [u8; 64] = [0; 64]; - - let secret = self.secret(); - pair[..32].copy_from_slice(&secret.to_bytes()); - - let public = self.public(); - pair[32..].copy_from_slice(&public.to_bytes()); + let mut secret_key: SecretKey = [0_u8; 32]; + secret_key[0..data.len()].copy_from_slice(&data); - Keypair::from_bytes(&pair) - .expect("We expect the SecretKey to be good, so this must also be good.") + SigningKey::from_bytes(&secret_key) } pub(crate) fn sign(&self, msg: &[u8]) -> Signature { - use ed25519_dalek::Signer; - self.pair().sign(msg) + self.signing_key().sign(msg) } } impl From for AuthorityId { #[inline] fn from(p: Account) -> Self { - sp_application_crypto::UncheckedFrom::unchecked_from(p.public().to_bytes()) + sp_application_crypto::UncheckedFrom::unchecked_from(p.public()) } }