/x25519-chacha20poly1305

x25519 key exchange and chacha20poly1305 encryption, with WASM bindings.

Primary LanguageJavaScriptGNU Affero General Public License v3.0AGPL-3.0

x25519-chacha20poly1305


WARNING: This code has not been audited and is not yet suitable for production. Use at your own risk.


NOTE: make sure you have your C archiver and compiler env vars set, or secp256k1-sys will fail to build

e.g. AR=/opt/homebrew/opt/llvm/bin/llvm-ar CC=/opt/homebrew/opt/llvm/bin/clang

Nodejs package for x25519 key exchange and chacha20poly1305 encryption, written in Rust compiled to WASM.

Development process

Install dependencies

See example/ci-test.sh for example of how to install both rust and javascript dependencies.

Compile

Compile a nodejs/wasm library from the Rust source.

make

Link

Link the nodejs/wasm library locally.

make link

Test

After compiling and linking, run:

ts-node example/test.ts

NPM

links to packages on npm:

Publishing instructions

  • Bump version in Cargo.toml
  • Rebuild for eg: NodeJs with make build-nodejs
  • Manually change the package name in ./pkg/package.json for the desired platform -nodejs and add the @entropyxyz org name, eg:
  "name": "@entropyxyz/x25519-chacha20poly1305-nodejs"
  • publish with npm publish
  • Rebuild for web and bundler with eg: make build-web and then change the package names again in package.json before re-publishing.