53 releases (breaking)
0.45.0 | Aug 9, 2024 |
---|---|
0.44.0 | Nov 5, 2023 |
0.43.2 | Oct 16, 2023 |
0.43.0 | Jun 20, 2023 |
0.4.0 | Mar 29, 2019 |
#304 in Cryptography
261,488 downloads per month
Used in 268 crates
(17 directly)
365KB
7K
SLoC
Noise protocol framework support for libp2p.
Note: This crate is still experimental and subject to major breaking changes both on the API and the wire protocol.
This crate provides libp2p_core::InboundUpgrade
and libp2p_core::OutboundUpgrade
implementations for various noise handshake patterns (currently IK
, IX
, and XX
)
over a particular choice of Diffie–Hellman key agreement (currently only X25519).
Note: Only the
XX
handshake pattern is currently guaranteed to provide interoperability with other libp2p implementations.
All upgrades produce as output a pair, consisting of the remote's static public key
and a NoiseOutput
which represents the established cryptographic session with the
remote, implementing futures::io::AsyncRead
and futures::io::AsyncWrite
.
Usage
Example:
use libp2p_core::{Transport, upgrade, transport::MemoryTransport};
use libp2p_noise as noise;
use libp2p_identity as identity;
let id_keys = identity::Keypair::generate_ed25519();
let noise = noise::Config::new(&id_keys).unwrap();
let builder = MemoryTransport::default().upgrade(upgrade::Version::V1).authenticate(noise);
// let transport = builder.multiplex(...);
Dependencies
~7–17MB
~238K SLoC