Developer-friendly libsodium interface
Sodium-Plus delivers a positive cryptography experience for JavaScript developers.
Sodium-Plus brings you all the benefits of using libsodium in your application without any of the headaches introduced by the incumbent APIs.
Sodium-Plus is permissively licensed (ISC) and free to use.
async/
awaitready (aside from object constructors).
Bufferobjects and hoping you got your argument order correct,
sodium-pluswill throw an Error if you provide the wrong key type. This prevents you from accidentally introducing a severe security risk into your application.
With NPM:
npm install sodium-plus
You can optionally install
sodium-nativealongside
sodium-plusif you want better performance.
The default configuration is a bit slower, but has a wider reach (e.g. web browsers).
See this section of the documentation for getting started with Sodium-Plus in a web browser.
SodiumPlus is meant to be used asynchronously, like so:
const { SodiumPlus } = require('sodium-plus');(async function() { // Select a backend automatically let sodium = await SodiumPlus.auto();
let key = await sodium.crypto_secretbox_keygen(); let nonce = await sodium.randombytes_buf(24); let message = 'This is just a test message'; // Message can be a string, buffer, array, etc. let ciphertext = await sodium.crypto_secretbox(message, nonce, key); console.log(ciphertext); let decrypted = await sodium.crypto_secretbox_open(ciphertext, nonce, key); console.log(decrypted.toString('utf-8'));
})();
This should produce output similar to below (but with different random-looking bytes):
This is just a test message
The documentation is available online on Github!
If your company uses this library in their products or services, you may be interested in purchasing a support contract from Paragon Initiative Enterprises.