⚠️ tweetsodium
is unmaintained ⚠️
Consider using libsodium.js
, maintained by the same author as libsodium
. For example:
import libsodium from "libsodium-wrappers";
async function async_encrypt(messageBytes, publicKey) {
await libsodium.ready;
return libsodium.crypto_box_seal(messageBytes, publicKey);
}
async function async_decrypt(messageBytes, publicKey, privateKey) {
await libsodium.ready;
return libsodium.crypto_box_seal_open(messageBytes, publicKey, privateKey);
}
Or if you are able to use top-level await:
import libsodium from "libsodium-wrappers";
await libsodium.ready;
This library implements libsodium's sealed boxes using the tweetnacl-js and blakejs libraries.
Usage
const nacl = require("tweetnacl");
const sodium = require("tweetsodium");
const keyPair = nacl.box.keyPair();
function encrypt(message) {
const encoder = new TextEncoder();
const messageBytes = encoder.encode(message);
return sodium.seal(messageBytes, keyPair.publicKey);
}
function decrypt(ciphertext) {
const encoder = new TextEncoder();
const ciphertextBytes = encoder.encode(ciphertext);
return sodium.sealOpen(ciphertextBytes, keyPair.publicKey, keyPair.secretKey);
}