Skip to content

Commit 2c739e9

Browse files
protocols/noise: Introduce NoiseAuthenticated::xx constructor with X25519 DH key exchange (#2887)
Co-authored-by: Max Inden <[email protected]>
1 parent 5906140 commit 2c739e9

File tree

16 files changed

+52
-68
lines changed

16 files changed

+52
-68
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ libp2p-identify = { version = "0.39.0", path = "protocols/identify", optional =
8888
libp2p-kad = { version = "0.41.0", path = "protocols/kad", optional = true }
8989
libp2p-metrics = { version = "0.10.0", path = "misc/metrics", optional = true }
9090
libp2p-mplex = { version = "0.36.0", path = "muxers/mplex", optional = true }
91-
libp2p-noise = { version = "0.39.0", path = "transports/noise", optional = true }
91+
libp2p-noise = { version = "0.39.1", path = "transports/noise", optional = true }
9292
libp2p-ping = { version = "0.39.0", path = "protocols/ping", optional = true }
9393
libp2p-plaintext = { version = "0.36.0", path = "transports/plaintext", optional = true }
9494
libp2p-pnet = { version = "0.22.0", path = "transports/pnet", optional = true }

core/tests/transport_upgrade.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,9 @@ where
7979
fn upgrade_pipeline() {
8080
let listener_keys = identity::Keypair::generate_ed25519();
8181
let listener_id = listener_keys.public().to_peer_id();
82-
let listener_noise_keys = noise::Keypair::<noise::X25519Spec>::new()
83-
.into_authentic(&listener_keys)
84-
.unwrap();
8582
let mut listener_transport = MemoryTransport::default()
8683
.upgrade(upgrade::Version::V1)
87-
.authenticate(noise::NoiseConfig::xx(listener_noise_keys).into_authenticated())
84+
.authenticate(noise::NoiseAuthenticated::xx(&listener_keys).unwrap())
8885
.apply(HelloUpgrade {})
8986
.apply(HelloUpgrade {})
9087
.apply(HelloUpgrade {})
@@ -93,12 +90,9 @@ fn upgrade_pipeline() {
9390

9491
let dialer_keys = identity::Keypair::generate_ed25519();
9592
let dialer_id = dialer_keys.public().to_peer_id();
96-
let dialer_noise_keys = noise::Keypair::<noise::X25519Spec>::new()
97-
.into_authentic(&dialer_keys)
98-
.unwrap();
9993
let mut dialer_transport = MemoryTransport::default()
10094
.upgrade(upgrade::Version::V1)
101-
.authenticate(noise::NoiseConfig::xx(dialer_noise_keys).into_authenticated())
95+
.authenticate(noise::NoiseAuthenticated::xx(&dialer_keys).unwrap())
10296
.apply(HelloUpgrade {})
10397
.apply(HelloUpgrade {})
10498
.apply(HelloUpgrade {})

examples/chat-tokio.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,14 @@ async fn main() -> Result<(), Box<dyn Error>> {
7070
let peer_id = PeerId::from(id_keys.public());
7171
println!("Local peer id: {:?}", peer_id);
7272

73-
// Create a keypair for authenticated encryption of the transport.
74-
let noise_keys = noise::Keypair::<noise::X25519Spec>::new()
75-
.into_authentic(&id_keys)
76-
.expect("Signing libp2p-noise static DH keypair failed.");
77-
7873
// Create a tokio-based TCP transport use noise for authenticated
7974
// encryption and Mplex for multiplexing of substreams on a TCP stream.
8075
let transport = TokioTcpTransport::new(GenTcpConfig::default().nodelay(true))
8176
.upgrade(upgrade::Version::V1)
82-
.authenticate(noise::NoiseConfig::xx(noise_keys).into_authenticated())
77+
.authenticate(
78+
noise::NoiseAuthenticated::xx(&id_keys)
79+
.expect("Signing libp2p-noise static DH keypair failed."),
80+
)
8381
.multiplex(mplex::MplexConfig::new())
8482
.boxed();
8583

examples/ipfs-private.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,7 @@ pub fn build_transport(
5757
key_pair: identity::Keypair,
5858
psk: Option<PreSharedKey>,
5959
) -> transport::Boxed<(PeerId, StreamMuxerBox)> {
60-
let noise_keys = noise::Keypair::<noise::X25519Spec>::new()
61-
.into_authentic(&key_pair)
62-
.unwrap();
63-
let noise_config = noise::NoiseConfig::xx(noise_keys).into_authenticated();
60+
let noise_config = noise::NoiseAuthenticated::xx(&key_pair).unwrap();
6461
let yamux_config = YamuxConfig::default();
6562

6663
let base_transport = TcpTransport::new(GenTcpConfig::default().nodelay(true));

protocols/dcutr/examples/client.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,6 @@ fn main() -> Result<(), Box<dyn Error>> {
8989

9090
let (relay_transport, client) = Client::new_transport_and_behaviour(local_peer_id);
9191

92-
let noise_keys = noise::Keypair::<noise::X25519Spec>::new()
93-
.into_authentic(&local_key)
94-
.expect("Signing libp2p-noise static DH keypair failed.");
95-
9692
let transport = OrTransport::new(
9793
relay_transport,
9894
block_on(DnsConfig::system(TcpTransport::new(
@@ -101,7 +97,10 @@ fn main() -> Result<(), Box<dyn Error>> {
10197
.unwrap(),
10298
)
10399
.upgrade(upgrade::Version::V1)
104-
.authenticate(noise::NoiseConfig::xx(noise_keys).into_authenticated())
100+
.authenticate(
101+
noise::NoiseAuthenticated::xx(&local_key)
102+
.expect("Signing libp2p-noise static DH keypair failed."),
103+
)
105104
.multiplex(libp2p_yamux::YamuxConfig::default())
106105
.boxed();
107106

protocols/gossipsub/src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,9 @@
9797
//!
9898
//! // Set up an encrypted TCP Transport over the Mplex
9999
//! // This is test transport (memory).
100-
//! let noise_keys = libp2p_noise::Keypair::<libp2p_noise::X25519Spec>::new().into_authentic(&local_key).unwrap();
101100
//! let transport = MemoryTransport::default()
102101
//! .upgrade(libp2p_core::upgrade::Version::V1)
103-
//! .authenticate(libp2p_noise::NoiseConfig::xx(noise_keys).into_authenticated())
102+
//! .authenticate(libp2p_noise::NoiseAuthenticated::xx(&local_key).unwrap())
104103
//! .multiplex(libp2p_mplex::MplexConfig::new())
105104
//! .boxed();
106105
//!

protocols/kad/src/behaviour/test.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,9 @@ fn build_node() -> (Multiaddr, TestSwarm) {
5656
fn build_node_with_config(cfg: KademliaConfig) -> (Multiaddr, TestSwarm) {
5757
let local_key = identity::Keypair::generate_ed25519();
5858
let local_public_key = local_key.public();
59-
let noise_keys = noise::Keypair::<noise::X25519>::new()
60-
.into_authentic(&local_key)
61-
.unwrap();
6259
let transport = MemoryTransport::default()
6360
.upgrade(upgrade::Version::V1)
64-
.authenticate(noise::NoiseConfig::xx(noise_keys).into_authenticated())
61+
.authenticate(noise::NoiseAuthenticated::xx(&local_key).unwrap())
6562
.multiplex(yamux::YamuxConfig::default())
6663
.boxed();
6764

protocols/ping/tests/ping.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,14 +243,11 @@ fn unsupported_doesnt_fail() {
243243
fn mk_transport(muxer: MuxerChoice) -> (PeerId, transport::Boxed<(PeerId, StreamMuxerBox)>) {
244244
let id_keys = identity::Keypair::generate_ed25519();
245245
let peer_id = id_keys.public().to_peer_id();
246-
let noise_keys = noise::Keypair::<noise::X25519Spec>::new()
247-
.into_authentic(&id_keys)
248-
.unwrap();
249246
(
250247
peer_id,
251248
TcpTransport::new(GenTcpConfig::default().nodelay(true))
252249
.upgrade(upgrade::Version::V1)
253-
.authenticate(noise::NoiseConfig::xx(noise_keys).into_authenticated())
250+
.authenticate(noise::NoiseAuthenticated::xx(&id_keys).unwrap())
254251
.multiplex(match muxer {
255252
MuxerChoice::Yamux => upgrade::EitherUpgrade::A(yamux::YamuxConfig::default()),
256253
MuxerChoice::Mplex => upgrade::EitherUpgrade::B(mplex::MplexConfig::default()),

protocols/relay/examples/relay_v2.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,12 @@ fn main() -> Result<(), Box<dyn Error>> {
4848

4949
let tcp_transport = TcpTransport::default();
5050

51-
let noise_keys = noise::Keypair::<noise::X25519Spec>::new()
52-
.into_authentic(&local_key)
53-
.expect("Signing libp2p-noise static DH keypair failed.");
54-
5551
let transport = tcp_transport
5652
.upgrade(upgrade::Version::V1)
57-
.authenticate(noise::NoiseConfig::xx(noise_keys).into_authenticated())
53+
.authenticate(
54+
noise::NoiseAuthenticated::xx(&local_key)
55+
.expect("Signing libp2p-noise static DH keypair failed."),
56+
)
5857
.multiplex(libp2p_yamux::YamuxConfig::default())
5958
.boxed();
6059

protocols/rendezvous/tests/harness.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use libp2p::core::transport::MemoryTransport;
2727
use libp2p::core::upgrade::SelectUpgrade;
2828
use libp2p::core::{identity, Multiaddr, PeerId, Transport};
2929
use libp2p::mplex::MplexConfig;
30-
use libp2p::noise::{Keypair, NoiseConfig, X25519Spec};
30+
use libp2p::noise::NoiseAuthenticated;
3131
use libp2p::swarm::{AddressScore, NetworkBehaviour, Swarm, SwarmBuilder, SwarmEvent};
3232
use libp2p::yamux::YamuxConfig;
3333
use std::fmt::Debug;
@@ -43,14 +43,9 @@ where
4343
let identity = identity::Keypair::generate_ed25519();
4444
let peer_id = PeerId::from(identity.public());
4545

46-
let dh_keys = Keypair::<X25519Spec>::new()
47-
.into_authentic(&identity)
48-
.expect("failed to create dh_keys");
49-
let noise = NoiseConfig::xx(dh_keys).into_authenticated();
50-
5146
let transport = MemoryTransport::default()
5247
.upgrade(Version::V1)
53-
.authenticate(noise)
48+
.authenticate(NoiseAuthenticated::xx(&identity).unwrap())
5449
.multiplex(SelectUpgrade::new(
5550
YamuxConfig::default(),
5651
MplexConfig::new(),

0 commit comments

Comments
 (0)