UNPKG

tweetnacl-ts

Version:

Port of TweetNaCl cryptographic library to TypeScript (and ES6)

56 lines 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var array_1 = require("./array"); var core_1 = require("./core"); var random_1 = require("./random"); var salsa20_1 = require("./salsa20"); var scalarmult_1 = require("./scalarmult"); var secretbox_1 = require("./secretbox"); var check_1 = require("./check"); function box(msg, nonce, publicKey, secretKey) { var k = box_before(publicKey, secretKey); return secretbox_1.secretbox(msg, nonce, k); } exports.box = box; function box_before(publicKey, secretKey) { check_1.checkArrayTypes(publicKey, secretKey); check_1.checkBoxLengths(publicKey, secretKey); var k = array_1.ByteArray(32 /* SharedKey */); _box_beforenm(k, publicKey, secretKey); return k; } exports.box_before = box_before; exports.box_after = secretbox_1.secretbox; function box_open(msg, nonce, publicKey, secretKey) { var k = box_before(publicKey, secretKey); return secretbox_1.secretbox_open(msg, nonce, k); } exports.box_open = box_open; exports.box_open_after = secretbox_1.secretbox_open; function box_keyPair() { var pk = array_1.ByteArray(32 /* PublicKey */); var sk = array_1.ByteArray(32 /* SecretKey */); _box_keypair(pk, sk); return { publicKey: pk, secretKey: sk }; } exports.box_keyPair = box_keyPair; function box_keyPair_fromSecretKey(secretKey) { check_1.checkArrayTypes(secretKey); if (secretKey.length !== 32 /* SecretKey */) throw new Error('bad secret key size'); var pk = array_1.ByteArray(32 /* PublicKey */); scalarmult_1._scalarMult_base(pk, secretKey); return { publicKey: pk, secretKey: array_1.ByteArray(secretKey) }; } exports.box_keyPair_fromSecretKey = box_keyPair_fromSecretKey; // low level function _box_keypair(y, x) { random_1._randomBytes(x, 32); return scalarmult_1._scalarMult_base(y, x); } function _box_beforenm(k, y, x) { var s = array_1.ByteArray(32); scalarmult_1._scalarMult(s, x, y); return salsa20_1._hsalsa20(k, core_1._0, s, salsa20_1._sigma); } //# sourceMappingURL=box.js.map