Use libsodium.js if available (#1390)

* Use libsodium.js if available

* Style consistency

* Added peer dep and update README

* Link should point to npmjs 🤔
This commit is contained in:
Skiptir Engu
2017-04-19 13:35:45 -03:00
committed by Crawl
parent 27114eebf9
commit 8475a4abee
3 changed files with 22 additions and 10 deletions

View File

@@ -1,13 +1,22 @@
try {
const sodium = require('sodium');
module.exports = {
const libs = {
sodium: sodium => ({
open: sodium.api.crypto_secretbox_open_easy,
close: sodium.api.crypto_secretbox_easy,
};
} catch (err) {
const tweetnacl = require('tweetnacl');
module.exports = {
}),
'libsodium-wrappers': sodium => ({
open: sodium.crypto_secretbox_open_easy,
close: sodium.crypto_secretbox_easy,
}),
tweetnacl: tweetnacl => ({
open: tweetnacl.secretbox.open,
close: tweetnacl.secretbox,
};
}),
};
for (const libName of Object.keys(libs)) {
try {
const lib = require(libName);
module.exports = libs[libName](lib);
break;
} catch (err) {} // eslint-disable-line no-empty
}