Crate mwc_libp2p_noise

Source
Expand description

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 mwc_libp2p_core::InboundUpgrade and mwc_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 mwc_libp2p_core::{identity, Transport, upgrade};
use mwc_libp2p_tcp::TcpConfig;
use mwc_libp2p_noise::{Keypair, X25519Spec, NoiseConfig};

let id_keys = identity::Keypair::generate_ed25519();
let dh_keys = Keypair::<X25519Spec>::new().into_authentic(&id_keys).unwrap();
let noise = NoiseConfig::xx(dh_keys).into_authenticated();
let builder = TcpConfig::new().upgrade(upgrade::Version::V1).authenticate(noise);
// let transport = builder.multiplex(...);

Modules§

handshake
Noise protocol handshake I/O.

Structs§

AuthenticKeypair
A DH keypair that is authentic w.r.t. a identity::PublicKey.
Handshake
A future performing a Noise handshake pattern.
Keypair
DH keypair.
KeypairIdentity
The associated public identity of a DH keypair.
LegacyConfig
Legacy configuration options.
NoiseAuthenticated
A NoiseAuthenticated transport upgrade that wraps around any NoiseConfig handshake and verifies that the remote identified with a RemoteIdentity::IdentityKey, aborting otherwise.
NoiseConfig
The protocol upgrade configuration.
NoiseOutput
A noise session to a remote.
ProtocolParams
The parameters of a Noise protocol, consisting of a choice for a handshake pattern as well as DH, cipher and hash functions.
PublicKey
DH public key.
SecretKey
DH secret key.
X25519
A X25519 key.
X25519Spec
A X25519 key.

Enums§

IK
Type tag for the IK handshake pattern.
IX
Type tag for the IX handshake pattern.
IdentityExchange
The options for identity exchange in an authenticated handshake.
NoiseError
mwc_libp2p_noise error type.
RemoteIdentity
The identity of the remote established during a handshake.
XX
Type tag for the XX handshake pattern.

Traits§

Protocol
A Noise protocol over DH keys of type C. The choice of C determines the protocol parameters for each handshake pattern.