54 releases (breaking)

new 0.46.0 Jan 14, 2025
0.45.0 Aug 9, 2024
0.44.0 Nov 5, 2023
0.43.0 Jun 20, 2023
0.4.0 Mar 29, 2019

#282 in Cryptography

Download history 69037/week @ 2024-09-28 70067/week @ 2024-10-05 68142/week @ 2024-10-12 70662/week @ 2024-10-19 58904/week @ 2024-10-26 70722/week @ 2024-11-02 60769/week @ 2024-11-09 63770/week @ 2024-11-16 69498/week @ 2024-11-23 67350/week @ 2024-11-30 83184/week @ 2024-12-07 73258/week @ 2024-12-14 31368/week @ 2024-12-21 32795/week @ 2024-12-28 63166/week @ 2025-01-04 75466/week @ 2025-01-11

211,147 downloads per month
Used in 283 crates (13 directly)

MIT license

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::MemoryTransport, upgrade, Transport};
use libp2p_identity as identity;
use libp2p_noise as noise;

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–18MB
~239K SLoC