Pure Javascript version of sodium-native
Go to file
Arne Goedeke f93d546ee0 randombytes: Replace run-time require detection
Using require() as an expression leads to compile errors in webpack.
This issue can be solved by guarding the use of require by the 'correct'
run-time check using `typeof require`.
2023-03-02 09:48:16 +01:00
internal Add crypto_secretstream methods (#57) 2022-01-14 16:42:28 +00:00
.gitignore Use globalThis instead of global (#61) 2021-11-02 16:36:15 +01:00
.travis.yml Missing helpers (#24) 2020-08-12 15:39:14 +02:00
crypto_aead.js crypto_aead: correctly hadle ad passed as null 2020-09-22 15:30:31 +02:00
crypto_auth.js Add crypto_auth (#32) 2020-09-22 14:49:40 +02:00
crypto_box.js Add crypto_box_easy (#29) 2020-09-22 14:47:36 +02:00
crypto_generichash.js Make linter happy 2020-06-24 14:08:55 +02:00
crypto_hash_sha256.js change to universal hashes 2020-07-13 14:53:38 +02:00
crypto_hash.js change to universal hashes 2020-07-13 14:53:38 +02:00
crypto_kdf.js Make linter happy 2020-06-24 14:08:55 +02:00
crypto_kx.js Make linter happy 2020-06-24 14:08:55 +02:00
crypto_onetimeauth.js crypto_verify return booleans & add crypto_verify_64 (#33) 2020-09-15 17:27:39 +02:00
crypto_scalarmult.js Make linter happy 2020-06-24 14:08:55 +02:00
crypto_secretbox.js Add crypto_box_easy (#29) 2020-09-22 14:47:36 +02:00
crypto_secretstream.js Add crypto_secretstream methods (#57) 2022-01-14 16:42:28 +00:00
crypto_shorthash.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_sign.js crypto_sign: replace Buffer.alloc() with new Uint8Array() (#62) 2021-11-04 17:17:13 +00:00
crypto_stream_chacha20.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_stream.js Add crypto_box_easy (#29) 2020-09-22 14:47:36 +02:00
crypto_verify.js crypto_verify return booleans & add crypto_verify_64 (#33) 2020-09-15 17:27:39 +02:00
example.js Modernise example 2020-06-24 14:49:26 +02:00
helpers.js Missing helpers (#24) 2020-08-12 15:39:14 +02:00
index.js Add crypto_secretstream methods (#57) 2022-01-14 16:42:28 +00:00
LICENSE first commit 2017-01-24 11:41:06 +01:00
memory.js Use globalThis instead of global (#61) 2021-11-02 16:36:15 +01:00
package.json 0.8.0 2022-01-14 17:43:21 +00:00
randombytes.js randombytes: Replace run-time require detection 2023-03-02 09:48:16 +01:00
README.md Small copy change to README (#54) 2020-11-12 08:39:33 +01:00
test.js Detect window.close is defined (#49) 2020-10-09 13:35:11 +02:00

sodium-javascript

Build Status

WIP - a pure javascript version of sodium-native. Based on tweetnacl

Usage

const sodium = require('sodium-javascript')

const key = Buffer.alloc(sodium.crypto_secretbox_KEYBYTES)
const nonce = Buffer.alloc(sodium.crypto_secretbox_NONCEBYTES)

sodium.randombytes_buf(key)
sodium.randombytes_buf(nonce)

const message = Buffer.from('Hello, World!')
const cipher = Buffer.alloc(message.length + sodium.crypto_secretbox_MACBYTES)

sodium.crypto_secretbox_easy(cipher, message, nonce, key)

console.log('Encrypted:', cipher)

const plainText = Buffer.alloc(cipher.length - sodium.crypto_secretbox_MACBYTES)

sodium.crypto_secretbox_open_easy(plainText, cipher, nonce, key)

console.log('Plaintext:', plainText.toString())

API

See sodium-native. This is a work in progress so not all functions are implemented yet.

This module is organised into individual submodules which can be required independently for smaller bundles in the browser. To leverage automatic switching between sodium-javascript and sodium-native, see sodium-universal.

Install

npm install sodium-javascript

License

MIT