52 lines
1.4 KiB
Markdown
52 lines
1.4 KiB
Markdown
# `sodium-javascript`
|
|
|
|
[![Build Status](https://travis-ci.org/sodium-friends/sodium-javascript.svg?branch=master)](https://travis-ci.org/sodium-friends/sodium-javascript)
|
|
|
|
> WIP - a pure javascript version of [sodium-native](https://github.com/sodium-friends/sodium-native).
|
|
Based on tweetnacl
|
|
|
|
## Usage
|
|
|
|
``` js
|
|
const sodium = require('sodium-javascript')
|
|
|
|
const key = Buffer.alloc(sodium.crypto_secretbox_KEYBYTES)
|
|
const nonce = Buffer.alloc(sodium.crypto_secretbox_NONCEBYTES)
|
|
|
|
sodium.randombytes_buf(key)
|
|
sodium.randombytes_buf(nonce)
|
|
|
|
const message = Buffer.from('Hello, World!')
|
|
const cipher = Buffer.alloc(message.length + sodium.crypto_secretbox_MACBYTES)
|
|
|
|
sodium.crypto_secretbox_easy(cipher, message, nonce, key)
|
|
|
|
console.log('Encrypted:', cipher)
|
|
|
|
const plainText = Buffer.alloc(cipher.length - sodium.crypto_secretbox_MACBYTES)
|
|
|
|
sodium.crypto_secretbox_open_easy(plainText, cipher, nonce, key)
|
|
|
|
console.log('Plaintext:', plainText.toString())
|
|
```
|
|
|
|
## API
|
|
|
|
See [sodium-native](https://github.com/sodium-friends/sodium-native).
|
|
This is a work in progress so not all functions are implemented yet.
|
|
|
|
This module is organised into individual submodules which can be required
|
|
independently for smaller bundles in the browser. To leverage automatic
|
|
switching between `sodium-javascript` and `sodium-native`, see
|
|
[`sodium-universal`](https://github.com/sodium-friends/sodium-universal).
|
|
|
|
## Install
|
|
|
|
```
|
|
npm install sodium-javascript
|
|
```
|
|
|
|
## License
|
|
|
|
[MIT](LICENSE)
|