UNPKG

xsalsa20

Version:

XSalsa20 implemented in Javascript and WebAssembly

55 lines (32 loc) 1.07 kB
# xsalsa20 XSalsa20 implemented in Javascript and WebAssembly. ``` npm install xsalsa20 ``` [![build status](https://travis-ci.org/mafintosh/xsalsa20.svg?branch=master)](https://travis-ci.org/mafintosh/xsalsa20) ## Usage ``` js var crypto = require('crypto') var xsalsa20 = require('xsalsa20') var key = crypto.randomBytes(32) var nonce = crypto.randomBytes(24) var xor = xsalsa20(nonce, key) console.log(xor.update(Buffer.from('hello'))) console.log(xor.update(Buffer.from('world'))) xor.finalize() ``` ## API #### `var xor = xsalsa20(nonce, key)` Create a new xor instance. Nonce should be a 24 byte buffer/uint8array and key should be 32 bytes. #### `var output = xor.update(input, [output])` Update the xor instance with a new input buffer. Optionally you can pass in an output buffer. #### `xor.finalize()` Call this method last. Clears internal state. ## Contributing The bulk of this module is implemented in WebAssembly in the [xsalsa20.wat](xsalsa20.wat) file. To build the thin Javascript wrapper do: ``` npm run compile ``` ## License MIT