UNPKG

tweetnacl-ts

Version:

Port of TweetNaCl cryptographic library to TypeScript (and ES6)

34 lines 1.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var array_1 = require("./array"); var box_1 = require("./box"); var blake2b_1 = require("./blake2b"); function sealedbox(m, pk) { var c = array_1.ByteArray(48 /* Overhead */ + m.length); var ek = box_1.box_keyPair(); c.set(ek.publicKey); var nonce = nonce_gen(ek.publicKey, pk); var boxed = box_1.box(m, nonce, pk, ek.secretKey); c.set(boxed, ek.publicKey.length); // clear secret key for (var i = 0; i < ek.secretKey.length; i++) ek.secretKey[i] = 0; return c; } exports.sealedbox = sealedbox; function sealedbox_open(c, pk, sk) { if (c.length < 48 /* Overhead */) return; var epk = c.subarray(0, 32 /* PublicKey */); var nonce = nonce_gen(epk, pk); var boxData = c.subarray(32 /* PublicKey */); return box_1.box_open(boxData, nonce, epk, sk); } exports.sealedbox_open = sealedbox_open; function nonce_gen(pk1, pk2) { var state = blake2b_1.blake2b_init(24 /* Nonce */); blake2b_1.blake2b_update(state, pk1); blake2b_1.blake2b_update(state, pk2); return blake2b_1.blake2b_final(state); } //# sourceMappingURL=sealedbox.js.map