UNPKG

oqs.js

Version:

![N-API](https://img.shields.io/badge/node--api-stable-brightgreen)

84 lines (54 loc) 2.31 kB
# oqs.js: Node.js bindings for [liboqs](https://open-quantum-safe.org) ![N-API](https://img.shields.io/badge/node--api-stable-brightgreen) Post-quantum cryptography for Node.js with automatic [liboqs](https://github.com/open-quantum-safe/liboqs) build. No system dependencies—fully reproducible install—**just run `npm install`!** Currently supports *KEM (Key Encapsulation Mechanisms)* APIs (not yet signature APIs). ## Supported Platforms - **macOS (x64/arm64)** - **Linux (x64/arm64, most distros)** - (Windows: Not yet supported) --- ## Installation ```sh npm install oqs.js ``` On first install, liboqs will be automatically cloned, built, and native addon compiled. --- ## Usage ```js const oqs = require('oqs.js'); // List available KEM algorithms console.log(oqs.listKEMs()); // e.g. ['Kyber512', ...] const alg = oqs.listKEMs()[0]; const { publicKey, secretKey } = oqs.kemKeypair(alg); const { ciphertext, sharedSecret } = oqs.encapsulate(alg, publicKey); const recoveredSecret = oqs.decapsulate(alg, ciphertext, secretKey); console.log('Shared secrets match:', sharedSecret.equals(recoveredSecret)); ``` --- ## API Reference All functions throw if given invalid arguments or data of the wrong length/type. ### `oqs.listKEMs() : string[]` List all enabled KEM algorithm names (e.g. `'Kyber512'`, ...). ### `oqs.kemKeypair(algorithm: string) : { publicKey: Buffer, secretKey: Buffer }` Generate a KEM keypair for the specified algorithm name. ### `oqs.encapsulate(algorithm: string, publicKey: Buffer) : { ciphertext: Buffer, sharedSecret: Buffer }` Generate a ciphertext and encapsulated secret for the provided algorithm/public key. ### `oqs.decapsulate(algorithm: string, ciphertext: Buffer, secretKey: Buffer) : Buffer` Recover the shared secret using private key and ciphertext for the given algorithm. --- ## How it Works - Installs liboqs from source via CMake at `npm install` time, then builds Node native binding. - Does not require pre-installed system dependencies except C++ build tools (`git`, `cmake`, `make`). ### Troubleshooting - Build time depends on your CPU/network (~1-3min typical). - Not yet available for Windows (PRs welcome). --- ## Contributing & Development Tests use Node's core `assert`: ```sh node test/basic.js ``` --- ## License MIT