Pure Javascript version of sodium-native
Go to file
Christian Bundy 94f270857d Fix verification using bitwise OR on booleans
Problem: Using bitwise operations on booleans doesn't make any sense,
and I didn't even catch that this was a problem until I ran `tsc` on the
codebase and saw the complaint. Static analysis rocks. In the libsodium
code these methods return `0` or `-1`, so the bitwise OR acts like a
boolean AND (`(0 | -1) === -1` like `(true && false === false)`.

Solution: Convert bitwise OR to boolean AND and then confirm that this
is the reason that the faulty truncated comparison fixed in fa39bc5 is
now captured by the tests in my pull request into sodium-test.

See-Also: https://github.com/sodium-friends/sodium-test/pull/14
2020-09-21 11:59:33 +02:00
internal Move internal primitives 2020-06-24 14:02:00 +02:00
.gitignore first commit 2017-01-24 11:41:06 +01:00
.travis.yml Missing helpers (#24) 2020-08-12 15:39:14 +02:00
crypto_aead.js crypto_verify return booleans & add crypto_verify_64 (#33) 2020-09-15 17:27:39 +02:00
crypto_auth.js Fix verification using bitwise OR on booleans 2020-09-21 11:59:33 +02:00
crypto_box.js Make linter happy 2020-06-24 14:08:55 +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 crypto_verify return booleans & add crypto_verify_64 (#33) 2020-09-15 17:27:39 +02:00
crypto_shorthash.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_sign.js crypto_verify return booleans & add crypto_verify_64 (#33) 2020-09-15 17:27:39 +02:00
crypto_stream_chacha20.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_stream.js Make linter happy 2020-06-24 14:08:55 +02:00
crypto_verify.js Finish adding crypto_auth and crypto_auth_verify 2020-09-21 11:24: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_auth_hmac methods 2020-09-21 11:23:15 +02:00
LICENSE first commit 2017-01-24 11:41:06 +01:00
memory.js Missing helpers (#24) 2020-08-12 15:39:14 +02:00
package.json add crypto_auth_hmac methods 2020-09-21 11:23:15 +02:00
randombytes.js Fix offset ArrayBuffer views 2020-06-24 15:01:10 +02:00
README.md Add note on sodium-universal 2020-06-24 15:06:54 +02:00
test.js Run tests with browser-run 2017-06-19 22:39: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 all functions are not 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