Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/paragonie/sodium-plus
Developer-friendly libsodium interface
https://github.com/paragonie/sodium-plus
cryptography es2019 javascript libsodium-bindings node nodejs sodium
Last synced: about 3 hours ago
JSON representation
Developer-friendly libsodium interface
- Host: GitHub
- URL: https://github.com/paragonie/sodium-plus
- Owner: paragonie
- License: other
- Created: 2019-10-06T02:02:34.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-03-05T16:49:12.000Z (9 months ago)
- Last Synced: 2024-06-18T14:02:09.593Z (5 months ago)
- Topics: cryptography, es2019, javascript, libsodium-bindings, node, nodejs, sodium
- Language: JavaScript
- Size: 1.3 MB
- Stars: 171
- Watchers: 10
- Forks: 21
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Sodium-Plus (Na+)
[![Build Status](https://github.com/paragonie/sodium-plus/workflows/CI/badge.svg)](https://github.com/paragonie/sodium-plus/actions?workflow=CI)
[![npm version](https://img.shields.io/npm/v/sodium-plus.svg)](https://npm.im/sodium-plus)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.
## Features
* **Cross-platform.**
* Yes, this includes [in the browser](docs/getting-started.md#sodium-plus-in-the-browser).
* Pluggable backend with an [auto-loader](docs/getting-started.md):
* If [sodium-native](https://github.com/sodium-friends/sodium-native)
is installed, it will be preferred.
* Otherwise, the default is [libsodium-wrappers](https://github.com/jedisct1/libsodium.js).
* Fully `async`/`await` ready (aside from object constructors).
* Type-safe API:
* Instead of just passing around `Buffer` objects and hoping you got your
argument order correct, `sodium-plus` will throw an Error if you provide
the wrong key type. This prevents you from accidentally introducing a severe
security risk into your application.## Installing
### Installing as a Node.js Module
With NPM:
```terminal
npm install sodium-plus
```You can optionally install `sodium-native` alongside `sodium-plus` if you
want better performance.The default configuration is a bit slower, but has a wider reach
(e.g. web browsers).### Installing in a Web Page
See [this section of the documentation](docs/getting-started.md#sodium-plus-in-the-browser)
for getting started with Sodium-Plus in a web browser.## Using Sodium-Plus in Your Projects
SodiumPlus is meant to be used asynchronously, like so:
```javascript
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
```## Documentation
The documentation is [available online on Github](https://github.com/paragonie/sodium-plus/tree/master/docs)!
## Support Contracts
If your company uses this library in their products or services, you may be
interested in [purchasing a support contract from Paragon Initiative Enterprises](https://paragonie.com/enterprise).