mirror of
https://github.com/danbulant/discord.js
synced 2026-06-18 14:11:09 +00:00
35 lines
1 KiB
JavaScript
35 lines
1 KiB
JavaScript
'use strict';
|
|
|
|
const libs = {
|
|
sodium: sodium => ({
|
|
open: sodium.api.crypto_secretbox_open_easy,
|
|
close: sodium.api.crypto_secretbox_easy,
|
|
random: n => sodium.randombytes_buf(n),
|
|
verify: sodium.api.crypto_sign_verify_detached,
|
|
}),
|
|
'libsodium-wrappers': sodium => ({
|
|
open: sodium.crypto_secretbox_open_easy,
|
|
close: sodium.crypto_secretbox_easy,
|
|
random: n => sodium.randombytes_buf(n),
|
|
verify: sodium.crypto_sign_verify_detached,
|
|
}),
|
|
tweetnacl: tweetnacl => ({
|
|
open: tweetnacl.secretbox.open,
|
|
close: tweetnacl.secretbox,
|
|
random: n => tweetnacl.randomBytes(n),
|
|
verify: (s, d, p) => tweetnacl.sign.detached.verify(d, s, p),
|
|
}),
|
|
};
|
|
|
|
exports.methods = {};
|
|
|
|
(async () => {
|
|
for (const libName of Object.keys(libs)) {
|
|
try {
|
|
const lib = require(libName);
|
|
if (libName === 'libsodium-wrappers' && lib.ready) await lib.ready; // eslint-disable-line no-await-in-loop
|
|
exports.methods = libs[libName](lib);
|
|
break;
|
|
} catch {} // eslint-disable-line no-empty
|
|
}
|
|
})();
|