UNPKG

tweetnacl-ts

Version:

Port of TweetNaCl cryptographic library to TypeScript (and ES6)

49 lines 1.73 kB
import { ByteArray } from './array'; import { _0 } from './core'; import { _randomBytes } from './random'; import { _hsalsa20, _sigma } from './salsa20'; import { _scalarMult, _scalarMult_base } from './scalarmult'; import { secretbox, secretbox_open } from './secretbox'; import { checkArrayTypes, checkBoxLengths } from './check'; export function box(msg, nonce, publicKey, secretKey) { var k = box_before(publicKey, secretKey); return secretbox(msg, nonce, k); } export function box_before(publicKey, secretKey) { checkArrayTypes(publicKey, secretKey); checkBoxLengths(publicKey, secretKey); var k = ByteArray(32 /* SharedKey */); _box_beforenm(k, publicKey, secretKey); return k; } export var box_after = secretbox; export function box_open(msg, nonce, publicKey, secretKey) { var k = box_before(publicKey, secretKey); return secretbox_open(msg, nonce, k); } export var box_open_after = secretbox_open; export function box_keyPair() { var pk = ByteArray(32 /* PublicKey */); var sk = ByteArray(32 /* SecretKey */); _box_keypair(pk, sk); return { publicKey: pk, secretKey: sk }; } export function box_keyPair_fromSecretKey(secretKey) { checkArrayTypes(secretKey); if (secretKey.length !== 32 /* SecretKey */) throw new Error('bad secret key size'); var pk = ByteArray(32 /* PublicKey */); _scalarMult_base(pk, secretKey); return { publicKey: pk, secretKey: ByteArray(secretKey) }; } // low level function _box_keypair(y, x) { _randomBytes(x, 32); return _scalarMult_base(y, x); } function _box_beforenm(k, y, x) { var s = ByteArray(32); _scalarMult(s, x, y); return _hsalsa20(k, _0, s, _sigma); } //# sourceMappingURL=box.js.map