xsalsa20
Version:
XSalsa20 implemented in Javascript and WebAssembly
55 lines (32 loc) • 1.07 kB
Markdown
# xsalsa20
XSalsa20 implemented in Javascript and WebAssembly.
```
npm install xsalsa20
```
[](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