JSPM

@hazae41/chacha20-wasm

2.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 115
  • Score
    100M100P100Q9910F

WebAssembly port of ChaCha20

Package Exports

  • @hazae41/chacha20-wasm

Readme

chacha20.wasm

WebAssembly port of ChaCha20

npm install @hazae41/chacha20-wasm

📦 NPM

Features

  • Reproducible building
  • Pre-bundled and streamed
  • Zero-copy memory slices

Modules

  • chacha20

Algorithms

  • ChaCha20

Usage

ChaCha20

import { load, Memory, ChaCha20Cipher } from "@hazae41/chacha20-wasm";

await load()

using key = new Memory(crypto.getRandomValues(new Uint8Array(32)))
using nonce = new Memory(crypto.getRandomValues(new Uint8Array(12)))

using encryptor = new ChaCha20Cipher(key, nonce)
using decryptor = new ChaCha20Cipher(key, nonce)

using memory = new Memory(crypto.getRandomValues(new Uint8Array(256)))

encryptor.apply_keystream(memory)

console.log(memory.bytes)

decryptor.apply_keystream(memory)

console.log(memory.bytes)

Building

Reproducible building

You can build the exact same bytecode

npm run compile && npm run prepack

Then check that all the files are the same using npm diff

npm diff

If the output is empty then the bytecode is the same as the one I published on NPM.

Automated checks

Each time I release a new version on GitHub, the GitHub's CI clones the GitHub repository, reproduces the build, and throws an error if the NPM release is different. If a version is present on NPM but not on GitHub, do not use it!