This is a fork for ChainSafe/js-libp2p-noise where performance gains are made by utilising libsodium.js (appx. 20-50% gain) instead of 'stablelib' for browser usages, and Node crypto native lib from Node apps (500-700% gain).
This fork is ESM only.
Noise libp2p handshake for js-libp2p
This repository contains TypeScript implementation of noise protocol, an encryption protocol used in libp2p.
Warning: Even though this package works in browser, it will bundle around 600Kb (200Kb gzipped) of code
https://bundlephobia.com/result?p=@dao-xyz/libp2p-noise@latest
Install with yarn add @dao-xyz/libp2p-noise
or npm i @dao-xyz/libp2p-noise
.
Example of using default noise configuration and passing it to the libp2p config:
import {noise} from "@dao-xyz/libp2p-noise"
//custom noise configuration, pass it instead of `new Noise()`
//x25519 private key
const n = noise(privateKey);
const libp2p = new Libp2p({
modules: {
connEncryption: [noise()],
},
});
Where parameters for Noise constructor are:
- static Noise key - (optional) existing private Noise static key
- early data - (optional) an early data payload to be sent in handshake messages
This module exposes a crypto interface, as defined in the repository js-interfaces.
You can provide a custom crypto implementation (instead of the default, based on stablelib) by passing a third argument to the Noise
constructor.
The implementation must conform to the ICryptoInterface
, defined in https://github.com/dao-xyz/js-libp2p-noise/blob/master/src/crypto/crypto.ts
Feel free to join in. All welcome. Open an issue!
Licensed under either of
- Apache 2.0, (LICENSE-APACHE / http://www.apache.org/licenses/LICENSE-2.0)
- MIT (LICENSE-MIT / http://opensource.org/licenses/MIT)