- Notifications
You must be signed in to change notification settings - Fork0
WebAssembly port of Aes128Ctr128Be and ChaCha20Poly1305 encryption algorithms
License
hazae41/zepar
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
WebAssembly port of Aes128Ctr128Be and ChaCha20Poly1305 encryption algorithms
npm i @hazae41/zepar
Node Package 📦 •Deno Module 🦖 •Next.js CodeSandbox 🪣
- Aes128Ctr128Be from RustCrypto (aes, ctr) (audited)
- ChaCha20Poly1305 from RustCrypto (chacha20poly1305)
- Reproducible building
- Pre-bundled and streamed
- Zero-copy memory slices
import{Zepar,Aes128Ctr128BEKey}from"@hazae41/zepar";import{randomBytes}from"crypto";// Wait for WASM to loadawaitZepar.initBundledOnce()// Random keyconstkey=randomBytes(16)// Random IVconstiv=randomBytes(16)// Build a cipher from key and IVconstcipher=newAes128Ctr128BEKey(key,iv)// Byte arrays to encryptconsthello=newTextEncoder().encode("Hello World")// Encrypt with counter = 0constencrypted0=cipher.apply_keystream(hello).copyAndDispose()// Encrypt with counter = 1constencrypted1=cipher.apply_keystream(hello).copyAndDispose()// encrypted0 !== encrypted1console.log(encrypted0,encrypted1)cipher.free()
You need to installRust
Then, installwasm-pack
cargo install wasm-pack
Finally, do a clean install and build
npm ci&& npm run build
You can build the exact same bytecode using Docker, just be sure you're on alinux/amd64
host
docker compose up --build
Then check that all the files are the same usinggit status
git status --porcelain
If the output is empty then the bytecode is the same as the one I commited
Each time I commit to the repository, the GitHub's CI does the following:
- Clone the repository
- Reproduce the build using
docker compose up --build
- Throw an error if the
git status --porcelain
output is not empty
Each time I release a new version tag on GitHub, the GitHub's CI does the following:
- Clone the repository
- Do not reproduce the build, as it's already checked by the task above
- Throw an error if there is a
npm diff
between the cloned repository and the same version tag on NPM
If a version is present on NPM but not on GitHub, do not use!
About
WebAssembly port of Aes128Ctr128Be and ChaCha20Poly1305 encryption algorithms