UNPKG

supercop.wasm

Version:

orlp/ed25519 compiled to WebAssembly using Emscripten and optimized for small size

73 lines (59 loc) 2.98 kB
# supercop.wasm [![Travis CI](https://img.shields.io/travis/nazar-pc/supercop.wasm/master.svg?label=Travis%20CI)](https://travis-ci.org/nazar-pc/supercop.wasm) [orlp/ed25519](https://github.com/orlp/ed25519) compiled to WebAssembly using Emscripten and optimized for small size Based on [supercop.js](https://github.com/1p6/supercop.js). Works exactly the same way with the same API as supercop.js (except using `Uint8Array` instead of `Buffer` for lower overhead in browser build), but multiple times smaller, uses WebAssembly and works in (modern) browsers (UMD-compatible). ## How to install ``` npm install supercop.wasm ``` ## How to use Node.js: ```javascript var supercop = require('supercop.wasm') supercop.ready(function () { var seed = supercop.createSeed() var keys = supercop.createKeyPair(seed) var msg = Buffer.from('hello there') var sig = supercop.sign(msg, keys.publicKey, keys.secretKey) console.log(supercop.verify(sig, msg, keys.publicKey)) // true }); ``` Browser: ```javascript requirejs(['supercop.wasm'], function (supercop) { supercop.ready(function () { var seed = supercop.createSeed() var keys = supercop.createKeyPair(seed) var msg = (new TextEncoder("utf-8")).encode("hello there") var sig = supercop.sign(msg, keys.publicKey, keys.secretKey) console.log(supercop.verify(sig, msg, keys.publicKey)) // true }); }) ``` # API ### supercop.ready(callback) * `callback` - Callback function that is called when WebAssembly is loaded and library is ready for use ### var seed = supercop.createSeed() Generates a cryptographically-secure 32-byte seed (`Uint8Array`) ### var keys = supercop.createKeyPair(seed) Generates a keypair from the provided 32-byte seed (`Uint8Array`) with the following properties: * `keys.publicKey` - A 32 byte public key (`Uint8Array`). * `keys.secretKey` - A 64 byte private key (`Uint8Array`). ### var sig = supercop.sign(msg, publicKey, secretKey) Signs a given message of any length. * `msg` - `Uint8Array` of any length containing a message. * `publicKey` - The public key to sign with (`Uint8Array`). * `secretKey` - The private key to sign with (`Uint8Array`). * `sig` - The resulting signature (`Uint8Array`) of length 64 bytes. ### var valid = supercop.verify(sig, msg, publicKey) Verifies a given signature goes with the message and key. * `sig` - The signature to verify (`Uint8Array`). * `msg` - The message that the signature represents (`Uint8Array`). * `publicKey` - The public key used to generate the signature (`Uint8Array`). * `valid` - A boolean telling whether the signature is valid (`true`) or invalid (`false`). ## Contribution Feel free to create issues and send pull requests (for big changes create an issue first and link it from the PR), they are highly appreciated! ## License Free Public License 1.0.0 / Zero Clause BSD License https://opensource.org/licenses/FPL-1.0.0 https://tldrlegal.com/license/bsd-0-clause-license