Skip to content
This repository was archived by the owner on Jul 14, 2022. It is now read-only.

github/tweetsodium

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b982e95 · Apr 5, 2022

History

25 Commits
Feb 24, 2020
Sep 18, 2018
Feb 24, 2020
Sep 17, 2018
Sep 17, 2018
Apr 5, 2022
Mar 5, 2020
Feb 24, 2020
Feb 24, 2020
Apr 5, 2022
Apr 5, 2022
Mar 5, 2020

Repository files navigation

⚠️ 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 Build Status

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);
}