Pure Javascript version of sodium-native
5159d68fa9
Currently, sodium-native and sodium-javascript are returning different hashes. The code in hyperdrive passes a 64 byte secret key to the kdf, but only 32 bytes are used by the native version, but all 64 bytes are used in the javascript version. As a result, hyperdrive secret keys can't be imported/exported across the two sodium implementations. https://gist.github.com/jimpick/3e869522eddaad77ac1bc9e64f36e1a7 |
||
---|---|---|
.gitignore | ||
crypto_generichash.js | ||
crypto_kdf.js | ||
crypto_shorthash.js | ||
crypto_stream.js | ||
example.js | ||
index.js | ||
LICENSE | ||
package.json | ||
randombytes.js | ||
README.md | ||
test.js |
sodium-javascript
WIP - a pure javascript version of sodium-native. Based on tweetnacl
npm install sodium-javascript
Usage
var sodium = require('sodium-javascript')
var key = new Buffer(sodium.crypto_secretbox_KEYBYTES)
var nonce = new Buffer(sodium.crypto_secretbox_NONCEBYTES)
sodium.randombytes_buf(key)
sodium.randombytes_buf(nonce)
var message = new Buffer('Hello, World!')
var cipher = new Buffer(message.length + sodium.crypto_secretbox_MACBYTES)
sodium.crypto_secretbox_easy(cipher, message, nonce, key)
console.log('Encrypted:', cipher)
var plainText = new Buffer(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.
License
MIT