mirror of
https://github.com/github/tweetsodium
synced 2026-07-21 03:53:53 +00:00
No description
- JavaScript 92%
- TypeScript 8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .github/workflow | ||
| .gitignore | ||
| .nvmrc | ||
| .travis.yml | ||
| index.d.ts | ||
| index.js | ||
| index.test-d.ts | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| test.js | ||
⚠️ tweetsodium is deprecated and unmaintained ⚠️
Consider using libsodium.js, maintained by the same author as libsodium. For example:
import libsodium from "libsodium-wrappers";
// Compatible with the same `Uint8Array` arguments as `tweetsodium.seal()`
async function async_encrypt(messageBytes, publicKey) {
await libsodium.ready;
return libsodium.crypto_box_seal(messageBytes, publicKey);
}
// Compatible with the same `Uint8Array` arguments as `tweetsodium.sealOpen()`
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;
// Use:
// - `libsodium.crypto_box_seal` instead of `tweetsodium.seal`
// - `libsodium.crypto_box_seal_open` instead of `tweetsodium.sealOpen`
tweetsodium 
This library implements libsodium's sealed boxes using the tweetnacl-js and blakejs libraries.
Usage
const nacl = require("tweetnacl");
const sodium = require("tweetsodium");
// generate public key to use for encryption and coresponding secret key to use
// for decryption
const keyPair = nacl.box.keyPair();
// encrypts message string using public key
function encrypt(message) {
const encoder = new TextEncoder();
const messageBytes = encoder.encode(message);
return sodium.seal(messageBytes, keyPair.publicKey);
}
// decrypts message using secret key
function decrypt(ciphertext) {
const encoder = new TextEncoder();
const ciphertextBytes = encoder.encode(ciphertext);
return sodium.sealOpen(ciphertextBytes, keyPair.publicKey, keyPair.secretKey);
}