Pure Javascript version of sodium-native
Go to file
Peter van Hardenberg c81ef709d1 react-native doesn't want crypto set to an empty module (#14)
React-Native is sort of like a browser, sort of a native environment. On react-native we don't have the browser's crypto implementation, so we need to require react-native-crypto. We can rewrite the module requirement to do that using the extraNodeModules feature in rn-cli.config.js, but the metro packager assumes that if there's a "browser" field in package.json that it's relevant to react-native libraries unless there's also a "react-native" field. Hurray.

Anyway, this silly little patch tells metro not to replace crypto with an empty module but actually to use whatever you currently have crypto set to (which is not solved here, so you'll still have to do that.)
2018-03-19 18:58:24 +01:00
.gitignore first commit 2017-01-24 11:41:06 +01:00
crypto_generichash.js cleanup newlines 2017-06-12 10:31:43 +02:00
crypto_kdf.js Change crypto_kdf_KEYBYTES to be 32 and use subarray instead of slice 2018-03-03 17:24:12 +00:00
crypto_shorthash.js fix shorthash_ready being deprecated 2017-11-17 12:07:52 +01:00
crypto_stream.js use xsalsa20 and support crypto_stream_instance 2017-06-28 11:14:00 +02:00
example.js Add browser support (#1) 2017-06-19 21:44:32 +02:00
index.js bump sodium-test and minor tweak 2017-07-13 16:52:30 +02:00
LICENSE first commit 2017-01-24 11:41:06 +01:00
package.json react-native doesn't want crypto set to an empty module (#14) 2018-03-19 18:58:24 +01:00
randombytes.js ignore crypto in the browser 2017-11-19 13:16:35 +01:00
README.md first commit 2017-01-24 11:41:06 +01:00
test.js Run tests with browser-run 2017-06-19 22:39:11 +02:00

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