Pure Javascript version of sodium-native
Problem: For some reason the test sets `c` to 147 + 16 bytes, when we only need 147 bytes. It's unclear to me why this is happening, but I can confirm that Sodium-Native throws an error if you try this. Solution: Use 147 bytes until I figure out what the problem is. |
||
|---|---|---|
| internal | ||
| .gitignore | ||
| .travis.yml | ||
| crypto_aead.js | ||
| crypto_box.js | ||
| crypto_generichash.js | ||
| crypto_hash_sha256.js | ||
| crypto_hash.js | ||
| crypto_kdf.js | ||
| crypto_kx.js | ||
| crypto_onetimeauth.js | ||
| crypto_scalarmult.js | ||
| crypto_secretbox.js | ||
| crypto_shorthash.js | ||
| crypto_sign.js | ||
| crypto_stream_chacha20.js | ||
| crypto_stream.js | ||
| crypto_verify.js | ||
| example.js | ||
| helpers.js | ||
| index.js | ||
| LICENSE | ||
| memory.js | ||
| package.json | ||
| randombytes.js | ||
| README.md | ||
| test_box_easy.js | ||
| test.js | ||
sodium-javascript
WIP - a pure javascript version of sodium-native. Based on tweetnacl
Usage
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. This is a work in progress so all functions are not 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.
Install
npm install sodium-javascript