Pure Javascript version of sodium-native
Go to file
Christophe Diederichs b44f83f0a8
Split library into modules (#20)
* crypto_stream: signature change needed to modularise

* move ed25519 arithmetic to separate module

* module: poly1305

* module: crypto_scalarmult

* module: crypto_hash

* module: crypto_sign

* module: crypto_secretbox

* move verify functions to crypto_verify module

* leftover crypto_stream functions

* module: crypto_onetimeauth

* module: crypto_box

* tidy up

* require ed25519.js

* update: crypto_hash

* add chacha20; align API with PR#21

* update sha512 to wasm module

* fix bugs in crypto_sign

* be standard

* add: crypto_box_seed_keypair; alias crypto_kx methods to crypto_box

* scalarmult: import curve methods; be standard

* correction: crypto_kx is not actually an alias of crypto_box

* export _9 constant field element

* add: crypto_box_seed_keypair

* removed duplicate module.exports declaraion

* declare constants about exports

* rename memzero -> sodium-memzero

* update sodium_memzero function to arr.fill(0)

* tidy: remove legacy functions

* added: crypto_aead_chacha20poly1305_ietf methods

* listen to linter

* add assertions

* chacha: readUint32Le generalised for uint8array; aead: standard fix

* add null check on ad param

* added: sodium_memcmp

* export sodium_memcmp

* export crypto_verify module

* sodium_memcmp returns boolean

* added: sodium_is_zero

* catch syntax error

* throw if crypto_aead cannot validate, fix typo in crypto_verify

* move chacha20 alg to external module

* use Uint8Arrays instead of buffers

* change checks to assertions

* bump to chacha 1.0.3 - remove Buffer dependency

* reduce code branching, align return values with sodium-native

* add sha-wasm deps to package.json

* standard fixes

* bump chacha20 to 1.0.4: remove Buffer dep

* move crypto_hash_sha256 to module to uncouple wasm dependencies

* add endian check: all other modules require members of this set

* correct filename: crypto_hash_sha256

* export constant: crypto_hash_sha512_BYTES
2020-06-18 17:09:03 +02:00
.gitignore first commit 2017-01-24 11:41:06 +01:00
crypto_aead.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_box.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_generichash.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_hash_sha256.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_hash.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_kdf.js Change crypto_kdf_KEYBYTES to be 32 and use subarray instead of slice 2018-03-03 17:24:12 +00:00
crypto_kx.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_onetimeauth.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_scalarmult.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_secretbox.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_shorthash.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_sign.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_stream_chacha20.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_stream.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
crypto_verify.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
ed25519.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
example.js Add browser support (#1) 2017-06-19 21:44:32 +02:00
index.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
LICENSE first commit 2017-01-24 11:41:06 +01:00
package.json Split library into modules (#20) 2020-06-18 17:09:03 +02:00
poly1305.js Split library into modules (#20) 2020-06-18 17:09:03 +02:00
randombytes.js ignore crypto in the browser 2017-11-19 13:16:35 +01:00
README.md first commit 2017-01-24 11:41:06 +01:00
test.js Run tests with browser-run 2017-06-19 22:39:11 +02:00

sodium-javascript

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

npm install sodium-javascript

Usage

var sodium = require('sodium-javascript')

var key = new Buffer(sodium.crypto_secretbox_KEYBYTES)
var nonce = new Buffer(sodium.crypto_secretbox_NONCEBYTES)

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

var message = new Buffer('Hello, World!')
var cipher = new Buffer(message.length + sodium.crypto_secretbox_MACBYTES)

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

console.log('Encrypted:', cipher)

var plainText = new Buffer(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.

License

MIT