mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 08:07:58 +00:00
Authentication of PeerIds in authority discovery records (#10317)
* Consolidating test and production code * Signing/verifying authority discovery records with PeerId Unsigned records cannot be rejected yet, they just produce a warning in the log. * Upgrading to libp2p 0.40 * libp2p::identity and sp_core::crypto Ed25519 are compatible * Rejecting authority records unsigned by peer id can be configured * Fixes based on review comments * No command-line argument needed * info was still too much spam in the logs * Added tests for both strict and loose validation * Fixing based on review comments * Pierre preferred a signing method * Ooops, I need to slow down * Update bin/node/cli/src/service.rs * Reexport libp2p crypto used in sc-network * Added proto3 compatibility tests. And import noise. Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This commit is contained in:
@@ -82,3 +82,32 @@ fn get_addresses_and_authority_id() {
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn cryptos_are_compatible() {
|
||||
use sp_core::crypto::Pair;
|
||||
|
||||
let libp2p_secret = sc_network::Keypair::generate_ed25519();
|
||||
let libp2p_public = libp2p_secret.public();
|
||||
|
||||
let sp_core_secret = {
|
||||
let libp2p_ed_secret = match libp2p_secret.clone() {
|
||||
sc_network::Keypair::Ed25519(x) => x,
|
||||
_ => panic!("generate_ed25519 should have generated an Ed25519 key ¯\\_(ツ)_/¯"),
|
||||
};
|
||||
sp_core::ed25519::Pair::from_seed_slice(&libp2p_ed_secret.secret().as_ref()).unwrap()
|
||||
};
|
||||
let sp_core_public = sp_core_secret.public();
|
||||
|
||||
let message = b"we are more powerful than not to be better";
|
||||
|
||||
let libp2p_signature = libp2p_secret.sign(message).unwrap();
|
||||
let sp_core_signature = sp_core_secret.sign(message); // no error expected...
|
||||
|
||||
assert!(sp_core::ed25519::Pair::verify(
|
||||
&sp_core::ed25519::Signature::from_slice(&libp2p_signature),
|
||||
message,
|
||||
&sp_core_public
|
||||
));
|
||||
assert!(libp2p_public.verify(message, sp_core_signature.as_ref()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user