52 releases (breaking)

0.44.0 Nov 5, 2023
0.43.1 Aug 24, 2023
0.43.0 Jun 20, 2023
0.42.1 Mar 12, 2023
0.4.0 Mar 29, 2019

#183 in Cryptography

Download history 54574/week @ 2023-11-26 50140/week @ 2023-12-03 47519/week @ 2023-12-10 41877/week @ 2023-12-17 19434/week @ 2023-12-24 30504/week @ 2023-12-31 42079/week @ 2024-01-07 48260/week @ 2024-01-14 46821/week @ 2024-01-21 45933/week @ 2024-01-28 48743/week @ 2024-02-04 50702/week @ 2024-02-11 60400/week @ 2024-02-18 54793/week @ 2024-02-25 50816/week @ 2024-03-03 17158/week @ 2024-03-10

186,369 downloads per month
Used in 217 crates (15 directly)

MIT license

375KB
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–19MB
~277K SLoC