From bc16d157f0aba7a8b8468c5b5d5b071c86256ea8 Mon Sep 17 00:00:00 2001 From: Daniel Huigens Date: Mon, 18 Nov 2019 20:10:50 +0100 Subject: [PATCH] Release new version --- bower.json | 2 +- dist/compat/openpgp.js | 7010 ++-- dist/compat/openpgp.min.js | 4 +- dist/compat/openpgp.worker.min.js | 2 +- dist/lightweight/elliptic.min.js | 5 + dist/lightweight/openpgp.js | 39099 +++++++++++++++++++++++ dist/lightweight/openpgp.min.js | 2 + dist/lightweight/openpgp.worker.js | 145 + dist/lightweight/openpgp.worker.min.js | 2 + dist/openpgp.js | 3530 +- dist/openpgp.min.js | 4 +- dist/openpgp.worker.min.js | 2 +- npm-shrinkwrap.json | 2 +- package.json | 2 +- 14 files changed, 45298 insertions(+), 4513 deletions(-) create mode 100644 dist/lightweight/elliptic.min.js create mode 100644 dist/lightweight/openpgp.js create mode 100644 dist/lightweight/openpgp.min.js create mode 100644 dist/lightweight/openpgp.worker.js create mode 100644 dist/lightweight/openpgp.worker.min.js diff --git a/bower.json b/bower.json index 042c2275..f97beefa 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "openpgp", - "version": "4.6.2", + "version": "4.7.0", "license": "LGPL-3.0+", "homepage": "https://openpgpjs.org/", "authors": [ diff --git a/dist/compat/openpgp.js b/dist/compat/openpgp.js index c438fc8d..7cb10251 100644 --- a/dist/compat/openpgp.js +++ b/dist/compat/openpgp.js @@ -14043,8 +14043,9 @@ Point.prototype.getY = function getY() { Point.prototype.mul = function mul(k) { k = new BN(k, 16); - - if (this._hasDoubles(k)) + if (this.isInfinity()) + return this; + else if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k); else if (this.curve.endo) return this.curve._endoWnafMulAdd([ this ], [ k ]); @@ -16581,7 +16582,7 @@ utils.intFromLE = intFromLE; "use strict"; // email-addresses.js - RFC 5322 email address parser -// v 3.0.3 +// v 3.1.0 // // http://tools.ietf.org/html/rfc5322 // @@ -17166,7 +17167,8 @@ utils.intFromLE = intFromLE; // obs-phrase = word *(word / "." / CFWS) function obsPhrase() { - return opts.strict ? null : wrap('obs-phrase', and(word, star(or(word, literal('.'), literal('@'), colwsp(cfws))))()); + if (opts.strict) return null; + return opts.atInDisplayName ? wrap('obs-phrase', and(word, star(or(word, literal('.'), literal('@'), colwsp(cfws))))()) : wrap('obs-phrase', and(word, star(or(word, literal('.'), colwsp(cfws))))()); } // 4.2. Obsolete Folding White Space @@ -17349,6 +17351,7 @@ utils.intFromLE = intFromLE; function giveResultMailbox(mailbox) { var name = findNode('display-name', mailbox); var aspec = findNode('addr-spec', mailbox); + var cfws = findAllNodes('cfws', mailbox); var comments = findAllNodesNoChildren(['comment'], mailbox); var local = findNode('local-part', aspec); @@ -17360,7 +17363,7 @@ utils.intFromLE = intFromLE; address: aspec, local: local, domain: domain, - comments: comments + comments: cfws }, type: mailbox.name, // 'mailbox' name: grabSemantic(name), @@ -17524,7 +17527,8 @@ utils.intFromLE = intFromLE; rfc6532: false, simple: false, startAt: 'address-list', - strict: false + strict: false, + atInDisplayName: false }; for (o in defaults) { @@ -31337,7 +31341,7 @@ function fromText(text) { return new CleartextMessage(text); } -},{"./encoding/armor":382,"./enums":384,"./message":391,"./packet":396,"./signature":416,"./util":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],349:[function(_dereq_,module,exports){ +},{"./encoding/armor":382,"./enums":384,"./message":397,"./packet":402,"./signature":422,"./util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],349:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -31489,7 +31493,7 @@ exports.default = { * @memberof module:config * @property {String} versionstring A version string to be included in armored messages */ - versionstring: "OpenPGP.js v4.6.2", + versionstring: "OpenPGP.js v4.7.0", /** * @memberof module:config * @property {String} commentstring A comment string to be included in armored messages @@ -31518,7 +31522,27 @@ exports.default = { * @memberof module:config * @property {Array} known_notations */ - known_notations: ["preferred-email-encoding@pgp.com", "pka-address@gnupg.org"] + known_notations: ["preferred-email-encoding@pgp.com", "pka-address@gnupg.org"], + /** + * @memberof module:config + * @property {Boolean} use_indutny_elliptic Whether to use the indutny/elliptic library. When false, certain curves will not be supported. + */ + use_indutny_elliptic: true, + /** + * @memberof module:config + * @property {Boolean} external_indutny_elliptic Whether to lazily load the indutny/elliptic library from an external path on demand. + */ + external_indutny_elliptic: false, + /** + * @memberof module:config + * @property {String} indutny_elliptic_path The path to load the indutny/elliptic library from. Only has an effect if `config.external_indutny_elliptic` is true. + */ + indutny_elliptic_path: './elliptic.min.js', + /** + * @memberof module:config + * @property {Object} indutny_elliptic_fetch_options Options object to pass to `fetch` when loading the indutny/elliptic library. Only has an effect if `config.external_indutny_elliptic` is true. + */ + indutny_elliptic_fetch_options: {} }; // GPG4Browsers - An OpenPGP implementation in javascript // Copyright (C) 2011 Recurity Labs GmbH // @@ -31729,7 +31753,7 @@ exports.default = { unwrap: unwrap }; -},{"../util":423,"./cipher":357}],352:[function(_dereq_,module,exports){ +},{"../util":429,"./cipher":357}],352:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -31844,7 +31868,7 @@ exports.default = { var block_size = cipherfn.blockSize; var blocki = new Uint8Array(block_size); - var blockc = iv; + var blockc = iv.slice(); var pos = 0; var ciphertext = new Uint8Array(plaintext.length); var i = void 0; @@ -31980,7 +32004,7 @@ function nodeDecrypt(algo, key, ct, iv) { }); } -},{"../config":350,"../util":423,"./cipher":357,"asmcrypto.js/dist_es5/aes/cfb":5,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],353:[function(_dereq_,module,exports){ +},{"../config":350,"../util":429,"./cipher":357,"asmcrypto.js/dist_es5/aes/cfb":5,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],353:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -33652,7 +33676,7 @@ exports.default = function () { return CMAC; }(); -},{"../util":423,"asmcrypto.js/dist_es5/aes/cbc":4,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],360:[function(_dereq_,module,exports){ +},{"../util":429,"asmcrypto.js/dist_es5/aes/cbc":4,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],360:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -33667,10 +33691,6 @@ var _asyncToGenerator2 = _dereq_('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); -var _bn = _dereq_('bn.js'); - -var _bn2 = _interopRequireDefault(_bn); - var _public_key = _dereq_('./public_key'); var _public_key2 = _interopRequireDefault(_public_key); @@ -33709,7 +33729,14 @@ var _util2 = _interopRequireDefault(_util); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// GPG4Browsers - An OpenPGP implementation in javascript +function constructParams(types, data) { + return types.map(function (type, i) { + if (data && data[i]) { + return new type(data[i]); + } + return new type(); + }); +} // GPG4Browsers - An OpenPGP implementation in javascript // Copyright (C) 2011 Recurity Labs GmbH // // This library is free software; you can redistribute it and/or @@ -33731,7 +33758,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de /** * @fileoverview Provides functions for asymmetric encryption and decryption as * well as key generation and parameter handling for all public-key cryptosystems. - * @requires bn.js * @requires crypto/public_key * @requires crypto/cipher * @requires crypto/random @@ -33744,15 +33770,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * @module crypto/crypto */ -function constructParams(types, data) { - return types.map(function (type, i) { - if (data && data[i]) { - return new type(data[i]); - } - return new type(); - }); -} - exports.default = { /** * Encrypts data using specified algorithm and public key parameters. @@ -33814,7 +33831,7 @@ exports.default = { _ref2 = _context.sent; V = _ref2.publicKey; C = _ref2.wrappedKey; - return _context.abrupt('return', constructParams(types, [new _bn2.default(V), C])); + return _context.abrupt('return', constructParams(types, [V, C])); case 28: return _context.abrupt('return', []); @@ -34097,7 +34114,7 @@ exports.default = { constructParams: constructParams }; -},{"../enums":384,"../type/ecdh_symkey":417,"../type/kdf_params":418,"../type/mpi":420,"../type/oid":421,"../util":423,"./cipher":357,"./public_key":377,"./random":380,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"bn.js":44}],361:[function(_dereq_,module,exports){ +},{"../enums":384,"../type/ecdh_symkey":423,"../type/kdf_params":424,"../type/mpi":426,"../type/oid":427,"../util":429,"./cipher":357,"./public_key":377,"./random":380,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],361:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -34503,7 +34520,7 @@ EAX.tagLength = tagLength; exports.default = EAX; -},{"../util":423,"./cmac":359,"asmcrypto.js/dist_es5/aes/ctr":6,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43}],362:[function(_dereq_,module,exports){ +},{"../util":429,"./cmac":359,"asmcrypto.js/dist_es5/aes/ctr":6,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43}],362:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -34840,7 +34857,7 @@ GCM.tagLength = tagLength; exports.default = GCM; -},{"../util":423,"asmcrypto.js/dist_es5/aes/gcm":8,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],363:[function(_dereq_,module,exports){ +},{"../util":429,"asmcrypto.js/dist_es5/aes/gcm":8,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],363:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35139,7 +35156,7 @@ exports.default = { } }; -},{"../../config":350,"../../util":423,"./md5":364,"asmcrypto.js/dist_es5/hash/sha1/sha1":11,"asmcrypto.js/dist_es5/hash/sha256/sha256":13,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"hash.js/lib/hash/ripemd":306,"hash.js/lib/hash/sha/224":309,"hash.js/lib/hash/sha/384":311,"hash.js/lib/hash/sha/512":312,"web-stream-tools":345}],364:[function(_dereq_,module,exports){ +},{"../../config":350,"../../util":429,"./md5":364,"asmcrypto.js/dist_es5/hash/sha1/sha1":11,"asmcrypto.js/dist_es5/hash/sha256/sha256":13,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"hash.js/lib/hash/ripemd":306,"hash.js/lib/hash/sha/224":309,"hash.js/lib/hash/sha/384":311,"hash.js/lib/hash/sha/512":312,"web-stream-tools":345}],364:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35380,7 +35397,7 @@ function add32(a, b) { exports.default = md5; -},{"../../util":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],365:[function(_dereq_,module,exports){ +},{"../../util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],365:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35849,7 +35866,7 @@ OCB.tagLength = tagLength; exports.default = OCB; -},{"../util":423,"./cipher":357,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],367:[function(_dereq_,module,exports){ +},{"../util":429,"./cipher":357,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],367:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -36120,7 +36137,7 @@ emsa.encode = function () { exports.default = { eme: eme, emsa: emsa }; -},{"../util":423,"./hash":363,"./random":380,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],368:[function(_dereq_,module,exports){ +},{"../util":429,"./hash":363,"./random":380,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],368:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -36350,7 +36367,7 @@ exports.default = { * @param {BN} p * @param {BN} q * @param {BN} y - * @returns BN + * @returns {boolean} * @async */ verify: function () { @@ -36411,7 +36428,7 @@ exports.default = { }() }; -},{"../../util":423,"../random":380,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"bn.js":44}],370:[function(_dereq_,module,exports){ +},{"../../util":429,"../random":380,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"bn.js":44}],370:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -36553,7 +36570,7 @@ exports.default = { Object.defineProperty(exports, "__esModule", { value: true }); -exports.getPreferredHashAlgo = exports.generate = exports.nodeCurves = exports.webCurves = exports.curves = undefined; +exports.privateToJwk = exports.rawPublicToJwk = exports.jwkToRawPublic = exports.getPreferredHashAlgo = exports.generate = exports.nodeCurves = exports.webCurves = exports.curves = undefined; var _regenerator = _dereq_('babel-runtime/regenerator'); @@ -36578,8 +36595,8 @@ var generate = function () { keyPair = _context2.sent; return _context2.abrupt('return', { oid: curve.oid, - Q: new _bn2.default(keyPair.getPublic()), - d: new _bn2.default(keyPair.getPrivate()), + Q: new _bn2.default(keyPair.publicKey), + d: new _bn2.default(keyPair.privateKey), hash: curve.hash, cipher: curve.cipher }); @@ -36627,11 +36644,8 @@ var webGenKeyPair = function () { case 8: publicKey = _context3.sent; return _context3.abrupt('return', { - pub: { - x: _util2.default.b64_to_Uint8Array(publicKey.x, true), - y: _util2.default.b64_to_Uint8Array(publicKey.y, true) - }, - priv: _util2.default.b64_to_Uint8Array(privateKey.d, true) + publicKey: jwkToRawPublic(publicKey), + privateKey: _util2.default.b64_to_Uint8Array(privateKey.d, true) }); case 10: @@ -36661,8 +36675,8 @@ var nodeGenKeyPair = function () { case 3: return _context4.abrupt('return', { - pub: ecdh.getPublicKey().toJSON().data, - priv: ecdh.getPrivateKey().toJSON().data + publicKey: new Uint8Array(ecdh.getPublicKey()), + privateKey: new Uint8Array(ecdh.getPrivateKey()) }); case 4: @@ -36678,15 +36692,26 @@ var nodeGenKeyPair = function () { }; }(); +////////////////////////// +// // +// Helper functions // +// // +////////////////////////// + +/** + * @param {JsonWebKey} jwk key for conversion + * + * @returns {Uint8Array} raw public key + */ + + var _bn = _dereq_('bn.js'); var _bn2 = _interopRequireDefault(_bn); -var _elliptic = _dereq_('elliptic'); +var _naclFastLight = _dereq_('tweetnacl/nacl-fast-light.js'); -var _key = _dereq_('./key'); - -var _key2 = _interopRequireDefault(_key); +var _naclFastLight2 = _interopRequireDefault(_naclFastLight); var _random = _dereq_('../../random'); @@ -36704,6 +36729,8 @@ var _oid = _dereq_('../../../type/oid'); var _oid2 = _interopRequireDefault(_oid); +var _indutnyKey = _dereq_('./indutnyKey'); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var webCrypto = _util2.default.getWebCrypto(); // OpenPGP.js - An OpenPGP implementation in javascript @@ -36726,12 +36753,13 @@ var webCrypto = _util2.default.getWebCrypto(); // OpenPGP.js - An OpenPGP implem /** * @fileoverview Wrapper of an instance of an Elliptic Curve * @requires bn.js - * @requires elliptic + * @requires tweetnacl * @requires crypto/public_key/elliptic/key * @requires crypto/random * @requires enums * @requires util * @requires type/oid + * @requires config * @module crypto/public_key/elliptic/curve */ @@ -36791,41 +36819,47 @@ var curves = { keyType: _enums2.default.publicKey.ecdsa, hash: _enums2.default.hash.sha256, cipher: _enums2.default.symmetric.aes128, - node: nodeCurves.secp256k1 + node: nodeCurves.secp256k1, + payloadSize: 32 }, ed25519: { oid: [0x06, 0x09, 0x2B, 0x06, 0x01, 0x04, 0x01, 0xDA, 0x47, 0x0F, 0x01], keyType: _enums2.default.publicKey.eddsa, hash: _enums2.default.hash.sha512, - node: false // nodeCurves.ed25519 TODO + node: false, // nodeCurves.ed25519 TODO + payloadSize: 32 }, curve25519: { oid: [0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x97, 0x55, 0x01, 0x05, 0x01], keyType: _enums2.default.publicKey.ecdsa, hash: _enums2.default.hash.sha256, cipher: _enums2.default.symmetric.aes128, - node: false // nodeCurves.curve25519 TODO + node: false, // nodeCurves.curve25519 TODO + payloadSize: 32 }, brainpoolP256r1: { oid: [0x06, 0x09, 0x2B, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x07], keyType: _enums2.default.publicKey.ecdsa, hash: _enums2.default.hash.sha256, cipher: _enums2.default.symmetric.aes128, - node: nodeCurves.brainpoolP256r1 + node: nodeCurves.brainpoolP256r1, + payloadSize: 32 }, brainpoolP384r1: { oid: [0x06, 0x09, 0x2B, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x0B], keyType: _enums2.default.publicKey.ecdsa, hash: _enums2.default.hash.sha384, cipher: _enums2.default.symmetric.aes192, - node: nodeCurves.brainpoolP384r1 + node: nodeCurves.brainpoolP384r1, + payloadSize: 48 }, brainpoolP512r1: { oid: [0x06, 0x09, 0x2B, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x0D], keyType: _enums2.default.publicKey.ecdsa, hash: _enums2.default.hash.sha512, cipher: _enums2.default.symmetric.aes256, - node: nodeCurves.brainpoolP512r1 + node: nodeCurves.brainpoolP512r1, + payloadSize: 64 } }; @@ -36850,16 +36884,6 @@ function Curve(oid_or_name, params) { params = params || curves[this.name]; this.keyType = params.keyType; - switch (this.keyType) { - case _enums2.default.publicKey.ecdsa: - this.curve = new _elliptic.ec(this.name); - break; - case _enums2.default.publicKey.eddsa: - this.curve = new _elliptic.eddsa(this.name); - break; - default: - throw new Error('Unknown elliptic key type;'); - } this.oid = params.oid; this.hash = params.hash; @@ -36867,104 +36891,102 @@ function Curve(oid_or_name, params) { this.node = params.node && curves[this.name]; this.web = params.web && curves[this.name]; this.payloadSize = params.payloadSize; + if (this.web && _util2.default.getWebCrypto()) { + this.type = 'web'; + } else if (this.node && _util2.default.getNodeCrypto()) { + this.type = 'node'; + } else if (this.name === 'curve25519') { + this.type = 'curve25519'; + } else if (this.name === 'ed25519') { + this.type = 'ed25519'; + } } -Curve.prototype.keyFromPrivate = function (priv) { - // Not for ed25519 - return new _key2.default(this, { priv: priv }); -}; - -Curve.prototype.keyFromPublic = function (pub) { - var keyPair = new _key2.default(this, { pub: pub }); - if (this.keyType === _enums2.default.publicKey.ecdsa && keyPair.keyPair.validate().result !== true) { - throw new Error('Invalid elliptic public key'); - } - return keyPair; -}; - Curve.prototype.genKeyPair = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { - var keyPair, r, compact; + var keyPair, privateKey, secretKey, publicKey, _privateKey, _keyPair, _publicKey, indutnyCurve; + return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: keyPair = void 0; + _context.t0 = this.type; + _context.next = _context.t0 === 'web' ? 4 : _context.t0 === 'node' ? 14 : _context.t0 === 'curve25519' ? 15 : _context.t0 === 'ed25519' ? 24 : 30; + break; - if (!(this.web && _util2.default.getWebCrypto())) { - _context.next = 13; - break; - } - - _context.prev = 2; - _context.next = 5; + case 4: + _context.prev = 4; + _context.next = 7; return webGenKeyPair(this.name); - case 5: - keyPair = _context.sent; - _context.next = 11; - break; + case 7: + return _context.abrupt('return', _context.sent); - case 8: - _context.prev = 8; - _context.t0 = _context['catch'](2); + case 10: + _context.prev = 10; + _context.t1 = _context['catch'](4); - _util2.default.print_debug("Browser did not support signing: " + _context.t0.message); + _util2.default.print_debug_error("Browser did not support generating ec key " + _context.t1.message); + return _context.abrupt('break', 30); - case 11: + case 14: + return _context.abrupt('return', nodeGenKeyPair(this.name)); + + case 15: _context.next = 17; - break; - - case 13: - if (!(this.node && _util2.default.getNodeCrypto())) { - _context.next = 17; - break; - } - - _context.next = 16; - return nodeGenKeyPair(this.name); - - case 16: - keyPair = _context.sent; - - case 17: - if (!(!keyPair || !keyPair.priv)) { - _context.next = 30; - break; - } - - _context.t1 = this.curve; - _context.t2 = _util2.default; - _context.next = 22; return _random2.default.getRandomBytes(32); - case 22: - _context.t3 = _context.sent; - _context.t4 = _context.t2.Uint8Array_to_str.call(_context.t2, _context.t3); - _context.t5 = { - entropy: _context.t4 - }; - _context.next = 27; - return _context.t1.genKeyPair.call(_context.t1, _context.t5); + case 17: + privateKey = _context.sent; - case 27: - r = _context.sent; - compact = this.curve.curve.type === 'edwards' || this.curve.curve.type === 'mont'; + privateKey[0] = privateKey[0] & 127 | 64; + privateKey[31] &= 248; + secretKey = privateKey.slice().reverse(); - if (this.keyType === _enums2.default.publicKey.eddsa) { - keyPair = { secret: r.getSecret() }; - } else { - keyPair = { pub: r.getPublic('array', compact), priv: r.getPrivate().toArray() }; - } + keyPair = _naclFastLight2.default.box.keyPair.fromSecretKey(secretKey); + publicKey = _util2.default.concatUint8Array([new Uint8Array([0x40]), keyPair.publicKey]); + return _context.abrupt('return', { publicKey: publicKey, privateKey: privateKey }); + + case 24: + _context.next = 26; + return _random2.default.getRandomBytes(32); + + case 26: + _privateKey = _context.sent; + _keyPair = _naclFastLight2.default.sign.keyPair.fromSeed(_privateKey); + _publicKey = _util2.default.concatUint8Array([new Uint8Array([0x40]), _keyPair.publicKey]); + return _context.abrupt('return', { publicKey: _publicKey, privateKey: _privateKey }); case 30: - return _context.abrupt('return', new _key2.default(this, keyPair)); + _context.next = 32; + return (0, _indutnyKey.getIndutnyCurve)(this.name); - case 31: + case 32: + indutnyCurve = _context.sent; + _context.t2 = indutnyCurve; + _context.t3 = _util2.default; + _context.next = 37; + return _random2.default.getRandomBytes(32); + + case 37: + _context.t4 = _context.sent; + _context.t5 = _context.t3.Uint8Array_to_str.call(_context.t3, _context.t4); + _context.t6 = { + entropy: _context.t5 + }; + _context.next = 42; + return _context.t2.genKeyPair.call(_context.t2, _context.t6); + + case 42: + keyPair = _context.sent; + return _context.abrupt('return', { publicKey: new Uint8Array(keyPair.getPublic('array', false)), privateKey: keyPair.getPrivate().toArrayLike(Uint8Array) }); + + case 44: case 'end': return _context.stop(); } } - }, _callee, this, [[2, 8]]); + }, _callee, this, [[4, 10]]); })); function getPreferredHashAlgo(oid) { @@ -36977,8 +36999,56 @@ exports.webCurves = webCurves; exports.nodeCurves = nodeCurves; exports.generate = generate; exports.getPreferredHashAlgo = getPreferredHashAlgo; +exports.jwkToRawPublic = jwkToRawPublic; +exports.rawPublicToJwk = rawPublicToJwk; +exports.privateToJwk = privateToJwk; +function jwkToRawPublic(jwk) { + var bufX = _util2.default.b64_to_Uint8Array(jwk.x); + var bufY = _util2.default.b64_to_Uint8Array(jwk.y); + var publicKey = new Uint8Array(bufX.length + bufY.length + 1); + publicKey[0] = 0x04; + publicKey.set(bufX, 1); + publicKey.set(bufY, bufX.length + 1); + return publicKey; +} -},{"../../../enums":384,"../../../type/oid":421,"../../../util":423,"../../random":380,"./key":376,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"bn.js":44,"elliptic":287}],372:[function(_dereq_,module,exports){ +/** + * @param {Integer} payloadSize ec payload size + * @param {String} name curve name + * @param {Uint8Array} publicKey public key + * + * @returns {JsonWebKey} public key in jwk format + */ +function rawPublicToJwk(payloadSize, name, publicKey) { + var len = payloadSize; + var bufX = publicKey.slice(1, len + 1); + var bufY = publicKey.slice(len + 1, len * 2 + 1); + // https://www.rfc-editor.org/rfc/rfc7518.txt + var jwk = { + kty: "EC", + crv: name, + x: _util2.default.Uint8Array_to_b64(bufX, true), + y: _util2.default.Uint8Array_to_b64(bufY, true), + ext: true + }; + return jwk; +} + +/** + * @param {Integer} payloadSize ec payload size + * @param {String} name curve name + * @param {Uint8Array} publicKey public key + * @param {Uint8Array} privateKey private key + * + * @returns {JsonWebKey} private key in jwk format + */ +function privateToJwk(payloadSize, name, publicKey, privateKey) { + var jwk = rawPublicToJwk(payloadSize, name, publicKey); + jwk.d = _util2.default.Uint8Array_to_b64(privateKey, true); + return jwk; +} + +},{"../../../enums":384,"../../../type/oid":427,"../../../util":429,"../../random":380,"./indutnyKey":376,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"bn.js":44,"tweetnacl/nacl-fast-light.js":342}],372:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -37058,22 +37128,26 @@ var kdf = function () { var genPublicEphemeralKey = function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(curve, Q) { - var _nacl$box$keyPair, d, _ref3, secretKey, sharedKey, _nacl$box$keyPair$fro, publicKey; + var d, _ref3, secretKey, sharedKey, _nacl$box$keyPair$fro, publicKey; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: - _context2.t0 = curve.name; - _context2.next = _context2.t0 === 'curve25519' ? 3 : _context2.t0 === 'p256' ? 12 : _context2.t0 === 'p384' ? 12 : _context2.t0 === 'p521' ? 12 : 22; + _context2.t0 = curve.type; + _context2.next = _context2.t0 === 'curve25519' ? 3 : _context2.t0 === 'web' ? 14 : _context2.t0 === 'node' ? 25 : 26; break; case 3: - _nacl$box$keyPair = _naclFastLight2.default.box.keyPair(), d = _nacl$box$keyPair.secretKey; - _context2.next = 6; + _context2.next = 5; + return _random2.default.getRandomBytes(32); + + case 5: + d = _context2.sent; + _context2.next = 8; return genPrivateEphemeralKey(curve, Q, null, d); - case 6: + case 8: _ref3 = _context2.sent; secretKey = _ref3.secretKey; sharedKey = _ref3.sharedKey; @@ -37082,42 +37156,40 @@ var genPublicEphemeralKey = function () { publicKey = _util2.default.concatUint8Array([new Uint8Array([0x40]), publicKey]); return _context2.abrupt('return', { publicKey: publicKey, sharedKey: sharedKey }); - case 12: + case 14: if (!(curve.web && _util2.default.getWebCrypto())) { - _context2.next = 22; - break; - } - - _context2.prev = 13; - _context2.next = 16; - return webPublicEphemeralKey(curve, Q); - - case 16: - return _context2.abrupt('return', _context2.sent); - - case 19: - _context2.prev = 19; - _context2.t1 = _context2['catch'](13); - - _util2.default.print_debug_error(_context2.t1); - - case 22: - if (!(curve.node && nodeCrypto)) { _context2.next = 24; break; } - return _context2.abrupt('return', nodePublicEphemeralKey(curve, Q)); + _context2.prev = 15; + _context2.next = 18; + return webPublicEphemeralKey(curve, Q); + + case 18: + return _context2.abrupt('return', _context2.sent); + + case 21: + _context2.prev = 21; + _context2.t1 = _context2['catch'](15); + + _util2.default.print_debug_error(_context2.t1); case 24: - return _context2.abrupt('return', ellipticPublicEphemeralKey(curve, Q)); + return _context2.abrupt('break', 26); case 25: + return _context2.abrupt('return', nodePublicEphemeralKey(curve, Q)); + + case 26: + return _context2.abrupt('return', ellipticPublicEphemeralKey(curve, Q)); + + case 27: case 'end': return _context2.stop(); } } - }, _callee2, this, [[13, 19]]); + }, _callee2, this, [[15, 21]]); })); return function genPublicEphemeralKey(_x7, _x8) { @@ -37193,62 +37265,60 @@ var encrypt = function () { var genPrivateEphemeralKey = function () { var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(curve, V, Q, d) { - var one, mask, secretKey, sharedKey; + var privateKey, secretKey, sharedKey; return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: - _context4.t0 = curve.name; - _context4.next = _context4.t0 === 'curve25519' ? 3 : _context4.t0 === 'p256' ? 11 : _context4.t0 === 'p384' ? 11 : _context4.t0 === 'p521' ? 11 : 21; + if (d.length !== curve.payloadSize) { + privateKey = new Uint8Array(curve.payloadSize); + + privateKey.set(d, curve.payloadSize - d.length); + d = privateKey; + } + _context4.t0 = curve.type; + _context4.next = _context4.t0 === 'curve25519' ? 4 : _context4.t0 === 'web' ? 7 : _context4.t0 === 'node' ? 18 : 19; break; - case 3: - one = new _bn2.default(1); - mask = one.ushln(255 - 3).sub(one).ushln(3); - secretKey = new _bn2.default(d); - - secretKey = secretKey.or(one.ushln(255 - 1)); - secretKey = secretKey.and(mask); - secretKey = secretKey.toArrayLike(Uint8Array, 'le', 32); + case 4: + secretKey = d.slice().reverse(); sharedKey = _naclFastLight2.default.scalarMult(secretKey, V.subarray(1)); return _context4.abrupt('return', { secretKey: secretKey, sharedKey: sharedKey }); - case 11: + case 7: if (!(curve.web && _util2.default.getWebCrypto())) { - _context4.next = 21; + _context4.next = 17; break; } - _context4.prev = 12; - _context4.next = 15; + _context4.prev = 8; + _context4.next = 11; return webPrivateEphemeralKey(curve, V, Q, d); - case 15: + case 11: return _context4.abrupt('return', _context4.sent); - case 18: - _context4.prev = 18; - _context4.t1 = _context4['catch'](12); + case 14: + _context4.prev = 14; + _context4.t1 = _context4['catch'](8); _util2.default.print_debug_error(_context4.t1); - case 21: - if (!(curve.node && nodeCrypto)) { - _context4.next = 23; - break; - } + case 17: + return _context4.abrupt('break', 19); + case 18: return _context4.abrupt('return', nodePrivateEphemeralKey(curve, V, d)); - case 23: + case 19: return _context4.abrupt('return', ellipticPrivateEphemeralKey(curve, V, d)); - case 24: + case 20: case 'end': return _context4.stop(); } } - }, _callee4, this, [[12, 18]]); + }, _callee4, this, [[8, 14]]); })); return function genPrivateEphemeralKey(_x15, _x16, _x17, _x18) { @@ -37354,12 +37424,12 @@ var webPrivateEphemeralKey = function () { while (1) { switch (_context6.prev = _context6.next) { case 0: - recipient = privateToJwk(curve.payloadSize, curve.web.web, d, Q); + recipient = (0, _curves.privateToJwk)(curve.payloadSize, curve.web.web, Q, d); privateKey = webCrypto.importKey("jwk", recipient, { name: "ECDH", namedCurve: curve.web.web }, true, ["deriveKey", "deriveBits"]); - jwk = rawPublicToJwk(curve.payloadSize, curve.web.web, V); + jwk = (0, _curves.rawPublicToJwk)(curve.payloadSize, curve.web.web, V); sender = webCrypto.importKey("jwk", jwk, { name: "ECDH", namedCurve: curve.web.web @@ -37421,7 +37491,7 @@ var webPublicEphemeralKey = function () { while (1) { switch (_context7.prev = _context7.next) { case 0: - jwk = rawPublicToJwk(curve.payloadSize, curve.web.web, Q); + jwk = (0, _curves.rawPublicToJwk)(curve.payloadSize, curve.web.web, Q); keyPair = webCrypto.generateKey({ name: "ECDH", namedCurve: curve.web.web @@ -37453,7 +37523,7 @@ var webPublicEphemeralKey = function () { s = _ref18[0]; p = _ref18[1]; sharedKey = new Uint8Array(s); - publicKey = new Uint8Array(jwkToRawPublic(p)); + publicKey = new Uint8Array((0, _curves.jwkToRawPublic)(p)); return _context7.abrupt('return', { publicKey: publicKey, sharedKey: sharedKey }); case 20: @@ -37482,20 +37552,26 @@ var webPublicEphemeralKey = function () { var ellipticPrivateEphemeralKey = function () { var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(curve, V, d) { - var secretKey, S, len, sharedKey; + var indutnyCurve, secretKey, S, len, sharedKey; return _regenerator2.default.wrap(function _callee8$(_context8) { while (1) { switch (_context8.prev = _context8.next) { case 0: - V = curve.keyFromPublic(V); - d = curve.keyFromPrivate(d); + _context8.next = 2; + return (0, _indutnyKey.getIndutnyCurve)(curve.name); + + case 2: + indutnyCurve = _context8.sent; + + V = (0, _indutnyKey.keyFromPublic)(indutnyCurve, V); + d = (0, _indutnyKey.keyFromPrivate)(indutnyCurve, d); secretKey = new Uint8Array(d.getPrivate()); - S = d.derive(V); - len = curve.curve.curve.p.byteLength(); + S = d.derive(V.getPublic()); + len = indutnyCurve.curve.p.byteLength(); sharedKey = S.toArrayLike(Uint8Array, 'be', len); return _context8.abrupt('return', { secretKey: secretKey, sharedKey: sharedKey }); - case 7: + case 10: case 'end': return _context8.stop(); } @@ -37520,25 +37596,31 @@ var ellipticPrivateEphemeralKey = function () { var ellipticPublicEphemeralKey = function () { var _ref20 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(curve, Q) { - var v, publicKey, S, len, sharedKey; + var indutnyCurve, v, V, publicKey, S, len, sharedKey; return _regenerator2.default.wrap(function _callee9$(_context9) { while (1) { switch (_context9.prev = _context9.next) { case 0: _context9.next = 2; - return curve.genKeyPair(); + return (0, _indutnyKey.getIndutnyCurve)(curve.name); case 2: + indutnyCurve = _context9.sent; + _context9.next = 5; + return curve.genKeyPair(); + + case 5: v = _context9.sent; - Q = curve.keyFromPublic(Q); - publicKey = new Uint8Array(v.getPublic()); - S = v.derive(Q); - len = curve.curve.curve.p.byteLength(); + Q = (0, _indutnyKey.keyFromPublic)(indutnyCurve, Q); + V = (0, _indutnyKey.keyFromPrivate)(indutnyCurve, v.privateKey); + publicKey = v.publicKey; + S = V.derive(Q.getPublic()); + len = indutnyCurve.curve.p.byteLength(); sharedKey = S.toArrayLike(Uint8Array, 'be', len); return _context9.abrupt('return', { publicKey: publicKey, sharedKey: sharedKey }); - case 9: + case 13: case 'end': return _context9.stop(); } @@ -37626,14 +37708,6 @@ var nodePublicEphemeralKey = function () { }; }(); -/** - * @param {Integer} payloadSize ec payload size - * @param {String} name curve name - * @param {Uint8Array} publicKey public key - * @returns {JsonWebKey} public key in jwk format - */ - - var _bn = _dereq_('bn.js'); var _bn2 = _interopRequireDefault(_bn); @@ -37654,6 +37728,10 @@ var _cipher = _dereq_('../../cipher'); var _cipher2 = _interopRequireDefault(_cipher); +var _random = _dereq_('../../random'); + +var _random2 = _interopRequireDefault(_random); + var _hash = _dereq_('../../hash'); var _hash2 = _interopRequireDefault(_hash); @@ -37670,6 +37748,8 @@ var _util = _dereq_('../../../util'); var _util2 = _interopRequireDefault(_util); +var _indutnyKey = _dereq_('./indutnyKey'); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var webCrypto = _util2.default.getWebCrypto(); // OpenPGP.js - An OpenPGP implementation in javascript @@ -37696,6 +37776,7 @@ var webCrypto = _util2.default.getWebCrypto(); // OpenPGP.js - An OpenPGP implem * @requires crypto/public_key/elliptic/curve * @requires crypto/aes_kw * @requires crypto/cipher + * @requires crypto/random * @requires crypto/hash * @requires type/kdf_params * @requires enums @@ -37709,57 +37790,19 @@ var nodeCrypto = _util2.default.getNodeCrypto(); function buildEcdhParam(public_algo, oid, cipher_algo, hash_algo, fingerprint) { var kdf_params = new _kdf_params2.default([hash_algo, cipher_algo]); return _util2.default.concatUint8Array([oid.write(), new Uint8Array([public_algo]), kdf_params.write(), _util2.default.str_to_Uint8Array("Anonymous Sender "), fingerprint.subarray(0, 20)]); -}function rawPublicToJwk(payloadSize, name, publicKey) { - var len = payloadSize; - var bufX = publicKey.slice(1, len + 1); - var bufY = publicKey.slice(len + 1, len * 2 + 1); - // https://www.rfc-editor.org/rfc/rfc7518.txt - var jwKey = { - kty: "EC", - crv: name, - x: _util2.default.Uint8Array_to_b64(bufX, true), - y: _util2.default.Uint8Array_to_b64(bufY, true), - ext: true - }; - return jwKey; -} +}exports.default = { encrypt: encrypt, decrypt: decrypt, genPublicEphemeralKey: genPublicEphemeralKey, genPrivateEphemeralKey: genPrivateEphemeralKey, buildEcdhParam: buildEcdhParam, kdf: kdf, webPublicEphemeralKey: webPublicEphemeralKey, webPrivateEphemeralKey: webPrivateEphemeralKey, ellipticPublicEphemeralKey: ellipticPublicEphemeralKey, ellipticPrivateEphemeralKey: ellipticPrivateEphemeralKey, nodePublicEphemeralKey: nodePublicEphemeralKey, nodePrivateEphemeralKey: nodePrivateEphemeralKey }; -/** - * @param {Integer} payloadSize ec payload size - * @param {String} name curve name - * @param {Uint8Array} publicKey public key - * @param {Uint8Array} privateKey private key - * @returns {JsonWebKey} private key in jwk format - */ -function privateToJwk(payloadSize, name, privateKey, publicKey) { - var jwk = rawPublicToJwk(payloadSize, name, publicKey); - jwk.d = _util2.default.Uint8Array_to_b64(privateKey, true); - return jwk; -} - -/** - * @param {JsonWebKey} jwk key for conversion - * @returns {Uint8Array} raw public key - */ -function jwkToRawPublic(jwk) { - var bufX = _util2.default.b64_to_Uint8Array(jwk.x); - var bufY = _util2.default.b64_to_Uint8Array(jwk.y); - var publicKey = new Uint8Array(bufX.length + bufY.length + 1); - publicKey[0] = 0x04; - publicKey.set(bufX, 1); - publicKey.set(bufY, bufX.length + 1); - return publicKey; -} - -exports.default = { encrypt: encrypt, decrypt: decrypt, genPublicEphemeralKey: genPublicEphemeralKey, genPrivateEphemeralKey: genPrivateEphemeralKey, buildEcdhParam: buildEcdhParam, kdf: kdf, webPublicEphemeralKey: webPublicEphemeralKey, webPrivateEphemeralKey: webPrivateEphemeralKey, ellipticPublicEphemeralKey: ellipticPublicEphemeralKey, ellipticPrivateEphemeralKey: ellipticPrivateEphemeralKey, nodePublicEphemeralKey: nodePublicEphemeralKey, nodePrivateEphemeralKey: nodePrivateEphemeralKey }; - -},{"../../../enums":384,"../../../type/kdf_params":418,"../../../util":423,"../../aes_kw":351,"../../cipher":357,"../../hash":363,"./curves":371,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"bn.js":44,"tweetnacl/nacl-fast-light.js":342}],373:[function(_dereq_,module,exports){ +},{"../../../enums":384,"../../../type/kdf_params":424,"../../../util":429,"../../aes_kw":351,"../../cipher":357,"../../hash":363,"../../random":380,"./curves":371,"./indutnyKey":376,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"bn.js":44,"tweetnacl/nacl-fast-light.js":342}],373:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); +var _from = _dereq_('babel-runtime/core-js/array/from'); + +var _from2 = _interopRequireDefault(_from); + var _regenerator = _dereq_('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); @@ -37770,43 +37813,75 @@ var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); /** * Sign a message using the provided key - * @param {module:type/oid} oid Elliptic curve object identifier - * @param {module:enums.hash} hash_algo Hash algorithm used to sign - * @param {Uint8Array} m Message to sign - * @param {Uint8Array} d Private key used to sign the message - * @param {Uint8Array} hashed The hashed message + * @param {module:type/oid} oid Elliptic curve object identifier + * @param {module:enums.hash} hash_algo Hash algorithm used to sign + * @param {Uint8Array} message Message to sign + * @param {Uint8Array} publicKey Public key + * @param {Uint8Array} privateKey Private key used to sign the message + * @param {Uint8Array} hashed The hashed message * @returns {{r: Uint8Array, - * s: Uint8Array}} Signature of the message + * s: Uint8Array}} Signature of the message * @async */ var sign = function () { - var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(oid, hash_algo, m, d, hashed) { - var curve, key, signature; + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(oid, hash_algo, message, publicKey, privateKey, hashed) { + var curve, keyPair, signature; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: curve = new _curves2.default(oid); - key = curve.keyFromPrivate(d); - _context.next = 4; - return key.sign(m, hash_algo, hashed); - case 4: + if (!(message && !_util2.default.isStream(message))) { + _context.next = 20; + break; + } + + keyPair = { publicKey: publicKey, privateKey: privateKey }; + _context.t0 = curve.type; + _context.next = _context.t0 === 'web' ? 6 : _context.t0 === 'node' ? 16 : 20; + break; + + case 6: + _context.prev = 6; + _context.next = 9; + return webSign(curve, hash_algo, message, keyPair); + + case 9: + return _context.abrupt('return', _context.sent); + + case 12: + _context.prev = 12; + _context.t1 = _context['catch'](6); + + _util2.default.print_debug_error("Browser did not support signing: " + _context.t1.message); + + case 15: + return _context.abrupt('break', 20); + + case 16: + _context.next = 18; + return nodeSign(curve, hash_algo, message, keyPair); + + case 18: signature = _context.sent; return _context.abrupt('return', { r: signature.r.toArrayLike(Uint8Array), s: signature.s.toArrayLike(Uint8Array) }); - case 6: + case 20: + return _context.abrupt('return', ellipticSign(curve, hashed, privateKey)); + + case 21: case 'end': return _context.stop(); } } - }, _callee, this); + }, _callee, this, [[6, 12]]); })); - return function sign(_x, _x2, _x3, _x4, _x5) { + return function sign(_x, _x2, _x3, _x4, _x5, _x6) { return _ref.apply(this, arguments); }; }(); @@ -37817,13 +37892,328 @@ var sign = function () { * @param {module:enums.hash} hash_algo Hash algorithm used in the signature * @param {{r: Uint8Array, s: Uint8Array}} signature Signature to verify - * @param {Uint8Array} m Message to verify - * @param {Uint8Array} Q Public key used to verify the message + * @param {Uint8Array} message Message to verify + * @param {Uint8Array} publicKey Public key used to verify the message * @param {Uint8Array} hashed The hashed message * @returns {Boolean} * @async */ -// OpenPGP.js - An OpenPGP implementation in javascript + + +var verify = function () { + var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(oid, hash_algo, signature, message, publicKey, hashed) { + var curve, digest; + return _regenerator2.default.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + curve = new _curves2.default(oid); + + if (!(message && !_util2.default.isStream(message))) { + _context2.next = 16; + break; + } + + _context2.t0 = curve.type; + _context2.next = _context2.t0 === 'web' ? 5 : _context2.t0 === 'node' ? 15 : 16; + break; + + case 5: + _context2.prev = 5; + _context2.next = 8; + return webVerify(curve, hash_algo, signature, message, publicKey); + + case 8: + return _context2.abrupt('return', _context2.sent); + + case 11: + _context2.prev = 11; + _context2.t1 = _context2['catch'](5); + + _util2.default.print_debug_error("Browser did not support verifying: " + _context2.t1.message); + + case 14: + return _context2.abrupt('break', 16); + + case 15: + return _context2.abrupt('return', nodeVerify(curve, hash_algo, signature, message, publicKey)); + + case 16: + digest = typeof hash_algo === 'undefined' ? message : hashed; + return _context2.abrupt('return', ellipticVerify(curve, signature, digest, publicKey)); + + case 18: + case 'end': + return _context2.stop(); + } + } + }, _callee2, this, [[5, 11]]); + })); + + return function verify(_x7, _x8, _x9, _x10, _x11, _x12) { + return _ref2.apply(this, arguments); + }; +}(); + +////////////////////////// +// // +// Helper functions // +// // +////////////////////////// + +var ellipticSign = function () { + var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(curve, hashed, privateKey) { + var indutnyCurve, key, signature; + return _regenerator2.default.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return (0, _indutnyKey.getIndutnyCurve)(curve.name); + + case 2: + indutnyCurve = _context3.sent; + key = (0, _indutnyKey.keyFromPrivate)(indutnyCurve, privateKey); + signature = key.sign(hashed); + return _context3.abrupt('return', { + r: signature.r.toArrayLike(Uint8Array), + s: signature.s.toArrayLike(Uint8Array) + }); + + case 6: + case 'end': + return _context3.stop(); + } + } + }, _callee3, this); + })); + + return function ellipticSign(_x13, _x14, _x15) { + return _ref3.apply(this, arguments); + }; +}(); + +var ellipticVerify = function () { + var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(curve, signature, digest, publicKey) { + var indutnyCurve, key; + return _regenerator2.default.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return (0, _indutnyKey.getIndutnyCurve)(curve.name); + + case 2: + indutnyCurve = _context4.sent; + key = (0, _indutnyKey.keyFromPublic)(indutnyCurve, publicKey); + return _context4.abrupt('return', key.verify(digest, signature)); + + case 5: + case 'end': + return _context4.stop(); + } + } + }, _callee4, this); + })); + + return function ellipticVerify(_x16, _x17, _x18, _x19) { + return _ref4.apply(this, arguments); + }; +}(); + +var webSign = function () { + var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(curve, hash_algo, message, keyPair) { + var len, jwk, key, signature; + return _regenerator2.default.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + len = curve.payloadSize; + jwk = (0, _curves.privateToJwk)(curve.payloadSize, _curves.webCurves[curve.name], keyPair.publicKey, keyPair.privateKey); + _context5.next = 4; + return webCrypto.importKey("jwk", jwk, { + "name": "ECDSA", + "namedCurve": _curves.webCurves[curve.name], + "hash": { name: _enums2.default.read(_enums2.default.webHash, curve.hash) } + }, false, ["sign"]); + + case 4: + key = _context5.sent; + _context5.t0 = Uint8Array; + _context5.next = 8; + return webCrypto.sign({ + "name": 'ECDSA', + "namedCurve": _curves.webCurves[curve.name], + "hash": { name: _enums2.default.read(_enums2.default.webHash, hash_algo) } + }, key, message); + + case 8: + _context5.t1 = _context5.sent; + signature = new _context5.t0(_context5.t1); + return _context5.abrupt('return', { + r: signature.slice(0, len), + s: signature.slice(len, len << 1) + }); + + case 11: + case 'end': + return _context5.stop(); + } + } + }, _callee5, this); + })); + + return function webSign(_x20, _x21, _x22, _x23) { + return _ref5.apply(this, arguments); + }; +}(); + +var webVerify = function () { + var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(curve, hash_algo, _ref7, message, publicKey) { + var r = _ref7.r, + s = _ref7.s; + var len, jwk, key, signature; + return _regenerator2.default.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + len = curve.payloadSize; + jwk = (0, _curves.rawPublicToJwk)(curve.payloadSize, _curves.webCurves[curve.name], publicKey); + _context6.next = 4; + return webCrypto.importKey("jwk", jwk, { + "name": "ECDSA", + "namedCurve": _curves.webCurves[curve.name], + "hash": { name: _enums2.default.read(_enums2.default.webHash, curve.hash) } + }, false, ["verify"]); + + case 4: + key = _context6.sent; + signature = _util2.default.concatUint8Array([new Uint8Array(len - r.length), r, new Uint8Array(len - s.length), s]).buffer; + return _context6.abrupt('return', webCrypto.verify({ + "name": 'ECDSA', + "namedCurve": _curves.webCurves[curve.name], + "hash": { name: _enums2.default.read(_enums2.default.webHash, hash_algo) } + }, key, signature, message)); + + case 7: + case 'end': + return _context6.stop(); + } + } + }, _callee6, this); + })); + + return function webVerify(_x24, _x25, _x26, _x27, _x28) { + return _ref6.apply(this, arguments); + }; +}(); + +var nodeSign = function () { + var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(curve, hash_algo, message, keyPair) { + var sign, key; + return _regenerator2.default.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + sign = nodeCrypto.createSign(_enums2.default.read(_enums2.default.hash, hash_algo)); + + sign.write(message); + sign.end(); + key = ECPrivateKey.encode({ + version: 1, + parameters: curve.oid, + privateKey: (0, _from2.default)(keyPair.privateKey), + publicKey: { unused: 0, data: (0, _from2.default)(keyPair.publicKey) } + }, 'pem', { + label: 'EC PRIVATE KEY' + }); + return _context7.abrupt('return', ECDSASignature.decode(sign.sign(key), 'der')); + + case 5: + case 'end': + return _context7.stop(); + } + } + }, _callee7, this); + })); + + return function nodeSign(_x29, _x30, _x31, _x32) { + return _ref8.apply(this, arguments); + }; +}(); + +var nodeVerify = function () { + var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(curve, hash_algo, _ref10, message, publicKey) { + var r = _ref10.r, + s = _ref10.s; + var verify, key, signature; + return _regenerator2.default.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + verify = nodeCrypto.createVerify(_enums2.default.read(_enums2.default.hash, hash_algo)); + + verify.write(message); + verify.end(); + key = SubjectPublicKeyInfo.encode({ + algorithm: { + algorithm: [1, 2, 840, 10045, 2, 1], + parameters: curve.oid + }, + subjectPublicKey: { unused: 0, data: (0, _from2.default)(publicKey) } + }, 'pem', { + label: 'PUBLIC KEY' + }); + signature = ECDSASignature.encode({ + r: new _bn2.default(r), s: new _bn2.default(s) + }, 'der'); + _context8.prev = 5; + return _context8.abrupt('return', verify.verify(key, signature)); + + case 9: + _context8.prev = 9; + _context8.t0 = _context8['catch'](5); + return _context8.abrupt('return', false); + + case 12: + case 'end': + return _context8.stop(); + } + } + }, _callee8, this, [[5, 9]]); + })); + + return function nodeVerify(_x33, _x34, _x35, _x36, _x37) { + return _ref9.apply(this, arguments); + }; +}(); + +// Originally written by Owen Smith https://github.com/omsmith +// Adapted on Feb 2018 from https://github.com/Brightspace/node-jwk-to-pem/ + +/* eslint-disable no-invalid-this */ + +var _bn = _dereq_('bn.js'); + +var _bn2 = _interopRequireDefault(_bn); + +var _enums = _dereq_('../../../enums'); + +var _enums2 = _interopRequireDefault(_enums); + +var _util = _dereq_('../../../util'); + +var _util2 = _interopRequireDefault(_util); + +var _curves = _dereq_('./curves'); + +var _curves2 = _interopRequireDefault(_curves); + +var _indutnyKey = _dereq_('./indutnyKey'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var webCrypto = _util2.default.getWebCrypto(); // OpenPGP.js - An OpenPGP implementation in javascript // Copyright (C) 2015-2016 Decentral // // This library is free software; you can redistribute it and/or @@ -37842,43 +38232,34 @@ var sign = function () { /** * @fileoverview Implementation of ECDSA following RFC6637 for Openpgpjs - * @requires crypto/public_key/elliptic/curve + * @requires bn.js + * @requires web-stream-tools + * @requires enums + * @requires util + * @requires crypto/public_key/elliptic/curves * @module crypto/public_key/elliptic/ecdsa */ -var verify = function () { - var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(oid, hash_algo, signature, m, Q, hashed) { - var curve, key; - return _regenerator2.default.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - curve = new _curves2.default(oid); - key = curve.keyFromPublic(Q); - return _context2.abrupt('return', key.verify(m, signature, hash_algo, hashed)); +var nodeCrypto = _util2.default.getNodeCrypto();exports.default = { sign: sign, verify: verify, ellipticVerify: ellipticVerify, ellipticSign: ellipticSign }; +var asn1 = nodeCrypto ? _dereq_('asn1.js') : undefined; - case 3: - case 'end': - return _context2.stop(); - } - } - }, _callee2, this); - })); +var ECDSASignature = nodeCrypto ? asn1.define('ECDSASignature', function () { + this.seq().obj(this.key('r').int(), this.key('s').int()); +}) : undefined; - return function verify(_x6, _x7, _x8, _x9, _x10, _x11) { - return _ref2.apply(this, arguments); - }; -}(); +var ECPrivateKey = nodeCrypto ? asn1.define('ECPrivateKey', function () { + this.seq().obj(this.key('version').int(), this.key('privateKey').octstr(), this.key('parameters').explicit(0).optional().any(), this.key('publicKey').explicit(1).optional().bitstr()); +}) : undefined; -var _curves = _dereq_('./curves'); +var AlgorithmIdentifier = nodeCrypto ? asn1.define('AlgorithmIdentifier', function () { + this.seq().obj(this.key('algorithm').objid(), this.key('parameters').optional().any()); +}) : undefined; -var _curves2 = _interopRequireDefault(_curves); +var SubjectPublicKeyInfo = nodeCrypto ? asn1.define('SubjectPublicKeyInfo', function () { + this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr()); +}) : undefined; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = { sign: sign, verify: verify }; - -},{"./curves":371,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],374:[function(_dereq_,module,exports){ +},{"../../../enums":384,"../../../util":429,"./curves":371,"./indutnyKey":376,"asn1.js":"asn1.js","babel-runtime/core-js/array/from":16,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"bn.js":44}],374:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -37895,24 +38276,24 @@ var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); /** * Sign a message using the provided key - * @param {module:type/oid} oid Elliptic curve object identifier - * @param {module:enums.hash} hash_algo Hash algorithm used to sign - * @param {Uint8Array} m Message to sign - * @param {Uint8Array} d Private key used to sign - * @param {Uint8Array} hashed The hashed message + * @param {module:type/oid} oid Elliptic curve object identifier + * @param {module:enums.hash} hash_algo Hash algorithm used to sign + * @param {Uint8Array} message Message to sign + * @param {Uint8Array} publicKey Public key + * @param {Uint8Array} privateKey Private key used to sign the message + * @param {Uint8Array} hashed The hashed message * @returns {{R: Uint8Array, - * S: Uint8Array}} Signature of the message + * S: Uint8Array}} Signature of the message * @async */ var sign = function () { - var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(oid, hash_algo, m, d, hashed) { - var _nacl$sign$keyPair$fr, secretKey, signature; - + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(oid, hash_algo, message, publicKey, privateKey, hashed) { + var secretKey, signature; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: - _nacl$sign$keyPair$fr = _naclFastLight2.default.sign.keyPair.fromSeed(d), secretKey = _nacl$sign$keyPair$fr.secretKey; + secretKey = _util2.default.concatUint8Array([privateKey, publicKey.subarray(1)]); signature = _naclFastLight2.default.sign.detached(hashed, secretKey); // EdDSA signature params are returned in little-endian format @@ -37929,7 +38310,7 @@ var sign = function () { }, _callee, this); })); - return function sign(_x, _x2, _x3, _x4, _x5) { + return function sign(_x, _x2, _x3, _x4, _x5, _x6) { return _ref.apply(this, arguments); }; }(); @@ -37968,7 +38349,7 @@ var verify = function () { }, _callee2, this); })); - return function verify(_x6, _x7, _x8, _x9, _x10, _x11) { + return function verify(_x7, _x8, _x9, _x10, _x11, _x12) { return _ref2.apply(this, arguments); }; }(); @@ -38017,7 +38398,7 @@ _naclFastLight2.default.hash = function (bytes) { exports.default = { sign: sign, verify: verify }; -},{"../../../util":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"hash.js/lib/hash/sha/512":312,"tweetnacl/nacl-fast-light.js":342}],375:[function(_dereq_,module,exports){ +},{"../../../util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"hash.js/lib/hash/sha/512":312,"tweetnacl/nacl-fast-light.js":342}],375:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -38078,6 +38459,7 @@ exports.default = { Object.defineProperty(exports, "__esModule", { value: true }); +exports.getIndutnyCurve = undefined; var _regenerator = _dereq_('babel-runtime/regenerator'); @@ -38087,221 +38469,111 @@ var _asyncToGenerator2 = _dereq_('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); -////////////////////////// -// // -// Helper functions // -// // -////////////////////////// - - -var webSign = function () { - var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(curve, hash_algo, message, keyPair) { - var len, key, signature; - return _regenerator2.default.wrap(function _callee3$(_context3) { +/** + * Load elliptic on demand to the window.openpgp.elliptic + * @returns {Promise} + */ +var loadEllipticPromise = function () { + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { + var path, options, ellipticDlPromise, ellipticContents, mainUrl; + return _regenerator2.default.wrap(function _callee$(_context) { while (1) { - switch (_context3.prev = _context3.next) { + switch (_context.prev = _context.next) { case 0: - len = curve.payloadSize; - _context3.next = 3; - return webCrypto.importKey("jwk", { - "kty": "EC", - "crv": _curves.webCurves[curve.name], - "x": _util2.default.Uint8Array_to_b64(new Uint8Array(keyPair.getPublic().getX().toArray('be', len)), true), - "y": _util2.default.Uint8Array_to_b64(new Uint8Array(keyPair.getPublic().getY().toArray('be', len)), true), - "d": _util2.default.Uint8Array_to_b64(new Uint8Array(keyPair.getPrivate().toArray('be', len)), true), - "use": "sig", - "kid": "ECDSA Private Key" - }, { - "name": "ECDSA", - "namedCurve": _curves.webCurves[curve.name], - "hash": { name: _enums2.default.read(_enums2.default.webHash, curve.hash) } - }, false, ["sign"]); - - case 3: - key = _context3.sent; - _context3.t0 = Uint8Array; - _context3.next = 7; - return webCrypto.sign({ - "name": 'ECDSA', - "namedCurve": _curves.webCurves[curve.name], - "hash": { name: _enums2.default.read(_enums2.default.webHash, hash_algo) } - }, key, message); - - case 7: - _context3.t1 = _context3.sent; - signature = new _context3.t0(_context3.t1); - return _context3.abrupt('return', { - r: new _bn2.default(signature.slice(0, len)), - s: new _bn2.default(signature.slice(len, len << 1)) + path = _config2.default.indutny_elliptic_path; + options = _config2.default.indutny_elliptic_fetch_options; + ellipticDlPromise = (0, _lightweight_helper.dl)(path, options).catch(function () { + return (0, _lightweight_helper.dl)(path, options); }); + _context.next = 5; + return ellipticDlPromise; - case 10: + case 5: + ellipticContents = _context.sent; + mainUrl = URL.createObjectURL(new Blob([ellipticContents], { type: 'text/javascript' })); + _context.next = 9; + return (0, _lightweight_helper.loadScript)(mainUrl); + + case 9: + URL.revokeObjectURL(mainUrl); + + if (window.openpgp.elliptic) { + _context.next = 12; + break; + } + + throw new Error('Elliptic library failed to load correctly'); + + case 12: + return _context.abrupt('return', window.openpgp.elliptic); + + case 13: case 'end': - return _context3.stop(); + return _context.stop(); } } - }, _callee3, this); + }, _callee, this); })); - return function webSign(_x8, _x9, _x10, _x11) { - return _ref3.apply(this, arguments); + return function loadEllipticPromise() { + return _ref.apply(this, arguments); }; }(); -var webVerify = function () { - var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(curve, hash_algo, _ref5, message, publicKey) { - var r = _ref5.r, - s = _ref5.s; - var len, key, signature; - return _regenerator2.default.wrap(function _callee4$(_context4) { +var getIndutnyCurve = exports.getIndutnyCurve = function () { + var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(name) { + var elliptic; + return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { - switch (_context4.prev = _context4.next) { + switch (_context2.prev = _context2.next) { case 0: - len = curve.payloadSize; - _context4.next = 3; - return webCrypto.importKey("jwk", { - "kty": "EC", - "crv": _curves.webCurves[curve.name], - "x": _util2.default.Uint8Array_to_b64(new Uint8Array(publicKey.getX().toArray('be', len)), true), - "y": _util2.default.Uint8Array_to_b64(new Uint8Array(publicKey.getY().toArray('be', len)), true), - "use": "sig", - "kid": "ECDSA Public Key" - }, { - "name": "ECDSA", - "namedCurve": _curves.webCurves[curve.name], - "hash": { name: _enums2.default.read(_enums2.default.webHash, curve.hash) } - }, false, ["verify"]); + if (_config2.default.use_indutny_elliptic) { + _context2.next = 2; + break; + } - case 3: - key = _context4.sent; - signature = _util2.default.concatUint8Array([new Uint8Array(len - r.length), r, new Uint8Array(len - s.length), s]).buffer; - return _context4.abrupt('return', webCrypto.verify({ - "name": 'ECDSA', - "namedCurve": _curves.webCurves[curve.name], - "hash": { name: _enums2.default.read(_enums2.default.webHash, hash_algo) } - }, key, signature, message)); + throw new Error('This curve is only supported in the full build of OpenPGP.js'); + + case 2: + _context2.next = 4; + return loadElliptic(); + + case 4: + elliptic = _context2.sent; + return _context2.abrupt('return', new elliptic.ec(name)); case 6: case 'end': - return _context4.stop(); + return _context2.stop(); } } - }, _callee4, this); + }, _callee2, this); })); - return function webVerify(_x12, _x13, _x14, _x15, _x16) { - return _ref4.apply(this, arguments); + return function getIndutnyCurve(_x) { + return _ref2.apply(this, arguments); }; }(); -var nodeSign = function () { - var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(curve, hash_algo, message, keyPair) { - var sign, key; - return _regenerator2.default.wrap(function _callee5$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - sign = nodeCrypto.createSign(_enums2.default.read(_enums2.default.hash, hash_algo)); +exports.keyFromPrivate = keyFromPrivate; +exports.keyFromPublic = keyFromPublic; - sign.write(message); - sign.end(); +var _lightweight_helper = _dereq_('../../../lightweight_helper'); - key = ECPrivateKey.encode({ - version: 1, - parameters: curve.oid, - privateKey: keyPair.getPrivate().toArray(), - publicKey: { unused: 0, data: keyPair.getPublic().encode() } - }, 'pem', { - label: 'EC PRIVATE KEY' - }); - return _context5.abrupt('return', ECDSASignature.decode(sign.sign(key), 'der')); +var _config = _dereq_('../../../config'); - case 5: - case 'end': - return _context5.stop(); - } - } - }, _callee5, this); - })); - - return function nodeSign(_x17, _x18, _x19, _x20) { - return _ref6.apply(this, arguments); - }; -}(); - -var nodeVerify = function () { - var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(curve, hash_algo, _ref8, message, publicKey) { - var r = _ref8.r, - s = _ref8.s; - var verify, key, signature; - return _regenerator2.default.wrap(function _callee6$(_context6) { - while (1) { - switch (_context6.prev = _context6.next) { - case 0: - verify = nodeCrypto.createVerify(_enums2.default.read(_enums2.default.hash, hash_algo)); - - verify.write(message); - verify.end(); - - key = SubjectPublicKeyInfo.encode({ - algorithm: { - algorithm: [1, 2, 840, 10045, 2, 1], - parameters: curve.oid - }, - subjectPublicKey: { unused: 0, data: publicKey.encode() } - }, 'pem', { - label: 'PUBLIC KEY' - }); - signature = ECDSASignature.encode({ - r: new _bn2.default(r), s: new _bn2.default(s) - }, 'der'); - _context6.prev = 5; - return _context6.abrupt('return', verify.verify(key, signature)); - - case 9: - _context6.prev = 9; - _context6.t0 = _context6['catch'](5); - return _context6.abrupt('return', false); - - case 12: - case 'end': - return _context6.stop(); - } - } - }, _callee6, this, [[5, 9]]); - })); - - return function nodeVerify(_x21, _x22, _x23, _x24, _x25) { - return _ref7.apply(this, arguments); - }; -}(); - -// Originally written by Owen Smith https://github.com/omsmith -// Adapted on Feb 2018 from https://github.com/Brightspace/node-jwk-to-pem/ - -/* eslint-disable no-invalid-this */ - -var _bn = _dereq_('bn.js'); - -var _bn2 = _interopRequireDefault(_bn); - -var _webStreamTools = _dereq_('web-stream-tools'); - -var _webStreamTools2 = _interopRequireDefault(_webStreamTools); - -var _curves = _dereq_('./curves'); +var _config2 = _interopRequireDefault(_config); var _util = _dereq_('../../../util'); var _util2 = _interopRequireDefault(_util); -var _enums = _dereq_('../../../enums'); - -var _enums2 = _interopRequireDefault(_enums); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var webCrypto = _util2.default.getWebCrypto(); // OpenPGP.js - An OpenPGP implementation in javascript +function keyFromPrivate(indutnyCurve, priv) { + var keyPair = indutnyCurve.keyPair({ priv: priv }); + return keyPair; +} // OpenPGP.js - An OpenPGP implementation in javascript // Copyright (C) 2015-2016 Decentral // // This library is free software; you can redistribute it and/or @@ -38319,198 +38591,40 @@ var webCrypto = _util2.default.getWebCrypto(); // OpenPGP.js - An OpenPGP implem // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA /** - * @fileoverview Wrapper for a KeyPair of an Elliptic Curve - * @requires bn.js - * @requires web-stream-tools - * @requires crypto/public_key/elliptic/curves - * @requires util + * @fileoverview Wrapper for a KeyPair of an curve from indutny/elliptic library * @requires enums * @requires asn1.js - * @module crypto/public_key/elliptic/key + * @module crypto/public_key/elliptic/indutnyKey */ -var nodeCrypto = _util2.default.getNodeCrypto(); - -/** - * @constructor - */ -function KeyPair(curve, options) { - this.curve = curve; - this.keyType = curve.curve.type === 'edwards' ? _enums2.default.publicKey.eddsa : _enums2.default.publicKey.ecdsa; - this.keyPair = this.curve.curve.keyPair(options); +function keyFromPublic(indutnyCurve, pub) { + var keyPair = indutnyCurve.keyPair({ pub: pub }); + if (keyPair.validate().result !== true) { + throw new Error('Invalid elliptic public key'); + } + return keyPair; } -KeyPair.prototype.sign = function () { - var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(message, hash_algo, hashed) { - var signature, digest; - return _regenerator2.default.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!(message && !message.locked)) { - _context.next = 19; - break; - } +var ellipticPromise = void 0; - _context.next = 3; - return _webStreamTools2.default.readToEnd(message); - - case 3: - message = _context.sent; - - if (!(this.curve.web && _util2.default.getWebCrypto())) { - _context.next = 17; - break; - } - - _context.prev = 5; - _context.next = 8; - return webSign(this.curve, hash_algo, message, this.keyPair); - - case 8: - signature = _context.sent; - return _context.abrupt('return', signature); - - case 12: - _context.prev = 12; - _context.t0 = _context['catch'](5); - - _util2.default.print_debug("Browser did not support signing: " + _context.t0.message); - - case 15: - _context.next = 19; - break; - - case 17: - if (!(this.curve.node && _util2.default.getNodeCrypto())) { - _context.next = 19; - break; - } - - return _context.abrupt('return', nodeSign(this.curve, hash_algo, message, this.keyPair)); - - case 19: - digest = typeof hash_algo === 'undefined' ? message : hashed; - return _context.abrupt('return', this.keyPair.sign(digest)); - - case 21: - case 'end': - return _context.stop(); - } - } - }, _callee, this, [[5, 12]]); - })); - - return function (_x, _x2, _x3) { - return _ref.apply(this, arguments); - }; -}(); - -KeyPair.prototype.verify = function () { - var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(message, signature, hash_algo, hashed) { - var result, digest; - return _regenerator2.default.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (!(message && !message.locked)) { - _context2.next = 19; - break; - } - - _context2.next = 3; - return _webStreamTools2.default.readToEnd(message); - - case 3: - message = _context2.sent; - - if (!(this.curve.web && _util2.default.getWebCrypto())) { - _context2.next = 17; - break; - } - - _context2.prev = 5; - _context2.next = 8; - return webVerify(this.curve, hash_algo, signature, message, this.keyPair.getPublic()); - - case 8: - result = _context2.sent; - return _context2.abrupt('return', result); - - case 12: - _context2.prev = 12; - _context2.t0 = _context2['catch'](5); - - _util2.default.print_debug("Browser did not support signing: " + _context2.t0.message); - - case 15: - _context2.next = 19; - break; - - case 17: - if (!(this.curve.node && _util2.default.getNodeCrypto())) { - _context2.next = 19; - break; - } - - return _context2.abrupt('return', nodeVerify(this.curve, hash_algo, signature, message, this.keyPair.getPublic())); - - case 19: - digest = typeof hash_algo === 'undefined' ? message : hashed; - return _context2.abrupt('return', this.keyPair.verify(digest, signature)); - - case 21: - case 'end': - return _context2.stop(); - } - } - }, _callee2, this, [[5, 12]]); - })); - - return function (_x4, _x5, _x6, _x7) { - return _ref2.apply(this, arguments); - }; -}(); - -KeyPair.prototype.derive = function (pub) { - if (this.keyType === _enums2.default.publicKey.eddsa) { - throw new Error('Key can only be used for EdDSA'); +function loadElliptic() { + if (!_config2.default.external_indutny_elliptic) { + return _dereq_('elliptic'); } - return this.keyPair.derive(pub.keyPair.getPublic()); -}; - -KeyPair.prototype.getPublic = function () { - var compact = this.curve.curve.curve.type === 'edwards' || this.curve.curve.curve.type === 'mont'; - return this.keyPair.getPublic('array', compact); -}; - -KeyPair.prototype.getPrivate = function () { - if (this.curve.keyType === _enums2.default.publicKey.eddsa) { - return this.keyPair.getSecret(); + if (_util2.default.detectNode()) { + // eslint-disable-next-line + return _dereq_(_config2.default.indutny_elliptic_path); } - return this.keyPair.getPrivate().toArray(); -}; + if (!ellipticPromise) { + ellipticPromise = loadEllipticPromise().catch(function (e) { + ellipticPromise = undefined; + throw e; + }); + } + return ellipticPromise; +} -exports.default = KeyPair; -var asn1 = nodeCrypto ? _dereq_('asn1.js') : undefined; - -var ECDSASignature = nodeCrypto ? asn1.define('ECDSASignature', function () { - this.seq().obj(this.key('r').int(), this.key('s').int()); -}) : undefined; - -var ECPrivateKey = nodeCrypto ? asn1.define('ECPrivateKey', function () { - this.seq().obj(this.key('version').int(), this.key('privateKey').octstr(), this.key('parameters').explicit(0).optional().any(), this.key('publicKey').explicit(1).optional().bitstr()); -}) : undefined; - -var AlgorithmIdentifier = nodeCrypto ? asn1.define('AlgorithmIdentifier', function () { - this.seq().obj(this.key('algorithm').objid(), this.key('parameters').optional().any()); -}) : undefined; - -var SubjectPublicKeyInfo = nodeCrypto ? asn1.define('SubjectPublicKeyInfo', function () { - this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr()); -}) : undefined; - -},{"../../../enums":384,"../../../util":423,"./curves":371,"asn1.js":"asn1.js","babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"bn.js":44,"web-stream-tools":345}],377:[function(_dereq_,module,exports){ +},{"../../../config":350,"../../../lightweight_helper":396,"../../../util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"elliptic":287}],377:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -38968,26 +39082,17 @@ var _util = _dereq_('../../util'); var _util2 = _interopRequireDefault(_util); +var _pkcs = _dereq_('../pkcs1'); + +var _pkcs2 = _interopRequireDefault(_pkcs); + +var _enums = _dereq_('../../enums'); + +var _enums2 = _interopRequireDefault(_enums); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// Helper for IE11 KeyOperation objects -function promisifyIE11Op(keyObj, err) { - if (typeof keyObj.then !== 'function') { - // IE11 KeyOperation - return new _promise2.default(function (resolve, reject) { - keyObj.onerror = function () { - reject(new Error(err)); - }; - keyObj.oncomplete = function (e) { - resolve(e.target.result); - }; - }); - } - return keyObj; -} - -/* eslint-disable no-invalid-this */ -// GPG4Browsers - An OpenPGP implementation in javascript +var webCrypto = _util2.default.getWebCrypto(); // GPG4Browsers - An OpenPGP implementation in javascript // Copyright (C) 2011 Recurity Labs GmbH // // This library is free software; you can redistribute it and/or @@ -39014,8 +39119,28 @@ function promisifyIE11Op(keyObj, err) { * @module crypto/public_key/rsa */ -var RSAPrivateKey = _util2.default.detectNode() ? _dereq_('asn1.js').define('RSAPrivateKey', function () { - this.seq().obj( // used for native NodeJS keygen +var nodeCrypto = _util2.default.getNodeCrypto(); +var asn1 = nodeCrypto ? _dereq_('asn1.js') : undefined; + +// Helper for IE11 KeyOperation objects +function promisifyIE11Op(keyObj, err) { + if (typeof keyObj.then !== 'function') { + // IE11 KeyOperation + return new _promise2.default(function (resolve, reject) { + keyObj.onerror = function () { + reject(new Error(err)); + }; + keyObj.oncomplete = function (e) { + resolve(e.target.result); + }; + }); + } + return keyObj; +} + +/* eslint-disable no-invalid-this */ +var RSAPrivateKey = _util2.default.detectNode() ? asn1.define('RSAPrivateKey', function () { + this.seq().obj( // used for native NodeJS crypto this.key('version').int(), // 0 this.key('modulus').int(), // n this.key('publicExponent').int(), // e @@ -39027,44 +39152,82 @@ var RSAPrivateKey = _util2.default.detectNode() ? _dereq_('asn1.js').define('RSA this.key('coefficient').int() // u ); }) : undefined; + +var RSAPublicKey = _util2.default.detectNode() ? asn1.define('RSAPubliceKey', function () { + this.seq().obj( // used for native NodeJS crypto + this.key('modulus').int(), // n + this.key('publicExponent').int() // e + ); +}) : undefined; /* eslint-enable no-invalid-this */ exports.default = { /** Create signature - * @param {BN} m message - * @param {BN} n RSA public modulus - * @param {BN} e RSA public exponent - * @param {BN} d RSA private exponent - * @returns {BN} RSA Signature + * @param {module:enums.hash} hash_algo Hash algorithm + * @param {Uint8Array} data message + * @param {Uint8Array} n RSA public modulus + * @param {Uint8Array} e RSA public exponent + * @param {Uint8Array} d RSA private exponent + * @param {Uint8Array} p RSA private prime p + * @param {Uint8Array} q RSA private prime q + * @param {Uint8Array} u RSA private coefficient + * @param {Uint8Array} hashed hashed message + * @returns {Uint8Array} RSA Signature * @async */ sign: function () { - var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(m, n, e, d) { - var nred; + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(hash_algo, data, n, e, d, p, q, u, hashed) { return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: - if (!(n.cmp(m) <= 0)) { - _context.next = 2; + if (!(data && !_util2.default.isStream(data))) { + _context.next = 15; break; } - throw new Error('Message size cannot exceed modulus size'); + if (!webCrypto) { + _context.next = 13; + break; + } - case 2: - nred = new _bn2.default.red(n); - return _context.abrupt('return', m.toRed(nred).redPow(d).toArrayLike(Uint8Array, 'be', n.byteLength())); + _context.prev = 2; + _context.next = 5; + return this.webSign(_enums2.default.read(_enums2.default.webHash, hash_algo), data, n, e, d, p, q, u); - case 4: + case 5: + return _context.abrupt('return', _context.sent); + + case 8: + _context.prev = 8; + _context.t0 = _context['catch'](2); + + _util2.default.print_debug_error(_context.t0); + + case 11: + _context.next = 15; + break; + + case 13: + if (!nodeCrypto) { + _context.next = 15; + break; + } + + return _context.abrupt('return', this.nodeSign(hash_algo, data, n, e, d, p, q, u)); + + case 15: + return _context.abrupt('return', this.bnSign(hash_algo, n, d, hashed)); + + case 16: case 'end': return _context.stop(); } } - }, _callee, this); + }, _callee, this, [[2, 8]]); })); - function sign(_x, _x2, _x3, _x4) { + function sign(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8, _x9) { return _ref.apply(this, arguments); } @@ -39073,39 +39236,68 @@ exports.default = { /** * Verify signature - * @param {BN} s signature - * @param {BN} n RSA public modulus - * @param {BN} e RSA public exponent - * @returns {BN} + * @param {module:enums.hash} hash_algo Hash algorithm + * @param {Uint8Array} data message + * @param {Uint8Array} s signature + * @param {Uint8Array} n RSA public modulus + * @param {Uint8Array} e RSA public exponent + * @param {Uint8Array} hashed hashed message + * @returns {Boolean} * @async */ verify: function () { - var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(s, n, e) { - var nred; + var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(hash_algo, data, s, n, e, hashed) { return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: - if (!(n.cmp(s) <= 0)) { - _context2.next = 2; + if (!(data && !_util2.default.isStream(data))) { + _context2.next = 15; break; } - throw new Error('Signature size cannot exceed modulus size'); + if (!webCrypto) { + _context2.next = 13; + break; + } - case 2: - nred = new _bn2.default.red(n); - return _context2.abrupt('return', s.toRed(nred).redPow(e).toArrayLike(Uint8Array, 'be', n.byteLength())); + _context2.prev = 2; + _context2.next = 5; + return this.webVerify(_enums2.default.read(_enums2.default.webHash, hash_algo), data, s, n, e); - case 4: + case 5: + return _context2.abrupt('return', _context2.sent); + + case 8: + _context2.prev = 8; + _context2.t0 = _context2['catch'](2); + + _util2.default.print_debug_error(_context2.t0); + + case 11: + _context2.next = 15; + break; + + case 13: + if (!nodeCrypto) { + _context2.next = 15; + break; + } + + return _context2.abrupt('return', this.nodeVerify(hash_algo, data, s, n, e)); + + case 15: + return _context2.abrupt('return', this.bnVerify(hash_algo, s, n, e, hashed)); + + case 16: case 'end': return _context2.stop(); } } - }, _callee2, this); + }, _callee2, this, [[2, 8]]); })); - function verify(_x5, _x6, _x7) { + function verify(_x10, _x11, _x12, _x13, _x14, _x15) { return _ref2.apply(this, arguments); } @@ -39146,7 +39338,7 @@ exports.default = { }, _callee3, this); })); - function encrypt(_x8, _x9, _x10) { + function encrypt(_x16, _x17, _x18) { return _ref3.apply(this, arguments); } @@ -39161,7 +39353,7 @@ exports.default = { * @param {BN} d RSA private exponent * @param {BN} p RSA private prime p * @param {BN} q RSA private prime q - * @param {BN} u RSA private inverse of prime q + * @param {BN} u RSA private coefficient * @returns {BN} RSA Plaintext * @async */ @@ -39227,7 +39419,7 @@ exports.default = { }, _callee4, this); })); - function decrypt(_x11, _x12, _x13, _x14, _x15, _x16, _x17) { + function decrypt(_x19, _x20, _x21, _x22, _x23, _x24, _x25) { return _ref4.apply(this, arguments); } @@ -39249,7 +39441,7 @@ exports.default = { */ generate: function () { var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(B, E) { - var key, webCrypto, nodeCrypto, keyPair, keyGenOpt, jwk, opts, prv, p, q, _ref6, phi; + var key, keyPair, keyGenOpt, jwk, opts, prv, q, p, _ref6, phi; return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { @@ -39258,13 +39450,11 @@ exports.default = { key = void 0; E = new _bn2.default(E, 16); - webCrypto = _util2.default.getWebCryptoAll(); - nodeCrypto = _util2.default.getNodeCrypto(); // Native RSA keygen using Web Crypto if (!webCrypto) { - _context5.next = 38; + _context5.next = 36; break; } @@ -39272,7 +39462,7 @@ exports.default = { keyGenOpt = void 0; if (!(window.crypto && window.crypto.subtle || window.msCrypto)) { - _context5.next = 15; + _context5.next = 13; break; } @@ -39286,17 +39476,17 @@ exports.default = { } }; keyPair = webCrypto.generateKey(keyGenOpt, true, ['sign', 'verify']); - _context5.next = 12; + _context5.next = 10; return promisifyIE11Op(keyPair, 'Error generating RSA key pair.'); - case 12: + case 10: keyPair = _context5.sent; - _context5.next = 23; + _context5.next = 21; break; - case 15: + case 13: if (!(window.crypto && window.crypto.webkitSubtle)) { - _context5.next = 22; + _context5.next = 20; break; } @@ -39309,26 +39499,26 @@ exports.default = { name: 'SHA-1' // not required for actual RSA keys, but for crypto api 'sign' and 'verify' } }; - _context5.next = 19; + _context5.next = 17; return webCrypto.generateKey(keyGenOpt, true, ['encrypt', 'decrypt']); - case 19: + case 17: keyPair = _context5.sent; - _context5.next = 23; + _context5.next = 21; break; - case 22: + case 20: throw new Error('Unknown WebCrypto implementation'); - case 23: + case 21: // export the generated keys as JsonWebKey (JWK) // https://tools.ietf.org/html/draft-ietf-jose-json-web-key-33 jwk = webCrypto.exportKey('jwk', keyPair.privateKey); - _context5.next = 26; + _context5.next = 24; return promisifyIE11Op(jwk, 'Error exporting RSA key pair.'); - case 26: + case 24: jwk = _context5.sent; @@ -39336,20 +39526,21 @@ exports.default = { if (jwk instanceof ArrayBuffer) { jwk = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(jwk))); } - // map JWK parameters to BN key = {}; key.n = new _bn2.default(_util2.default.b64_to_Uint8Array(jwk.n)); key.e = E; key.d = new _bn2.default(_util2.default.b64_to_Uint8Array(jwk.d)); - key.p = new _bn2.default(_util2.default.b64_to_Uint8Array(jwk.p)); - key.q = new _bn2.default(_util2.default.b64_to_Uint8Array(jwk.q)); - key.u = key.p.invm(key.q); + // switch p and q + key.p = new _bn2.default(_util2.default.b64_to_Uint8Array(jwk.q)); + key.q = new _bn2.default(_util2.default.b64_to_Uint8Array(jwk.p)); + // Since p and q are switched in places, we could keep u + key.u = new _bn2.default(_util2.default.b64_to_Uint8Array(jwk.qi)); return _context5.abrupt('return', key); - case 38: + case 36: if (!(nodeCrypto && nodeCrypto.generateKeyPair && RSAPrivateKey)) { - _context5.next = 44; + _context5.next = 42; break; } @@ -39359,7 +39550,7 @@ exports.default = { publicKeyEncoding: { type: 'pkcs1', format: 'der' }, privateKeyEncoding: { type: 'pkcs1', format: 'der' } }; - _context5.next = 42; + _context5.next = 40; return new _promise2.default(function (resolve, reject) { return nodeCrypto.generateKeyPair('rsa', opts, function (err, _, der) { if (err) { @@ -39370,34 +39561,33 @@ exports.default = { }); }); - case 42: + case 40: prv = _context5.sent; return _context5.abrupt('return', { n: prv.modulus, e: prv.publicExponent, d: prv.privateExponent, - p: prv.prime1, - q: prv.prime2, - dp: prv.exponent1, - dq: prv.exponent2, - // re-compute `u` because PGP spec differs from DER spec, DER: `(inverse of q) mod p`, PGP: `(inverse of p) mod q` - u: prv.prime1.invm(prv.prime2) // PGP type of u + // switch p and q + p: prv.prime2, + q: prv.prime1, + // Since p and q are switched in places, we could keep u + u: prv.coefficient // PGP type of u }); - case 44: - _context5.next = 46; + case 42: + _context5.next = 44; return _prime2.default.randomProbablePrime(B - (B >> 1), E, 40); - case 46: - p = _context5.sent; - _context5.next = 49; + case 44: + q = _context5.sent; + _context5.next = 47; return _prime2.default.randomProbablePrime(B >> 1, E, 40); - case 49: - q = _context5.sent; + case 47: + p = _context5.sent; - if (p.cmp(q) < 0) { + if (q.cmp(p) < 0) { _ref6 = [q, p]; p = _ref6[0]; q = _ref6[1]; @@ -39415,7 +39605,7 @@ exports.default = { u: p.invm(q) }); - case 53: + case 51: case 'end': return _context5.stop(); } @@ -39423,17 +39613,349 @@ exports.default = { }, _callee5, this); })); - function generate(_x18, _x19) { + function generate(_x26, _x27) { return _ref5.apply(this, arguments); } return generate; }(), + bnSign: function () { + var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(hash_algo, n, d, hashed) { + var m, nred; + return _regenerator2.default.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + n = new _bn2.default(n); + _context6.t0 = _bn2.default; + _context6.next = 4; + return _pkcs2.default.emsa.encode(hash_algo, hashed, n.byteLength()); + + case 4: + _context6.t1 = _context6.sent; + m = new _context6.t0(_context6.t1, 16); + + d = new _bn2.default(d); + + if (!(n.cmp(m) <= 0)) { + _context6.next = 9; + break; + } + + throw new Error('Message size cannot exceed modulus size'); + + case 9: + nred = new _bn2.default.red(n); + return _context6.abrupt('return', m.toRed(nred).redPow(d).toArrayLike(Uint8Array, 'be', n.byteLength())); + + case 11: + case 'end': + return _context6.stop(); + } + } + }, _callee6, this); + })); + + function bnSign(_x28, _x29, _x30, _x31) { + return _ref7.apply(this, arguments); + } + + return bnSign; + }(), + + webSign: function () { + var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(hash_name, data, n, e, d, p, q, u) { + var jwk, algo, key; + return _regenerator2.default.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + // OpenPGP keys require that p < q, and Safari Web Crypto requires that p > q. + // We swap them in privateToJwk, so it usually works out, but nevertheless, + // not all OpenPGP keys are compatible with this requirement. + // OpenPGP.js used to generate RSA keys the wrong way around (p > q), and still + // does if the underlying Web Crypto does so (e.g. old MS Edge 50% of the time). + jwk = privateToJwk(n, e, d, p, q, u); + algo = { + name: "RSASSA-PKCS1-v1_5", + hash: { name: hash_name } + }; + _context7.next = 4; + return webCrypto.importKey("jwk", jwk, algo, false, ["sign"]); + + case 4: + key = _context7.sent; + _context7.t0 = Uint8Array; + _context7.next = 8; + return webCrypto.sign({ "name": "RSASSA-PKCS1-v1_5", "hash": hash_name }, key, data); + + case 8: + _context7.t1 = _context7.sent; + return _context7.abrupt('return', new _context7.t0(_context7.t1)); + + case 10: + case 'end': + return _context7.stop(); + } + } + }, _callee7, this); + })); + + function webSign(_x32, _x33, _x34, _x35, _x36, _x37, _x38, _x39) { + return _ref8.apply(this, arguments); + } + + return webSign; + }(), + + nodeSign: function () { + var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(hash_algo, data, n, e, d, p, q, u) { + var pBNum, qBNum, dBNum, dq, dp, sign, keyObject, der, pem; + return _regenerator2.default.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + pBNum = new _bn2.default(p); + qBNum = new _bn2.default(q); + dBNum = new _bn2.default(d); + dq = dBNum.mod(qBNum.subn(1)); // d mod (q-1) + + dp = dBNum.mod(pBNum.subn(1)); // d mod (p-1) + + sign = nodeCrypto.createSign(_enums2.default.read(_enums2.default.hash, hash_algo)); + + sign.write(data); + sign.end(); + keyObject = { + version: 0, + modulus: new _bn2.default(n), + publicExponent: new _bn2.default(e), + privateExponent: new _bn2.default(d), + // switch p and q + prime1: new _bn2.default(q), + prime2: new _bn2.default(p), + // switch dp and dq + exponent1: dq, + exponent2: dp, + coefficient: new _bn2.default(u) + }; + + if (!(typeof nodeCrypto.createPrivateKey !== 'undefined')) { + _context8.next = 12; + break; + } + + //from version 11.6.0 Node supports der encoded key objects + der = RSAPrivateKey.encode(keyObject, 'der'); + return _context8.abrupt('return', new Uint8Array(sign.sign({ key: der, format: 'der', type: 'pkcs1' }))); + + case 12: + pem = RSAPrivateKey.encode(keyObject, 'pem', { + label: 'RSA PRIVATE KEY' + }); + return _context8.abrupt('return', new Uint8Array(sign.sign(pem))); + + case 14: + case 'end': + return _context8.stop(); + } + } + }, _callee8, this); + })); + + function nodeSign(_x40, _x41, _x42, _x43, _x44, _x45, _x46, _x47) { + return _ref9.apply(this, arguments); + } + + return nodeSign; + }(), + + bnVerify: function () { + var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(hash_algo, s, n, e, hashed) { + var nred, EM1, EM2; + return _regenerator2.default.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + n = new _bn2.default(n); + s = new _bn2.default(s); + e = new _bn2.default(e); + + if (!(n.cmp(s) <= 0)) { + _context9.next = 5; + break; + } + + throw new Error('Signature size cannot exceed modulus size'); + + case 5: + nred = new _bn2.default.red(n); + EM1 = s.toRed(nred).redPow(e).toArrayLike(Uint8Array, 'be', n.byteLength()); + _context9.next = 9; + return _pkcs2.default.emsa.encode(hash_algo, hashed, n.byteLength()); + + case 9: + EM2 = _context9.sent; + return _context9.abrupt('return', _util2.default.Uint8Array_to_hex(EM1) === EM2); + + case 11: + case 'end': + return _context9.stop(); + } + } + }, _callee9, this); + })); + + function bnVerify(_x48, _x49, _x50, _x51, _x52) { + return _ref10.apply(this, arguments); + } + + return bnVerify; + }(), + + webVerify: function () { + var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(hash_name, data, s, n, e) { + var jwk, key; + return _regenerator2.default.wrap(function _callee10$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + jwk = publicToJwk(n, e); + _context10.next = 3; + return webCrypto.importKey("jwk", jwk, { + name: "RSASSA-PKCS1-v1_5", + hash: { name: hash_name } + }, false, ["verify"]); + + case 3: + key = _context10.sent; + return _context10.abrupt('return', webCrypto.verify({ "name": "RSASSA-PKCS1-v1_5", "hash": hash_name }, key, s, data)); + + case 5: + case 'end': + return _context10.stop(); + } + } + }, _callee10, this); + })); + + function webVerify(_x53, _x54, _x55, _x56, _x57) { + return _ref11.apply(this, arguments); + } + + return webVerify; + }(), + + nodeVerify: function () { + var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(hash_algo, data, s, n, e) { + var verify, keyObject, key, der; + return _regenerator2.default.wrap(function _callee11$(_context11) { + while (1) { + switch (_context11.prev = _context11.next) { + case 0: + verify = nodeCrypto.createVerify(_enums2.default.read(_enums2.default.hash, hash_algo)); + + verify.write(data); + verify.end(); + keyObject = { + modulus: new _bn2.default(n), + publicExponent: new _bn2.default(e) + }; + key = void 0; + + if (typeof nodeCrypto.createPrivateKey !== 'undefined') { + //from version 11.6.0 Node supports der encoded key objects + der = RSAPublicKey.encode(keyObject, 'der'); + + key = { key: der, format: 'der', type: 'pkcs1' }; + } else { + key = RSAPublicKey.encode(keyObject, 'pem', { + label: 'RSA PUBLIC KEY' + }); + } + _context11.prev = 6; + _context11.next = 9; + return verify.verify(key, s); + + case 9: + return _context11.abrupt('return', _context11.sent); + + case 12: + _context11.prev = 12; + _context11.t0 = _context11['catch'](6); + return _context11.abrupt('return', false); + + case 15: + case 'end': + return _context11.stop(); + } + } + }, _callee11, this, [[6, 12]]); + })); + + function nodeVerify(_x58, _x59, _x60, _x61, _x62) { + return _ref12.apply(this, arguments); + } + + return nodeVerify; + }(), + prime: _prime2.default }; -},{"../../config":350,"../../util":423,"../random":380,"./prime":378,"asn1.js":"asn1.js","babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"bn.js":44}],380:[function(_dereq_,module,exports){ +/** Convert Openpgp private key params to jwk key according to + * @link https://tools.ietf.org/html/rfc7517 + * @param {String} hash_algo + * @param {Uint8Array} n + * @param {Uint8Array} e + * @param {Uint8Array} d + * @param {Uint8Array} p + * @param {Uint8Array} q + * @param {Uint8Array} u + */ + +function privateToJwk(n, e, d, p, q, u) { + var pBNum = new _bn2.default(p); + var qBNum = new _bn2.default(q); + var dBNum = new _bn2.default(d); + + var dq = dBNum.mod(qBNum.subn(1)); // d mod (q-1) + var dp = dBNum.mod(pBNum.subn(1)); // d mod (p-1) + dp = dp.toArrayLike(Uint8Array); + dq = dq.toArrayLike(Uint8Array); + return { + kty: 'RSA', + n: _util2.default.Uint8Array_to_b64(n, true), + e: _util2.default.Uint8Array_to_b64(e, true), + d: _util2.default.Uint8Array_to_b64(d, true), + // switch p and q + p: _util2.default.Uint8Array_to_b64(q, true), + q: _util2.default.Uint8Array_to_b64(p, true), + // switch dp and dq + dp: _util2.default.Uint8Array_to_b64(dq, true), + dq: _util2.default.Uint8Array_to_b64(dp, true), + qi: _util2.default.Uint8Array_to_b64(u, true), + ext: true + }; +} + +/** Convert Openpgp key public params to jwk key according to + * @link https://tools.ietf.org/html/rfc7517 + * @param {String} hash_algo + * @param {Uint8Array} n + * @param {Uint8Array} e + */ +function publicToJwk(n, e) { + return { + kty: 'RSA', + n: _util2.default.Uint8Array_to_b64(n, true), + e: _util2.default.Uint8Array_to_b64(e, true), + ext: true + }; +} + +},{"../../config":350,"../../enums":384,"../../util":429,"../pkcs1":367,"../random":380,"./prime":378,"asn1.js":"asn1.js","babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"bn.js":44}],380:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -39507,12 +40029,12 @@ exports.default = { case 0: buf = new Uint8Array(length); - if (!(typeof window !== 'undefined' && window.crypto && window.crypto.getRandomValues)) { + if (!(typeof crypto !== 'undefined' && crypto.getRandomValues)) { _context.next = 5; break; } - window.crypto.getRandomValues(buf); + crypto.getRandomValues(buf); _context.next = 20; break; @@ -39734,7 +40256,7 @@ RandomBuffer.prototype.get = function () { }; }(); -},{"../util":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/typeof":42,"babel-runtime/regenerator":43,"bn.js":44,"crypto":"crypto"}],381:[function(_dereq_,module,exports){ +},{"../util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/typeof":42,"babel-runtime/regenerator":43,"bn.js":44,"crypto":"crypto"}],381:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -39749,10 +40271,6 @@ var _asyncToGenerator2 = _dereq_('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); -var _bn = _dereq_('bn.js'); - -var _bn2 = _interopRequireDefault(_bn); - var _crypto = _dereq_('./crypto'); var _crypto2 = _interopRequireDefault(_crypto); @@ -39761,10 +40279,6 @@ var _public_key = _dereq_('./public_key'); var _public_key2 = _interopRequireDefault(_public_key); -var _pkcs = _dereq_('./pkcs1'); - -var _pkcs2 = _interopRequireDefault(_pkcs); - var _enums = _dereq_('../enums'); var _enums2 = _interopRequireDefault(_enums); @@ -39777,10 +40291,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de /** * @fileoverview Provides functions for asymmetric signing and signature verification - * @requires bn.js * @requires crypto/crypto * @requires crypto/public_key - * @requires crypto/pkcs1 * @requires enums * @requires util * @module crypto/signature @@ -39803,7 +40315,7 @@ exports.default = { */ verify: function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(algo, hash_algo, msg_MPIs, pub_MPIs, data, hashed) { - var types, m, n, e, EM, EM2, r, s, p, q, g, y, oid, signature, Q, _oid, _signature, _Q; + var types, m, n, e, r, s, p, q, g, y, oid, signature, Q, _oid, _signature, _Q; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { @@ -39820,26 +40332,16 @@ exports.default = { case 3: _context.t0 = algo; - _context.next = _context.t0 === _enums2.default.publicKey.rsa_encrypt_sign ? 6 : _context.t0 === _enums2.default.publicKey.rsa_encrypt ? 6 : _context.t0 === _enums2.default.publicKey.rsa_sign ? 6 : _context.t0 === _enums2.default.publicKey.dsa ? 16 : _context.t0 === _enums2.default.publicKey.ecdsa ? 23 : _context.t0 === _enums2.default.publicKey.eddsa ? 27 : 31; + _context.next = _context.t0 === _enums2.default.publicKey.rsa_encrypt_sign ? 6 : _context.t0 === _enums2.default.publicKey.rsa_encrypt ? 6 : _context.t0 === _enums2.default.publicKey.rsa_sign ? 6 : _context.t0 === _enums2.default.publicKey.dsa ? 10 : _context.t0 === _enums2.default.publicKey.ecdsa ? 17 : _context.t0 === _enums2.default.publicKey.eddsa ? 21 : 25; break; case 6: - m = msg_MPIs[0].toBN(); - n = pub_MPIs[0].toBN(); - e = pub_MPIs[1].toBN(); - _context.next = 11; - return _public_key2.default.rsa.verify(m, n, e); + m = msg_MPIs[0].toUint8Array(); + n = pub_MPIs[0].toUint8Array(); + e = pub_MPIs[1].toUint8Array(); + return _context.abrupt('return', _public_key2.default.rsa.verify(hash_algo, data, m, n, e, hashed)); - case 11: - EM = _context.sent; - _context.next = 14; - return _pkcs2.default.emsa.encode(hash_algo, hashed, n.byteLength()); - - case 14: - EM2 = _context.sent; - return _context.abrupt('return', _util2.default.Uint8Array_to_hex(EM) === EM2); - - case 16: + case 10: r = msg_MPIs[0].toBN(); s = msg_MPIs[1].toBN(); p = pub_MPIs[0].toBN(); @@ -39848,13 +40350,13 @@ exports.default = { y = pub_MPIs[3].toBN(); return _context.abrupt('return', _public_key2.default.dsa.verify(hash_algo, r, s, hashed, g, p, q, y)); - case 23: + case 17: oid = pub_MPIs[0]; signature = { r: msg_MPIs[0].toUint8Array(), s: msg_MPIs[1].toUint8Array() }; Q = pub_MPIs[1].toUint8Array(); return _context.abrupt('return', _public_key2.default.elliptic.ecdsa.verify(oid, hash_algo, signature, data, Q, hashed)); - case 27: + case 21: _oid = pub_MPIs[0]; // EdDSA signature params are expected in little-endian format @@ -39865,10 +40367,10 @@ exports.default = { _Q = pub_MPIs[1].toUint8Array('be', 33); return _context.abrupt('return', _public_key2.default.elliptic.eddsa.verify(_oid, hash_algo, _signature, data, _Q, hashed)); - case 31: + case 25: throw new Error('Invalid signature algorithm.'); - case 32: + case 26: case 'end': return _context.stop(); } @@ -39898,7 +40400,7 @@ exports.default = { */ sign: function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(algo, hash_algo, key_params, data, hashed) { - var types, n, e, d, m, signature, p, q, g, x, _signature2, oid, _d, _signature3, _oid2, _d2, _signature4; + var types, n, e, d, p, q, u, signature, _p, _q, g, x, _signature2, oid, Q, _d, _signature3, _oid2, _Q2, _d2, _signature4; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { @@ -39915,57 +40417,55 @@ exports.default = { case 3: _context2.t0 = algo; - _context2.next = _context2.t0 === _enums2.default.publicKey.rsa_encrypt_sign ? 6 : _context2.t0 === _enums2.default.publicKey.rsa_encrypt ? 6 : _context2.t0 === _enums2.default.publicKey.rsa_sign ? 6 : _context2.t0 === _enums2.default.publicKey.dsa ? 18 : _context2.t0 === _enums2.default.publicKey.elgamal ? 26 : _context2.t0 === _enums2.default.publicKey.ecdsa ? 27 : _context2.t0 === _enums2.default.publicKey.eddsa ? 33 : 39; + _context2.next = _context2.t0 === _enums2.default.publicKey.rsa_encrypt_sign ? 6 : _context2.t0 === _enums2.default.publicKey.rsa_encrypt ? 6 : _context2.t0 === _enums2.default.publicKey.rsa_sign ? 6 : _context2.t0 === _enums2.default.publicKey.dsa ? 16 : _context2.t0 === _enums2.default.publicKey.elgamal ? 24 : _context2.t0 === _enums2.default.publicKey.ecdsa ? 25 : _context2.t0 === _enums2.default.publicKey.eddsa ? 32 : 39; break; case 6: - n = key_params[0].toBN(); - e = key_params[1].toBN(); - d = key_params[2].toBN(); - _context2.t1 = _bn2.default; - _context2.next = 12; - return _pkcs2.default.emsa.encode(hash_algo, hashed, n.byteLength()); + n = key_params[0].toUint8Array(); + e = key_params[1].toUint8Array(); + d = key_params[2].toUint8Array(); + p = key_params[3].toUint8Array(); + q = key_params[4].toUint8Array(); + u = key_params[5].toUint8Array(); + _context2.next = 14; + return _public_key2.default.rsa.sign(hash_algo, data, n, e, d, p, q, u, hashed); - case 12: - _context2.t2 = _context2.sent; - m = new _context2.t1(_context2.t2, 16); - _context2.next = 16; - return _public_key2.default.rsa.sign(m, n, e, d); - - case 16: + case 14: signature = _context2.sent; return _context2.abrupt('return', _util2.default.Uint8Array_to_MPI(signature)); - case 18: - p = key_params[0].toBN(); - q = key_params[1].toBN(); + case 16: + _p = key_params[0].toBN(); + _q = key_params[1].toBN(); g = key_params[2].toBN(); x = key_params[4].toBN(); - _context2.next = 24; - return _public_key2.default.dsa.sign(hash_algo, hashed, g, p, q, x); + _context2.next = 22; + return _public_key2.default.dsa.sign(hash_algo, hashed, g, _p, _q, x); - case 24: + case 22: _signature2 = _context2.sent; return _context2.abrupt('return', _util2.default.concatUint8Array([_util2.default.Uint8Array_to_MPI(_signature2.r), _util2.default.Uint8Array_to_MPI(_signature2.s)])); - case 26: + case 24: throw new Error('Signing with Elgamal is not defined in the OpenPGP standard.'); - case 27: + case 25: oid = key_params[0]; + Q = key_params[1].toUint8Array(); _d = key_params[2].toUint8Array(); - _context2.next = 31; - return _public_key2.default.elliptic.ecdsa.sign(oid, hash_algo, data, _d, hashed); + _context2.next = 30; + return _public_key2.default.elliptic.ecdsa.sign(oid, hash_algo, data, Q, _d, hashed); - case 31: + case 30: _signature3 = _context2.sent; return _context2.abrupt('return', _util2.default.concatUint8Array([_util2.default.Uint8Array_to_MPI(_signature3.r), _util2.default.Uint8Array_to_MPI(_signature3.s)])); - case 33: + case 32: _oid2 = key_params[0]; + _Q2 = key_params[1].toUint8Array('be', 33); _d2 = key_params[2].toUint8Array('be', 32); _context2.next = 37; - return _public_key2.default.elliptic.eddsa.sign(_oid2, hash_algo, data, _d2, hashed); + return _public_key2.default.elliptic.eddsa.sign(_oid2, hash_algo, data, _Q2, _d2, hashed); case 37: _signature4 = _context2.sent; @@ -39990,7 +40490,7 @@ exports.default = { }() }; -},{"../enums":384,"../util":423,"./crypto":360,"./pkcs1":367,"./public_key":377,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"bn.js":44}],382:[function(_dereq_,module,exports){ +},{"../enums":384,"../util":429,"./crypto":360,"./public_key":377,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],382:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -40614,7 +41114,7 @@ exports.default = { decode: dearmor }; -},{"../config":350,"../enums.js":384,"../util":423,"./base64.js":383,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],383:[function(_dereq_,module,exports){ +},{"../config":350,"../enums.js":384,"../util":429,"./base64.js":383,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],383:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -41386,7 +41886,7 @@ exports.default = HKP; Object.defineProperty(exports, "__esModule", { value: true }); -exports.WKD = exports.HKP = exports.AsyncProxy = exports.Keyring = exports.crypto = exports.config = exports.enums = exports.armor = exports.stream = exports.OID = exports.KDFParams = exports.ECDHSymmetricKey = exports.Keyid = exports.S2K = exports.MPI = exports.packet = exports.util = exports.cleartext = exports.message = exports.signature = exports.key = exports.destroyWorker = exports.getWorker = exports.initWorker = exports.decryptSessionKeys = exports.encryptSessionKey = exports.decryptKey = exports.revokeKey = exports.reformatKey = exports.generateKey = exports.verify = exports.sign = exports.decrypt = exports.encrypt = undefined; +exports.lightweight = exports.WKD = exports.HKP = exports.AsyncProxy = exports.Keyring = exports.crypto = exports.config = exports.enums = exports.armor = exports.stream = exports.OID = exports.KDFParams = exports.ECDHSymmetricKey = exports.Keyid = exports.S2K = exports.MPI = exports.packet = exports.util = exports.cleartext = exports.message = exports.signature = exports.key = exports.destroyWorker = exports.getWorker = exports.initWorker = exports.decryptSessionKeys = exports.encryptSessionKey = exports.decryptKey = exports.revokeKey = exports.reformatKey = exports.generateKey = exports.verify = exports.sign = exports.decrypt = exports.encrypt = undefined; var _openpgp = _dereq_('./openpgp'); @@ -41640,6 +42140,10 @@ var _cleartext = _dereq_('./cleartext'); var cleartextMod = _interopRequireWildcard(_cleartext); +var _lightweight_helper = _dereq_('./lightweight_helper'); + +var lightweightMod = _interopRequireWildcard(_lightweight_helper); + function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -41694,446 +42198,32 @@ var cleartext = exports.cleartext = cleartextMod; * @name module:openpgp.util */ -},{"./cleartext":348,"./config/config":349,"./crypto":365,"./encoding/armor":382,"./enums":384,"./hkp":385,"./key":387,"./keyring":388,"./message":391,"./openpgp":392,"./packet":396,"./signature":416,"./type/ecdh_symkey":417,"./type/kdf_params":418,"./type/keyid":419,"./type/mpi":420,"./type/oid":421,"./type/s2k":422,"./util":423,"./wkd":424,"./worker/async_proxy":425,"web-stream-tools":345}],387:[function(_dereq_,module,exports){ + +/** + * @see module:lightweight + */ +var lightweight = exports.lightweight = lightweightMod; + +},{"./cleartext":348,"./config/config":349,"./crypto":365,"./encoding/armor":382,"./enums":384,"./hkp":385,"./key":389,"./keyring":393,"./lightweight_helper":396,"./message":397,"./openpgp":398,"./packet":402,"./signature":422,"./type/ecdh_symkey":423,"./type/kdf_params":424,"./type/keyid":425,"./type/mpi":426,"./type/oid":427,"./type/s2k":428,"./util":429,"./wkd":430,"./worker/async_proxy":431,"web-stream-tools":345}],387:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); -exports.isAeadSupported = exports.getPreferredAlgo = exports.getPreferredHashAlgo = exports.reformat = exports.generate = exports.readArmored = exports.read = exports.createSignaturePacket = undefined; - -var _values = _dereq_('babel-runtime/core-js/object/values'); - -var _values2 = _interopRequireDefault(_values); - -var _getPrototypeOf = _dereq_('babel-runtime/core-js/object/get-prototype-of'); - -var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - -var _slicedToArray2 = _dereq_('babel-runtime/helpers/slicedToArray'); - -var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); - -var _assign = _dereq_('babel-runtime/core-js/object/assign'); - -var _assign2 = _interopRequireDefault(_assign); - -var _promise = _dereq_('babel-runtime/core-js/promise'); - -var _promise2 = _interopRequireDefault(_promise); +exports.readArmored = exports.read = exports.reformat = exports.generate = undefined; var _regenerator = _dereq_('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); +var _promise = _dereq_('babel-runtime/core-js/promise'); + +var _promise2 = _interopRequireDefault(_promise); + var _asyncToGenerator2 = _dereq_('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); -/** - * Returns the valid and non-expired signature that has the latest creation date, while ignoring signatures created in the future. - * @param {Array} signatures List of signatures - * @param {Date} date Use the given date instead of the current time - * @returns {Promise} The latest valid signature - * @async - */ -var getLatestValidSignature = function () { - var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(signatures, primaryKey, signatureType, dataToVerify) { - var date = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : new Date(); - var signature, i; - return _regenerator2.default.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - signature = void 0; - i = signatures.length - 1; - - case 2: - if (!(i >= 0)) { - _context.next = 16; - break; - } - - _context.t0 = (!signature || signatures[i].created >= signature.created) && - // check binding signature is not expired (ie, check for V4 expiration time) - !signatures[i].isExpired(date); - - if (!_context.t0) { - _context.next = 11; - break; - } - - _context.t1 = signatures[i].verified; - - if (_context.t1) { - _context.next = 10; - break; - } - - _context.next = 9; - return signatures[i].verify(primaryKey, signatureType, dataToVerify); - - case 9: - _context.t1 = _context.sent; - - case 10: - _context.t0 = _context.t1; - - case 11: - if (!_context.t0) { - _context.next = 13; - break; - } - - signature = signatures[i]; - - case 13: - i--; - _context.next = 2; - break; - - case 16: - return _context.abrupt('return', signature); - - case 17: - case 'end': - return _context.stop(); - } - } - }, _callee, this); - })); - - return function getLatestValidSignature(_x3, _x4, _x5, _x6) { - return _ref.apply(this, arguments); - }; -}(); - -/** - * Returns last created key or key by given keyId that is available for signing and verification - * @param {module:type/keyid} keyId, optional - * @param {Date} date (optional) use the given date for verification instead of the current time - * @param {Object} userId, optional user ID - * @returns {Promise} key or null if no signing key has been found - * @async - */ - - -/** - * Merges signatures from source[attr] to dest[attr] - * @private - * @param {Object} source - * @param {Object} dest - * @param {String} attr - * @param {Function} checkFn optional, signature only merged if true - */ -var mergeSignatures = function () { - var _ref20 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee20(source, dest, attr, checkFn) { - return _regenerator2.default.wrap(function _callee20$(_context20) { - while (1) { - switch (_context20.prev = _context20.next) { - case 0: - source = source[attr]; - - if (!source) { - _context20.next = 8; - break; - } - - if (dest[attr].length) { - _context20.next = 6; - break; - } - - dest[attr] = source; - _context20.next = 8; - break; - - case 6: - _context20.next = 8; - return _promise2.default.all(source.map(function () { - var _ref21 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee19(sourceSig) { - return _regenerator2.default.wrap(function _callee19$(_context19) { - while (1) { - switch (_context19.prev = _context19.next) { - case 0: - _context19.t1 = !sourceSig.isExpired(); - - if (!_context19.t1) { - _context19.next = 8; - break; - } - - _context19.t2 = !checkFn; - - if (_context19.t2) { - _context19.next = 7; - break; - } - - _context19.next = 6; - return checkFn(sourceSig); - - case 6: - _context19.t2 = _context19.sent; - - case 7: - _context19.t1 = _context19.t2; - - case 8: - _context19.t0 = _context19.t1; - - if (!_context19.t0) { - _context19.next = 11; - break; - } - - _context19.t0 = !dest[attr].some(function (destSig) { - return _util2.default.equalsUint8Array(destSig.signature, sourceSig.signature); - }); - - case 11: - if (!_context19.t0) { - _context19.next = 13; - break; - } - - dest[attr].push(sourceSig); - - case 13: - case 'end': - return _context19.stop(); - } - } - }, _callee19, this); - })); - - return function (_x42) { - return _ref21.apply(this, arguments); - }; - }())); - - case 8: - case 'end': - return _context20.stop(); - } - } - }, _callee20, this); - })); - - return function mergeSignatures(_x38, _x39, _x40, _x41) { - return _ref20.apply(this, arguments); - }; -}(); - -/** - * Revokes the key - * @param {Object} reasonForRevocation optional, object indicating the reason for revocation - * @param {module:enums.reasonForRevocation} reasonForRevocation.flag optional, flag indicating the reason for revocation - * @param {String} reasonForRevocation.string optional, string explaining the reason for revocation - * @param {Date} date optional, override the creationtime of the revocation signature - * @returns {Promise} new key with revocation signature - * @async - */ - - -/** - * Create signature packet - * @param {Object} dataToSign Contains packets to be signed - * @param {module:packet.SecretKey| - * module:packet.SecretSubkey} signingKeyPacket secret key packet for signing - * @param {Object} signatureProperties (optional) properties to write on the signature packet before signing - * @param {Date} date (optional) override the creationtime of the signature - * @param {Object} userId (optional) user ID - * @param {Object} detached (optional) whether to create a detached signature packet - * @param {Boolean} streaming (optional) whether to process data as a stream - * @returns {module:packet/signature} signature packet - */ -var createSignaturePacket = exports.createSignaturePacket = function () { - var _ref36 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee32(dataToSign, privateKey, signingKeyPacket, signatureProperties, date, userId) { - var detached = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false; - var streaming = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false; - var signaturePacket; - return _regenerator2.default.wrap(function _callee32$(_context32) { - while (1) { - switch (_context32.prev = _context32.next) { - case 0: - if (signingKeyPacket.isDecrypted()) { - _context32.next = 2; - break; - } - - throw new Error('Private key is not decrypted.'); - - case 2: - signaturePacket = new _packet2.default.Signature(date); - - (0, _assign2.default)(signaturePacket, signatureProperties); - signaturePacket.publicKeyAlgorithm = signingKeyPacket.algorithm; - _context32.next = 7; - return getPreferredHashAlgo(privateKey, signingKeyPacket, date, userId); - - case 7: - signaturePacket.hashAlgorithm = _context32.sent; - _context32.next = 10; - return signaturePacket.sign(signingKeyPacket, dataToSign, detached, streaming); - - case 10: - return _context32.abrupt('return', signaturePacket); - - case 11: - case 'end': - return _context32.stop(); - } - } - }, _callee32, this); - })); - - return function createSignaturePacket(_x62, _x63, _x64, _x65, _x66, _x67) { - return _ref36.apply(this, arguments); - }; -}(); - -/** - * Verifies the user certificate - * @param {module:packet.SecretKey| - * module:packet.PublicKey} primaryKey The primary key packet - * @param {module:packet.Signature} certificate A certificate of this user - * @param {Array} keys Array of keys to verify certificate signatures - * @param {Date} date Use the given date instead of the current time - * @returns {Promise} status of the certificate - * @async - */ - - -/** - * Reads an unarmored OpenPGP key list and returns one or multiple key objects - * @param {Uint8Array} data to be parsed - * @returns {Promise<{keys: Array, - * err: (Array|null)}>} result object with key and error arrays - * @async - * @static - */ -var read = exports.read = function () { - var _ref52 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee47(data) { - var result, err, packetlist, keyIndex, i, oneKeyList, newKey; - return _regenerator2.default.wrap(function _callee47$(_context47) { - while (1) { - switch (_context47.prev = _context47.next) { - case 0: - result = {}; - - result.keys = []; - err = []; - _context47.prev = 3; - packetlist = new _packet2.default.List(); - _context47.next = 7; - return packetlist.read(data); - - case 7: - keyIndex = packetlist.indexOfTag(_enums2.default.packet.publicKey, _enums2.default.packet.secretKey); - - if (!(keyIndex.length === 0)) { - _context47.next = 10; - break; - } - - throw new Error('No key packet found'); - - case 10: - for (i = 0; i < keyIndex.length; i++) { - oneKeyList = packetlist.slice(keyIndex[i], keyIndex[i + 1]); - - try { - newKey = new Key(oneKeyList); - - result.keys.push(newKey); - } catch (e) { - err.push(e); - } - } - _context47.next = 16; - break; - - case 13: - _context47.prev = 13; - _context47.t0 = _context47['catch'](3); - - err.push(_context47.t0); - - case 16: - if (err.length) { - result.err = err; - } - return _context47.abrupt('return', result); - - case 18: - case 'end': - return _context47.stop(); - } - } - }, _callee47, this, [[3, 13]]); - })); - - return function read(_x99) { - return _ref52.apply(this, arguments); - }; -}(); - -/** - * Reads an OpenPGP armored text and returns one or multiple key objects - * @param {String | ReadableStream} armoredText text to be parsed - * @returns {Promise<{keys: Array, - * err: (Array|null)}>} result object with key and error arrays - * @async - * @static - */ - - -var readArmored = exports.readArmored = function () { - var _ref53 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee48(armoredText) { - var input, result; - return _regenerator2.default.wrap(function _callee48$(_context48) { - while (1) { - switch (_context48.prev = _context48.next) { - case 0: - _context48.prev = 0; - _context48.next = 3; - return _armor2.default.decode(armoredText); - - case 3: - input = _context48.sent; - - if (input.type === _enums2.default.armor.public_key || input.type === _enums2.default.armor.private_key) { - _context48.next = 6; - break; - } - - throw new Error('Armored text not of type key'); - - case 6: - return _context48.abrupt('return', read(input.data)); - - case 9: - _context48.prev = 9; - _context48.t0 = _context48['catch'](0); - result = { keys: [], err: [] }; - - result.err.push(_context48.t0); - return _context48.abrupt('return', result); - - case 14: - case 'end': - return _context48.stop(); - } - } - }, _callee48, this, [[0, 9]]); - })); - - return function readArmored(_x100) { - return _ref53.apply(this, arguments); - }; -}(); - /** * Generates a new OpenPGP key. Supports RSA and ECC keys. * Primary and subkey will be of same type. @@ -42155,131 +42245,36 @@ var readArmored = exports.readArmored = function () { * @async * @static */ - - var generate = exports.generate = function () { - var _ref54 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee51(options) { - var generateSecretKey = function () { - var _ref55 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee49(options) { - var secretKeyPacket; - return _regenerator2.default.wrap(function _callee49$(_context49) { - while (1) { - switch (_context49.prev = _context49.next) { - case 0: - secretKeyPacket = new _packet2.default.SecretKey(options.date); - - secretKeyPacket.packets = null; - secretKeyPacket.algorithm = _enums2.default.read(_enums2.default.publicKey, options.algorithm); - _context49.next = 5; - return secretKeyPacket.generate(options.numBits, options.curve); - - case 5: - return _context49.abrupt('return', secretKeyPacket); - - case 6: - case 'end': - return _context49.stop(); - } - } - }, _callee49, this); - })); - - return function generateSecretKey(_x103) { - return _ref55.apply(this, arguments); - }; - }(); - - var generateSecretSubkey = function () { - var _ref56 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee50(options) { - var secretSubkeyPacket; - return _regenerator2.default.wrap(function _callee50$(_context50) { - while (1) { - switch (_context50.prev = _context50.next) { - case 0: - secretSubkeyPacket = new _packet2.default.SecretSubkey(options.date); - - secretSubkeyPacket.packets = null; - secretSubkeyPacket.algorithm = _enums2.default.read(_enums2.default.publicKey, options.algorithm); - _context50.next = 5; - return secretSubkeyPacket.generate(options.numBits, options.curve); - - case 5: - return _context50.abrupt('return', secretSubkeyPacket); - - case 6: - case 'end': - return _context50.stop(); - } - } - }, _callee50, this); - })); - - return function generateSecretSubkey(_x104) { - return _ref56.apply(this, arguments); - }; - }(); - - var promises, sanitizeKeyOptions; - return _regenerator2.default.wrap(function _callee51$(_context51) { + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(options) { + var promises; + return _regenerator2.default.wrap(function _callee$(_context) { while (1) { - switch (_context51.prev = _context51.next) { + switch (_context.prev = _context.next) { case 0: - sanitizeKeyOptions = function sanitizeKeyOptions(options) { - var subkeyDefaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - options.curve = options.curve || subkeyDefaults.curve; - options.numBits = options.numBits || subkeyDefaults.numBits; - options.keyExpirationTime = options.keyExpirationTime !== undefined ? options.keyExpirationTime : subkeyDefaults.keyExpirationTime; - options.passphrase = _util2.default.isString(options.passphrase) ? options.passphrase : subkeyDefaults.passphrase; - options.date = options.date || subkeyDefaults.date; - - options.sign = options.sign || false; - - if (options.curve) { - try { - options.curve = _enums2.default.write(_enums2.default.curve, options.curve); - } catch (e) { - throw new Error('Not valid curve.'); - } - if (options.curve === _enums2.default.curve.ed25519 || options.curve === _enums2.default.curve.curve25519) { - options.curve = options.sign ? _enums2.default.curve.ed25519 : _enums2.default.curve.curve25519; - } - if (options.sign) { - options.algorithm = options.curve === _enums2.default.curve.ed25519 ? _enums2.default.publicKey.eddsa : _enums2.default.publicKey.ecdsa; - } else { - options.algorithm = _enums2.default.publicKey.ecdh; - } - } else if (options.numBits) { - options.algorithm = _enums2.default.publicKey.rsa_encrypt_sign; - } else { - throw new Error('Unrecognized key type'); - } - return options; - }; - options.sign = true; // primary key is always a signing key - options = sanitizeKeyOptions(options); + options = helper.sanitizeKeyOptions(options); options.subkeys = options.subkeys.map(function (subkey, index) { - return sanitizeKeyOptions(options.subkeys[index], options); + return helper.sanitizeKeyOptions(options.subkeys[index], options); }); - promises = [generateSecretKey(options)]; + promises = [helper.generateSecretKey(options)]; - promises = promises.concat(options.subkeys.map(generateSecretSubkey)); - return _context51.abrupt('return', _promise2.default.all(promises).then(function (packets) { + promises = promises.concat(options.subkeys.map(helper.generateSecretSubkey)); + return _context.abrupt('return', _promise2.default.all(promises).then(function (packets) { return wrapKeyObject(packets[0], packets.slice(1), options); })); - case 7: + case 6: case 'end': - return _context51.stop(); + return _context.stop(); } } - }, _callee51, this); + }, _callee, this); })); - return function generate(_x101) { - return _ref54.apply(this, arguments); + return function generate(_x) { + return _ref.apply(this, arguments); }; }(); @@ -42300,18 +42295,45 @@ var generate = exports.generate = function () { * @async * @static */ +// OpenPGP.js - An OpenPGP implementation in javascript +// Copyright (C) 2015-2016 Decentral +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 3.0 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +/** + * @fileoverview Provides factory methods for key creation + * @requires packet + * @requires key/Key + * @requires key/helper + * @requires enums + * @requires util + * @requires config + * @requires armor + * @module key/factory + */ var reformat = exports.reformat = function () { - var _ref57 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee53(options) { - var _this2 = this; + var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(options) { + var _this = this; - var isDecrypted, packetlist, secretKeyPacket, secretSubkeyPackets, i, sanitizeKeyOptions; - return _regenerator2.default.wrap(function _callee53$(_context53) { + var isDecrypted, packetlist, secretKeyPacket, secretSubkeyPackets, i, sanitize; + return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { - switch (_context53.prev = _context53.next) { + switch (_context3.prev = _context3.next) { case 0: - sanitizeKeyOptions = function sanitizeKeyOptions(options) { + sanitize = function sanitize(options) { var subkeyDefaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; options.keyExpirationTime = options.keyExpirationTime || subkeyDefaults.keyExpirationTime; @@ -42321,28 +42343,28 @@ var reformat = exports.reformat = function () { return options; }; - options = sanitizeKeyOptions(options); + options = sanitize(options); - _context53.prev = 2; + _context3.prev = 2; isDecrypted = options.privateKey.getKeys().every(function (key) { return key.isDecrypted(); }); if (isDecrypted) { - _context53.next = 7; + _context3.next = 7; break; } - _context53.next = 7; + _context3.next = 7; return options.privateKey.decrypt(); case 7: - _context53.next = 12; + _context3.next = 12; break; case 9: - _context53.prev = 9; - _context53.t0 = _context53['catch'](2); + _context3.prev = 9; + _context3.t0 = _context3['catch'](2); throw new Error('Key not decrypted'); case 12: @@ -42359,7 +42381,7 @@ var reformat = exports.reformat = function () { } if (secretKeyPacket) { - _context53.next = 18; + _context3.next = 18; break; } @@ -42367,59 +42389,59 @@ var reformat = exports.reformat = function () { case 18: if (options.subkeys) { - _context53.next = 22; + _context3.next = 22; break; } - _context53.next = 21; + _context3.next = 21; return _promise2.default.all(secretSubkeyPackets.map(function () { - var _ref58 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee52(secretSubkeyPacket) { - return _regenerator2.default.wrap(function _callee52$(_context52) { + var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(secretSubkeyPacket) { + return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { - switch (_context52.prev = _context52.next) { + switch (_context2.prev = _context2.next) { case 0: - _context52.next = 2; + _context2.next = 2; return options.privateKey.getSigningKey(secretSubkeyPacket.getKeyId(), null); case 2: - _context52.t0 = _context52.sent; + _context2.t0 = _context2.sent; - if (!_context52.t0) { - _context52.next = 7; + if (!_context2.t0) { + _context2.next = 7; break; } - _context52.next = 6; + _context2.next = 6; return options.privateKey.getEncryptionKey(secretSubkeyPacket.getKeyId(), null); case 6: - _context52.t0 = !_context52.sent; + _context2.t0 = !_context2.sent; case 7: - _context52.t1 = _context52.t0; - return _context52.abrupt('return', { - sign: _context52.t1 + _context2.t1 = _context2.t0; + return _context2.abrupt('return', { + sign: _context2.t1 }); case 9: case 'end': - return _context52.stop(); + return _context2.stop(); } } - }, _callee52, _this2); + }, _callee2, _this); })); - return function (_x106) { - return _ref58.apply(this, arguments); + return function (_x3) { + return _ref3.apply(this, arguments); }; }())); case 21: - options.subkeys = _context53.sent; + options.subkeys = _context3.sent; case 22: if (!(options.subkeys.length !== secretSubkeyPackets.length)) { - _context53.next = 24; + _context3.next = 24; break; } @@ -42428,68 +42450,68 @@ var reformat = exports.reformat = function () { case 24: options.subkeys = options.subkeys.map(function (subkey, index) { - return sanitizeKeyOptions(options.subkeys[index], options); + return sanitize(options.subkeys[index], options); }); - return _context53.abrupt('return', wrapKeyObject(secretKeyPacket, secretSubkeyPackets, options)); + return _context3.abrupt('return', wrapKeyObject(secretKeyPacket, secretSubkeyPackets, options)); case 26: case 'end': - return _context53.stop(); + return _context3.stop(); } } - }, _callee53, this, [[2, 9]]); + }, _callee3, this, [[2, 9]]); })); - return function reformat(_x105) { - return _ref57.apply(this, arguments); + return function reformat(_x2) { + return _ref2.apply(this, arguments); }; }(); var wrapKeyObject = function () { - var _ref59 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee58(secretKeyPacket, secretSubkeyPackets, options) { + var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(secretKeyPacket, secretSubkeyPackets, options) { var packetlist, dataToSign; - return _regenerator2.default.wrap(function _callee58$(_context58) { + return _regenerator2.default.wrap(function _callee8$(_context8) { while (1) { - switch (_context58.prev = _context58.next) { + switch (_context8.prev = _context8.next) { case 0: if (!options.passphrase) { - _context58.next = 3; + _context8.next = 3; break; } - _context58.next = 3; + _context8.next = 3; return secretKeyPacket.encrypt(options.passphrase); case 3: - _context58.next = 5; + _context8.next = 5; return _promise2.default.all(secretSubkeyPackets.map(function () { - var _ref60 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee54(secretSubkeyPacket, index) { + var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(secretSubkeyPacket, index) { var subkeyPassphrase; - return _regenerator2.default.wrap(function _callee54$(_context54) { + return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { - switch (_context54.prev = _context54.next) { + switch (_context4.prev = _context4.next) { case 0: subkeyPassphrase = options.subkeys[index].passphrase; if (!subkeyPassphrase) { - _context54.next = 4; + _context4.next = 4; break; } - _context54.next = 4; + _context4.next = 4; return secretSubkeyPacket.encrypt(subkeyPassphrase); case 4: case 'end': - return _context54.stop(); + return _context4.stop(); } } - }, _callee54, this); + }, _callee4, this); })); - return function (_x111, _x112) { - return _ref60.apply(this, arguments); + return function (_x8, _x9) { + return _ref5.apply(this, arguments); }; }())); @@ -42499,13 +42521,13 @@ var wrapKeyObject = function () { packetlist.push(secretKeyPacket); - _context58.next = 9; + _context8.next = 9; return _promise2.default.all(options.userIds.map(function () { - var _ref61 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee55(userId, index) { + var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(userId, index) { var createdPreferredAlgos, userIdPacket, dataToSign, signaturePacket; - return _regenerator2.default.wrap(function _callee55$(_context55) { + return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { - switch (_context55.prev = _context55.next) { + switch (_context5.prev = _context5.next) { case 0: createdPreferredAlgos = function createdPreferredAlgos(algos, configAlgo) { if (configAlgo) { @@ -42535,11 +42557,11 @@ var wrapKeyObject = function () { signaturePacket.signatureType = _enums2.default.signature.cert_generic; signaturePacket.publicKeyAlgorithm = secretKeyPacket.algorithm; - _context55.next = 11; - return getPreferredHashAlgo(null, secretKeyPacket); + _context5.next = 11; + return helper.getPreferredHashAlgo(null, secretKeyPacket); case 11: - signaturePacket.hashAlgorithm = _context55.sent; + signaturePacket.hashAlgorithm = _context5.sent; signaturePacket.keyFlags = [_enums2.default.keyFlags.certify_keys | _enums2.default.keyFlags.sign_data]; signaturePacket.preferredSymmetricAlgorithms = createdPreferredAlgos([ @@ -42571,27 +42593,27 @@ var wrapKeyObject = function () { signaturePacket.keyExpirationTime = options.keyExpirationTime; signaturePacket.keyNeverExpires = false; } - _context55.next = 24; + _context5.next = 24; return signaturePacket.sign(secretKeyPacket, dataToSign); case 24: - return _context55.abrupt('return', { userIdPacket: userIdPacket, signaturePacket: signaturePacket }); + return _context5.abrupt('return', { userIdPacket: userIdPacket, signaturePacket: signaturePacket }); case 25: case 'end': - return _context55.stop(); + return _context5.stop(); } } - }, _callee55, this); + }, _callee5, this); })); - return function (_x113, _x114) { - return _ref61.apply(this, arguments); + return function (_x10, _x11) { + return _ref6.apply(this, arguments); }; }())).then(function (list) { - list.forEach(function (_ref62) { - var userIdPacket = _ref62.userIdPacket, - signaturePacket = _ref62.signaturePacket; + list.forEach(function (_ref7) { + var userIdPacket = _ref7.userIdPacket, + signaturePacket = _ref7.signaturePacket; packetlist.push(userIdPacket); packetlist.push(signaturePacket); @@ -42599,74 +42621,37 @@ var wrapKeyObject = function () { }); case 9: - _context58.next = 11; + _context8.next = 11; return _promise2.default.all(secretSubkeyPackets.map(function () { - var _ref63 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee56(secretSubkeyPacket, index) { - var subkeyOptions, dataToSign, subkeySignaturePacket; - return _regenerator2.default.wrap(function _callee56$(_context56) { + var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(secretSubkeyPacket, index) { + var subkeyOptions, subkeySignaturePacket; + return _regenerator2.default.wrap(function _callee6$(_context6) { while (1) { - switch (_context56.prev = _context56.next) { + switch (_context6.prev = _context6.next) { case 0: subkeyOptions = options.subkeys[index]; - dataToSign = {}; + _context6.next = 3; + return helper.createBindingSignature(secretSubkeyPacket, secretKeyPacket, subkeyOptions); - dataToSign.key = secretKeyPacket; - dataToSign.bind = secretSubkeyPacket; - subkeySignaturePacket = new _packet2.default.Signature(subkeyOptions.date); + case 3: + subkeySignaturePacket = _context6.sent; + return _context6.abrupt('return', { secretSubkeyPacket: secretSubkeyPacket, subkeySignaturePacket: subkeySignaturePacket }); - subkeySignaturePacket.signatureType = _enums2.default.signature.subkey_binding; - subkeySignaturePacket.publicKeyAlgorithm = secretKeyPacket.algorithm; - _context56.next = 9; - return getPreferredHashAlgo(null, secretSubkeyPacket); - - case 9: - subkeySignaturePacket.hashAlgorithm = _context56.sent; - - if (!subkeyOptions.sign) { - _context56.next = 17; - break; - } - - subkeySignaturePacket.keyFlags = [_enums2.default.keyFlags.sign_data]; - _context56.next = 14; - return createSignaturePacket(dataToSign, null, secretSubkeyPacket, { - signatureType: _enums2.default.signature.key_binding - }, subkeyOptions.date); - - case 14: - subkeySignaturePacket.embeddedSignature = _context56.sent; - _context56.next = 18; - break; - - case 17: - subkeySignaturePacket.keyFlags = [_enums2.default.keyFlags.encrypt_communication | _enums2.default.keyFlags.encrypt_storage]; - - case 18: - if (subkeyOptions.keyExpirationTime > 0) { - subkeySignaturePacket.keyExpirationTime = subkeyOptions.keyExpirationTime; - subkeySignaturePacket.keyNeverExpires = false; - } - _context56.next = 21; - return subkeySignaturePacket.sign(secretKeyPacket, dataToSign); - - case 21: - return _context56.abrupt('return', { secretSubkeyPacket: secretSubkeyPacket, subkeySignaturePacket: subkeySignaturePacket }); - - case 22: + case 5: case 'end': - return _context56.stop(); + return _context6.stop(); } } - }, _callee56, this); + }, _callee6, this); })); - return function (_x115, _x116) { - return _ref63.apply(this, arguments); + return function (_x12, _x13) { + return _ref8.apply(this, arguments); }; }())).then(function (packets) { - packets.forEach(function (_ref64) { - var secretSubkeyPacket = _ref64.secretSubkeyPacket, - subkeySignaturePacket = _ref64.subkeySignaturePacket; + packets.forEach(function (_ref9) { + var secretSubkeyPacket = _ref9.secretSubkeyPacket, + subkeySignaturePacket = _ref9.subkeySignaturePacket; packetlist.push(secretSubkeyPacket); packetlist.push(subkeySignaturePacket); @@ -42678,31 +42663,31 @@ var wrapKeyObject = function () { // Add revocation signature packet for creating a revocation certificate. // This packet should be removed before returning the key. dataToSign = { key: secretKeyPacket }; - _context58.t0 = packetlist; - _context58.next = 15; - return createSignaturePacket(dataToSign, null, secretKeyPacket, { + _context8.t0 = packetlist; + _context8.next = 15; + return helper.createSignaturePacket(dataToSign, null, secretKeyPacket, { signatureType: _enums2.default.signature.key_revocation, reasonForRevocationFlag: _enums2.default.reasonForRevocation.no_reason, reasonForRevocationString: '' }, options.date); case 15: - _context58.t1 = _context58.sent; + _context8.t1 = _context8.sent; - _context58.t0.push.call(_context58.t0, _context58.t1); + _context8.t0.push.call(_context8.t0, _context8.t1); // set passphrase protection if (options.passphrase) { secretKeyPacket.clearPrivateParams(); } - _context58.next = 20; + _context8.next = 20; return _promise2.default.all(secretSubkeyPackets.map(function () { - var _ref65 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee57(secretSubkeyPacket, index) { + var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(secretSubkeyPacket, index) { var subkeyPassphrase; - return _regenerator2.default.wrap(function _callee57$(_context57) { + return _regenerator2.default.wrap(function _callee7$(_context7) { while (1) { - switch (_context57.prev = _context57.next) { + switch (_context7.prev = _context7.next) { case 0: subkeyPassphrase = options.subkeys[index].passphrase; @@ -42712,141 +42697,446 @@ var wrapKeyObject = function () { case 2: case 'end': - return _context57.stop(); + return _context7.stop(); } } - }, _callee57, this); + }, _callee7, this); })); - return function (_x117, _x118) { - return _ref65.apply(this, arguments); + return function (_x14, _x15) { + return _ref10.apply(this, arguments); }; }())); case 20: - return _context58.abrupt('return', new Key(packetlist)); + return _context8.abrupt('return', new _key2.default(packetlist)); case 21: case 'end': - return _context58.stop(); + return _context8.stop(); } } - }, _callee58, this); + }, _callee8, this); })); - return function wrapKeyObject(_x108, _x109, _x110) { - return _ref59.apply(this, arguments); + return function wrapKeyObject(_x5, _x6, _x7) { + return _ref4.apply(this, arguments); }; }(); /** - * Checks if a given certificate or binding signature is revoked - * @param {module:packet.SecretKey| - * module:packet.PublicKey} primaryKey The primary key packet - * @param {Object} dataToVerify The data to check - * @param {Array} revocations The revocation signatures to check - * @param {module:packet.Signature} signature The certificate or signature to check - * @param {module:packet.PublicSubkey| - * module:packet.SecretSubkey| - * module:packet.PublicKey| - * module:packet.SecretKey} key, optional The key packet to check the signature - * @param {Date} date Use the given date instead of the current time - * @returns {Promise} True if the signature revokes the data + * Reads an unarmored OpenPGP key list and returns one or multiple key objects + * @param {Uint8Array} data to be parsed + * @returns {Promise<{keys: Array, + * err: (Array|null)}>} result object with key and error arrays + * @async + * @static + */ + + +var read = exports.read = function () { + var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(data) { + var result, err, packetlist, keyIndex, i, oneKeyList, newKey; + return _regenerator2.default.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + result = {}; + + result.keys = []; + err = []; + _context9.prev = 3; + packetlist = new _packet2.default.List(); + _context9.next = 7; + return packetlist.read(data); + + case 7: + keyIndex = packetlist.indexOfTag(_enums2.default.packet.publicKey, _enums2.default.packet.secretKey); + + if (!(keyIndex.length === 0)) { + _context9.next = 10; + break; + } + + throw new Error('No key packet found'); + + case 10: + for (i = 0; i < keyIndex.length; i++) { + oneKeyList = packetlist.slice(keyIndex[i], keyIndex[i + 1]); + + try { + newKey = new _key2.default(oneKeyList); + + result.keys.push(newKey); + } catch (e) { + err.push(e); + } + } + _context9.next = 16; + break; + + case 13: + _context9.prev = 13; + _context9.t0 = _context9['catch'](3); + + err.push(_context9.t0); + + case 16: + if (err.length) { + result.err = err; + } + return _context9.abrupt('return', result); + + case 18: + case 'end': + return _context9.stop(); + } + } + }, _callee9, this, [[3, 13]]); + })); + + return function read(_x16) { + return _ref11.apply(this, arguments); + }; +}(); + +/** + * Reads an OpenPGP armored text and returns one or multiple key objects + * @param {String | ReadableStream} armoredText text to be parsed + * @returns {Promise<{keys: Array, + * err: (Array|null)}>} result object with key and error arrays + * @async + * @static + */ + + +var readArmored = exports.readArmored = function () { + var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(armoredText) { + var input, result; + return _regenerator2.default.wrap(function _callee10$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + _context10.prev = 0; + _context10.next = 3; + return _armor2.default.decode(armoredText); + + case 3: + input = _context10.sent; + + if (input.type === _enums2.default.armor.public_key || input.type === _enums2.default.armor.private_key) { + _context10.next = 6; + break; + } + + throw new Error('Armored text not of type key'); + + case 6: + return _context10.abrupt('return', read(input.data)); + + case 9: + _context10.prev = 9; + _context10.t0 = _context10['catch'](0); + result = { keys: [], err: [] }; + + result.err.push(_context10.t0); + return _context10.abrupt('return', result); + + case 14: + case 'end': + return _context10.stop(); + } + } + }, _callee10, this, [[0, 9]]); + })); + + return function readArmored(_x17) { + return _ref12.apply(this, arguments); + }; +}(); + +var _packet = _dereq_('../packet'); + +var _packet2 = _interopRequireDefault(_packet); + +var _key = _dereq_('./key'); + +var _key2 = _interopRequireDefault(_key); + +var _helper = _dereq_('./helper'); + +var helper = _interopRequireWildcard(_helper); + +var _enums = _dereq_('../enums'); + +var _enums2 = _interopRequireDefault(_enums); + +var _util = _dereq_('../util'); + +var _util2 = _interopRequireDefault(_util); + +var _config = _dereq_('../config'); + +var _config2 = _interopRequireDefault(_config); + +var _armor = _dereq_('../encoding/armor'); + +var _armor2 = _interopRequireDefault(_armor); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +},{"../config":350,"../encoding/armor":382,"../enums":384,"../packet":402,"../util":429,"./helper":388,"./key":390,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],388:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isAeadSupported = exports.isDataRevoked = exports.mergeSignatures = exports.createSignaturePacket = exports.getPreferredAlgo = exports.getPreferredHashAlgo = exports.createBindingSignature = exports.getLatestValidSignature = exports.generateSecretKey = exports.generateSecretSubkey = undefined; + +var _assign = _dereq_('babel-runtime/core-js/object/assign'); + +var _assign2 = _interopRequireDefault(_assign); + +var _values = _dereq_('babel-runtime/core-js/object/values'); + +var _values2 = _interopRequireDefault(_values); + +var _promise = _dereq_('babel-runtime/core-js/promise'); + +var _promise2 = _interopRequireDefault(_promise); + +var _getPrototypeOf = _dereq_('babel-runtime/core-js/object/get-prototype-of'); + +var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); + +var _slicedToArray2 = _dereq_('babel-runtime/helpers/slicedToArray'); + +var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); + +var _regenerator = _dereq_('babel-runtime/regenerator'); + +var _regenerator2 = _interopRequireDefault(_regenerator); + +var _asyncToGenerator2 = _dereq_('babel-runtime/helpers/asyncToGenerator'); + +var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); + +var generateSecretSubkey = exports.generateSecretSubkey = function () { + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(options) { + var secretSubkeyPacket; + return _regenerator2.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + secretSubkeyPacket = new _packet2.default.SecretSubkey(options.date); + + secretSubkeyPacket.packets = null; + secretSubkeyPacket.algorithm = _enums2.default.read(_enums2.default.publicKey, options.algorithm); + _context.next = 5; + return secretSubkeyPacket.generate(options.rsaBits, options.curve); + + case 5: + return _context.abrupt('return', secretSubkeyPacket); + + case 6: + case 'end': + return _context.stop(); + } + } + }, _callee, this); + })); + + return function generateSecretSubkey(_x) { + return _ref.apply(this, arguments); + }; +}(); /** + * @fileoverview Provides helpers methods for key module + * @requires packet + * @requires enums + * @requires config + * @requires crypto + * @module key/helper + */ + +var generateSecretKey = exports.generateSecretKey = function () { + var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(options) { + var secretKeyPacket; + return _regenerator2.default.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + secretKeyPacket = new _packet2.default.SecretKey(options.date); + + secretKeyPacket.packets = null; + secretKeyPacket.algorithm = _enums2.default.read(_enums2.default.publicKey, options.algorithm); + _context2.next = 5; + return secretKeyPacket.generate(options.rsaBits, options.curve); + + case 5: + return _context2.abrupt('return', secretKeyPacket); + + case 6: + case 'end': + return _context2.stop(); + } + } + }, _callee2, this); + })); + + return function generateSecretKey(_x2) { + return _ref2.apply(this, arguments); + }; +}(); + +/** + * Returns the valid and non-expired signature that has the latest creation date, while ignoring signatures created in the future. + * @param {Array} signatures List of signatures + * @param {Date} date Use the given date instead of the current time + * @returns {Promise} The latest valid signature * @async */ -var isDataRevoked = function () { - var _ref66 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee60(primaryKey, signatureType, dataToVerify, revocations, signature, key) { - var date = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : new Date(); - var normDate, revocationKeyIds; - return _regenerator2.default.wrap(function _callee60$(_context60) { +var getLatestValidSignature = exports.getLatestValidSignature = function () { + var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(signatures, primaryKey, signatureType, dataToVerify) { + var date = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : new Date(); + var signature, i; + return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { - switch (_context60.prev = _context60.next) { + switch (_context3.prev = _context3.next) { case 0: - key = key || primaryKey; - normDate = _util2.default.normalizeDate(date); - revocationKeyIds = []; - _context60.next = 5; - return _promise2.default.all(revocations.map(function () { - var _ref67 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee59(revocationSignature) { - return _regenerator2.default.wrap(function _callee59$(_context59) { - while (1) { - switch (_context59.prev = _context59.next) { - case 0: - _context59.t0 = (!signature || revocationSignature.issuerKeyId.equals(signature.issuerKeyId)) && !(_config2.default.revocations_expire && revocationSignature.isExpired(normDate)); + signature = void 0; + i = signatures.length - 1; - if (!_context59.t0) { - _context59.next = 8; - break; - } - - _context59.t1 = revocationSignature.verified; - - if (_context59.t1) { - _context59.next = 7; - break; - } - - _context59.next = 6; - return revocationSignature.verify(key, signatureType, dataToVerify); - - case 6: - _context59.t1 = _context59.sent; - - case 7: - _context59.t0 = _context59.t1; - - case 8: - if (!_context59.t0) { - _context59.next = 11; - break; - } - - // TODO get an identifier of the revoked object instead - revocationKeyIds.push(revocationSignature.issuerKeyId); - return _context59.abrupt('return', true); - - case 11: - return _context59.abrupt('return', false); - - case 12: - case 'end': - return _context59.stop(); - } - } - }, _callee59, this); - })); - - return function (_x126) { - return _ref67.apply(this, arguments); - }; - }())); - - case 5: - if (!signature) { - _context60.next = 8; + case 2: + if (!(i >= 0)) { + _context3.next = 16; break; } - signature.revoked = revocationKeyIds.some(function (keyId) { - return keyId.equals(signature.issuerKeyId); - }) ? true : signature.revoked || false; - return _context60.abrupt('return', signature.revoked); + _context3.t0 = (!signature || signatures[i].created >= signature.created) && + // check binding signature is not expired (ie, check for V4 expiration time) + !signatures[i].isExpired(date); - case 8: - return _context60.abrupt('return', revocationKeyIds.length > 0); + if (!_context3.t0) { + _context3.next = 11; + break; + } + + _context3.t1 = signatures[i].verified; + + if (_context3.t1) { + _context3.next = 10; + break; + } + + _context3.next = 9; + return signatures[i].verify(primaryKey, signatureType, dataToVerify); case 9: + _context3.t1 = _context3.sent; + + case 10: + _context3.t0 = _context3.t1; + + case 11: + if (!_context3.t0) { + _context3.next = 13; + break; + } + + signature = signatures[i]; + + case 13: + i--; + _context3.next = 2; + break; + + case 16: + return _context3.abrupt('return', signature); + + case 17: case 'end': - return _context60.stop(); + return _context3.stop(); } } - }, _callee60, this); + }, _callee3, this); })); - return function isDataRevoked(_x119, _x120, _x121, _x122, _x123, _x124) { - return _ref66.apply(this, arguments); + return function getLatestValidSignature(_x3, _x4, _x5, _x6) { + return _ref3.apply(this, arguments); + }; +}(); + +/** + * Create Binding signature to the key according to the {@link https://tools.ietf.org/html/rfc4880#section-5.2.1} + * @param {module:packet.SecretSubkey|} subkey Subkey key packet + * @param {module:packet.SecretKey} primaryKey Primary key packet + * @param {Object} options + */ +var createBindingSignature = exports.createBindingSignature = function () { + var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(subkey, primaryKey, options) { + var dataToSign, subkeySignaturePacket; + return _regenerator2.default.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + dataToSign = {}; + + dataToSign.key = primaryKey; + dataToSign.bind = subkey; + subkeySignaturePacket = new _packet2.default.Signature(options.date); + + subkeySignaturePacket.signatureType = _enums2.default.signature.subkey_binding; + subkeySignaturePacket.publicKeyAlgorithm = primaryKey.algorithm; + _context4.next = 8; + return getPreferredHashAlgo(null, subkey); + + case 8: + subkeySignaturePacket.hashAlgorithm = _context4.sent; + + if (!options.sign) { + _context4.next = 16; + break; + } + + subkeySignaturePacket.keyFlags = [_enums2.default.keyFlags.sign_data]; + _context4.next = 13; + return createSignaturePacket(dataToSign, null, subkey, { + signatureType: _enums2.default.signature.key_binding + }, options.date); + + case 13: + subkeySignaturePacket.embeddedSignature = _context4.sent; + _context4.next = 17; + break; + + case 16: + subkeySignaturePacket.keyFlags = [_enums2.default.keyFlags.encrypt_communication | _enums2.default.keyFlags.encrypt_storage]; + + case 17: + if (options.keyExpirationTime > 0) { + subkeySignaturePacket.keyExpirationTime = options.keyExpirationTime; + subkeySignaturePacket.keyNeverExpires = false; + } + _context4.next = 20; + return subkeySignaturePacket.sign(primaryKey, dataToSign); + + case 20: + return _context4.abrupt('return', subkeySignaturePacket); + + case 21: + case 'end': + return _context4.stop(); + } + } + }, _callee4, this); + })); + + return function createBindingSignature(_x9, _x10, _x11) { + return _ref4.apply(this, arguments); }; }(); @@ -42859,30 +43149,32 @@ var isDataRevoked = function () { * @returns {Promise} * @async */ + + var getPreferredHashAlgo = exports.getPreferredHashAlgo = function () { - var _ref68 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee61(key, keyPacket) { + var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(key, keyPacket) { var date = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Date(); var userId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; var hash_algo, pref_algo, primaryUser, _primaryUser$selfCert; - return _regenerator2.default.wrap(function _callee61$(_context61) { + return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { - switch (_context61.prev = _context61.next) { + switch (_context5.prev = _context5.next) { case 0: hash_algo = _config2.default.prefer_hash_algorithm; pref_algo = hash_algo; - if (!(key instanceof Key)) { - _context61.next = 7; + if (!key) { + _context5.next = 7; break; } - _context61.next = 5; + _context5.next = 5; return key.getPrimaryUser(date, userId); case 5: - primaryUser = _context61.sent; + primaryUser = _context5.sent; if (primaryUser && primaryUser.selfCertification.preferredHashAlgorithms) { _primaryUser$selfCert = (0, _slicedToArray3.default)(primaryUser.selfCertification.preferredHashAlgorithms, 1); @@ -42904,18 +43196,18 @@ var getPreferredHashAlgo = exports.getPreferredHashAlgo = function () { pref_algo = _crypto2.default.publicKey.elliptic.getPreferredHashAlgo(keyPacket.params[0]); } } - return _context61.abrupt('return', _crypto2.default.hash.getHashByteLength(hash_algo) <= _crypto2.default.hash.getHashByteLength(pref_algo) ? pref_algo : hash_algo); + return _context5.abrupt('return', _crypto2.default.hash.getHashByteLength(hash_algo) <= _crypto2.default.hash.getHashByteLength(pref_algo) ? pref_algo : hash_algo); case 9: case 'end': - return _context61.stop(); + return _context5.stop(); } } - }, _callee61, this); + }, _callee5, this); })); - return function getPreferredHashAlgo(_x128, _x129) { - return _ref68.apply(this, arguments); + return function getPreferredHashAlgo(_x12, _x13) { + return _ref5.apply(this, arguments); }; }(); @@ -42931,37 +43223,37 @@ var getPreferredHashAlgo = exports.getPreferredHashAlgo = function () { var getPreferredAlgo = exports.getPreferredAlgo = function () { - var _ref69 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee63(type, keys) { + var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(type, keys) { var date = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Date(); var userIds = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; var prefProperty, defaultAlgo, prioMap, prefAlgo; - return _regenerator2.default.wrap(function _callee63$(_context63) { + return _regenerator2.default.wrap(function _callee7$(_context7) { while (1) { - switch (_context63.prev = _context63.next) { + switch (_context7.prev = _context7.next) { case 0: prefProperty = type === 'symmetric' ? 'preferredSymmetricAlgorithms' : 'preferredAeadAlgorithms'; defaultAlgo = type === 'symmetric' ? _enums2.default.symmetric.aes128 : _enums2.default.aead.eax; prioMap = {}; - _context63.next = 5; + _context7.next = 5; return _promise2.default.all(keys.map(function () { - var _ref70 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee62(key, i) { + var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(key, i) { var primaryUser; - return _regenerator2.default.wrap(function _callee62$(_context62) { + return _regenerator2.default.wrap(function _callee6$(_context6) { while (1) { - switch (_context62.prev = _context62.next) { + switch (_context6.prev = _context6.next) { case 0: - _context62.next = 2; + _context6.next = 2; return key.getPrimaryUser(date, userIds[i]); case 2: - primaryUser = _context62.sent; + primaryUser = _context6.sent; if (!(!primaryUser || !primaryUser.selfCertification[prefProperty])) { - _context62.next = 5; + _context6.next = 5; break; } - return _context62.abrupt('return', defaultAlgo); + return _context6.abrupt('return', defaultAlgo); case 5: primaryUser.selfCertification[prefProperty].forEach(function (algo, index) { @@ -42972,24 +43264,24 @@ var getPreferredAlgo = exports.getPreferredAlgo = function () { case 6: case 'end': - return _context62.stop(); + return _context6.stop(); } } - }, _callee62, this); + }, _callee6, this); })); - return function (_x136, _x137) { - return _ref70.apply(this, arguments); + return function (_x20, _x21) { + return _ref7.apply(this, arguments); }; }())); case 5: prefAlgo = { prio: 0, algo: defaultAlgo }; - (0, _values2.default)(prioMap).forEach(function (_ref71) { - var prio = _ref71.prio, - count = _ref71.count, - algo = _ref71.algo; + (0, _values2.default)(prioMap).forEach(function (_ref8) { + var prio = _ref8.prio, + count = _ref8.count, + algo = _ref8.algo; try { if (algo !== _enums2.default[type].plaintext && algo !== _enums2.default[type].idea && // not implemented @@ -43000,18 +43292,297 @@ var getPreferredAlgo = exports.getPreferredAlgo = function () { } } catch (e) {} }); - return _context63.abrupt('return', prefAlgo.algo); + return _context7.abrupt('return', prefAlgo.algo); case 8: case 'end': - return _context63.stop(); + return _context7.stop(); } } - }, _callee63, this); + }, _callee7, this); })); - return function getPreferredAlgo(_x132, _x133) { - return _ref69.apply(this, arguments); + return function getPreferredAlgo(_x16, _x17) { + return _ref6.apply(this, arguments); + }; +}(); + +/** + * Create signature packet + * @param {Object} dataToSign Contains packets to be signed + * @param {module:packet.SecretKey| + * module:packet.SecretSubkey} signingKeyPacket secret key packet for signing + * @param {Object} signatureProperties (optional) properties to write on the signature packet before signing + * @param {Date} date (optional) override the creationtime of the signature + * @param {Object} userId (optional) user ID + * @param {Object} detached (optional) whether to create a detached signature packet + * @param {Boolean} streaming (optional) whether to process data as a stream + * @returns {module:packet/signature} signature packet + */ + + +var createSignaturePacket = exports.createSignaturePacket = function () { + var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(dataToSign, privateKey, signingKeyPacket, signatureProperties, date, userId) { + var detached = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false; + var streaming = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false; + var signaturePacket; + return _regenerator2.default.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + if (signingKeyPacket.isDecrypted()) { + _context8.next = 2; + break; + } + + throw new Error('Private key is not decrypted.'); + + case 2: + signaturePacket = new _packet2.default.Signature(date); + + (0, _assign2.default)(signaturePacket, signatureProperties); + signaturePacket.publicKeyAlgorithm = signingKeyPacket.algorithm; + _context8.next = 7; + return getPreferredHashAlgo(privateKey, signingKeyPacket, date, userId); + + case 7: + signaturePacket.hashAlgorithm = _context8.sent; + _context8.next = 10; + return signaturePacket.sign(signingKeyPacket, dataToSign, detached, streaming); + + case 10: + return _context8.abrupt('return', signaturePacket); + + case 11: + case 'end': + return _context8.stop(); + } + } + }, _callee8, this); + })); + + return function createSignaturePacket(_x22, _x23, _x24, _x25, _x26, _x27) { + return _ref9.apply(this, arguments); + }; +}(); + +/** + * Merges signatures from source[attr] to dest[attr] + * @private + * @param {Object} source + * @param {Object} dest + * @param {String} attr + * @param {Function} checkFn optional, signature only merged if true + */ + + +var mergeSignatures = exports.mergeSignatures = function () { + var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(source, dest, attr, checkFn) { + return _regenerator2.default.wrap(function _callee10$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + source = source[attr]; + + if (!source) { + _context10.next = 8; + break; + } + + if (dest[attr].length) { + _context10.next = 6; + break; + } + + dest[attr] = source; + _context10.next = 8; + break; + + case 6: + _context10.next = 8; + return _promise2.default.all(source.map(function () { + var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(sourceSig) { + return _regenerator2.default.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + _context9.t1 = !sourceSig.isExpired(); + + if (!_context9.t1) { + _context9.next = 8; + break; + } + + _context9.t2 = !checkFn; + + if (_context9.t2) { + _context9.next = 7; + break; + } + + _context9.next = 6; + return checkFn(sourceSig); + + case 6: + _context9.t2 = _context9.sent; + + case 7: + _context9.t1 = _context9.t2; + + case 8: + _context9.t0 = _context9.t1; + + if (!_context9.t0) { + _context9.next = 11; + break; + } + + _context9.t0 = !dest[attr].some(function (destSig) { + return _util2.default.equalsUint8Array(destSig.signature, sourceSig.signature); + }); + + case 11: + if (!_context9.t0) { + _context9.next = 13; + break; + } + + dest[attr].push(sourceSig); + + case 13: + case 'end': + return _context9.stop(); + } + } + }, _callee9, this); + })); + + return function (_x34) { + return _ref11.apply(this, arguments); + }; + }())); + + case 8: + case 'end': + return _context10.stop(); + } + } + }, _callee10, this); + })); + + return function mergeSignatures(_x30, _x31, _x32, _x33) { + return _ref10.apply(this, arguments); + }; +}(); + +/** + * Checks if a given certificate or binding signature is revoked + * @param {module:packet.SecretKey| + * module:packet.PublicKey} primaryKey The primary key packet + * @param {Object} dataToVerify The data to check + * @param {Array} revocations The revocation signatures to check + * @param {module:packet.Signature} signature The certificate or signature to check + * @param {module:packet.PublicSubkey| + * module:packet.SecretSubkey| + * module:packet.PublicKey| + * module:packet.SecretKey} key, optional The key packet to check the signature + * @param {Date} date Use the given date instead of the current time + * @returns {Promise} True if the signature revokes the data + * @async + */ + + +var isDataRevoked = exports.isDataRevoked = function () { + var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(primaryKey, signatureType, dataToVerify, revocations, signature, key) { + var date = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : new Date(); + var normDate, revocationKeyIds; + return _regenerator2.default.wrap(function _callee12$(_context12) { + while (1) { + switch (_context12.prev = _context12.next) { + case 0: + key = key || primaryKey; + normDate = _util2.default.normalizeDate(date); + revocationKeyIds = []; + _context12.next = 5; + return _promise2.default.all(revocations.map(function () { + var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(revocationSignature) { + return _regenerator2.default.wrap(function _callee11$(_context11) { + while (1) { + switch (_context11.prev = _context11.next) { + case 0: + _context11.t0 = (!signature || revocationSignature.issuerKeyId.equals(signature.issuerKeyId)) && !(_config2.default.revocations_expire && revocationSignature.isExpired(normDate)); + + if (!_context11.t0) { + _context11.next = 8; + break; + } + + _context11.t1 = revocationSignature.verified; + + if (_context11.t1) { + _context11.next = 7; + break; + } + + _context11.next = 6; + return revocationSignature.verify(key, signatureType, dataToVerify); + + case 6: + _context11.t1 = _context11.sent; + + case 7: + _context11.t0 = _context11.t1; + + case 8: + if (!_context11.t0) { + _context11.next = 11; + break; + } + + // TODO get an identifier of the revoked object instead + revocationKeyIds.push(revocationSignature.issuerKeyId); + return _context11.abrupt('return', true); + + case 11: + return _context11.abrupt('return', false); + + case 12: + case 'end': + return _context11.stop(); + } + } + }, _callee11, this); + })); + + return function (_x42) { + return _ref13.apply(this, arguments); + }; + }())); + + case 5: + if (!signature) { + _context12.next = 8; + break; + } + + signature.revoked = revocationKeyIds.some(function (keyId) { + return keyId.equals(signature.issuerKeyId); + }) ? true : signature.revoked || false; + return _context12.abrupt('return', signature.revoked); + + case 8: + return _context12.abrupt('return', revocationKeyIds.length > 0); + + case 9: + case 'end': + return _context12.stop(); + } + } + }, _callee12, this); + })); + + return function isDataRevoked(_x35, _x36, _x37, _x38, _x39, _x40) { + return _ref12.apply(this, arguments); }; }(); @@ -43023,33 +43594,31 @@ var getPreferredAlgo = exports.getPreferredAlgo = function () { * @returns {Promise} * @async */ - - var isAeadSupported = exports.isAeadSupported = function () { - var _ref72 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee65(keys) { + var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(keys) { var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date(); var userIds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; var supported; - return _regenerator2.default.wrap(function _callee65$(_context65) { + return _regenerator2.default.wrap(function _callee14$(_context14) { while (1) { - switch (_context65.prev = _context65.next) { + switch (_context14.prev = _context14.next) { case 0: supported = true; // TODO replace when Promise.some or Promise.any are implemented - _context65.next = 3; + _context14.next = 3; return _promise2.default.all(keys.map(function () { - var _ref73 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee64(key, i) { + var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(key, i) { var primaryUser; - return _regenerator2.default.wrap(function _callee64$(_context64) { + return _regenerator2.default.wrap(function _callee13$(_context13) { while (1) { - switch (_context64.prev = _context64.next) { + switch (_context13.prev = _context13.next) { case 0: - _context64.next = 2; + _context13.next = 2; return key.getPrimaryUser(date, userIds[i]); case 2: - primaryUser = _context64.sent; + primaryUser = _context13.sent; if (!primaryUser || !primaryUser.selfCertification.features || !(primaryUser.selfCertification.features[0] & _enums2.default.features.aead)) { supported = false; @@ -43057,61 +43626,223 @@ var isAeadSupported = exports.isAeadSupported = function () { case 4: case 'end': - return _context64.stop(); + return _context13.stop(); } } - }, _callee64, this); + }, _callee13, this); })); - return function (_x141, _x142) { - return _ref73.apply(this, arguments); + return function (_x46, _x47) { + return _ref15.apply(this, arguments); }; }())); case 3: - return _context65.abrupt('return', supported); + return _context14.abrupt('return', supported); case 4: case 'end': - return _context65.stop(); + return _context14.stop(); } } - }, _callee65, this); + }, _callee14, this); })); - return function isAeadSupported(_x138) { - return _ref72.apply(this, arguments); + return function isAeadSupported(_x43) { + return _ref14.apply(this, arguments); }; }(); -exports.Key = Key; +exports.isDataExpired = isDataExpired; +exports.getExpirationTime = getExpirationTime; +exports.checkRevocationKey = checkRevocationKey; +exports.sanitizeKeyOptions = sanitizeKeyOptions; +exports.isValidSigningKeyPacket = isValidSigningKeyPacket; +exports.isValidEncryptionKeyPacket = isValidEncryptionKeyPacket; -var _armor = _dereq_('./encoding/armor'); - -var _armor2 = _interopRequireDefault(_armor); - -var _crypto = _dereq_('./crypto'); - -var _crypto2 = _interopRequireDefault(_crypto); - -var _packet = _dereq_('./packet'); +var _packet = _dereq_('../packet'); var _packet2 = _interopRequireDefault(_packet); -var _config = _dereq_('./config'); - -var _config2 = _interopRequireDefault(_config); - -var _enums = _dereq_('./enums'); +var _enums = _dereq_('../enums'); var _enums2 = _interopRequireDefault(_enums); -var _util = _dereq_('./util'); +var _config = _dereq_('../config'); + +var _config2 = _interopRequireDefault(_config); + +var _crypto = _dereq_('../crypto'); + +var _crypto2 = _interopRequireDefault(_crypto); + +var _util = _dereq_('../util'); var _util2 = _interopRequireDefault(_util); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function isDataExpired(keyPacket, signature) { + var date = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Date(); + + var normDate = _util2.default.normalizeDate(date); + if (normDate !== null) { + var expirationTime = getExpirationTime(keyPacket, signature); + return !(keyPacket.created <= normDate && normDate <= expirationTime) || signature && signature.isExpired(date); + } + return false; +}function getExpirationTime(keyPacket, signature) { + var expirationTime = void 0; + // check V4 expiration time + if (signature.keyNeverExpires === false) { + expirationTime = keyPacket.created.getTime() + signature.keyExpirationTime * 1000; + } + return expirationTime ? new Date(expirationTime) : Infinity; +} + +/** + * Check if signature has revocation key sub packet (not supported by OpenPGP.js) + * and throw error if found + * @param {module:packet.Signature} signature The certificate or signature to check + * @param {type/keyid} keyId Check only certificates or signatures from a certain issuer key ID + */ +function checkRevocationKey(signature, keyId) { + if (signature.revocationKeyClass !== null && signature.issuerKeyId.equals(keyId)) { + throw new Error('This key is intended to be revoked with an authorized key, which OpenPGP.js does not support.'); + } +}function sanitizeKeyOptions(options) { + var subkeyDefaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + options.curve = options.curve || subkeyDefaults.curve; + options.rsaBits = options.rsaBits || subkeyDefaults.rsaBits; + options.keyExpirationTime = options.keyExpirationTime !== undefined ? options.keyExpirationTime : subkeyDefaults.keyExpirationTime; + options.passphrase = _util2.default.isString(options.passphrase) ? options.passphrase : subkeyDefaults.passphrase; + options.date = options.date || subkeyDefaults.date; + + options.sign = options.sign || false; + + if (options.curve) { + try { + options.curve = _enums2.default.write(_enums2.default.curve, options.curve); + } catch (e) { + throw new Error('Not valid curve.'); + } + if (options.curve === _enums2.default.curve.ed25519 || options.curve === _enums2.default.curve.curve25519) { + options.curve = options.sign ? _enums2.default.curve.ed25519 : _enums2.default.curve.curve25519; + } + if (options.sign) { + options.algorithm = options.curve === _enums2.default.curve.ed25519 ? _enums2.default.publicKey.eddsa : _enums2.default.publicKey.ecdsa; + } else { + options.algorithm = _enums2.default.publicKey.ecdh; + } + } else if (options.rsaBits) { + options.algorithm = _enums2.default.publicKey.rsa_encrypt_sign; + } else { + throw new Error('Unrecognized key type'); + } + return options; +} + +function isValidSigningKeyPacket(keyPacket, signature) { + if (!signature.verified || signature.revoked !== false) { + // Sanity check + throw new Error('Signature not verified'); + } + return keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.rsa_encrypt) && keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.elgamal) && keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.ecdh) && (!signature.keyFlags || (signature.keyFlags[0] & _enums2.default.keyFlags.sign_data) !== 0); +} + +function isValidEncryptionKeyPacket(keyPacket, signature) { + if (!signature.verified || signature.revoked !== false) { + // Sanity check + throw new Error('Signature not verified'); + } + return keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.dsa) && keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.rsa_sign) && keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.ecdsa) && keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.eddsa) && (!signature.keyFlags || (signature.keyFlags[0] & _enums2.default.keyFlags.encrypt_communication) !== 0 || (signature.keyFlags[0] & _enums2.default.keyFlags.encrypt_storage) !== 0); +} + +},{"../config":350,"../crypto":365,"../enums":384,"../packet":402,"../util":429,"babel-runtime/core-js/object/assign":22,"babel-runtime/core-js/object/get-prototype-of":28,"babel-runtime/core-js/object/values":30,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43}],389:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Key = exports.createSignaturePacket = exports.getPreferredHashAlgo = exports.isAeadSupported = exports.getPreferredAlgo = exports.reformat = exports.read = exports.generate = exports.readArmored = undefined; + +var _factory = _dereq_('./factory'); + +var _helper = _dereq_('./helper'); + +var _key = _dereq_('./key.js'); + +var _key2 = _interopRequireDefault(_key); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.readArmored = _factory.readArmored; +exports.generate = _factory.generate; +exports.read = _factory.read; +exports.reformat = _factory.reformat; +exports.getPreferredAlgo = _helper.getPreferredAlgo; +exports.isAeadSupported = _helper.isAeadSupported; +exports.getPreferredHashAlgo = _helper.getPreferredHashAlgo; +exports.createSignaturePacket = _helper.createSignaturePacket; +exports.Key = _key2.default; /** + * @fileoverview helper, factory methods, constructors dealing with openPGP key object + * @module key + */ + +},{"./factory":387,"./helper":388,"./key.js":390}],390:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _promise = _dereq_('babel-runtime/core-js/promise'); + +var _promise2 = _interopRequireDefault(_promise); + +var _regenerator = _dereq_('babel-runtime/regenerator'); + +var _regenerator2 = _interopRequireDefault(_regenerator); + +var _asyncToGenerator2 = _dereq_('babel-runtime/helpers/asyncToGenerator'); + +var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); + +exports.default = Key; + +var _armor = _dereq_('../encoding/armor'); + +var _armor2 = _interopRequireDefault(_armor); + +var _packet = _dereq_('../packet'); + +var _packet2 = _interopRequireDefault(_packet); + +var _enums = _dereq_('../enums'); + +var _enums2 = _interopRequireDefault(_enums); + +var _util = _dereq_('../util'); + +var _util2 = _interopRequireDefault(_util); + +var _user2 = _dereq_('./user'); + +var _user3 = _interopRequireDefault(_user2); + +var _subkey = _dereq_('./subkey'); + +var _subkey2 = _interopRequireDefault(_subkey); + +var _helper = _dereq_('./helper'); + +var helper = _interopRequireWildcard(_helper); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + /** * @class * @classdesc Class that represents an OpenPGP key. Must contain a primary key. @@ -43124,7 +43855,21 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * @borrows module:packet.PublicKey#getCreationTime as Key#getCreationTime * @borrows module:packet.PublicKey#isDecrypted as Key#isDecrypted */ -// GPG4Browsers - An OpenPGP implementation in javascript +function Key(packetlist) { + if (!(this instanceof Key)) { + return new Key(packetlist); + } + // same data as in packetlist but in structured form + this.keyPacket = null; + this.revocationSignatures = []; + this.directSignatures = []; + this.users = []; + this.subKeys = []; + this.packetlist2structure(packetlist); + if (!this.keyPacket || !this.users.length) { + throw new Error('Invalid key: need at least key and user ID packet'); + } +} // GPG4Browsers - An OpenPGP implementation in javascript // Copyright (C) 2011 Recurity Labs GmbH // // This library is free software; you can redistribute it and/or @@ -43143,30 +43888,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de /** * @requires encoding/armor - * @requires crypto * @requires packet - * @requires config * @requires enums * @requires util - * @module key + * @requires key/User + * @requires key/Subkey + * @module key/Key */ -function Key(packetlist) { - if (!(this instanceof Key)) { - return new Key(packetlist); - } - // same data as in packetlist but in structured form - this.keyPacket = null; - this.revocationSignatures = []; - this.directSignatures = []; - this.users = []; - this.subKeys = []; - this.packetlist2structure(packetlist); - if (!this.keyPacket || !this.users.length) { - throw new Error('Invalid key: need at least key and user ID packet'); - } -} - Object.defineProperty(Key.prototype, 'primaryKey', { get: function get() { return this.keyPacket; @@ -43193,13 +43922,13 @@ Key.prototype.packetlist2structure = function (packetlist) { break; case _enums2.default.packet.userid: case _enums2.default.packet.userAttribute: - user = new User(packetlist[i]); + user = new _user3.default(packetlist[i]); this.users.push(user); break; case _enums2.default.packet.publicSubkey: case _enums2.default.packet.secretSubkey: user = null; - subKey = new SubKey(packetlist[i]); + subKey = new _subkey2.default(packetlist[i]); this.subKeys.push(subKey); break; case _enums2.default.packet.signature: @@ -43213,7 +43942,7 @@ Key.prototype.packetlist2structure = function (packetlist) { continue; } if (packetlist[i].issuerKeyId.equals(primaryKeyId)) { - checkRevocationKey(packetlist[i], primaryKeyId); + helper.checkRevocationKey(packetlist[i], primaryKeyId); user.selfCertifications.push(packetlist[i]); } else { user.otherCertifications.push(packetlist[i]); @@ -43227,7 +43956,7 @@ Key.prototype.packetlist2structure = function (packetlist) { } break; case _enums2.default.signature.key: - checkRevocationKey(packetlist[i], primaryKeyId); + helper.checkRevocationKey(packetlist[i], primaryKeyId); this.directSignatures.push(packetlist[i]); break; case _enums2.default.signature.subkey_binding: @@ -43235,7 +43964,7 @@ Key.prototype.packetlist2structure = function (packetlist) { _util2.default.print_debug('Dropping subkey binding signature without preceding subkey packet'); continue; } - checkRevocationKey(packetlist[i], primaryKeyId); + helper.checkRevocationKey(packetlist[i], primaryKeyId); subKey.bindingSignatures.push(packetlist[i]); break; case _enums2.default.signature.key_revocation: @@ -43382,34 +44111,36 @@ Key.prototype.toPublic = function () { Key.prototype.armor = function () { var type = this.isPublic() ? _enums2.default.armor.public_key : _enums2.default.armor.private_key; return _armor2.default.encode(type, this.toPacketlist().write()); -};Key.prototype.getSigningKey = function () { - var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() { +}; + +/** + * Returns last created key or key by given keyId that is available for signing and verification + * @param {module:type/keyid} keyId, optional + * @param {Date} date (optional) use the given date for verification instead of the current time + * @param {Object} userId, optional user ID + * @returns {Promise} key or null if no signing key has been found + * @async + */ +Key.prototype.getSigningKey = function () { + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { var keyId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date(); var userId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var primaryKey, subKeys, i, dataToVerify, bindingSignature, primaryUser, isValidSigningKeyPacket; - return _regenerator2.default.wrap(function _callee2$(_context2) { + var primaryKey, subKeys, i, dataToVerify, bindingSignature, primaryUser; + return _regenerator2.default.wrap(function _callee$(_context) { while (1) { - switch (_context2.prev = _context2.next) { + switch (_context.prev = _context.next) { case 0: - isValidSigningKeyPacket = function isValidSigningKeyPacket(keyPacket, signature) { - if (!signature.verified || signature.revoked !== false) { - // Sanity check - throw new Error('Signature not verified'); - } - return keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.rsa_encrypt) && keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.elgamal) && keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.ecdh) && (!signature.keyFlags || (signature.keyFlags[0] & _enums2.default.keyFlags.sign_data) !== 0); - }; - primaryKey = this.keyPacket; - _context2.next = 4; + _context.next = 3; return this.verifyPrimaryKey(date, userId); - case 4: - _context2.t0 = _context2.sent; - _context2.t1 = _enums2.default.keyStatus.valid; + case 3: + _context.t0 = _context.sent; + _context.t1 = _enums2.default.keyStatus.valid; - if (!(_context2.t0 === _context2.t1)) { - _context2.next = 35; + if (!(_context.t0 === _context.t1)) { + _context.next = 34; break; } @@ -43418,88 +44149,88 @@ Key.prototype.armor = function () { }); i = 0; - case 9: + case 8: if (!(i < subKeys.length)) { - _context2.next = 30; + _context.next = 29; break; } if (!(!keyId || subKeys[i].getKeyId().equals(keyId))) { - _context2.next = 27; + _context.next = 26; break; } - _context2.next = 13; + _context.next = 12; return subKeys[i].verify(primaryKey, date); - case 13: - _context2.t2 = _context2.sent; - _context2.t3 = _enums2.default.keyStatus.valid; + case 12: + _context.t2 = _context.sent; + _context.t3 = _enums2.default.keyStatus.valid; - if (!(_context2.t2 === _context2.t3)) { - _context2.next = 27; + if (!(_context.t2 === _context.t3)) { + _context.next = 26; break; } dataToVerify = { key: primaryKey, bind: subKeys[i].keyPacket }; - _context2.next = 19; - return getLatestValidSignature(subKeys[i].bindingSignatures, primaryKey, _enums2.default.signature.subkey_binding, dataToVerify, date); + _context.next = 18; + return helper.getLatestValidSignature(subKeys[i].bindingSignatures, primaryKey, _enums2.default.signature.subkey_binding, dataToVerify, date); - case 19: - bindingSignature = _context2.sent; - _context2.t4 = bindingSignature && bindingSignature.embeddedSignature && isValidSigningKeyPacket(subKeys[i].keyPacket, bindingSignature); + case 18: + bindingSignature = _context.sent; + _context.t4 = bindingSignature && bindingSignature.embeddedSignature && helper.isValidSigningKeyPacket(subKeys[i].keyPacket, bindingSignature); - if (!_context2.t4) { - _context2.next = 25; + if (!_context.t4) { + _context.next = 24; break; } - _context2.next = 24; - return getLatestValidSignature([bindingSignature.embeddedSignature], subKeys[i].keyPacket, _enums2.default.signature.key_binding, dataToVerify, date); + _context.next = 23; + return helper.getLatestValidSignature([bindingSignature.embeddedSignature], subKeys[i].keyPacket, _enums2.default.signature.key_binding, dataToVerify, date); + + case 23: + _context.t4 = _context.sent; case 24: - _context2.t4 = _context2.sent; - - case 25: - if (!_context2.t4) { - _context2.next = 27; + if (!_context.t4) { + _context.next = 26; break; } - return _context2.abrupt('return', subKeys[i]); + return _context.abrupt('return', subKeys[i]); - case 27: + case 26: i++; - _context2.next = 9; + _context.next = 8; break; - case 30: - _context2.next = 32; + case 29: + _context.next = 31; return this.getPrimaryUser(date, userId); - case 32: - primaryUser = _context2.sent; + case 31: + primaryUser = _context.sent; - if (!(primaryUser && (!keyId || primaryKey.getKeyId().equals(keyId)) && isValidSigningKeyPacket(primaryKey, primaryUser.selfCertification))) { - _context2.next = 35; + if (!(primaryUser && (!keyId || primaryKey.getKeyId().equals(keyId)) && helper.isValidSigningKeyPacket(primaryKey, primaryUser.selfCertification))) { + _context.next = 34; break; } - return _context2.abrupt('return', this); + return _context.abrupt('return', this); + + case 34: + return _context.abrupt('return', null); case 35: - return _context2.abrupt('return', null); - - case 36: case 'end': - return _context2.stop(); + return _context.stop(); } } - }, _callee2, this); + }, _callee, this); })); return function () { - return _ref2.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); @@ -43512,110 +44243,102 @@ Key.prototype.armor = function () { * @async */ Key.prototype.getEncryptionKey = function () { - var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(keyId) { + var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(keyId) { var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date(); var userId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var primaryKey, subKeys, i, dataToVerify, bindingSignature, primaryUser, isValidEncryptionKeyPacket; - return _regenerator2.default.wrap(function _callee3$(_context3) { + var primaryKey, subKeys, i, dataToVerify, bindingSignature, primaryUser; + return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { - switch (_context3.prev = _context3.next) { + switch (_context2.prev = _context2.next) { case 0: - isValidEncryptionKeyPacket = function isValidEncryptionKeyPacket(keyPacket, signature) { - if (!signature.verified || signature.revoked !== false) { - // Sanity check - throw new Error('Signature not verified'); - } - return keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.dsa) && keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.rsa_sign) && keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.ecdsa) && keyPacket.algorithm !== _enums2.default.read(_enums2.default.publicKey, _enums2.default.publicKey.eddsa) && (!signature.keyFlags || (signature.keyFlags[0] & _enums2.default.keyFlags.encrypt_communication) !== 0 || (signature.keyFlags[0] & _enums2.default.keyFlags.encrypt_storage) !== 0); - }; - primaryKey = this.keyPacket; - _context3.next = 4; + _context2.next = 3; return this.verifyPrimaryKey(date, userId); - case 4: - _context3.t0 = _context3.sent; - _context3.t1 = _enums2.default.keyStatus.valid; + case 3: + _context2.t0 = _context2.sent; + _context2.t1 = _enums2.default.keyStatus.valid; - if (!(_context3.t0 === _context3.t1)) { - _context3.next = 30; + if (!(_context2.t0 === _context2.t1)) { + _context2.next = 29; break; } - // V4: by convention subkeys are preferred for encryption service + // V4: by convention subkeys are preffered for encryption service subKeys = this.subKeys.slice().sort(function (a, b) { return b.keyPacket.created - a.keyPacket.created; }); i = 0; - case 9: + case 8: if (!(i < subKeys.length)) { - _context3.next = 25; + _context2.next = 24; break; } if (!(!keyId || subKeys[i].getKeyId().equals(keyId))) { - _context3.next = 22; + _context2.next = 21; break; } - _context3.next = 13; + _context2.next = 12; return subKeys[i].verify(primaryKey, date); - case 13: - _context3.t2 = _context3.sent; - _context3.t3 = _enums2.default.keyStatus.valid; + case 12: + _context2.t2 = _context2.sent; + _context2.t3 = _enums2.default.keyStatus.valid; - if (!(_context3.t2 === _context3.t3)) { - _context3.next = 22; + if (!(_context2.t2 === _context2.t3)) { + _context2.next = 21; break; } dataToVerify = { key: primaryKey, bind: subKeys[i].keyPacket }; - _context3.next = 19; - return getLatestValidSignature(subKeys[i].bindingSignatures, primaryKey, _enums2.default.signature.subkey_binding, dataToVerify, date); + _context2.next = 18; + return helper.getLatestValidSignature(subKeys[i].bindingSignatures, primaryKey, _enums2.default.signature.subkey_binding, dataToVerify, date); - case 19: - bindingSignature = _context3.sent; + case 18: + bindingSignature = _context2.sent; - if (!(bindingSignature && isValidEncryptionKeyPacket(subKeys[i].keyPacket, bindingSignature))) { - _context3.next = 22; + if (!(bindingSignature && helper.isValidEncryptionKeyPacket(subKeys[i].keyPacket, bindingSignature))) { + _context2.next = 21; break; } - return _context3.abrupt('return', subKeys[i]); + return _context2.abrupt('return', subKeys[i]); - case 22: + case 21: i++; - _context3.next = 9; + _context2.next = 8; break; - case 25: - _context3.next = 27; + case 24: + _context2.next = 26; return this.getPrimaryUser(date, userId); - case 27: - primaryUser = _context3.sent; + case 26: + primaryUser = _context2.sent; - if (!(primaryUser && (!keyId || primaryKey.getKeyId().equals(keyId)) && isValidEncryptionKeyPacket(primaryKey, primaryUser.selfCertification))) { - _context3.next = 30; + if (!(primaryUser && (!keyId || primaryKey.getKeyId().equals(keyId)) && helper.isValidEncryptionKeyPacket(primaryKey, primaryUser.selfCertification))) { + _context2.next = 29; break; } - return _context3.abrupt('return', this); + return _context2.abrupt('return', this); + + case 29: + return _context2.abrupt('return', null); case 30: - return _context3.abrupt('return', null); - - case 31: case 'end': - return _context3.stop(); + return _context2.stop(); } } - }, _callee3, this); + }, _callee2, this); })); - return function (_x11) { - return _ref3.apply(this, arguments); + return function (_x6) { + return _ref2.apply(this, arguments); }; }(); @@ -43627,15 +44350,15 @@ Key.prototype.getEncryptionKey = function () { * @async */ Key.prototype.encrypt = function () { - var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(passphrases) { + var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(passphrases) { var keyId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var keys; - return _regenerator2.default.wrap(function _callee5$(_context5) { + return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { - switch (_context5.prev = _context5.next) { + switch (_context4.prev = _context4.next) { case 0: if (this.isPrivate()) { - _context5.next = 2; + _context4.next = 2; break; } @@ -43647,51 +44370,51 @@ Key.prototype.encrypt = function () { passphrases = _util2.default.isArray(passphrases) ? passphrases : new Array(keys.length).fill(passphrases); if (!(passphrases.length !== keys.length)) { - _context5.next = 6; + _context4.next = 6; break; } throw new Error("Invalid number of passphrases for key"); case 6: - return _context5.abrupt('return', _promise2.default.all(keys.map(function () { - var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(key, i) { + return _context4.abrupt('return', _promise2.default.all(keys.map(function () { + var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(key, i) { var keyPacket; - return _regenerator2.default.wrap(function _callee4$(_context4) { + return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { - switch (_context4.prev = _context4.next) { + switch (_context3.prev = _context3.next) { case 0: keyPacket = key.keyPacket; - _context4.next = 3; + _context3.next = 3; return keyPacket.encrypt(passphrases[i]); case 3: keyPacket.clearPrivateParams(); - return _context4.abrupt('return', keyPacket); + return _context3.abrupt('return', keyPacket); case 5: case 'end': - return _context4.stop(); + return _context3.stop(); } } - }, _callee4, this); + }, _callee3, this); })); - return function (_x16, _x17) { - return _ref5.apply(this, arguments); + return function (_x11, _x12) { + return _ref4.apply(this, arguments); }; }()))); case 7: case 'end': - return _context5.stop(); + return _context4.stop(); } } - }, _callee5, this); + }, _callee4, this); })); - return function (_x14) { - return _ref4.apply(this, arguments); + return function (_x9) { + return _ref3.apply(this, arguments); }; }(); @@ -43703,15 +44426,15 @@ Key.prototype.encrypt = function () { * @async */ Key.prototype.decrypt = function () { - var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(passphrases) { + var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(passphrases) { var keyId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var results; - return _regenerator2.default.wrap(function _callee8$(_context8) { + return _regenerator2.default.wrap(function _callee7$(_context7) { while (1) { - switch (_context8.prev = _context8.next) { + switch (_context7.prev = _context7.next) { case 0: if (this.isPrivate()) { - _context8.next = 2; + _context7.next = 2; break; } @@ -43720,91 +44443,91 @@ Key.prototype.decrypt = function () { case 2: passphrases = _util2.default.isArray(passphrases) ? passphrases : [passphrases]; - _context8.next = 5; + _context7.next = 5; return _promise2.default.all(this.getKeys(keyId).map(function () { - var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(key) { + var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(key) { var decrypted, error; - return _regenerator2.default.wrap(function _callee7$(_context7) { + return _regenerator2.default.wrap(function _callee6$(_context6) { while (1) { - switch (_context7.prev = _context7.next) { + switch (_context6.prev = _context6.next) { case 0: decrypted = false; error = null; - _context7.next = 4; + _context6.next = 4; return _promise2.default.all(passphrases.map(function () { - var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(passphrase) { - return _regenerator2.default.wrap(function _callee6$(_context6) { + var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(passphrase) { + return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { - switch (_context6.prev = _context6.next) { + switch (_context5.prev = _context5.next) { case 0: - _context6.prev = 0; - _context6.next = 3; + _context5.prev = 0; + _context5.next = 3; return key.keyPacket.decrypt(passphrase); case 3: decrypted = true; - _context6.next = 9; + _context5.next = 9; break; case 6: - _context6.prev = 6; - _context6.t0 = _context6['catch'](0); + _context5.prev = 6; + _context5.t0 = _context5['catch'](0); - error = _context6.t0; + error = _context5.t0; case 9: case 'end': - return _context6.stop(); + return _context5.stop(); } } - }, _callee6, this, [[0, 6]]); + }, _callee5, this, [[0, 6]]); })); - return function (_x21) { - return _ref8.apply(this, arguments); + return function (_x16) { + return _ref7.apply(this, arguments); }; }())); case 4: if (decrypted) { - _context7.next = 6; + _context6.next = 6; break; } throw error; case 6: - return _context7.abrupt('return', decrypted); + return _context6.abrupt('return', decrypted); case 7: case 'end': - return _context7.stop(); + return _context6.stop(); } } - }, _callee7, this); + }, _callee6, this); })); - return function (_x20) { - return _ref7.apply(this, arguments); + return function (_x15) { + return _ref6.apply(this, arguments); }; }())); case 5: - results = _context8.sent; - return _context8.abrupt('return', results.every(function (result) { + results = _context7.sent; + return _context7.abrupt('return', results.every(function (result) { return result === true; })); case 7: case 'end': - return _context8.stop(); + return _context7.stop(); } } - }, _callee8, this); + }, _callee7, this); })); - return function (_x18) { - return _ref6.apply(this, arguments); + return function (_x13) { + return _ref5.apply(this, arguments); }; }(); @@ -43821,24 +44544,24 @@ Key.prototype.decrypt = function () { * @async */ Key.prototype.isRevoked = function () { - var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(signature, key) { + var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(signature, key) { var date = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Date(); - return _regenerator2.default.wrap(function _callee9$(_context9) { + return _regenerator2.default.wrap(function _callee8$(_context8) { while (1) { - switch (_context9.prev = _context9.next) { + switch (_context8.prev = _context8.next) { case 0: - return _context9.abrupt('return', isDataRevoked(this.keyPacket, _enums2.default.signature.key_revocation, { key: this.keyPacket }, this.revocationSignatures, signature, key, date)); + return _context8.abrupt('return', helper.isDataRevoked(this.keyPacket, _enums2.default.signature.key_revocation, { key: this.keyPacket }, this.revocationSignatures, signature, key, date)); case 1: case 'end': - return _context9.stop(); + return _context8.stop(); } } - }, _callee9, this); + }, _callee8, this); })); - return function (_x22, _x23) { - return _ref9.apply(this, arguments); + return function (_x17, _x18) { + return _ref8.apply(this, arguments); }; }(); @@ -43851,87 +44574,87 @@ Key.prototype.isRevoked = function () { * @async */ Key.prototype.verifyPrimaryKey = function () { - var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10() { + var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() { var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date(); var userId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var primaryKey, _ref11, user, selfCertification; + var primaryKey, _ref10, user, selfCertification; - return _regenerator2.default.wrap(function _callee10$(_context10) { + return _regenerator2.default.wrap(function _callee9$(_context9) { while (1) { - switch (_context10.prev = _context10.next) { + switch (_context9.prev = _context9.next) { case 0: primaryKey = this.keyPacket; // check for key revocation signatures - _context10.next = 3; + _context9.next = 3; return this.isRevoked(null, null, date); case 3: - if (!_context10.sent) { - _context10.next = 5; + if (!_context9.sent) { + _context9.next = 5; break; } - return _context10.abrupt('return', _enums2.default.keyStatus.revoked); + return _context9.abrupt('return', _enums2.default.keyStatus.revoked); case 5: if (this.users.some(function (user) { return user.userId && user.selfCertifications.length; })) { - _context10.next = 7; + _context9.next = 7; break; } - return _context10.abrupt('return', _enums2.default.keyStatus.no_self_cert); + return _context9.abrupt('return', _enums2.default.keyStatus.no_self_cert); case 7: - _context10.next = 9; + _context9.next = 9; return this.getPrimaryUser(date, userId); case 9: - _context10.t0 = _context10.sent; + _context9.t0 = _context9.sent; - if (_context10.t0) { - _context10.next = 12; + if (_context9.t0) { + _context9.next = 12; break; } - _context10.t0 = {}; + _context9.t0 = {}; case 12: - _ref11 = _context10.t0; - user = _ref11.user; - selfCertification = _ref11.selfCertification; + _ref10 = _context9.t0; + user = _ref10.user; + selfCertification = _ref10.selfCertification; if (user) { - _context10.next = 17; + _context9.next = 17; break; } - return _context10.abrupt('return', _enums2.default.keyStatus.invalid); + return _context9.abrupt('return', _enums2.default.keyStatus.invalid); case 17: - if (!isDataExpired(primaryKey, selfCertification, date)) { - _context10.next = 19; + if (!helper.isDataExpired(primaryKey, selfCertification, date)) { + _context9.next = 19; break; } - return _context10.abrupt('return', _enums2.default.keyStatus.expired); + return _context9.abrupt('return', _enums2.default.keyStatus.expired); case 19: - return _context10.abrupt('return', _enums2.default.keyStatus.valid); + return _context9.abrupt('return', _enums2.default.keyStatus.valid); case 20: case 'end': - return _context10.stop(); + return _context9.stop(); } } - }, _callee10, this); + }, _callee9, this); })); return function () { - return _ref10.apply(this, arguments); + return _ref9.apply(this, arguments); }; }(); @@ -43947,20 +44670,20 @@ Key.prototype.verifyPrimaryKey = function () { * @async */ Key.prototype.getExpirationTime = function () { - var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(capabilities, keyId, userId) { + var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(capabilities, keyId, userId) { var primaryUser, selfCert, keyExpiry, sigExpiry, expiry, encryptKey, encryptExpiry, signKey, signExpiry; - return _regenerator2.default.wrap(function _callee11$(_context11) { + return _regenerator2.default.wrap(function _callee10$(_context10) { while (1) { - switch (_context11.prev = _context11.next) { + switch (_context10.prev = _context10.next) { case 0: - _context11.next = 2; + _context10.next = 2; return this.getPrimaryUser(null, userId); case 2: - primaryUser = _context11.sent; + primaryUser = _context10.sent; if (primaryUser) { - _context11.next = 5; + _context10.next = 5; break; } @@ -43968,106 +44691,106 @@ Key.prototype.getExpirationTime = function () { case 5: selfCert = primaryUser.selfCertification; - keyExpiry = getExpirationTime(this.keyPacket, selfCert); + keyExpiry = helper.getExpirationTime(this.keyPacket, selfCert); sigExpiry = selfCert.getExpirationTime(); expiry = keyExpiry < sigExpiry ? keyExpiry : sigExpiry; if (!(capabilities === 'encrypt' || capabilities === 'encrypt_sign')) { - _context11.next = 24; + _context10.next = 24; break; } - _context11.next = 12; + _context10.next = 12; return this.getEncryptionKey(keyId, expiry, userId); case 12: - _context11.t0 = _context11.sent; + _context10.t0 = _context10.sent; - if (_context11.t0) { - _context11.next = 17; + if (_context10.t0) { + _context10.next = 17; break; } - _context11.next = 16; + _context10.next = 16; return this.getEncryptionKey(keyId, null, userId); case 16: - _context11.t0 = _context11.sent; + _context10.t0 = _context10.sent; case 17: - encryptKey = _context11.t0; + encryptKey = _context10.t0; if (encryptKey) { - _context11.next = 20; + _context10.next = 20; break; } - return _context11.abrupt('return', null); + return _context10.abrupt('return', null); case 20: - _context11.next = 22; + _context10.next = 22; return encryptKey.getExpirationTime(this.keyPacket); case 22: - encryptExpiry = _context11.sent; + encryptExpiry = _context10.sent; if (encryptExpiry < expiry) expiry = encryptExpiry; case 24: if (!(capabilities === 'sign' || capabilities === 'encrypt_sign')) { - _context11.next = 39; + _context10.next = 39; break; } - _context11.next = 27; + _context10.next = 27; return this.getSigningKey(keyId, expiry, userId); case 27: - _context11.t1 = _context11.sent; + _context10.t1 = _context10.sent; - if (_context11.t1) { - _context11.next = 32; + if (_context10.t1) { + _context10.next = 32; break; } - _context11.next = 31; + _context10.next = 31; return this.getSigningKey(keyId, null, userId); case 31: - _context11.t1 = _context11.sent; + _context10.t1 = _context10.sent; case 32: - signKey = _context11.t1; + signKey = _context10.t1; if (signKey) { - _context11.next = 35; + _context10.next = 35; break; } - return _context11.abrupt('return', null); + return _context10.abrupt('return', null); case 35: - _context11.next = 37; + _context10.next = 37; return signKey.getExpirationTime(this.keyPacket); case 37: - signExpiry = _context11.sent; + signExpiry = _context10.sent; if (signExpiry < expiry) expiry = signExpiry; case 39: - return _context11.abrupt('return', expiry); + return _context10.abrupt('return', expiry); case 40: case 'end': - return _context11.stop(); + return _context10.stop(); } } - }, _callee11, this); + }, _callee10, this); })); - return function (_x27, _x28, _x29) { - return _ref12.apply(this, arguments); + return function (_x22, _x23, _x24) { + return _ref11.apply(this, arguments); }; }(); @@ -44082,15 +44805,15 @@ Key.prototype.getExpirationTime = function () { * @async */ Key.prototype.getPrimaryUser = function () { - var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13() { + var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12() { var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date(); var userId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var primaryKey, users, i, _user, dataToVerify, selfCertification, primaryUser, user, cert; - return _regenerator2.default.wrap(function _callee13$(_context13) { + return _regenerator2.default.wrap(function _callee12$(_context12) { while (1) { - switch (_context13.prev = _context13.next) { + switch (_context12.prev = _context12.next) { case 0: primaryKey = this.keyPacket; users = []; @@ -44098,78 +44821,78 @@ Key.prototype.getPrimaryUser = function () { case 3: if (!(i < this.users.length)) { - _context13.next = 17; + _context12.next = 17; break; } _user = this.users[i]; if (!(!_user.userId || !((userId.name === undefined || _user.userId.name === userId.name) && (userId.email === undefined || _user.userId.email === userId.email) && (userId.comment === undefined || _user.userId.comment === userId.comment)))) { - _context13.next = 7; + _context12.next = 7; break; } - return _context13.abrupt('continue', 14); + return _context12.abrupt('continue', 14); case 7: dataToVerify = { userId: _user.userId, key: primaryKey }; - _context13.next = 10; - return getLatestValidSignature(_user.selfCertifications, primaryKey, _enums2.default.signature.cert_generic, dataToVerify, date); + _context12.next = 10; + return helper.getLatestValidSignature(_user.selfCertifications, primaryKey, _enums2.default.signature.cert_generic, dataToVerify, date); case 10: - selfCertification = _context13.sent; + selfCertification = _context12.sent; if (selfCertification) { - _context13.next = 13; + _context12.next = 13; break; } - return _context13.abrupt('continue', 14); + return _context12.abrupt('continue', 14); case 13: users.push({ index: i, user: _user, selfCertification: selfCertification }); case 14: i++; - _context13.next = 3; + _context12.next = 3; break; case 17: if (users.length) { - _context13.next = 21; + _context12.next = 21; break; } if (!(userId.name !== undefined || userId.email !== undefined || userId.comment !== undefined)) { - _context13.next = 20; + _context12.next = 20; break; } throw new Error('Could not find user that matches that user ID'); case 20: - return _context13.abrupt('return', null); + return _context12.abrupt('return', null); case 21: - _context13.next = 23; + _context12.next = 23; return _promise2.default.all(users.map(function () { - var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(a) { - return _regenerator2.default.wrap(function _callee12$(_context12) { + var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(a) { + return _regenerator2.default.wrap(function _callee11$(_context11) { while (1) { - switch (_context12.prev = _context12.next) { + switch (_context11.prev = _context11.next) { case 0: - return _context12.abrupt('return', a.user.revoked || a.user.isRevoked(primaryKey, a.selfCertification, null, date)); + return _context11.abrupt('return', a.user.revoked || a.user.isRevoked(primaryKey, a.selfCertification, null, date)); case 1: case 'end': - return _context12.stop(); + return _context11.stop(); } } - }, _callee12, this); + }, _callee11, this); })); - return function (_x32) { - return _ref14.apply(this, arguments); + return function (_x27) { + return _ref13.apply(this, arguments); }; }())); @@ -44181,40 +44904,40 @@ Key.prototype.getPrimaryUser = function () { return B.revoked - A.revoked || A.isPrimaryUserID - B.isPrimaryUserID || A.created - B.created; }).pop(); user = primaryUser.user, cert = primaryUser.selfCertification; - _context13.t0 = cert.revoked; + _context12.t0 = cert.revoked; - if (_context13.t0) { - _context13.next = 30; + if (_context12.t0) { + _context12.next = 30; break; } - _context13.next = 29; + _context12.next = 29; return user.isRevoked(primaryKey, cert, null, date); case 29: - _context13.t0 = _context13.sent; + _context12.t0 = _context12.sent; case 30: - if (!_context13.t0) { - _context13.next = 32; + if (!_context12.t0) { + _context12.next = 32; break; } - return _context13.abrupt('return', null); + return _context12.abrupt('return', null); case 32: - return _context13.abrupt('return', primaryUser); + return _context12.abrupt('return', primaryUser); case 33: case 'end': - return _context13.stop(); + return _context12.stop(); } } - }, _callee13, this); + }, _callee12, this); })); return function () { - return _ref13.apply(this, arguments); + return _ref12.apply(this, arguments); }; }(); @@ -44230,31 +44953,31 @@ Key.prototype.getPrimaryUser = function () { * @async */ Key.prototype.update = function () { - var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee18(key) { + var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(key) { var _this = this; var equal; - return _regenerator2.default.wrap(function _callee18$(_context18) { + return _regenerator2.default.wrap(function _callee17$(_context17) { while (1) { - switch (_context18.prev = _context18.next) { + switch (_context17.prev = _context17.next) { case 0: - _context18.next = 2; + _context17.next = 2; return key.verifyPrimaryKey(); case 2: - _context18.t0 = _context18.sent; - _context18.t1 = _enums2.default.keyStatus.invalid; + _context17.t0 = _context17.sent; + _context17.t1 = _enums2.default.keyStatus.invalid; - if (!(_context18.t0 === _context18.t1)) { - _context18.next = 6; + if (!(_context17.t0 === _context17.t1)) { + _context17.next = 6; break; } - return _context18.abrupt('return'); + return _context17.abrupt('return'); case 6: if (this.hasSameFingerprintAs(key)) { - _context18.next = 8; + _context17.next = 8; break; } @@ -44262,7 +44985,7 @@ Key.prototype.update = function () { case 8: if (!(this.isPublic() && key.isPrivate())) { - _context18.next = 13; + _context17.next = 13; break; } @@ -44274,7 +44997,7 @@ Key.prototype.update = function () { }); if (equal) { - _context18.next = 12; + _context17.next = 12; break; } @@ -44284,38 +45007,38 @@ Key.prototype.update = function () { this.keyPacket = key.keyPacket; case 13: - _context18.next = 15; - return mergeSignatures(key, this, 'revocationSignatures', function (srcRevSig) { - return isDataRevoked(_this.keyPacket, _enums2.default.signature.key_revocation, _this, [srcRevSig], null, key.keyPacket); + _context17.next = 15; + return helper.mergeSignatures(key, this, 'revocationSignatures', function (srcRevSig) { + return helper.isDataRevoked(_this.keyPacket, _enums2.default.signature.key_revocation, _this, [srcRevSig], null, key.keyPacket); }); case 15: - _context18.next = 17; - return mergeSignatures(key, this, 'directSignatures'); + _context17.next = 17; + return helper.mergeSignatures(key, this, 'directSignatures'); case 17: - _context18.next = 19; + _context17.next = 19; return _promise2.default.all(key.users.map(function () { - var _ref16 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(srcUser) { + var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(srcUser) { var found; - return _regenerator2.default.wrap(function _callee15$(_context15) { + return _regenerator2.default.wrap(function _callee14$(_context14) { while (1) { - switch (_context15.prev = _context15.next) { + switch (_context14.prev = _context14.next) { case 0: found = false; - _context15.next = 3; + _context14.next = 3; return _promise2.default.all(_this.users.map(function () { - var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(dstUser) { - return _regenerator2.default.wrap(function _callee14$(_context14) { + var _ref16 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(dstUser) { + return _regenerator2.default.wrap(function _callee13$(_context13) { while (1) { - switch (_context14.prev = _context14.next) { + switch (_context13.prev = _context13.next) { case 0: if (!(srcUser.userId && dstUser.userId && srcUser.userId.userid === dstUser.userId.userid || srcUser.userAttribute && srcUser.userAttribute.equals(dstUser.userAttribute))) { - _context14.next = 4; + _context13.next = 4; break; } - _context14.next = 3; + _context13.next = 3; return dstUser.update(srcUser, _this.keyPacket); case 3: @@ -44323,14 +45046,14 @@ Key.prototype.update = function () { case 4: case 'end': - return _context14.stop(); + return _context13.stop(); } } - }, _callee14, _this); + }, _callee13, _this); })); - return function (_x35) { - return _ref17.apply(this, arguments); + return function (_x30) { + return _ref16.apply(this, arguments); }; }())); @@ -44341,40 +45064,40 @@ Key.prototype.update = function () { case 4: case 'end': - return _context15.stop(); + return _context14.stop(); } } - }, _callee15, _this); + }, _callee14, _this); })); - return function (_x34) { - return _ref16.apply(this, arguments); + return function (_x29) { + return _ref15.apply(this, arguments); }; }())); case 19: - _context18.next = 21; + _context17.next = 21; return _promise2.default.all(key.subKeys.map(function () { - var _ref18 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(srcSubKey) { + var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(srcSubKey) { var found; - return _regenerator2.default.wrap(function _callee17$(_context17) { + return _regenerator2.default.wrap(function _callee16$(_context16) { while (1) { - switch (_context17.prev = _context17.next) { + switch (_context16.prev = _context16.next) { case 0: found = false; - _context17.next = 3; + _context16.next = 3; return _promise2.default.all(_this.subKeys.map(function () { - var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(dstSubKey) { - return _regenerator2.default.wrap(function _callee16$(_context16) { + var _ref18 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(dstSubKey) { + return _regenerator2.default.wrap(function _callee15$(_context15) { while (1) { - switch (_context16.prev = _context16.next) { + switch (_context15.prev = _context15.next) { case 0: if (!dstSubKey.hasSameFingerprintAs(srcSubKey)) { - _context16.next = 4; + _context15.next = 4; break; } - _context16.next = 3; + _context15.next = 3; return dstSubKey.update(srcSubKey, _this.keyPacket); case 3: @@ -44382,14 +45105,14 @@ Key.prototype.update = function () { case 4: case 'end': - return _context16.stop(); + return _context15.stop(); } } - }, _callee16, _this); + }, _callee15, _this); })); - return function (_x37) { - return _ref19.apply(this, arguments); + return function (_x32) { + return _ref18.apply(this, arguments); }; }())); @@ -44400,44 +45123,55 @@ Key.prototype.update = function () { case 4: case 'end': - return _context17.stop(); + return _context16.stop(); } } - }, _callee17, _this); + }, _callee16, _this); })); - return function (_x36) { - return _ref18.apply(this, arguments); + return function (_x31) { + return _ref17.apply(this, arguments); }; }())); case 21: case 'end': - return _context18.stop(); + return _context17.stop(); } } - }, _callee18, this); + }, _callee17, this); })); - return function (_x33) { - return _ref15.apply(this, arguments); + return function (_x28) { + return _ref14.apply(this, arguments); }; -}();Key.prototype.revoke = function () { - var _ref22 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee21() { - var _ref23 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref23$flag = _ref23.flag, - reasonForRevocationFlag = _ref23$flag === undefined ? _enums2.default.reasonForRevocation.no_reason : _ref23$flag, - _ref23$string = _ref23.string, - reasonForRevocationString = _ref23$string === undefined ? '' : _ref23$string; +}(); + +/** + * Revokes the key + * @param {Object} reasonForRevocation optional, object indicating the reason for revocation + * @param {module:enums.reasonForRevocation} reasonForRevocation.flag optional, flag indicating the reason for revocation + * @param {String} reasonForRevocation.string optional, string explaining the reason for revocation + * @param {Date} date optional, override the creationtime of the revocation signature + * @returns {Promise} new key with revocation signature + * @async + */ +Key.prototype.revoke = function () { + var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee18() { + var _ref20 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref20$flag = _ref20.flag, + reasonForRevocationFlag = _ref20$flag === undefined ? _enums2.default.reasonForRevocation.no_reason : _ref20$flag, + _ref20$string = _ref20.string, + reasonForRevocationString = _ref20$string === undefined ? '' : _ref20$string; var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date(); var dataToSign, key; - return _regenerator2.default.wrap(function _callee21$(_context21) { + return _regenerator2.default.wrap(function _callee18$(_context18) { while (1) { - switch (_context21.prev = _context21.next) { + switch (_context18.prev = _context18.next) { case 0: if (!this.isPublic()) { - _context21.next = 2; + _context18.next = 2; break; } @@ -44446,31 +45180,31 @@ Key.prototype.update = function () { case 2: dataToSign = { key: this.keyPacket }; key = new Key(this.toPacketlist()); - _context21.t0 = key.revocationSignatures; - _context21.next = 7; - return createSignaturePacket(dataToSign, null, this.keyPacket, { + _context18.t0 = key.revocationSignatures; + _context18.next = 7; + return helper.createSignaturePacket(dataToSign, null, this.keyPacket, { signatureType: _enums2.default.signature.key_revocation, reasonForRevocationFlag: _enums2.default.write(_enums2.default.reasonForRevocation, reasonForRevocationFlag), reasonForRevocationString: reasonForRevocationString }, date); case 7: - _context21.t1 = _context21.sent; + _context18.t1 = _context18.sent; - _context21.t0.push.call(_context21.t0, _context21.t1); + _context18.t0.push.call(_context18.t0, _context18.t1); - return _context21.abrupt('return', key); + return _context18.abrupt('return', key); case 10: case 'end': - return _context21.stop(); + return _context18.stop(); } } - }, _callee21, this); + }, _callee18, this); })); return function () { - return _ref22.apply(this, arguments); + return _ref19.apply(this, arguments); }; }(); @@ -44480,35 +45214,35 @@ Key.prototype.update = function () { * @returns {Promise} armored revocation certificate * @async */ -Key.prototype.getRevocationCertificate = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee22() { +Key.prototype.getRevocationCertificate = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee19() { var dataToVerify, revocationSignature, packetlist; - return _regenerator2.default.wrap(function _callee22$(_context22) { + return _regenerator2.default.wrap(function _callee19$(_context19) { while (1) { - switch (_context22.prev = _context22.next) { + switch (_context19.prev = _context19.next) { case 0: dataToVerify = { key: this.keyPacket }; - _context22.next = 3; - return getLatestValidSignature(this.revocationSignatures, this.keyPacket, _enums2.default.signature.key_revocation, dataToVerify); + _context19.next = 3; + return helper.getLatestValidSignature(this.revocationSignatures, this.keyPacket, _enums2.default.signature.key_revocation, dataToVerify); case 3: - revocationSignature = _context22.sent; + revocationSignature = _context19.sent; if (!revocationSignature) { - _context22.next = 8; + _context19.next = 8; break; } packetlist = new _packet2.default.List(); packetlist.push(revocationSignature); - return _context22.abrupt('return', _armor2.default.encode(_enums2.default.armor.public_key, packetlist.write(), null, null, 'This is a revocation certificate')); + return _context19.abrupt('return', _armor2.default.encode(_enums2.default.armor.public_key, packetlist.write(), null, null, 'This is a revocation certificate')); case 8: case 'end': - return _context22.stop(); + return _context19.stop(); } } - }, _callee22, this); + }, _callee19, this); })); /** @@ -44520,26 +45254,26 @@ Key.prototype.getRevocationCertificate = (0, _asyncToGenerator3.default)( /*#__P * @async */ Key.prototype.applyRevocationCertificate = function () { - var _ref25 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee23(revocationCertificate) { + var _ref22 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee20(revocationCertificate) { var input, packetlist, revocationSignature, key; - return _regenerator2.default.wrap(function _callee23$(_context23) { + return _regenerator2.default.wrap(function _callee20$(_context20) { while (1) { - switch (_context23.prev = _context23.next) { + switch (_context20.prev = _context20.next) { case 0: - _context23.next = 2; + _context20.next = 2; return _armor2.default.decode(revocationCertificate); case 2: - input = _context23.sent; + input = _context20.sent; packetlist = new _packet2.default.List(); - _context23.next = 6; + _context20.next = 6; return packetlist.read(input.data); case 6: revocationSignature = packetlist.findPacket(_enums2.default.packet.signature); if (!(!revocationSignature || revocationSignature.signatureType !== _enums2.default.signature.key_revocation)) { - _context23.next = 9; + _context20.next = 9; break; } @@ -44547,7 +45281,7 @@ Key.prototype.applyRevocationCertificate = function () { case 9: if (revocationSignature.issuerKeyId.equals(this.getKeyId())) { - _context23.next = 11; + _context20.next = 11; break; } @@ -44555,19 +45289,19 @@ Key.prototype.applyRevocationCertificate = function () { case 11: if (!revocationSignature.isExpired()) { - _context23.next = 13; + _context20.next = 13; break; } throw new Error('Revocation signature is expired'); case 13: - _context23.next = 15; + _context20.next = 15; return revocationSignature.verify(this.keyPacket, _enums2.default.signature.key_revocation, { key: this.keyPacket }); case 15: - if (_context23.sent) { - _context23.next = 17; + if (_context20.sent) { + _context20.next = 17; break; } @@ -44577,18 +45311,18 @@ Key.prototype.applyRevocationCertificate = function () { key = new Key(this.toPacketlist()); key.revocationSignatures.push(revocationSignature); - return _context23.abrupt('return', key); + return _context20.abrupt('return', key); case 20: case 'end': - return _context23.stop(); + return _context20.stop(); } } - }, _callee23, this); + }, _callee20, this); })); - return function (_x45) { - return _ref25.apply(this, arguments); + return function (_x35) { + return _ref22.apply(this, arguments); }; }(); @@ -44601,59 +45335,59 @@ Key.prototype.applyRevocationCertificate = function () { * @async */ Key.prototype.signPrimaryUser = function () { - var _ref26 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee24(privateKeys, date, userId) { - var _ref27, index, user, userSign, key; + var _ref23 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee21(privateKeys, date, userId) { + var _ref24, index, user, userSign, key; - return _regenerator2.default.wrap(function _callee24$(_context24) { + return _regenerator2.default.wrap(function _callee21$(_context21) { while (1) { - switch (_context24.prev = _context24.next) { + switch (_context21.prev = _context21.next) { case 0: - _context24.next = 2; + _context21.next = 2; return this.getPrimaryUser(date, userId); case 2: - _context24.t0 = _context24.sent; + _context21.t0 = _context21.sent; - if (_context24.t0) { - _context24.next = 5; + if (_context21.t0) { + _context21.next = 5; break; } - _context24.t0 = {}; + _context21.t0 = {}; case 5: - _ref27 = _context24.t0; - index = _ref27.index; - user = _ref27.user; + _ref24 = _context21.t0; + index = _ref24.index; + user = _ref24.user; if (user) { - _context24.next = 10; + _context21.next = 10; break; } throw new Error('Could not find primary user'); case 10: - _context24.next = 12; + _context21.next = 12; return user.sign(this.keyPacket, privateKeys); case 12: - userSign = _context24.sent; + userSign = _context21.sent; key = new Key(this.toPacketlist()); key.users[index] = userSign; - return _context24.abrupt('return', key); + return _context21.abrupt('return', key); case 16: case 'end': - return _context24.stop(); + return _context21.stop(); } } - }, _callee24, this); + }, _callee21, this); })); - return function (_x46, _x47, _x48) { - return _ref26.apply(this, arguments); + return function (_x36, _x37, _x38) { + return _ref23.apply(this, arguments); }; }(); @@ -44664,33 +45398,33 @@ Key.prototype.signPrimaryUser = function () { * @async */ Key.prototype.signAllUsers = function () { - var _ref28 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee25(privateKeys) { + var _ref25 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee22(privateKeys) { var that, key; - return _regenerator2.default.wrap(function _callee25$(_context25) { + return _regenerator2.default.wrap(function _callee22$(_context22) { while (1) { - switch (_context25.prev = _context25.next) { + switch (_context22.prev = _context22.next) { case 0: that = this; key = new Key(this.toPacketlist()); - _context25.next = 4; + _context22.next = 4; return _promise2.default.all(this.users.map(function (user) { return user.sign(that.keyPacket, privateKeys); })); case 4: - key.users = _context25.sent; - return _context25.abrupt('return', key); + key.users = _context22.sent; + return _context22.abrupt('return', key); case 6: case 'end': - return _context25.stop(); + return _context22.stop(); } } - }, _callee25, this); + }, _callee22, this); })); - return function (_x49) { - return _ref28.apply(this, arguments); + return function (_x39) { + return _ref25.apply(this, arguments); }; }(); @@ -44706,33 +45440,33 @@ Key.prototype.signAllUsers = function () { * @async */ Key.prototype.verifyPrimaryUser = function () { - var _ref29 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee26(keys, date, userId) { - var primaryKey, _ref30, user, results; + var _ref26 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee23(keys, date, userId) { + var primaryKey, _ref27, user, results; - return _regenerator2.default.wrap(function _callee26$(_context26) { + return _regenerator2.default.wrap(function _callee23$(_context23) { while (1) { - switch (_context26.prev = _context26.next) { + switch (_context23.prev = _context23.next) { case 0: primaryKey = this.keyPacket; - _context26.next = 3; + _context23.next = 3; return this.getPrimaryUser(date, userId); case 3: - _context26.t0 = _context26.sent; + _context23.t0 = _context23.sent; - if (_context26.t0) { - _context26.next = 6; + if (_context23.t0) { + _context23.next = 6; break; } - _context26.t0 = {}; + _context23.t0 = {}; case 6: - _ref30 = _context26.t0; - user = _ref30.user; + _ref27 = _context23.t0; + user = _ref27.user; if (user) { - _context26.next = 10; + _context23.next = 10; break; } @@ -44740,47 +45474,47 @@ Key.prototype.verifyPrimaryUser = function () { case 10: if (!keys) { - _context26.next = 16; + _context23.next = 16; break; } - _context26.next = 13; + _context23.next = 13; return user.verifyAllCertifications(primaryKey, keys); case 13: - _context26.t1 = _context26.sent; - _context26.next = 24; + _context23.t1 = _context23.sent; + _context23.next = 24; break; case 16: - _context26.t2 = primaryKey.keyid; - _context26.next = 19; + _context23.t2 = primaryKey.keyid; + _context23.next = 19; return user.verify(primaryKey); case 19: - _context26.t3 = _context26.sent; - _context26.t4 = _enums2.default.keyStatus.valid; - _context26.t5 = _context26.t3 === _context26.t4; - _context26.t6 = { - keyid: _context26.t2, - valid: _context26.t5 + _context23.t3 = _context23.sent; + _context23.t4 = _enums2.default.keyStatus.valid; + _context23.t5 = _context23.t3 === _context23.t4; + _context23.t6 = { + keyid: _context23.t2, + valid: _context23.t5 }; - _context26.t1 = [_context26.t6]; + _context23.t1 = [_context23.t6]; case 24: - results = _context26.t1; - return _context26.abrupt('return', results); + results = _context23.t1; + return _context23.abrupt('return', results); case 26: case 'end': - return _context26.stop(); + return _context23.stop(); } } - }, _callee26, this); + }, _callee23, this); })); - return function (_x50, _x51, _x52) { - return _ref29.apply(this, arguments); + return function (_x40, _x41, _x42) { + return _ref26.apply(this, arguments); }; }(); @@ -44795,52 +45529,52 @@ Key.prototype.verifyPrimaryUser = function () { * @async */ Key.prototype.verifyAllUsers = function () { - var _ref31 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee28(keys) { + var _ref28 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee25(keys) { var results, primaryKey; - return _regenerator2.default.wrap(function _callee28$(_context28) { + return _regenerator2.default.wrap(function _callee25$(_context25) { while (1) { - switch (_context28.prev = _context28.next) { + switch (_context25.prev = _context25.next) { case 0: results = []; primaryKey = this.keyPacket; - _context28.next = 4; + _context25.next = 4; return _promise2.default.all(this.users.map(function () { - var _ref32 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee27(user) { + var _ref29 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee24(user) { var signatures; - return _regenerator2.default.wrap(function _callee27$(_context27) { + return _regenerator2.default.wrap(function _callee24$(_context24) { while (1) { - switch (_context27.prev = _context27.next) { + switch (_context24.prev = _context24.next) { case 0: if (!keys) { - _context27.next = 6; + _context24.next = 6; break; } - _context27.next = 3; + _context24.next = 3; return user.verifyAllCertifications(primaryKey, keys); case 3: - _context27.t0 = _context27.sent; - _context27.next = 14; + _context24.t0 = _context24.sent; + _context24.next = 14; break; case 6: - _context27.t1 = primaryKey.keyid; - _context27.next = 9; + _context24.t1 = primaryKey.keyid; + _context24.next = 9; return user.verify(primaryKey); case 9: - _context27.t2 = _context27.sent; - _context27.t3 = _enums2.default.keyStatus.valid; - _context27.t4 = _context27.t2 === _context27.t3; - _context27.t5 = { - keyid: _context27.t1, - valid: _context27.t4 + _context24.t2 = _context24.sent; + _context24.t3 = _enums2.default.keyStatus.valid; + _context24.t4 = _context24.t2 === _context24.t3; + _context24.t5 = { + keyid: _context24.t1, + valid: _context24.t4 }; - _context27.t0 = [_context27.t5]; + _context24.t0 = [_context24.t5]; case 14: - signatures = _context27.t0; + signatures = _context24.t0; signatures.forEach(function (signature) { results.push({ @@ -44852,578 +45586,155 @@ Key.prototype.verifyAllUsers = function () { case 16: case 'end': - return _context27.stop(); + return _context24.stop(); } } - }, _callee27, this); + }, _callee24, this); })); - return function (_x54) { - return _ref32.apply(this, arguments); + return function (_x44) { + return _ref29.apply(this, arguments); }; }())); case 4: - return _context28.abrupt('return', results); + return _context25.abrupt('return', results); case 5: case 'end': - return _context28.stop(); + return _context25.stop(); } } - }, _callee28, this); + }, _callee25, this); })); - return function (_x53) { - return _ref31.apply(this, arguments); + return function (_x43) { + return _ref28.apply(this, arguments); }; }(); /** - * @class - * @classdesc Class that represents an user ID or attribute packet and the relevant signatures. - */ -function User(userPacket) { - if (!(this instanceof User)) { - return new User(userPacket); - } - this.userId = userPacket.tag === _enums2.default.packet.userid ? userPacket : null; - this.userAttribute = userPacket.tag === _enums2.default.packet.userAttribute ? userPacket : null; - this.selfCertifications = []; - this.otherCertifications = []; - this.revocationSignatures = []; -} - -/** - * Transforms structured user data to packetlist - * @returns {module:packet.List} - */ -User.prototype.toPacketlist = function () { - var packetlist = new _packet2.default.List(); - packetlist.push(this.userId || this.userAttribute); - packetlist.concat(this.revocationSignatures); - packetlist.concat(this.selfCertifications); - packetlist.concat(this.otherCertifications); - return packetlist; -}; - -/** - * Signs user - * @param {module:packet.SecretKey| - * module:packet.PublicKey} primaryKey The primary key packet - * @param {Array} privateKeys Decrypted private keys for signing - * @returns {Promise} New user with new certificate signatures + * Generates a new OpenPGP subkey, and returns a clone of the Key object with the new subkey added. + * Supports RSA and ECC keys. Defaults to the algorithm and bit size/curve of the primary key. + * @param {Integer} options.rsaBits number of bits for the key creation. + * @param {Number} [options.keyExpirationTime=0] + * The number of seconds after the key creation time that the key expires + * @param {String} curve (optional) Elliptic curve for ECC keys + * @param {Date} date (optional) Override the creation date of the key and the key signatures + * @param {Boolean} subkeys (optional) Indicates whether the subkey should sign rather than encrypt. Defaults to false + * @returns {Promise} * @async */ -User.prototype.sign = function () { - var _ref33 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee30(primaryKey, privateKeys) { - var dataToSign, user; - return _regenerator2.default.wrap(function _callee30$(_context30) { +Key.prototype.addSubkey = function () { + var _ref30 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee26() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var secretKeyPacket, defaultOptions, keyPacket, bindingSignature, packetList; + return _regenerator2.default.wrap(function _callee26$(_context26) { while (1) { - switch (_context30.prev = _context30.next) { + switch (_context26.prev = _context26.next) { case 0: - dataToSign = { - userId: this.userId, - userAttribute: this.userAttribute, - key: primaryKey - }; - user = new User(dataToSign.userId || dataToSign.userAttribute); - _context30.next = 4; - return _promise2.default.all(privateKeys.map(function () { - var _ref34 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee29(privateKey) { - var signingKey; - return _regenerator2.default.wrap(function _callee29$(_context29) { - while (1) { - switch (_context29.prev = _context29.next) { - case 0: - if (!privateKey.isPublic()) { - _context29.next = 2; - break; - } - - throw new Error('Need private key for signing'); - - case 2: - if (!privateKey.hasSameFingerprintAs(primaryKey)) { - _context29.next = 4; - break; - } - - throw new Error('Not implemented for self signing'); - - case 4: - _context29.next = 6; - return privateKey.getSigningKey(); - - case 6: - signingKey = _context29.sent; - - if (signingKey) { - _context29.next = 9; - break; - } - - throw new Error('Could not find valid signing key packet in key ' + privateKey.getKeyId().toHex()); - - case 9: - return _context29.abrupt('return', createSignaturePacket(dataToSign, privateKey, signingKey.keyPacket, { - // Most OpenPGP implementations use generic certification (0x10) - signatureType: _enums2.default.signature.cert_generic, - keyFlags: [_enums2.default.keyFlags.certify_keys | _enums2.default.keyFlags.sign_data] - })); - - case 10: - case 'end': - return _context29.stop(); - } - } - }, _callee29, this); - })); - - return function (_x57) { - return _ref34.apply(this, arguments); - }; - }())); - - case 4: - user.otherCertifications = _context30.sent; - _context30.next = 7; - return user.update(this, primaryKey); - - case 7: - return _context30.abrupt('return', user); - - case 8: - case 'end': - return _context30.stop(); - } - } - }, _callee30, this); - })); - - return function (_x55, _x56) { - return _ref33.apply(this, arguments); - }; -}(); - -/** - * Checks if a given certificate of the user is revoked - * @param {module:packet.SecretKey| - * module:packet.PublicKey} primaryKey The primary key packet - * @param {module:packet.Signature} certificate The certificate to verify - * @param {module:packet.PublicSubkey| - * module:packet.SecretSubkey| - * module:packet.PublicKey| - * module:packet.SecretKey} key, optional The key to verify the signature - * @param {Date} date Use the given date instead of the current time - * @returns {Promise} True if the certificate is revoked - * @async - */ -User.prototype.isRevoked = function () { - var _ref35 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee31(primaryKey, certificate, key) { - var date = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Date(); - return _regenerator2.default.wrap(function _callee31$(_context31) { - while (1) { - switch (_context31.prev = _context31.next) { - case 0: - return _context31.abrupt('return', isDataRevoked(primaryKey, _enums2.default.signature.cert_revocation, { - key: primaryKey, - userId: this.userId, - userAttribute: this.userAttribute - }, this.revocationSignatures, certificate, key, date)); - - case 1: - case 'end': - return _context31.stop(); - } - } - }, _callee31, this); - })); - - return function (_x58, _x59, _x60) { - return _ref35.apply(this, arguments); - }; -}();User.prototype.verifyCertificate = function () { - var _ref37 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee34(primaryKey, certificate, keys) { - var date = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Date(); - var that, keyid, dataToVerify, results; - return _regenerator2.default.wrap(function _callee34$(_context34) { - while (1) { - switch (_context34.prev = _context34.next) { - case 0: - that = this; - keyid = certificate.issuerKeyId; - dataToVerify = { - userId: this.userId, - userAttribute: this.userAttribute, - key: primaryKey - }; - _context34.next = 5; - return _promise2.default.all(keys.map(function () { - var _ref38 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee33(key) { - var signingKey; - return _regenerator2.default.wrap(function _callee33$(_context33) { - while (1) { - switch (_context33.prev = _context33.next) { - case 0: - if (key.getKeyIds().some(function (id) { - return id.equals(keyid); - })) { - _context33.next = 2; - break; - } - - return _context33.abrupt('return'); - - case 2: - _context33.next = 4; - return key.getSigningKey(keyid, date); - - case 4: - signingKey = _context33.sent; - _context33.t0 = certificate.revoked; - - if (_context33.t0) { - _context33.next = 10; - break; - } - - _context33.next = 9; - return that.isRevoked(primaryKey, certificate, signingKey.keyPacket, date); - - case 9: - _context33.t0 = _context33.sent; - - case 10: - if (!_context33.t0) { - _context33.next = 12; - break; - } - - return _context33.abrupt('return', _enums2.default.keyStatus.revoked); - - case 12: - _context33.t1 = certificate.verified; - - if (_context33.t1) { - _context33.next = 17; - break; - } - - _context33.next = 16; - return certificate.verify(signingKey.keyPacket, _enums2.default.signature.cert_generic, dataToVerify); - - case 16: - _context33.t1 = _context33.sent; - - case 17: - if (_context33.t1) { - _context33.next = 19; - break; - } - - return _context33.abrupt('return', _enums2.default.keyStatus.invalid); - - case 19: - if (!certificate.isExpired(date)) { - _context33.next = 21; - break; - } - - return _context33.abrupt('return', _enums2.default.keyStatus.expired); - - case 21: - return _context33.abrupt('return', _enums2.default.keyStatus.valid); - - case 22: - case 'end': - return _context33.stop(); - } - } - }, _callee33, this); - })); - - return function (_x74) { - return _ref38.apply(this, arguments); - }; - }())); - - case 5: - results = _context34.sent; - return _context34.abrupt('return', results.find(function (result) { - return result !== undefined; - })); - - case 7: - case 'end': - return _context34.stop(); - } - } - }, _callee34, this); - })); - - return function (_x70, _x71, _x72) { - return _ref37.apply(this, arguments); - }; -}(); - -/** - * Verifies all user certificates - * @param {module:packet.SecretKey| - * module:packet.PublicKey} primaryKey The primary key packet - * @param {Array} keys Array of keys to verify certificate signatures - * @param {Date} date Use the given date instead of the current time - * @returns {Promise>} List of signer's keyid and validity of signature - * @async - */ -User.prototype.verifyAllCertifications = function () { - var _ref39 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee36(primaryKey, keys) { - var date = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Date(); - var that, certifications; - return _regenerator2.default.wrap(function _callee36$(_context36) { - while (1) { - switch (_context36.prev = _context36.next) { - case 0: - that = this; - certifications = this.selfCertifications.concat(this.otherCertifications); - return _context36.abrupt('return', _promise2.default.all(certifications.map(function () { - var _ref40 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee35(certification) { - var status; - return _regenerator2.default.wrap(function _callee35$(_context35) { - while (1) { - switch (_context35.prev = _context35.next) { - case 0: - _context35.next = 2; - return that.verifyCertificate(primaryKey, certification, keys, date); - - case 2: - status = _context35.sent; - return _context35.abrupt('return', { - keyid: certification.issuerKeyId, - valid: status === undefined ? null : status === _enums2.default.keyStatus.valid - }); - - case 4: - case 'end': - return _context35.stop(); - } - } - }, _callee35, this); - })); - - return function (_x78) { - return _ref40.apply(this, arguments); - }; - }()))); - - case 3: - case 'end': - return _context36.stop(); - } - } - }, _callee36, this); - })); - - return function (_x75, _x76) { - return _ref39.apply(this, arguments); - }; -}(); - -/** - * Verify User. Checks for existence of self signatures, revocation signatures - * and validity of self signature - * @param {module:packet.SecretKey| - * module:packet.PublicKey} primaryKey The primary key packet - * @param {Date} date Use the given date instead of the current time - * @returns {Promise} Status of user - * @async - */ -User.prototype.verify = function () { - var _ref41 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee38(primaryKey) { - var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date(); - var that, dataToVerify, results; - return _regenerator2.default.wrap(function _callee38$(_context38) { - while (1) { - switch (_context38.prev = _context38.next) { - case 0: - if (this.selfCertifications.length) { - _context38.next = 2; + if (this.isPrivate()) { + _context26.next = 2; break; } - return _context38.abrupt('return', _enums2.default.keyStatus.no_self_cert); + throw new Error("Cannot add a subkey to a public key"); case 2: - that = this; - dataToVerify = { - userId: this.userId, - userAttribute: this.userAttribute, - key: primaryKey - }; - // TODO replace when Promise.some or Promise.any are implemented + if (!options.passphrase) { + _context26.next = 4; + break; + } - _context38.t0 = [_enums2.default.keyStatus.invalid]; - _context38.next = 7; - return _promise2.default.all(this.selfCertifications.map(function () { - var _ref42 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee37(selfCertification) { - return _regenerator2.default.wrap(function _callee37$(_context37) { - while (1) { - switch (_context37.prev = _context37.next) { - case 0: - _context37.t0 = selfCertification.revoked; + throw new Error("Subkey could not be encrypted here, please encrypt whole key"); - if (_context37.t0) { - _context37.next = 5; - break; - } + case 4: + if (!(_util2.default.getWebCryptoAll() && options.rsaBits < 2048)) { + _context26.next = 6; + break; + } - _context37.next = 4; - return that.isRevoked(primaryKey, selfCertification, undefined, date); + throw new Error('When using webCrypto rsaBits should be 2048 or 4096, found: ' + options.rsaBits); - case 4: - _context37.t0 = _context37.sent; + case 6: + secretKeyPacket = this.primaryKey; - case 5: - if (!_context37.t0) { - _context37.next = 7; - break; - } + if (secretKeyPacket.isDecrypted()) { + _context26.next = 9; + break; + } - return _context37.abrupt('return', _enums2.default.keyStatus.revoked); + throw new Error("Key is not decrypted"); - case 7: - _context37.t1 = selfCertification.verified; + case 9: + defaultOptions = secretKeyPacket.getAlgorithmInfo(); - if (_context37.t1) { - _context37.next = 12; - break; - } + options = helper.sanitizeKeyOptions(options, defaultOptions); + _context26.next = 13; + return helper.generateSecretSubkey(options); - _context37.next = 11; - return selfCertification.verify(primaryKey, _enums2.default.signature.cert_generic, dataToVerify); + case 13: + keyPacket = _context26.sent; + _context26.next = 16; + return helper.createBindingSignature(keyPacket, secretKeyPacket, options); - case 11: - _context37.t1 = _context37.sent; + case 16: + bindingSignature = _context26.sent; + packetList = this.toPacketlist(); - case 12: - if (_context37.t1) { - _context37.next = 14; - break; - } + packetList.push(keyPacket); + packetList.push(bindingSignature); + return _context26.abrupt('return', new Key(packetList)); - return _context37.abrupt('return', _enums2.default.keyStatus.invalid); - - case 14: - if (!selfCertification.isExpired(date)) { - _context37.next = 16; - break; - } - - return _context37.abrupt('return', _enums2.default.keyStatus.expired); - - case 16: - return _context37.abrupt('return', _enums2.default.keyStatus.valid); - - case 17: - case 'end': - return _context37.stop(); - } - } - }, _callee37, this); - })); - - return function (_x81) { - return _ref42.apply(this, arguments); - }; - }())); - - case 7: - _context38.t1 = _context38.sent; - results = _context38.t0.concat.call(_context38.t0, _context38.t1); - return _context38.abrupt('return', results.some(function (status) { - return status === _enums2.default.keyStatus.valid; - }) ? _enums2.default.keyStatus.valid : results.pop()); - - case 10: + case 21: case 'end': - return _context38.stop(); + return _context26.stop(); } } - }, _callee38, this); + }, _callee26, this); })); - return function (_x79) { - return _ref41.apply(this, arguments); + return function () { + return _ref30.apply(this, arguments); }; }(); -/** - * Update user with new components from specified user - * @param {module:key.User} user Source user to merge - * @param {module:packet.SecretKey| - * module:packet.SecretSubkey} primaryKey primary key used for validation - * @returns {Promise} - * @async - */ -User.prototype.update = function () { - var _ref43 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee40(user, primaryKey) { - var dataToVerify; - return _regenerator2.default.wrap(function _callee40$(_context40) { - while (1) { - switch (_context40.prev = _context40.next) { - case 0: - dataToVerify = { - userId: this.userId, - userAttribute: this.userAttribute, - key: primaryKey - }; - // self signatures +['getKeyId', 'getFingerprint', 'getAlgorithmInfo', 'getCreationTime', 'isDecrypted', 'hasSameFingerprintAs'].forEach(function (name) { + Key.prototype[name] = _subkey2.default.prototype[name]; +}); - _context40.next = 3; - return mergeSignatures(user, this, 'selfCertifications', function () { - var _ref44 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee39(srcSelfSig) { - return _regenerator2.default.wrap(function _callee39$(_context39) { - while (1) { - switch (_context39.prev = _context39.next) { - case 0: - return _context39.abrupt('return', srcSelfSig.verified || srcSelfSig.verify(primaryKey, _enums2.default.signature.cert_generic, dataToVerify)); +},{"../encoding/armor":382,"../enums":384,"../packet":402,"../util":429,"./helper":388,"./subkey":391,"./user":392,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],391:[function(_dereq_,module,exports){ +'use strict'; - case 1: - case 'end': - return _context39.stop(); - } - } - }, _callee39, this); - })); +Object.defineProperty(exports, "__esModule", { + value: true +}); - return function (_x84) { - return _ref44.apply(this, arguments); - }; - }()); +var _regenerator = _dereq_('babel-runtime/regenerator'); - case 3: - _context40.next = 5; - return mergeSignatures(user, this, 'otherCertifications'); +var _regenerator2 = _interopRequireDefault(_regenerator); - case 5: - _context40.next = 7; - return mergeSignatures(user, this, 'revocationSignatures', function (srcRevSig) { - return isDataRevoked(primaryKey, _enums2.default.signature.cert_revocation, dataToVerify, [srcRevSig]); - }); +var _asyncToGenerator2 = _dereq_('babel-runtime/helpers/asyncToGenerator'); - case 7: - case 'end': - return _context40.stop(); - } - } - }, _callee40, this); - })); +var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); - return function (_x82, _x83) { - return _ref43.apply(this, arguments); - }; -}(); +exports.default = SubKey; + +var _enums = _dereq_('../enums'); + +var _enums2 = _interopRequireDefault(_enums); + +var _helper = _dereq_('./helper'); + +var helper = _interopRequireWildcard(_helper); + +var _packet = _dereq_('../packet'); + +var _packet2 = _interopRequireDefault(_packet); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @class @@ -45448,6 +45759,13 @@ function SubKey(subKeyPacket) { * Transforms structured subkey data to packetlist * @returns {module:packet.List} */ +/** + * @requires enums + * @requires key/helper + * @requires packet + * @module key/SubKey + */ + SubKey.prototype.toPacketlist = function () { var packetlist = new _packet2.default.List(); packetlist.push(this.keyPacket); @@ -45470,27 +45788,27 @@ SubKey.prototype.toPacketlist = function () { * @async */ SubKey.prototype.isRevoked = function () { - var _ref45 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee41(primaryKey, signature, key) { + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(primaryKey, signature, key) { var date = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Date(); - return _regenerator2.default.wrap(function _callee41$(_context41) { + return _regenerator2.default.wrap(function _callee$(_context) { while (1) { - switch (_context41.prev = _context41.next) { + switch (_context.prev = _context.next) { case 0: - return _context41.abrupt('return', isDataRevoked(primaryKey, _enums2.default.signature.subkey_revocation, { + return _context.abrupt('return', helper.isDataRevoked(primaryKey, _enums2.default.signature.subkey_revocation, { key: primaryKey, bind: this.keyPacket }, this.revocationSignatures, signature, key, date)); case 1: case 'end': - return _context41.stop(); + return _context.stop(); } } - }, _callee41, this); + }, _callee, this); })); - return function (_x85, _x86, _x87) { - return _ref45.apply(this, arguments); + return function (_x, _x2, _x3) { + return _ref.apply(this, arguments); }; }(); @@ -45504,73 +45822,73 @@ SubKey.prototype.isRevoked = function () { * @async */ SubKey.prototype.verify = function () { - var _ref46 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee42(primaryKey) { + var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(primaryKey) { var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date(); var that, dataToVerify, bindingSignature; - return _regenerator2.default.wrap(function _callee42$(_context42) { + return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { - switch (_context42.prev = _context42.next) { + switch (_context2.prev = _context2.next) { case 0: that = this; dataToVerify = { key: primaryKey, bind: this.keyPacket }; // check subkey binding signatures - _context42.next = 4; - return getLatestValidSignature(this.bindingSignatures, primaryKey, _enums2.default.signature.subkey_binding, dataToVerify, date); + _context2.next = 4; + return helper.getLatestValidSignature(this.bindingSignatures, primaryKey, _enums2.default.signature.subkey_binding, dataToVerify, date); case 4: - bindingSignature = _context42.sent; + bindingSignature = _context2.sent; if (bindingSignature) { - _context42.next = 7; + _context2.next = 7; break; } - return _context42.abrupt('return', _enums2.default.keyStatus.invalid); + return _context2.abrupt('return', _enums2.default.keyStatus.invalid); case 7: - _context42.t0 = bindingSignature.revoked; + _context2.t0 = bindingSignature.revoked; - if (_context42.t0) { - _context42.next = 12; + if (_context2.t0) { + _context2.next = 12; break; } - _context42.next = 11; + _context2.next = 11; return that.isRevoked(primaryKey, bindingSignature, null, date); case 11: - _context42.t0 = _context42.sent; + _context2.t0 = _context2.sent; case 12: - if (!_context42.t0) { - _context42.next = 14; + if (!_context2.t0) { + _context2.next = 14; break; } - return _context42.abrupt('return', _enums2.default.keyStatus.revoked); + return _context2.abrupt('return', _enums2.default.keyStatus.revoked); case 14: - if (!isDataExpired(this.keyPacket, bindingSignature, date)) { - _context42.next = 16; + if (!helper.isDataExpired(this.keyPacket, bindingSignature, date)) { + _context2.next = 16; break; } - return _context42.abrupt('return', _enums2.default.keyStatus.expired); + return _context2.abrupt('return', _enums2.default.keyStatus.expired); case 16: - return _context42.abrupt('return', _enums2.default.keyStatus.valid); + return _context2.abrupt('return', _enums2.default.keyStatus.valid); case 17: case 'end': - return _context42.stop(); + return _context2.stop(); } } - }, _callee42, this); + }, _callee2, this); })); - return function (_x89) { - return _ref46.apply(this, arguments); + return function (_x5) { + return _ref2.apply(this, arguments); }; }(); @@ -45584,42 +45902,42 @@ SubKey.prototype.verify = function () { * @async */ SubKey.prototype.getExpirationTime = function () { - var _ref47 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee43(primaryKey) { + var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(primaryKey) { var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date(); var dataToVerify, bindingSignature, keyExpiry, sigExpiry; - return _regenerator2.default.wrap(function _callee43$(_context43) { + return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { - switch (_context43.prev = _context43.next) { + switch (_context3.prev = _context3.next) { case 0: dataToVerify = { key: primaryKey, bind: this.keyPacket }; - _context43.next = 3; - return getLatestValidSignature(this.bindingSignatures, primaryKey, _enums2.default.signature.subkey_binding, dataToVerify, date); + _context3.next = 3; + return helper.getLatestValidSignature(this.bindingSignatures, primaryKey, _enums2.default.signature.subkey_binding, dataToVerify, date); case 3: - bindingSignature = _context43.sent; + bindingSignature = _context3.sent; if (bindingSignature) { - _context43.next = 6; + _context3.next = 6; break; } - return _context43.abrupt('return', null); + return _context3.abrupt('return', null); case 6: - keyExpiry = getExpirationTime(this.keyPacket, bindingSignature); + keyExpiry = helper.getExpirationTime(this.keyPacket, bindingSignature); sigExpiry = bindingSignature.getExpirationTime(); - return _context43.abrupt('return', keyExpiry < sigExpiry ? keyExpiry : sigExpiry); + return _context3.abrupt('return', keyExpiry < sigExpiry ? keyExpiry : sigExpiry); case 9: case 'end': - return _context43.stop(); + return _context3.stop(); } } - }, _callee43, this); + }, _callee3, this); })); - return function (_x91) { - return _ref47.apply(this, arguments); + return function (_x7) { + return _ref3.apply(this, arguments); }; }(); @@ -45632,29 +45950,29 @@ SubKey.prototype.getExpirationTime = function () { * @async */ SubKey.prototype.update = function () { - var _ref48 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee45(subKey, primaryKey) { + var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(subKey, primaryKey) { var that, dataToVerify; - return _regenerator2.default.wrap(function _callee45$(_context45) { + return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { - switch (_context45.prev = _context45.next) { + switch (_context5.prev = _context5.next) { case 0: - _context45.next = 2; + _context5.next = 2; return subKey.verify(primaryKey); case 2: - _context45.t0 = _context45.sent; - _context45.t1 = _enums2.default.keyStatus.invalid; + _context5.t0 = _context5.sent; + _context5.t1 = _enums2.default.keyStatus.invalid; - if (!(_context45.t0 === _context45.t1)) { - _context45.next = 6; + if (!(_context5.t0 === _context5.t1)) { + _context5.next = 6; break; } - return _context45.abrupt('return'); + return _context5.abrupt('return'); case 6: if (this.hasSameFingerprintAs(subKey)) { - _context45.next = 8; + _context5.next = 8; break; } @@ -45668,91 +45986,91 @@ SubKey.prototype.update = function () { // update missing binding signatures that = this; dataToVerify = { key: primaryKey, bind: that.keyPacket }; - _context45.next = 13; - return mergeSignatures(subKey, this, 'bindingSignatures', function () { - var _ref49 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee44(srcBindSig) { + _context5.next = 13; + return helper.mergeSignatures(subKey, this, 'bindingSignatures', function () { + var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(srcBindSig) { var i; - return _regenerator2.default.wrap(function _callee44$(_context44) { + return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { - switch (_context44.prev = _context44.next) { + switch (_context4.prev = _context4.next) { case 0: - _context44.t0 = srcBindSig.verified; + _context4.t0 = srcBindSig.verified; - if (_context44.t0) { - _context44.next = 5; + if (_context4.t0) { + _context4.next = 5; break; } - _context44.next = 4; + _context4.next = 4; return srcBindSig.verify(primaryKey, _enums2.default.signature.subkey_binding, dataToVerify); case 4: - _context44.t0 = _context44.sent; + _context4.t0 = _context4.sent; case 5: - if (_context44.t0) { - _context44.next = 7; + if (_context4.t0) { + _context4.next = 7; break; } - return _context44.abrupt('return', false); + return _context4.abrupt('return', false); case 7: i = 0; case 8: if (!(i < that.bindingSignatures.length)) { - _context44.next = 15; + _context4.next = 15; break; } if (!that.bindingSignatures[i].issuerKeyId.equals(srcBindSig.issuerKeyId)) { - _context44.next = 12; + _context4.next = 12; break; } if (srcBindSig.created > that.bindingSignatures[i].created) { that.bindingSignatures[i] = srcBindSig; } - return _context44.abrupt('return', false); + return _context4.abrupt('return', false); case 12: i++; - _context44.next = 8; + _context4.next = 8; break; case 15: - return _context44.abrupt('return', true); + return _context4.abrupt('return', true); case 16: case 'end': - return _context44.stop(); + return _context4.stop(); } } - }, _callee44, this); + }, _callee4, this); })); - return function (_x95) { - return _ref49.apply(this, arguments); + return function (_x11) { + return _ref5.apply(this, arguments); }; }()); case 13: - _context45.next = 15; - return mergeSignatures(subKey, this, 'revocationSignatures', function (srcRevSig) { - return isDataRevoked(primaryKey, _enums2.default.signature.subkey_revocation, dataToVerify, [srcRevSig]); + _context5.next = 15; + return helper.mergeSignatures(subKey, this, 'revocationSignatures', function (srcRevSig) { + return helper.isDataRevoked(primaryKey, _enums2.default.signature.subkey_revocation, dataToVerify, [srcRevSig]); }); case 15: case 'end': - return _context45.stop(); + return _context5.stop(); } } - }, _callee45, this); + }, _callee5, this); })); - return function (_x93, _x94) { - return _ref48.apply(this, arguments); + return function (_x9, _x10) { + return _ref4.apply(this, arguments); }; }(); @@ -45767,96 +46085,662 @@ SubKey.prototype.update = function () { * @async */ SubKey.prototype.revoke = function () { - var _ref50 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee46(primaryKey) { - var _ref51 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref51$flag = _ref51.flag, - reasonForRevocationFlag = _ref51$flag === undefined ? _enums2.default.reasonForRevocation.no_reason : _ref51$flag, - _ref51$string = _ref51.string, - reasonForRevocationString = _ref51$string === undefined ? '' : _ref51$string; + var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(primaryKey) { + var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref7$flag = _ref7.flag, + reasonForRevocationFlag = _ref7$flag === undefined ? _enums2.default.reasonForRevocation.no_reason : _ref7$flag, + _ref7$string = _ref7.string, + reasonForRevocationString = _ref7$string === undefined ? '' : _ref7$string; var date = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Date(); var dataToSign, subKey; - return _regenerator2.default.wrap(function _callee46$(_context46) { + return _regenerator2.default.wrap(function _callee6$(_context6) { while (1) { - switch (_context46.prev = _context46.next) { + switch (_context6.prev = _context6.next) { case 0: dataToSign = { key: primaryKey, bind: this.keyPacket }; subKey = new SubKey(this.keyPacket); - _context46.t0 = subKey.revocationSignatures; - _context46.next = 5; - return createSignaturePacket(dataToSign, null, primaryKey, { + _context6.t0 = subKey.revocationSignatures; + _context6.next = 5; + return helper.createSignaturePacket(dataToSign, null, primaryKey, { signatureType: _enums2.default.signature.subkey_revocation, reasonForRevocationFlag: _enums2.default.write(_enums2.default.reasonForRevocation, reasonForRevocationFlag), reasonForRevocationString: reasonForRevocationString }, date); case 5: - _context46.t1 = _context46.sent; + _context6.t1 = _context6.sent; - _context46.t0.push.call(_context46.t0, _context46.t1); + _context6.t0.push.call(_context6.t0, _context6.t1); - _context46.next = 9; + _context6.next = 9; return subKey.update(this, primaryKey); case 9: - return _context46.abrupt('return', subKey); + return _context6.abrupt('return', subKey); case 10: case 'end': - return _context46.stop(); + return _context6.stop(); } } - }, _callee46, this); + }, _callee6, this); })); - return function (_x96) { - return _ref50.apply(this, arguments); + return function (_x12) { + return _ref6.apply(this, arguments); }; }(); ['getKeyId', 'getFingerprint', 'getAlgorithmInfo', 'getCreationTime', 'isDecrypted'].forEach(function (name) { - Key.prototype[name] = SubKey.prototype[name] = function () { + SubKey.prototype[name] = function () { return this.keyPacket[name](); }; }); -Key.prototype.hasSameFingerprintAs = SubKey.prototype.hasSameFingerprintAs = function (other) { +SubKey.prototype.hasSameFingerprintAs = function (other) { return this.keyPacket.hasSameFingerprintAs(other.keyPacket || other); }; -function isDataExpired(keyPacket, signature) { - var date = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Date(); +},{"../enums":384,"../packet":402,"./helper":388,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],392:[function(_dereq_,module,exports){ +'use strict'; - var normDate = _util2.default.normalizeDate(date); - if (normDate !== null) { - var expirationTime = getExpirationTime(keyPacket, signature); - return !(keyPacket.created <= normDate && normDate <= expirationTime) || signature && signature.isExpired(date); - } - return false; -} +Object.defineProperty(exports, "__esModule", { + value: true +}); -function getExpirationTime(keyPacket, signature) { - var expirationTime = void 0; - // check V4 expiration time - if (signature.keyNeverExpires === false) { - expirationTime = keyPacket.created.getTime() + signature.keyExpirationTime * 1000; +var _regenerator = _dereq_('babel-runtime/regenerator'); + +var _regenerator2 = _interopRequireDefault(_regenerator); + +var _promise = _dereq_('babel-runtime/core-js/promise'); + +var _promise2 = _interopRequireDefault(_promise); + +var _asyncToGenerator2 = _dereq_('babel-runtime/helpers/asyncToGenerator'); + +var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); + +exports.default = User; + +var _packet = _dereq_('../packet'); + +var _packet2 = _interopRequireDefault(_packet); + +var _enums = _dereq_('../enums'); + +var _enums2 = _interopRequireDefault(_enums); + +var _helper = _dereq_('./helper'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * @class + * @classdesc Class that represents an user ID or attribute packet and the relevant signatures. + */ +function User(userPacket) { + if (!(this instanceof User)) { + return new User(userPacket); } - return expirationTime ? new Date(expirationTime) : Infinity; + this.userId = userPacket.tag === _enums2.default.packet.userid ? userPacket : null; + this.userAttribute = userPacket.tag === _enums2.default.packet.userAttribute ? userPacket : null; + this.selfCertifications = []; + this.otherCertifications = []; + this.revocationSignatures = []; } /** - * Check if signature has revocation key sub packet (not supported by OpenPGP.js) - * and throw error if found - * @param {module:packet.Signature} signature The certificate or signature to check - * @param {type/keyid} keyId Check only certificates or signatures from a certain issuer key ID + * Transforms structured user data to packetlist + * @returns {module:packet.List} + */ +/** + * @requires enums + * @requires packet + * @requires key/helper + * @module key/User */ -function checkRevocationKey(signature, keyId) { - if (signature.revocationKeyClass !== null && signature.issuerKeyId.equals(keyId)) { - throw new Error('This key is intended to be revoked with an authorized key, which OpenPGP.js does not support.'); - } -} -},{"./config":350,"./crypto":365,"./encoding/armor":382,"./enums":384,"./packet":396,"./util":423,"babel-runtime/core-js/object/assign":22,"babel-runtime/core-js/object/get-prototype-of":28,"babel-runtime/core-js/object/values":30,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43}],388:[function(_dereq_,module,exports){ +User.prototype.toPacketlist = function () { + var packetlist = new _packet2.default.List(); + packetlist.push(this.userId || this.userAttribute); + packetlist.concat(this.revocationSignatures); + packetlist.concat(this.selfCertifications); + packetlist.concat(this.otherCertifications); + return packetlist; +}; + +/** + * Signs user + * @param {module:packet.SecretKey| + * module:packet.PublicKey} primaryKey The primary key packet + * @param {Array} privateKeys Decrypted private keys for signing + * @returns {Promise} New user with new certificate signatures + * @async + */ +User.prototype.sign = function () { + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(primaryKey, privateKeys) { + var dataToSign, user; + return _regenerator2.default.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + dataToSign = { + userId: this.userId, + userAttribute: this.userAttribute, + key: primaryKey + }; + user = new User(dataToSign.userId || dataToSign.userAttribute); + _context2.next = 4; + return _promise2.default.all(privateKeys.map(function () { + var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(privateKey) { + var signingKey; + return _regenerator2.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!privateKey.isPublic()) { + _context.next = 2; + break; + } + + throw new Error('Need private key for signing'); + + case 2: + if (!privateKey.hasSameFingerprintAs(primaryKey)) { + _context.next = 4; + break; + } + + throw new Error('Not implemented for self signing'); + + case 4: + _context.next = 6; + return privateKey.getSigningKey(); + + case 6: + signingKey = _context.sent; + + if (signingKey) { + _context.next = 9; + break; + } + + throw new Error('Could not find valid signing key packet in key ' + privateKey.getKeyId().toHex()); + + case 9: + return _context.abrupt('return', (0, _helper.createSignaturePacket)(dataToSign, privateKey, signingKey.keyPacket, { + // Most OpenPGP implementations use generic certification (0x10) + signatureType: _enums2.default.signature.cert_generic, + keyFlags: [_enums2.default.keyFlags.certify_keys | _enums2.default.keyFlags.sign_data] + })); + + case 10: + case 'end': + return _context.stop(); + } + } + }, _callee, this); + })); + + return function (_x3) { + return _ref2.apply(this, arguments); + }; + }())); + + case 4: + user.otherCertifications = _context2.sent; + _context2.next = 7; + return user.update(this, primaryKey); + + case 7: + return _context2.abrupt('return', user); + + case 8: + case 'end': + return _context2.stop(); + } + } + }, _callee2, this); + })); + + return function (_x, _x2) { + return _ref.apply(this, arguments); + }; +}(); + +/** + * Checks if a given certificate of the user is revoked + * @param {module:packet.SecretKey| + * module:packet.PublicKey} primaryKey The primary key packet + * @param {module:packet.Signature} certificate The certificate to verify + * @param {module:packet.PublicSubkey| + * module:packet.SecretSubkey| + * module:packet.PublicKey| + * module:packet.SecretKey} key, optional The key to verify the signature + * @param {Date} date Use the given date instead of the current time + * @returns {Promise} True if the certificate is revoked + * @async + */ +User.prototype.isRevoked = function () { + var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(primaryKey, certificate, key) { + var date = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Date(); + return _regenerator2.default.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + return _context3.abrupt('return', (0, _helper.isDataRevoked)(primaryKey, _enums2.default.signature.cert_revocation, { + key: primaryKey, + userId: this.userId, + userAttribute: this.userAttribute + }, this.revocationSignatures, certificate, key, date)); + + case 1: + case 'end': + return _context3.stop(); + } + } + }, _callee3, this); + })); + + return function (_x4, _x5, _x6) { + return _ref3.apply(this, arguments); + }; +}(); + +/** + * Verifies the user certificate + * @param {module:packet.SecretKey| + * module:packet.PublicKey} primaryKey The primary key packet + * @param {module:packet.Signature} certificate A certificate of this user + * @param {Array} keys Array of keys to verify certificate signatures + * @param {Date} date Use the given date instead of the current time + * @returns {Promise} status of the certificate + * @async + */ +User.prototype.verifyCertificate = function () { + var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(primaryKey, certificate, keys) { + var date = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Date(); + var that, keyid, dataToVerify, results; + return _regenerator2.default.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + that = this; + keyid = certificate.issuerKeyId; + dataToVerify = { + userId: this.userId, + userAttribute: this.userAttribute, + key: primaryKey + }; + _context5.next = 5; + return _promise2.default.all(keys.map(function () { + var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(key) { + var signingKey; + return _regenerator2.default.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + if (key.getKeyIds().some(function (id) { + return id.equals(keyid); + })) { + _context4.next = 2; + break; + } + + return _context4.abrupt('return'); + + case 2: + _context4.next = 4; + return key.getSigningKey(keyid, date); + + case 4: + signingKey = _context4.sent; + _context4.t0 = certificate.revoked; + + if (_context4.t0) { + _context4.next = 10; + break; + } + + _context4.next = 9; + return that.isRevoked(primaryKey, certificate, signingKey.keyPacket, date); + + case 9: + _context4.t0 = _context4.sent; + + case 10: + if (!_context4.t0) { + _context4.next = 12; + break; + } + + return _context4.abrupt('return', _enums2.default.keyStatus.revoked); + + case 12: + _context4.t1 = certificate.verified; + + if (_context4.t1) { + _context4.next = 17; + break; + } + + _context4.next = 16; + return certificate.verify(signingKey.keyPacket, _enums2.default.signature.cert_generic, dataToVerify); + + case 16: + _context4.t1 = _context4.sent; + + case 17: + if (_context4.t1) { + _context4.next = 19; + break; + } + + return _context4.abrupt('return', _enums2.default.keyStatus.invalid); + + case 19: + if (!certificate.isExpired(date)) { + _context4.next = 21; + break; + } + + return _context4.abrupt('return', _enums2.default.keyStatus.expired); + + case 21: + return _context4.abrupt('return', _enums2.default.keyStatus.valid); + + case 22: + case 'end': + return _context4.stop(); + } + } + }, _callee4, this); + })); + + return function (_x12) { + return _ref5.apply(this, arguments); + }; + }())); + + case 5: + results = _context5.sent; + return _context5.abrupt('return', results.find(function (result) { + return result !== undefined; + })); + + case 7: + case 'end': + return _context5.stop(); + } + } + }, _callee5, this); + })); + + return function (_x8, _x9, _x10) { + return _ref4.apply(this, arguments); + }; +}(); + +/** + * Verifies all user certificates + * @param {module:packet.SecretKey| + * module:packet.PublicKey} primaryKey The primary key packet + * @param {Array} keys Array of keys to verify certificate signatures + * @param {Date} date Use the given date instead of the current time + * @returns {Promise>} List of signer's keyid and validity of signature + * @async + */ +User.prototype.verifyAllCertifications = function () { + var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(primaryKey, keys) { + var date = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Date(); + var that, certifications; + return _regenerator2.default.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + that = this; + certifications = this.selfCertifications.concat(this.otherCertifications); + return _context7.abrupt('return', _promise2.default.all(certifications.map(function () { + var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(certification) { + var status; + return _regenerator2.default.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + _context6.next = 2; + return that.verifyCertificate(primaryKey, certification, keys, date); + + case 2: + status = _context6.sent; + return _context6.abrupt('return', { + keyid: certification.issuerKeyId, + valid: status === undefined ? null : status === _enums2.default.keyStatus.valid + }); + + case 4: + case 'end': + return _context6.stop(); + } + } + }, _callee6, this); + })); + + return function (_x16) { + return _ref7.apply(this, arguments); + }; + }()))); + + case 3: + case 'end': + return _context7.stop(); + } + } + }, _callee7, this); + })); + + return function (_x13, _x14) { + return _ref6.apply(this, arguments); + }; +}(); + +/** + * Verify User. Checks for existence of self signatures, revocation signatures + * and validity of self signature + * @param {module:packet.SecretKey| + * module:packet.PublicKey} primaryKey The primary key packet + * @param {Date} date Use the given date instead of the current time + * @returns {Promise} Status of user + * @async + */ +User.prototype.verify = function () { + var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(primaryKey) { + var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date(); + var that, dataToVerify, results; + return _regenerator2.default.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + if (this.selfCertifications.length) { + _context9.next = 2; + break; + } + + return _context9.abrupt('return', _enums2.default.keyStatus.no_self_cert); + + case 2: + that = this; + dataToVerify = { + userId: this.userId, + userAttribute: this.userAttribute, + key: primaryKey + }; + // TODO replace when Promise.some or Promise.any are implemented + + _context9.t0 = [_enums2.default.keyStatus.invalid]; + _context9.next = 7; + return _promise2.default.all(this.selfCertifications.map(function () { + var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(selfCertification) { + return _regenerator2.default.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + _context8.t0 = selfCertification.revoked; + + if (_context8.t0) { + _context8.next = 5; + break; + } + + _context8.next = 4; + return that.isRevoked(primaryKey, selfCertification, undefined, date); + + case 4: + _context8.t0 = _context8.sent; + + case 5: + if (!_context8.t0) { + _context8.next = 7; + break; + } + + return _context8.abrupt('return', _enums2.default.keyStatus.revoked); + + case 7: + _context8.t1 = selfCertification.verified; + + if (_context8.t1) { + _context8.next = 12; + break; + } + + _context8.next = 11; + return selfCertification.verify(primaryKey, _enums2.default.signature.cert_generic, dataToVerify); + + case 11: + _context8.t1 = _context8.sent; + + case 12: + if (_context8.t1) { + _context8.next = 14; + break; + } + + return _context8.abrupt('return', _enums2.default.keyStatus.invalid); + + case 14: + if (!selfCertification.isExpired(date)) { + _context8.next = 16; + break; + } + + return _context8.abrupt('return', _enums2.default.keyStatus.expired); + + case 16: + return _context8.abrupt('return', _enums2.default.keyStatus.valid); + + case 17: + case 'end': + return _context8.stop(); + } + } + }, _callee8, this); + })); + + return function (_x19) { + return _ref9.apply(this, arguments); + }; + }())); + + case 7: + _context9.t1 = _context9.sent; + results = _context9.t0.concat.call(_context9.t0, _context9.t1); + return _context9.abrupt('return', results.some(function (status) { + return status === _enums2.default.keyStatus.valid; + }) ? _enums2.default.keyStatus.valid : results.pop()); + + case 10: + case 'end': + return _context9.stop(); + } + } + }, _callee9, this); + })); + + return function (_x17) { + return _ref8.apply(this, arguments); + }; +}(); + +/** + * Update user with new components from specified user + * @param {module:key.User} user Source user to merge + * @param {module:packet.SecretKey| + * module:packet.SecretSubkey} primaryKey primary key used for validation + * @returns {Promise} + * @async + */ +User.prototype.update = function () { + var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(user, primaryKey) { + var dataToVerify; + return _regenerator2.default.wrap(function _callee11$(_context11) { + while (1) { + switch (_context11.prev = _context11.next) { + case 0: + dataToVerify = { + userId: this.userId, + userAttribute: this.userAttribute, + key: primaryKey + }; + // self signatures + + _context11.next = 3; + return (0, _helper.mergeSignatures)(user, this, 'selfCertifications', function () { + var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(srcSelfSig) { + return _regenerator2.default.wrap(function _callee10$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + return _context10.abrupt('return', srcSelfSig.verified || srcSelfSig.verify(primaryKey, _enums2.default.signature.cert_generic, dataToVerify)); + + case 1: + case 'end': + return _context10.stop(); + } + } + }, _callee10, this); + })); + + return function (_x22) { + return _ref11.apply(this, arguments); + }; + }()); + + case 3: + _context11.next = 5; + return (0, _helper.mergeSignatures)(user, this, 'otherCertifications'); + + case 5: + _context11.next = 7; + return (0, _helper.mergeSignatures)(user, this, 'revocationSignatures', function (srcRevSig) { + return (0, _helper.isDataRevoked)(primaryKey, _enums2.default.signature.cert_revocation, dataToVerify, [srcRevSig]); + }); + + case 7: + case 'end': + return _context11.stop(); + } + } + }, _callee11, this); + })); + + return function (_x20, _x21) { + return _ref10.apply(this, arguments); + }; +}(); + +},{"../enums":384,"../packet":402,"./helper":388,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],393:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -45883,7 +46767,7 @@ _keyring2.default.localstore = _localstore2.default; exports.default = _keyring2.default; -},{"./keyring.js":389,"./localstore.js":390}],389:[function(_dereq_,module,exports){ +},{"./keyring.js":394,"./localstore.js":395}],394:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -46215,7 +47099,7 @@ KeyArray.prototype.removeForId = function (keyId) { exports.default = Keyring; -},{"../key":387,"./localstore":390,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],390:[function(_dereq_,module,exports){ +},{"../key":389,"./localstore":395,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],395:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -46500,7 +47384,82 @@ LocalStore.prototype.storePrivate = function () { exports.default = LocalStore; -},{"../config":350,"../key":387,"../util":423,"babel-runtime/core-js/json/stringify":19,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"node-localstorage":"node-localstorage","web-stream-tools":345}],391:[function(_dereq_,module,exports){ +},{"../config":350,"../key":389,"../util":429,"babel-runtime/core-js/json/stringify":19,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"node-localstorage":"node-localstorage","web-stream-tools":345}],396:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.dl = exports.loadScript = undefined; + +var _regenerator = _dereq_('babel-runtime/regenerator'); + +var _regenerator2 = _interopRequireDefault(_regenerator); + +var _asyncToGenerator2 = _dereq_('babel-runtime/helpers/asyncToGenerator'); + +var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); + +var _promise = _dereq_('babel-runtime/core-js/promise'); + +var _promise2 = _interopRequireDefault(_promise); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Load script from path + * @param {String} path + */ +var loadScript = exports.loadScript = function loadScript(path) { + if (typeof importScripts !== 'undefined') { + return importScripts(path); + } + return new _promise2.default(function (resolve, reject) { + var script = document.createElement('script'); + script.src = path; + script.onload = function () { + return resolve(); + }; + script.onerror = function (e) { + return reject(new Error(e.message)); + }; + document.head.appendChild(script); + }); +}; + +/** + * Download script from path + * @param {String} path fetch path + * @param {Object} options fetch options + */ +var dl = exports.dl = function () { + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(path, options) { + var response; + return _regenerator2.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return fetch(path, options); + + case 2: + response = _context.sent; + return _context.abrupt('return', response.arrayBuffer()); + + case 4: + case 'end': + return _context.stop(); + } + } + }, _callee, this); + })); + + return function dl(_x, _x2) { + return _ref.apply(this, arguments); + }; +}(); + +},{"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],397:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -46874,10 +47833,12 @@ var createSignaturePackets = exports.createSignaturePackets = function () { */ var createVerificationObject = function () { var _ref24 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee26(signature, literalDataList, keys) { + var date = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Date(); + var _this4 = this; - var date = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Date(); var detached = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + var streaming = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; var primaryKey, signingKey, signaturePacket, verifiedSig; return _regenerator2.default.wrap(function _callee26$(_context26) { while (1) { @@ -46912,7 +47873,7 @@ var createVerificationObject = function () { }, _callee23, this); })); - return function (_x67) { + return function (_x68) { return _ref25.apply(this, arguments); }; }())); @@ -46936,7 +47897,7 @@ var createVerificationObject = function () { case 2: _context24.next = 4; - return signature.verify(signingKey.keyPacket, signature.signatureType, literalDataList[0], detached); + return signature.verify(signingKey.keyPacket, signature.signatureType, literalDataList[0], detached, streaming); case 4: verified = _context24.sent; @@ -47054,6 +48015,7 @@ var createVerificationObjects = exports.createVerificationObjects = function () var _ref28 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee28(signatureList, literalDataList, keys) { var date = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Date(); var detached = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + var streaming = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; return _regenerator2.default.wrap(function _callee28$(_context28) { while (1) { switch (_context28.prev = _context28.next) { @@ -47066,7 +48028,7 @@ var createVerificationObjects = exports.createVerificationObjects = function () while (1) { switch (_context27.prev = _context27.next) { case 0: - return _context27.abrupt('return', createVerificationObject(signature, literalDataList, keys, date, detached)); + return _context27.abrupt('return', createVerificationObject(signature, literalDataList, keys, date, detached, streaming)); case 1: case 'end': @@ -47076,7 +48038,7 @@ var createVerificationObjects = exports.createVerificationObjects = function () }, _callee27, this); })); - return function (_x73) { + return function (_x75) { return _ref29.apply(this, arguments); }; }()))); @@ -47089,7 +48051,7 @@ var createVerificationObjects = exports.createVerificationObjects = function () }, _callee28, this); })); - return function createVerificationObjects(_x68, _x69, _x70) { + return function createVerificationObjects(_x69, _x70, _x71) { return _ref28.apply(this, arguments); }; }(); @@ -47136,7 +48098,7 @@ var readArmored = exports.readArmored = function () { }, _callee30, this); })); - return function readArmored(_x75) { + return function readArmored(_x77) { return _ref31.apply(this, arguments); }; }(); @@ -47182,7 +48144,7 @@ var read = exports.read = function () { }, _callee31, this); })); - return function read(_x76) { + return function read(_x78) { return _ref32.apply(this, arguments); }; }(); @@ -48167,15 +49129,32 @@ Message.prototype.signDetached = function () { throw new Error('Can only verify message with one literal data packet.'); case 4: - onePassSigList = msg.packets.filterByTag(_enums2.default.packet.onePassSignature).reverse(); - signatureList = msg.packets.filterByTag(_enums2.default.packet.signature); - - if (!(onePassSigList.length && !signatureList.length && msg.packets.stream)) { - _context22.next = 11; + if (streaming) { + _context22.next = 10; break; } - _context22.next = 9; + _context22.t0 = msg.packets; + _context22.next = 8; + return _webStreamTools2.default.readToEnd(msg.packets.stream, function (_) { + return _; + }); + + case 8: + _context22.t1 = _context22.sent; + + _context22.t0.concat.call(_context22.t0, _context22.t1); + + case 10: + onePassSigList = msg.packets.filterByTag(_enums2.default.packet.onePassSignature).reverse(); + signatureList = msg.packets.filterByTag(_enums2.default.packet.signature); + + if (!(streaming && onePassSigList.length && !signatureList.length && msg.packets.stream)) { + _context22.next = 17; + break; + } + + _context22.next = 15; return _promise2.default.all(onePassSigList.map(function () { var _ref20 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee20(onePassSig) { return _regenerator2.default.wrap(function _callee20$(_context20) { @@ -48223,7 +49202,7 @@ Message.prototype.signDetached = function () { }; }())); - case 9: + case 15: msg.packets.stream = _webStreamTools2.default.transformPair(msg.packets.stream, function () { var _ref22 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee21(readable, writable) { var reader, writer, i, _ref23, signature; @@ -48295,12 +49274,12 @@ Message.prototype.signDetached = function () { return _ref22.apply(this, arguments); }; }()); - return _context22.abrupt('return', createVerificationObjects(onePassSigList, literalDataList, keys, date, false)); + return _context22.abrupt('return', createVerificationObjects(onePassSigList, literalDataList, keys, date, false, streaming)); - case 11: - return _context22.abrupt('return', createVerificationObjects(signatureList, literalDataList, keys, date, false)); + case 17: + return _context22.abrupt('return', createVerificationObjects(signatureList, literalDataList, keys, date, false, streaming)); - case 12: + case 18: case 'end': return _context22.stop(); } @@ -48380,7 +49359,7 @@ Message.prototype.appendSignature = function () { }, _callee29, this); })); - return function (_x74) { + return function (_x76) { return _ref30.apply(this, arguments); }; }(); @@ -48445,7 +49424,7 @@ function fromBinary(bytes, filename) { return message; } -},{"./config":350,"./crypto":365,"./encoding/armor":382,"./enums":384,"./key":387,"./packet":396,"./signature":416,"./type/keyid":419,"./util":423,"babel-runtime/core-js/array/from":16,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],392:[function(_dereq_,module,exports){ +},{"./config":350,"./crypto":365,"./encoding/armor":382,"./enums":384,"./key":389,"./packet":402,"./signature":422,"./type/keyid":425,"./util":429,"babel-runtime/core-js/array/from":16,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],398:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -48866,7 +49845,7 @@ function destroyWorker() { * Generates a new OpenPGP key pair. Supports RSA and ECC keys. Primary and subkey will be of same type. * @param {Array} userIds array of user IDs e.g. [{ name:'Phil Zimmermann', email:'phil@openpgp.org' }] * @param {String} passphrase (optional) The passphrase used to encrypt the resulting private key - * @param {Number} numBits (optional) number of bits for RSA keys: 2048 or 4096. + * @param {Number} rsaBits (optional) number of bits for RSA keys: 2048 or 4096. * @param {Number} keyExpirationTime (optional) The number of seconds after the key creation time that the key expires * @param {String} curve (optional) elliptic curve for ECC keys: * curve25519, p256, p384, p521, secp256k1, @@ -48889,6 +49868,8 @@ function generateKey(_ref3) { passphrase = _ref3$passphrase === undefined ? "" : _ref3$passphrase, _ref3$numBits = _ref3.numBits, numBits = _ref3$numBits === undefined ? 2048 : _ref3$numBits, + _ref3$rsaBits = _ref3.rsaBits, + rsaBits = _ref3$rsaBits === undefined ? numBits : _ref3$rsaBits, _ref3$keyExpirationTi = _ref3.keyExpirationTime, keyExpirationTime = _ref3$keyExpirationTi === undefined ? 0 : _ref3$keyExpirationTi, _ref3$curve = _ref3.curve, @@ -48899,9 +49880,9 @@ function generateKey(_ref3) { subkeys = _ref3$subkeys === undefined ? [{}] : _ref3$subkeys; userIds = toArray(userIds); - var options = { userIds: userIds, passphrase: passphrase, numBits: numBits, keyExpirationTime: keyExpirationTime, curve: curve, date: date, subkeys: subkeys }; - if (_util2.default.getWebCryptoAll() && numBits < 2048) { - throw new Error('numBits should be 2048 or 4096, found: ' + numBits); + var options = { userIds: userIds, passphrase: passphrase, rsaBits: rsaBits, keyExpirationTime: keyExpirationTime, curve: curve, date: date, subkeys: subkeys }; + if (_util2.default.getWebCryptoAll() && rsaBits < 2048) { + throw new Error('rsaBits should be 2048 or 4096, found: ' + rsaBits); } if (!_util2.default.getWebCryptoAll() && asyncProxy) { @@ -49494,7 +50475,6 @@ function sign(_ref18) { checkCleartextOrMessage(message); privateKeys = toArray(privateKeys);fromUserIds = toArray(fromUserIds); - if (asyncProxy) { // use web worker if available return asyncProxy.delegate('sign', { @@ -49867,7 +50847,7 @@ function nativeAEAD() { return _config2.default.aead_protect && (_config2.default.aead_mode === _enums2.default.aead.eax || _config2.default.aead_mode === _enums2.default.aead.experimental_gcm) && _util2.default.getWebCrypto(); } -},{"./cleartext":348,"./config/config":349,"./enums":384,"./key":387,"./message":391,"./polyfills":415,"./util":423,"./worker/async_proxy":425,"babel-runtime/core-js/object/entries":25,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"web-stream-tools":345}],393:[function(_dereq_,module,exports){ +},{"./cleartext":348,"./config/config":349,"./enums":384,"./key":389,"./message":397,"./polyfills":421,"./util":429,"./worker/async_proxy":431,"babel-runtime/core-js/object/entries":25,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"web-stream-tools":345}],399:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -50085,7 +51065,7 @@ function packetClassFromTagName(tag) { return tag.substr(0, 1).toUpperCase() + tag.substr(1); } -},{"../enums.js":384,"./all_packets.js":393,"./compressed.js":395,"./literal.js":397,"./marker.js":398,"./one_pass_signature.js":399,"./public_key.js":402,"./public_key_encrypted_session_key.js":403,"./public_subkey.js":404,"./secret_key.js":405,"./secret_subkey.js":406,"./signature.js":407,"./sym_encrypted_aead_protected.js":408,"./sym_encrypted_integrity_protected.js":409,"./sym_encrypted_session_key.js":410,"./symmetrically_encrypted.js":411,"./trust.js":412,"./user_attribute.js":413,"./userid.js":414,"babel-runtime/core-js/object/assign":22}],394:[function(_dereq_,module,exports){ +},{"../enums.js":384,"./all_packets.js":399,"./compressed.js":401,"./literal.js":403,"./marker.js":404,"./one_pass_signature.js":405,"./public_key.js":408,"./public_key_encrypted_session_key.js":409,"./public_subkey.js":410,"./secret_key.js":411,"./secret_subkey.js":412,"./signature.js":413,"./sym_encrypted_aead_protected.js":414,"./sym_encrypted_integrity_protected.js":415,"./sym_encrypted_session_key.js":416,"./symmetrically_encrypted.js":417,"./trust.js":418,"./user_attribute.js":419,"./userid.js":420,"babel-runtime/core-js/object/assign":22}],400:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -50184,6 +51164,9 @@ function clonePackets(options) { return key.toPacketlist(); }); } + if (options.publicKey) { + options.publicKey = options.publicKey.toPacketlist(); + } if (options.privateKey) { options.privateKey = options.privateKey.toPacketlist(); } @@ -50279,6 +51262,9 @@ function parseClonedPackets(options) { if (options.privateKeys) { options.privateKeys = options.privateKeys.map(packetlistCloneToKey); } + if (options.publicKey) { + options.publicKey = packetlistCloneToKey(options.publicKey); + } if (options.privateKey) { options.privateKey = packetlistCloneToKey(options.privateKey); } @@ -50350,7 +51336,7 @@ function packetlistCloneToSignature(clone) { return new _signature.Signature(packetlist); } -},{"../cleartext":348,"../key":387,"../message":391,"../signature":416,"../type/keyid":419,"../util":423,"./packetlist":401,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"web-stream-tools":345}],395:[function(_dereq_,module,exports){ +},{"../cleartext":348,"../key":389,"../message":397,"../signature":422,"../type/keyid":425,"../util":429,"./packetlist":407,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"web-stream-tools":345}],401:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -50663,7 +51649,7 @@ if (nodeZlib) { }; } -},{"../config":350,"../enums":384,"../util":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"pako":319,"seek-bzip":339,"web-stream-tools":345}],396:[function(_dereq_,module,exports){ +},{"../config":350,"../enums":384,"../util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"pako":319,"seek-bzip":339,"web-stream-tools":345}],402:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -50705,7 +51691,7 @@ var mod = { exports.default = mod; -},{"./all_packets":393,"./clone":394,"./packetlist":401,"babel-runtime/core-js/object/assign":22}],397:[function(_dereq_,module,exports){ +},{"./all_packets":399,"./clone":400,"./packetlist":407,"babel-runtime/core-js/object/assign":22}],403:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -50962,7 +51948,7 @@ Literal.prototype.write = function () { exports.default = Literal; -},{"../enums":384,"../util":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],398:[function(_dereq_,module,exports){ +},{"../enums":384,"../util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],404:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -51037,7 +52023,7 @@ Marker.prototype.read = function (bytes) { exports.default = Marker; -},{"../enums":384}],399:[function(_dereq_,module,exports){ +},{"../enums":384}],405:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -51272,7 +52258,7 @@ OnePassSignature.prototype.verify = (0, _asyncToGenerator3.default)( /*#__PURE__ exports.default = OnePassSignature; -},{"../enums":384,"../type/keyid":419,"../util":423,"./signature":407,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],400:[function(_dereq_,module,exports){ +},{"../enums":384,"../type/keyid":425,"../util":429,"./signature":413,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],406:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -51813,7 +52799,7 @@ exports.default = { * @module packet/packet */ -},{"../enums":384,"../util":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"web-stream-tools":345}],401:[function(_dereq_,module,exports){ +},{"../enums":384,"../util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"web-stream-tools":345}],407:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -52239,7 +53225,7 @@ List.fromStructuredClone = function (packetlistClone) { exports.default = List; -},{"../config":350,"../enums":384,"../util":423,"./all_packets":393,"./packet":400,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],402:[function(_dereq_,module,exports){ +},{"../config":350,"../enums":384,"../util":429,"./all_packets":399,"./packet":406,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],408:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -52521,13 +53507,14 @@ PublicKey.prototype.hasSameFingerprintAs = function (other) { /** * Returns algorithm information - * @returns {Object} An object of the form {algorithm: String, bits:int, curve:String} + * @returns {Object} An object of the form {algorithm: String, rsaBits:int, curve:String} */ PublicKey.prototype.getAlgorithmInfo = function () { var result = {}; result.algorithm = this.algorithm; if (this.params[0] instanceof _mpi2.default) { - result.bits = this.params[0].byteLength() * 8; + result.rsaBits = this.params[0].byteLength() * 8; + result.bits = result.rsaBits; // Deprecated. } else { result.curve = this.params[0].getName(); } @@ -52551,7 +53538,7 @@ PublicKey.prototype.postCloneTypeFix = function () { exports.default = PublicKey; -},{"../config":350,"../crypto":365,"../enums":384,"../type/keyid":419,"../type/mpi":420,"../util":423,"asmcrypto.js/dist_es5/hash/sha1/sha1":11,"asmcrypto.js/dist_es5/hash/sha256/sha256":13}],403:[function(_dereq_,module,exports){ +},{"../config":350,"../crypto":365,"../enums":384,"../type/keyid":425,"../type/mpi":426,"../util":429,"asmcrypto.js/dist_es5/hash/sha1/sha1":11,"asmcrypto.js/dist_es5/hash/sha256/sha256":13}],409:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -52824,7 +53811,7 @@ PublicKeyEncryptedSessionKey.prototype.postCloneTypeFix = function () { exports.default = PublicKeyEncryptedSessionKey; -},{"../crypto":365,"../enums":384,"../type/keyid":419,"../type/mpi":420,"../util":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],404:[function(_dereq_,module,exports){ +},{"../crypto":365,"../enums":384,"../type/keyid":425,"../type/mpi":426,"../util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],410:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -52883,7 +53870,7 @@ PublicSubkey.prototype.constructor = PublicSubkey; exports.default = PublicSubkey; -},{"../enums":384,"./public_key":402}],405:[function(_dereq_,module,exports){ +},{"../enums":384,"./public_key":408}],411:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -53024,12 +54011,12 @@ function SecretKey() { * Symmetric algorithm * @type {String} */ - this.symmetric = 'aes256'; + this.symmetric = null; /** * AEAD algorithm * @type {String} */ - this.aead = 'eax'; + this.aead = null; } SecretKey.prototype = new _public_key2.default(); @@ -53265,59 +54252,62 @@ SecretKey.prototype.encrypt = function () { case 14: this.s2k.salt = _context.sent; cleartext = write_cleartext_params(this.params, this.algorithm); - _context.next = 18; + + this.symmetric = 'aes256'; + _context.next = 19; return produceEncryptionKey(this.s2k, passphrase, this.symmetric); - case 18: + case 19: key = _context.sent; blockLen = _crypto2.default.cipher[this.symmetric].blockSize; - _context.next = 22; + _context.next = 23; return _crypto2.default.random.getRandomBytes(blockLen); - case 22: + case 23: this.iv = _context.sent; if (!(this.version === 5)) { - _context.next = 34; + _context.next = 36; break; } this.s2k_usage = 253; + this.aead = 'eax'; mode = _crypto2.default[this.aead]; - _context.next = 28; + _context.next = 30; return mode(this.symmetric, key); - case 28: + case 30: modeInstance = _context.sent; - _context.next = 31; + _context.next = 33; return modeInstance.encrypt(cleartext, this.iv.subarray(0, mode.ivLength), new Uint8Array()); - case 31: + case 33: this.keyMaterial = _context.sent; - _context.next = 47; + _context.next = 49; break; - case 34: + case 36: this.s2k_usage = 254; _context.t0 = _crypto2.default.cfb; _context.t1 = this.symmetric; _context.t2 = key; _context.t3 = _util2.default; _context.t4 = cleartext; - _context.next = 42; + _context.next = 44; return _crypto2.default.hash.sha1(cleartext); - case 42: + case 44: _context.t5 = _context.sent; _context.t6 = [_context.t4, _context.t5]; _context.t7 = _context.t3.concatUint8Array.call(_context.t3, _context.t6); _context.t8 = this.iv; this.keyMaterial = _context.t0.encrypt.call(_context.t0, _context.t1, _context.t2, _context.t7, _context.t8); - case 47: + case 49: return _context.abrupt('return', true); - case 48: + case 50: case 'end': return _context.stop(); } @@ -53543,7 +54533,7 @@ SecretKey.prototype.postCloneTypeFix = function () { exports.default = SecretKey; -},{"../crypto":365,"../enums":384,"../type/keyid.js":419,"../type/s2k":422,"../util":423,"./public_key":402,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/toConsumableArray":41,"babel-runtime/regenerator":43}],406:[function(_dereq_,module,exports){ +},{"../crypto":365,"../enums":384,"../type/keyid.js":425,"../type/s2k":428,"../util":429,"./public_key":408,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/toConsumableArray":41,"babel-runtime/regenerator":43}],412:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -53601,7 +54591,7 @@ SecretSubkey.prototype.constructor = SecretSubkey; exports.default = SecretSubkey; -},{"../enums":384,"./secret_key":405}],407:[function(_dereq_,module,exports){ +},{"../enums":384,"./secret_key":411}],413:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -53847,7 +54837,6 @@ Signature.prototype.sign = function () { this.signedHashValue = _webStreamTools2.default.slice(_webStreamTools2.default.clone(hash), 0, 2); - params = key.params; signed = function () { @@ -53887,7 +54876,7 @@ Signature.prototype.sign = function () { } this.signature = _webStreamTools2.default.fromAsync(signed); - _context2.next = 23; + _context2.next = 24; break; case 20: @@ -53897,13 +54886,14 @@ Signature.prototype.sign = function () { case 22: this.signature = _context2.sent; - case 23: // Store the fact that this signature is valid, e.g. for when we call `await - // getLatestValidSignature(this.revocationSignatures, key, data)` later. Note - // that this only holds up if the key and data passed to verify are the same - // as the ones passed to sign. + // getLatestValidSignature(this.revocationSignatures, key, data)` later. + // Note that this only holds up if the key and data passed to verify are the + // same as the ones passed to sign. this.verified = true; + + case 24: return _context2.abrupt('return', true); case 25: @@ -54459,7 +55449,7 @@ Signature.prototype.hash = function () { }(); /** - * verifys the signature packet. Note: not signature types are implemented + * verifies the signature packet. Note: not all signature types are implemented * @param {module:packet.PublicSubkey|module:packet.PublicKey| * module:packet.SecretSubkey|module:packet.SecretKey} key the public key to verify the signature * @param {module:enums.signature} signatureType expected signature type @@ -54471,6 +55461,7 @@ Signature.prototype.hash = function () { Signature.prototype.verify = function () { var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(key, signatureType, data) { var detached = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + var streaming = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; var publicKeyAlgorithm, hashAlgorithm, toHash, hash, mpicount, endian, mpi, i, j; return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { @@ -54496,34 +55487,47 @@ Signature.prototype.verify = function () { } hash = this.hashed; - _context5.next = 14; + _context5.next = 18; break; case 10: toHash = this.toHash(signatureType, data, detached); - _context5.next = 13; - return this.hash(signatureType, data, toHash); - case 13: - hash = _context5.sent; + if (streaming) { + _context5.next = 15; + break; + } + + _context5.next = 14; + return _webStreamTools2.default.readToEnd(toHash); case 14: - _context5.next = 16; + toHash = _context5.sent; + + case 15: + _context5.next = 17; + return this.hash(signatureType, data, toHash); + + case 17: + hash = _context5.sent; + + case 18: + _context5.next = 20; return _webStreamTools2.default.readToEnd(hash); - case 16: + case 20: hash = _context5.sent; if (!(this.signedHashValue[0] !== hash[0] || this.signedHashValue[1] !== hash[1])) { - _context5.next = 21; + _context5.next = 25; break; } this.verified = false; - _context5.next = 33; + _context5.next = 37; break; - case 21: + case 25: mpicount = 0; // Algorithm-Specific Fields for RSA signatures: // - multiprecision number (MPI) of RSA signature value m**d mod n. @@ -54543,27 +55547,26 @@ Signature.prototype.verify = function () { endian = publicKeyAlgorithm === _enums2.default.publicKey.eddsa ? 'le' : 'be'; mpi = []; i = 0; - _context5.next = 28; + _context5.next = 32; return _webStreamTools2.default.readToEnd(this.signature); - case 28: + case 32: this.signature = _context5.sent; for (j = 0; j < mpicount; j++) { mpi[j] = new _mpi2.default(); i += mpi[j].read(this.signature.subarray(i, this.signature.length), endian); } - - _context5.next = 32; + _context5.next = 36; return _crypto2.default.signature.verify(publicKeyAlgorithm, hashAlgorithm, mpi, key.params, toHash, hash); - case 32: + case 36: this.verified = _context5.sent; - case 33: + case 37: return _context5.abrupt('return', this.verified); - case 34: + case 38: case 'end': return _context5.stop(); } @@ -54609,7 +55612,7 @@ Signature.prototype.postCloneTypeFix = function () { exports.default = Signature; -},{"../config":350,"../crypto":365,"../enums":384,"../type/keyid.js":419,"../type/mpi.js":420,"../util":423,"./packet":400,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"web-stream-tools":345}],408:[function(_dereq_,module,exports){ +},{"../config":350,"../crypto":365,"../enums":384,"../type/keyid.js":425,"../type/mpi.js":426,"../util":429,"./packet":406,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"web-stream-tools":345}],414:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -54891,7 +55894,7 @@ SymEncryptedAEADProtected.prototype.crypt = function () { var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(fn, key, data, streaming) { var _this2 = this; - var cipher, mode, modeInstance, tagLengthIfDecrypting, chunkSize, adataBuffer, adataArray, adataTagArray, adataView, chunkIndexArray, chunkIndex, latestPromise, cryptedBytes, queuedBytes, iv; + var cipher, mode, modeInstance, tagLengthIfDecrypting, tagLengthIfEncrypting, chunkSize, adataBuffer, adataArray, adataTagArray, adataView, chunkIndexArray, chunkIndex, latestPromise, cryptedBytes, queuedBytes, iv; return _regenerator2.default.wrap(function _callee8$(_context8) { while (1) { switch (_context8.prev = _context8.next) { @@ -54904,6 +55907,7 @@ SymEncryptedAEADProtected.prototype.crypt = function () { case 4: modeInstance = _context8.sent; tagLengthIfDecrypting = fn === 'decrypt' ? mode.tagLength : 0; + tagLengthIfEncrypting = fn === 'encrypt' ? mode.tagLength : 0; chunkSize = Math.pow(2, this.chunkSizeByte + 6) + tagLengthIfDecrypting; // ((uint64_t)1 << (c + 6)) adataBuffer = new ArrayBuffer(21); @@ -54928,7 +55932,7 @@ SymEncryptedAEADProtected.prototype.crypt = function () { case 0: reader = _webStreamTools2.default.getReader(readable); buffer = new TransformStream({}, { - highWaterMark: streaming ? _util2.default.getHardwareConcurrency() * Math.pow(2, _config2.default.aead_chunk_size_byte + 6) : Infinity, + highWaterMark: streaming ? _util2.default.getHardwareConcurrency() * Math.pow(2, _this2.chunkSizeByte + 6) : Infinity, size: function size(array) { return array.length; } @@ -54967,16 +55971,17 @@ SymEncryptedAEADProtected.prototype.crypt = function () { if (!chunkIndex || chunk.length) { reader.unshift(finalChunk); cryptedPromise = modeInstance[fn](chunk, mode.getNonce(iv, chunkIndexArray), adataArray); + queuedBytes += chunk.length - tagLengthIfDecrypting + tagLengthIfEncrypting; } else { // After the last chunk, we either encrypt a final, empty // data chunk to get the final authentication tag or // validate that final authentication tag. adataView.setInt32(13 + 4, cryptedBytes); // Should be setInt64(13, ...) cryptedPromise = modeInstance[fn](finalChunk, mode.getNonce(iv, chunkIndexArray), adataTagArray); + queuedBytes += tagLengthIfEncrypting; done = true; } cryptedBytes += chunk.length - tagLengthIfDecrypting; - queuedBytes += chunk.length - tagLengthIfDecrypting; // eslint-disable-next-line no-loop-func latestPromise = latestPromise.then(function () { return cryptedPromise; @@ -54994,7 +55999,7 @@ SymEncryptedAEADProtected.prototype.crypt = function () { return writer.write(crypted); case 4: - queuedBytes -= chunk.length; + queuedBytes -= crypted.length; case 5: case 'end': @@ -55012,31 +56017,31 @@ SymEncryptedAEADProtected.prototype.crypt = function () { }); if (!(done || queuedBytes > writer.desiredSize)) { - _context6.next = 17; + _context6.next = 16; break; } - _context6.next = 17; + _context6.next = 16; return latestPromise; - case 17: + case 16: if (done) { - _context6.next = 21; + _context6.next = 20; break; } adataView.setInt32(5 + 4, ++chunkIndex); // Should be setInt64(5, ...) - _context6.next = 24; + _context6.next = 23; break; - case 21: - _context6.next = 23; + case 20: + _context6.next = 22; return writer.close(); - case 23: + case 22: return _context6.abrupt('return', 'break'); - case 24: + case 23: case 'end': return _context6.stop(); } @@ -55089,7 +56094,7 @@ SymEncryptedAEADProtected.prototype.crypt = function () { }; }())); - case 19: + case 20: case 'end': return _context8.stop(); } @@ -55102,7 +56107,7 @@ SymEncryptedAEADProtected.prototype.crypt = function () { }; }(); -},{"../config":350,"../crypto":365,"../enums":384,"../util":423,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],409:[function(_dereq_,module,exports){ +},{"../config":350,"../crypto":365,"../enums":384,"../util":429,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],415:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -55435,7 +56440,7 @@ SymEncryptedIntegrityProtected.prototype.decrypt = function () { exports.default = SymEncryptedIntegrityProtected; -},{"../config":350,"../crypto":365,"../enums":384,"../util":423,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"web-stream-tools":345}],410:[function(_dereq_,module,exports){ +},{"../config":350,"../crypto":365,"../enums":384,"../util":429,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"web-stream-tools":345}],416:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -55772,7 +56777,7 @@ SymEncryptedSessionKey.prototype.postCloneTypeFix = function () { exports.default = SymEncryptedSessionKey; -},{"../config":350,"../crypto":365,"../enums":384,"../type/s2k":422,"../util":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],411:[function(_dereq_,module,exports){ +},{"../config":350,"../crypto":365,"../enums":384,"../type/s2k":428,"../util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],417:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -55977,7 +56982,7 @@ SymmetricallyEncrypted.prototype.encrypt = function () { exports.default = SymmetricallyEncrypted; -},{"../config":350,"../crypto":365,"../enums":384,"../util":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],412:[function(_dereq_,module,exports){ +},{"../config":350,"../crypto":365,"../enums":384,"../util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43,"web-stream-tools":345}],418:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -56024,7 +57029,7 @@ Trust.prototype.read = function () {}; // TODO exports.default = Trust; -},{"../enums":384}],413:[function(_dereq_,module,exports){ +},{"../enums":384}],419:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -56136,7 +57141,7 @@ UserAttribute.prototype.equals = function (usrAttr) { exports.default = UserAttribute; -},{"../enums":384,"../util":423,"./packet":400}],414:[function(_dereq_,module,exports){ +},{"../enums":384,"../util":429,"./packet":406}],420:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -56242,7 +57247,7 @@ Userid.prototype.format = function (userid) { exports.default = Userid; -},{"../enums":384,"../util":423,"babel-runtime/core-js/object/assign":22}],415:[function(_dereq_,module,exports){ +},{"../enums":384,"../util":429,"babel-runtime/core-js/object/assign":22}],421:[function(_dereq_,module,exports){ (function (global){ 'use strict'; @@ -56326,7 +57331,7 @@ if (typeof TextEncoder === 'undefined') { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./util":423,"@mattiasbuelens/web-streams-polyfill/es6":1,"babel-runtime/core-js/array/from":16,"babel-runtime/core-js/object/assign":22,"babel-runtime/core-js/symbol":32,"core-js/fn/array/fill":46,"core-js/fn/array/find":47,"core-js/fn/array/from":48,"core-js/fn/array/includes":49,"core-js/fn/object/assign":50,"core-js/fn/promise":51,"core-js/fn/string/repeat":52,"core-js/fn/symbol":53,"core-js/fn/typed/uint8-array":54,"text-encoding-utf-8":341,"whatwg-fetch":347}],416:[function(_dereq_,module,exports){ +},{"./util":429,"@mattiasbuelens/web-streams-polyfill/es6":1,"babel-runtime/core-js/array/from":16,"babel-runtime/core-js/object/assign":22,"babel-runtime/core-js/symbol":32,"core-js/fn/array/fill":46,"core-js/fn/array/find":47,"core-js/fn/array/from":48,"core-js/fn/array/includes":49,"core-js/fn/object/assign":50,"core-js/fn/promise":51,"core-js/fn/string/repeat":52,"core-js/fn/symbol":53,"core-js/fn/typed/uint8-array":54,"text-encoding-utf-8":341,"whatwg-fetch":347}],422:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -56472,7 +57477,7 @@ Signature.prototype.armor = function () { return _armor2.default.encode(_enums2.default.armor.signature, this.packets.write()); }; -},{"./encoding/armor":382,"./enums":384,"./packet":396,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],417:[function(_dereq_,module,exports){ +},{"./encoding/armor":382,"./enums":384,"./packet":402,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/regenerator":43}],423:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -56553,7 +57558,7 @@ ECDHSymmetricKey.fromClone = function (clone) { exports.default = ECDHSymmetricKey; -},{"../util":423}],418:[function(_dereq_,module,exports){ +},{"../util":429}],424:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -56638,7 +57643,7 @@ KDFParams.fromClone = function (clone) { exports.default = KDFParams; -},{"../enums.js":384}],419:[function(_dereq_,module,exports){ +},{"../enums.js":384}],425:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -56747,7 +57752,7 @@ Keyid.wildcard = function () { exports.default = Keyid; -},{"../util.js":423}],420:[function(_dereq_,module,exports){ +},{"../util.js":429}],426:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -56911,7 +57916,7 @@ MPI.fromClone = function (clone) { exports.default = MPI; -},{"../util":423,"bn.js":44}],421:[function(_dereq_,module,exports){ +},{"../util":429,"bn.js":44}],427:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -57036,7 +58041,7 @@ OID.fromClone = function (clone) { exports.default = OID; -},{"../enums":384,"../util":423}],422:[function(_dereq_,module,exports){ +},{"../enums":384,"../util":429}],428:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -57219,102 +58224,77 @@ S2K.prototype.write = function () { * hashAlgorithm hash length */ S2K.prototype.produce_key = function () { - var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(passphrase, numBytes) { - var round = function () { - var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(prefix, s2k) { - var algorithm, count, data, datalen, isp, pos; - return _regenerator2.default.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - algorithm = _enums2.default.write(_enums2.default.hash, s2k.algorithm); - _context.t0 = s2k.type; - _context.next = _context.t0 === 'simple' ? 4 : _context.t0 === 'salted' ? 5 : _context.t0 === 'iterated' ? 6 : _context.t0 === 'gnu' ? 13 : 14; - break; - - case 4: - return _context.abrupt('return', _crypto2.default.hash.digest(algorithm, _util2.default.concatUint8Array([prefix, passphrase]))); - - case 5: - return _context.abrupt('return', _crypto2.default.hash.digest(algorithm, _util2.default.concatUint8Array([prefix, s2k.salt, passphrase]))); - - case 6: - count = s2k.get_count(); - data = _util2.default.concatUint8Array([s2k.salt, passphrase]); - datalen = data.length; - isp = new Uint8Array(prefix.length + count + datalen); - - isp.set(prefix); - for (pos = prefix.length; pos < count; pos += datalen) { - isp.set(data, pos); - } - return _context.abrupt('return', _crypto2.default.hash.digest(algorithm, isp.subarray(0, prefix.length + count))); - - case 13: - throw new Error("GNU s2k type not supported."); - - case 14: - throw new Error("Unknown s2k type."); - - case 15: - case 'end': - return _context.stop(); - } - } - }, _callee, this); - })); - - return function round(_x3, _x4) { - return _ref2.apply(this, arguments); - }; - }(); - - var arr, rlength, prefix, _i, i, result; - - return _regenerator2.default.wrap(function _callee2$(_context2) { + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(passphrase, numBytes) { + var algorithm, arr, rlength, prefixlen, toHash, data, datalen, count, pos, result; + return _regenerator2.default.wrap(function _callee$(_context) { while (1) { - switch (_context2.prev = _context2.next) { + switch (_context.prev = _context.next) { case 0: passphrase = _util2.default.encode_utf8(passphrase); - + algorithm = _enums2.default.write(_enums2.default.hash, this.algorithm); arr = []; rlength = 0; - prefix = new Uint8Array(numBytes); + prefixlen = 0; - - for (_i = 0; _i < numBytes; _i++) { - prefix[_i] = 0; - } - - i = 0; - - case 6: + case 5: if (!(rlength < numBytes)) { - _context2.next = 15; + _context.next = 31; break; } - _context2.next = 9; - return round(prefix.subarray(0, i), this); + toHash = void 0; + _context.t0 = this.type; + _context.next = _context.t0 === 'simple' ? 10 : _context.t0 === 'salted' ? 12 : _context.t0 === 'iterated' ? 14 : _context.t0 === 'gnu' ? 21 : 22; + break; - case 9: - result = _context2.sent; + case 10: + toHash = _util2.default.concatUint8Array([new Uint8Array(prefixlen), passphrase]); + return _context.abrupt('break', 23); + + case 12: + toHash = _util2.default.concatUint8Array([new Uint8Array(prefixlen), this.salt, passphrase]); + return _context.abrupt('break', 23); + + case 14: + data = _util2.default.concatUint8Array([this.salt, passphrase]); + datalen = data.length; + count = Math.max(this.get_count(), datalen); + + toHash = new Uint8Array(prefixlen + count); + toHash.set(data, prefixlen); + for (pos = prefixlen + datalen; pos < count; pos += datalen, datalen *= 2) { + toHash.copyWithin(pos, prefixlen, pos); + } + return _context.abrupt('break', 23); + + case 21: + throw new Error("GNU s2k type not supported."); + + case 22: + throw new Error("Unknown s2k type."); + + case 23: + _context.next = 25; + return _crypto2.default.hash.digest(algorithm, toHash); + + case 25: + result = _context.sent; arr.push(result); rlength += result.length; - i++; - _context2.next = 6; + prefixlen++; + _context.next = 5; break; - case 15: - return _context2.abrupt('return', _util2.default.concatUint8Array(arr).subarray(0, numBytes)); + case 31: + return _context.abrupt('return', _util2.default.concatUint8Array(arr).subarray(0, numBytes)); - case 16: + case 32: case 'end': - return _context2.stop(); + return _context.stop(); } } - }, _callee2, this); + }, _callee, this); })); return function (_x, _x2) { @@ -57333,7 +58313,7 @@ S2K.fromClone = function (clone) { exports.default = S2K; -},{"../config":350,"../crypto":365,"../enums.js":384,"../util.js":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/toConsumableArray":41,"babel-runtime/regenerator":43}],423:[function(_dereq_,module,exports){ +},{"../config":350,"../crypto":365,"../enums.js":384,"../util.js":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/toConsumableArray":41,"babel-runtime/regenerator":43}],429:[function(_dereq_,module,exports){ (function (global){ 'use strict'; @@ -57687,7 +58667,7 @@ exports.default = { * @returns {String} Base-64 encoded string */ Uint8Array_to_b64: function Uint8Array_to_b64(bytes, url) { - return _base2.default.encode(bytes, url).replace(/(\n)/g, ''); + return _base2.default.encode(bytes, url).replace(/[\r\n]/g, ''); }, /** @@ -58119,7 +59099,7 @@ exports.default = { throw new Error('User id string is too long'); } try { - var _emailAddresses$parse = _emailAddresses2.default.parseOneAddress(userid), + var _emailAddresses$parse = _emailAddresses2.default.parseOneAddress({ input: userid, atInDisplayName: true }), name = _emailAddresses$parse.name, email = _emailAddresses$parse.address, comments = _emailAddresses$parse.comments; @@ -58234,7 +59214,7 @@ exports.default = { */ }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./config":350,"./encoding/base64":383,"./util":423,"babel-runtime/core-js/object/entries":25,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/helpers/typeof":42,"babel-runtime/regenerator":43,"email-addresses":302,"web-stream-tools":345}],424:[function(_dereq_,module,exports){ +},{"./config":350,"./encoding/base64":383,"./util":429,"babel-runtime/core-js/object/entries":25,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/helpers/typeof":42,"babel-runtime/regenerator":43,"email-addresses":302,"web-stream-tools":345}],430:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -58374,7 +59354,7 @@ WKD.prototype.lookup = function () { exports.default = WKD; -},{"./crypto":365,"./key":387,"./util":423,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"node-fetch":"node-fetch"}],425:[function(_dereq_,module,exports){ +},{"./crypto":365,"./key":389,"./util":429,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/slicedToArray":40,"babel-runtime/regenerator":43,"node-fetch":"node-fetch"}],431:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -58643,5 +59623,5 @@ AsyncProxy.prototype.delegate = function (method, options) { exports.default = AsyncProxy; -},{"../config":350,"../crypto":365,"../packet":396,"../util.js":423,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/toConsumableArray":41,"babel-runtime/regenerator":43}]},{},[386])(386) +},{"../config":350,"../crypto":365,"../packet":402,"../util.js":429,"babel-runtime/core-js/promise":31,"babel-runtime/helpers/asyncToGenerator":35,"babel-runtime/helpers/toConsumableArray":41,"babel-runtime/regenerator":43}]},{},[386])(386) }); diff --git a/dist/compat/openpgp.min.js b/dist/compat/openpgp.min.js index cc952f12..35180149 100644 --- a/dist/compat/openpgp.min.js +++ b/dist/compat/openpgp.min.js @@ -1,2 +1,2 @@ -/*! OpenPGP.js v4.6.2 - 2019-09-12 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).openpgp=e()}}(function(){return function(){return function e(t,r,n){function a(s,o){if(!r[s]){if(!t[s]){var u="function"==typeof require&&require;if(!o&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var f=r[s]={exports:{}};t[s][0].call(f.exports,function(e){return a(t[s][1][e]||e)},f,f.exports,e,t,r,n)}return r[s].exports}for(var i="function"==typeof require&&require,s=0;s0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,f.default)(this,e),F(this);var n=r.size,a=r.highWaterMark;if(void 0!==t.type)throw new RangeError("Invalid type is specified");var i=P(n);void 0===a&&(a=1),function(e,t,r,n){var a=(0,c.default)(re.prototype),i=A(t,"write",1,[a]),s=A(t,"close",0,[]),o=A(t,"abort",1,[]);ne(e,a,function(){return S(t,"start",[a])},i,s,o,r,n)}(this,t,a=M(a),i)}return(0,d.default)(e,[{key:"abort",value:function(e){return!1===N(this)?h.default.reject(fe("abort")):!0===L(this)?h.default.reject(new TypeError("Cannot abort a stream that already has a writer")):q(this,e)}},{key:"getWriter",value:function(){if(!1===N(this))throw fe("getWriter");return D(this)}},{key:"locked",get:function(){if(!1===N(this))throw fe("locked");return L(this)}}]),e}();function D(e){return new X(e)}function F(e){e._state="writable",e._storedError=void 0,e._writer=void 0,e._writableStreamController=void 0,e._writeRequests=[],e._inFlightWriteRequest=void 0,e._closeRequest=void 0,e._inFlightCloseRequest=void 0,e._pendingAbortRequest=void 0,e._backpressure=!1}function N(e){return!!i(e)&&!!Object.prototype.hasOwnProperty.call(e,"_writableStreamController")}function L(e){return void 0!==e._writer}function q(e,t){var r=e._state;if("closed"===r||"errored"===r)return h.default.resolve(void 0);if(void 0!==e._pendingAbortRequest)return e._pendingAbortRequest._promise;var n=!1;"erroring"===r&&(n=!0,t=void 0);var a=new h.default(function(r,a){e._pendingAbortRequest={_promise:void 0,_resolve:r,_reject:a,_reason:t,_wasAlreadyErroring:n}});return e._pendingAbortRequest._promise=a,!1===n&&H(e,t),a}function G(e,t){"writable"!==e._state?W(e):H(e,t)}function H(e,t){var r=e._writableStreamController;e._state="erroring",e._storedError=t;var n=e._writer;void 0!==n&&Q(n,t),!1===function(e){return void 0!==e._inFlightWriteRequest||void 0!==e._inFlightCloseRequest}(e)&&!0===r._started&&W(e)}function W(e){e._state="errored",e._writableStreamController[O]();var t=e._storedError,r=!0,n=!1,a=void 0;try{for(var i,s=(0,l.default)(e._writeRequests);!(r=(i=s.next()).done);r=!0){i.value._reject(t)}}catch(u){n=!0,a=u}finally{try{!r&&s.return&&s.return()}finally{if(n)throw a}}if(e._writeRequests=[],void 0!==e._pendingAbortRequest){var o=e._pendingAbortRequest;if(e._pendingAbortRequest=void 0,!0===o._wasAlreadyErroring)return o._reject(t),void V(e);e._writableStreamController[I](o._reason).then(function(){o._resolve(),V(e)},function(t){o._reject(t),V(e)})}else V(e)}function Z(e){return void 0!==e._closeRequest||void 0!==e._inFlightCloseRequest}function V(e){void 0!==e._closeRequest&&(e._closeRequest._reject(e._storedError),e._closeRequest=void 0);var t=e._writer;void 0!==t&&be(t,e._storedError)}function Y(e,t){var r=e._writer;void 0!==r&&t!==e._backpressure&&(!0===t?me(r):we(r)),e._backpressure=t}var X=function(){function e(t){if((0,f.default)(this,e),!1===N(t))throw new TypeError("WritableStreamDefaultWriter can only be constructed with a WritableStream instance");if(!0===L(t))throw new TypeError("This stream has already been locked for exclusive writing by another writer");this._ownerWritableStream=t,t._writer=this;var r=t._state;if("writable"===r)!1===Z(t)&&!0===t._backpressure?me(this):ge(this),he(this);else if("erroring"===r)ve(this,t._storedError),he(this);else if("closed"===r)ge(this),function(e){he(e),ye(e)}(this);else{var n=t._storedError;ve(this,n),pe(this,n)}}return(0,d.default)(e,[{key:"abort",value:function(e){return!1===J(this)?h.default.reject(de("abort")):void 0===this._ownerWritableStream?h.default.reject(le("abort")):function(e,t){return q(e._ownerWritableStream,t)}(this,e)}},{key:"close",value:function(){if(!1===J(this))return h.default.reject(de("close"));var e=this._ownerWritableStream;return void 0===e?h.default.reject(le("close")):!0===Z(e)?h.default.reject(new TypeError("cannot close an already-closing stream")):$(this)}},{key:"releaseLock",value:function(){if(!1===J(this))throw de("releaseLock");void 0!==this._ownerWritableStream&&ee(this)}},{key:"write",value:function(e){return!1===J(this)?h.default.reject(de("write")):void 0===this._ownerWritableStream?h.default.reject(le("write to")):te(this,e)}},{key:"closed",get:function(){return!1===J(this)?h.default.reject(de("closed")):this._closedPromise}},{key:"desiredSize",get:function(){if(!1===J(this))throw de("desiredSize");if(void 0===this._ownerWritableStream)throw le("desiredSize");return e=this._ownerWritableStream,"errored"===(t=e._state)||"erroring"===t?null:"closed"===t?0:ie(e._writableStreamController);var e,t}},{key:"ready",get:function(){return!1===J(this)?h.default.reject(de("ready")):this._readyPromise}}]),e}();function J(e){return!!i(e)&&!!Object.prototype.hasOwnProperty.call(e,"_ownerWritableStream")}function $(e){var t=e._ownerWritableStream,r=t._state;if("closed"===r||"errored"===r)return h.default.reject(new TypeError("The stream (in "+r+" state) is not in the writable state and cannot be closed"));var n=new h.default(function(e,r){var n={_resolve:e,_reject:r};t._closeRequest=n});return!0===t._backpressure&&"writable"===r&&we(e),function(e){B(e,"close",0),se(e)}(t._writableStreamController),n}function Q(e,t){"pending"===e._readyPromiseState?_e(e,t):function(e,t){ve(e,t)}(e,t)}function ee(e){var t=e._ownerWritableStream,r=new TypeError("Writer was released and can no longer be used to monitor the stream's closedness");Q(e,r),function(e,t){"pending"===e._closedPromiseState?be(e,t):function(e,t){pe(e,t)}(e,t)}(e,r),t._writer=void 0,e._ownerWritableStream=void 0}function te(e,t){var r=e._ownerWritableStream,n=r._writableStreamController,a=function(e,t){try{return e._strategySizeAlgorithm(t)}catch(t){return oe(e,t),1}}(n,t);if(r!==e._ownerWritableStream)return h.default.reject(le("write to"));var i=r._state;if("errored"===i)return h.default.reject(r._storedError);if(!0===Z(r)||"closed"===i)return h.default.reject(new TypeError("The stream is closing or closed and cannot be written to"));if("erroring"===i)return h.default.reject(r._storedError);var s=function(e){return new h.default(function(t,r){var n={_resolve:t,_reject:r};e._writeRequests.push(n)})}(r);return function(e,t,r){var n={chunk:t};try{B(e,n,r)}catch(t){return void oe(e,t)}var a=e._controlledWritableStream;!1===Z(a)&&"writable"===a._state&&Y(a,ue(e));se(e)}(n,t,a),s}var re=function(){function e(){throw(0,f.default)(this,e),new TypeError("WritableStreamDefaultController cannot be constructed explicitly")}return(0,d.default)(e,[{key:"error",value:function(e){if(!1===function(e){return!!i(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledWritableStream")}(this))throw new TypeError("WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController");"writable"===this._controlledWritableStream._state&&ce(this,e)}},{key:I,value:function(e){var t=this._abortAlgorithm(e);return ae(this),t}},{key:O,value:function(){U(this)}}]),e}();function ne(e,t,r,n,a,i,s,o){t._controlledWritableStream=e,e._writableStreamController=t,t._queue=void 0,t._queueTotalSize=void 0,U(t),t._started=!1,t._strategySizeAlgorithm=o,t._strategyHWM=s,t._writeAlgorithm=n,t._closeAlgorithm=a,t._abortAlgorithm=i;var u=ue(t);Y(e,u);var c=r();h.default.resolve(c).then(function(){t._started=!0,se(t)},function(r){t._started=!0,G(e,r)}).catch(K)}function ae(e){e._writeAlgorithm=void 0,e._closeAlgorithm=void 0,e._abortAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function ie(e){return e._strategyHWM-e._queueTotalSize}function se(e){var t=e._controlledWritableStream;if(!1!==e._started&&void 0===t._inFlightWriteRequest){var r=t._state;if("closed"!==r&&"errored"!==r)if("erroring"!==r){if(0!==e._queue.length){var n=function(e){return e._queue[0].value}(e);"close"===n?function(e){var t=e._controlledWritableStream;(function(e){e._inFlightCloseRequest=e._closeRequest,e._closeRequest=void 0})(t),R(e);var r=e._closeAlgorithm();ae(e),r.then(function(){!function(e){e._inFlightCloseRequest._resolve(void 0),e._inFlightCloseRequest=void 0,"erroring"===e._state&&(e._storedError=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._resolve(),e._pendingAbortRequest=void 0)),e._state="closed";var t=e._writer;void 0!==t&&ye(t)}(t)},function(e){!function(e,t){e._inFlightCloseRequest._reject(t),e._inFlightCloseRequest=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._reject(t),e._pendingAbortRequest=void 0),G(e,t)}(t,e)}).catch(K)}(e):function(e,t){var r=e._controlledWritableStream;(function(e){e._inFlightWriteRequest=e._writeRequests.shift()})(r),e._writeAlgorithm(t).then(function(){!function(e){e._inFlightWriteRequest._resolve(void 0),e._inFlightWriteRequest=void 0}(r);var t=r._state;if(R(e),!1===Z(r)&&"writable"===t){var n=ue(e);Y(r,n)}se(e)},function(t){"writable"===r._state&&ae(e),function(e,t){e._inFlightWriteRequest._reject(t),e._inFlightWriteRequest=void 0,G(e,t)}(r,t)}).catch(K)}(e,n.chunk)}}else W(t)}}function oe(e,t){"writable"===e._controlledWritableStream._state&&ce(e,t)}function ue(e){return ie(e)<=0}function ce(e,t){var r=e._controlledWritableStream;ae(e),H(r,t)}function fe(e){return new TypeError("WritableStream.prototype."+e+" can only be used on a WritableStream")}function de(e){return new TypeError("WritableStreamDefaultWriter.prototype."+e+" can only be used on a WritableStreamDefaultWriter")}function le(e){return new TypeError("Cannot "+e+" a stream using a released writer")}function he(e){e._closedPromise=new h.default(function(t,r){e._closedPromise_resolve=t,e._closedPromise_reject=r,e._closedPromiseState="pending"})}function pe(e,t){he(e),be(e,t)}function be(e,t){e._closedPromise.catch(function(){}),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="rejected"}function ye(e){e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="resolved"}function me(e){e._readyPromise=new h.default(function(t,r){e._readyPromise_resolve=t,e._readyPromise_reject=r}),e._readyPromiseState="pending"}function ve(e,t){me(e),_e(e,t)}function ge(e){me(e),we(e)}function _e(e,t){e._readyPromise.catch(function(){}),e._readyPromise_reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="rejected"}function we(e){e._readyPromise_resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="fulfilled"}var ke=u.default||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},xe=t("[[CancelSteps]]"),Ae=t("[[PullSteps]]"),Se=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,f.default)(this,e),Me(this);var n=r.size,a=r.highWaterMark,i=t.type;if("bytes"===String(i)){if(void 0!==n)throw new RangeError("The strategy for a byte stream cannot have a size function");void 0===a&&(a=0),function(e,t,r){var n=(0,c.default)(ct.prototype),a=A(t,"pull",0,[n]),i=A(t,"cancel",1,[]),s=t.autoAllocateChunkSize;if(void 0!==s&&(s=Number(s),!1===ke(s)||s<=0))throw new RangeError("autoAllocateChunkSize must be a positive integer");!function(e,t,r,n,a,i,s){t._controlledReadableByteStream=e,t._pullAgain=!1,t._pulling=!1,ht(t),t._queue=t._queueTotalSize=void 0,U(t),t._closeRequested=!1,t._started=!1,t._strategyHWM=M(i),t._pullAlgorithm=n,t._cancelAlgorithm=a,t._autoAllocateChunkSize=s,t._pendingPullIntos=[],e._readableStreamController=t;var o=r();h.default.resolve(o).then(function(){t._started=!0,lt(t)},function(e){St(t,e)}).catch(K)}(e,n,function(){return S(t,"start",[n])},a,i,r,s)}(this,t,a=M(a))}else{if(void 0!==i)throw new RangeError("Invalid type is specified");var s=P(n);void 0===a&&(a=1),function(e,t,r,n){var a=(0,c.default)(Je.prototype),i=A(t,"pull",0,[a]),s=A(t,"cancel",1,[]);ot(e,a,function(){return S(t,"start",[a])},i,s,r,n)}(this,t,a=M(a),s)}}return(0,d.default)(e,[{key:"cancel",value:function(e){return!1===Pe(this)?h.default.reject(Mt("cancel")):!0===Ce(this)?h.default.reject(new TypeError("Cannot cancel a stream that already has a reader")):Be(this,e)}},{key:"getReader",value:function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).mode;if(!1===Pe(this))throw Mt("getReader");if(void 0===e)return Ee(this);if("byob"===(e=String(e)))return function(e){return new Ge(e)}(this);throw new RangeError("Invalid mode is specified")}},{key:"pipeThrough",value:function(e){var t=e.writable,r=e.readable,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=n.preventClose,i=n.preventAbort,s=n.preventCancel,o=n.signal;if(!1===Pe(this))throw Mt("pipeThrough");if(!1===N(t))throw new TypeError("writable argument to pipeThrough must be a WritableStream");if(!1===Pe(r))throw new TypeError("readable argument to pipeThrough must be a ReadableStream");if(a=Boolean(a),i=Boolean(i),s=Boolean(s),void 0!==o&&!jt(o))throw new TypeError("ReadableStream.prototype.pipeThrough's signal option must be an AbortSignal");if(!0===Ce(this))throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream");if(!0===L(t))throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream");return Te(this,t,a,i,s,o).catch(function(){}),r}},{key:"pipeTo",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.preventClose,n=t.preventAbort,a=t.preventCancel,i=t.signal;return!1===Pe(this)?h.default.reject(Mt("pipeTo")):!1===N(e)?h.default.reject(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream")):(r=Boolean(r),n=Boolean(n),a=Boolean(a),void 0===i||jt(i)?!0===Ce(this)?h.default.reject(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream")):!0===L(e)?h.default.reject(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream")):Te(this,e,r,n,a,i):h.default.reject(new TypeError("ReadableStream.prototype.pipeTo's signal option must be an AbortSignal")))}},{key:"tee",value:function(){if(!1===Pe(this))throw Mt("tee");var e=function(e,t){var r=Ee(e),n=void 0,a=void 0,i=void 0,s=void 0,o=void 0,u=!1,c=!1,f=!1,d=new h.default(function(e){o=e});function l(){return Xe(r).then(function(e){var t=e.value;if(!0===e.done&&!1===u&&(!1===c&&rt(i._readableStreamController),!1===f&&rt(s._readableStreamController),u=!0),!0!==u){var r=t,n=t;!1===c&&nt(i._readableStreamController,r),!1===f&&nt(s._readableStreamController,n)}})}function p(){}return i=je(p,l,function(t){if(c=!0,n=t,!0===f){var r=_([n,a]),i=Be(e,r);o(i)}return d}),s=je(p,l,function(t){if(f=!0,a=t,!0===c){var r=_([n,a]),i=Be(e,r);o(i)}return d}),r._closedPromise.catch(function(e){!0!==u&&(at(i._readableStreamController,e),at(s._readableStreamController,e),u=!0)}),[i,s]}(this);return _(e)}},{key:"locked",get:function(){if(!1===Pe(this))throw Mt("locked");return Ce(this)}}]),e}();function Ee(e){return new qe(e)}function je(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){return 1},i=(0,c.default)(Se.prototype);return Me(i),ot(i,(0,c.default)(Je.prototype),e,t,r,n,a),i}function Me(e){e._state="readable",e._reader=void 0,e._storedError=void 0,e._disturbed=!1}function Pe(e){return!!i(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readableStreamController")}function Ce(e){return void 0!==e._reader}function Te(e,t,r,n,a,i){var s=Ee(e),o=D(t),u=!1,c=h.default.resolve();return new h.default(function(f,d){var l=void 0;if(void 0!==i){if(l=function(){var r=new DOMException("Aborted","AbortError"),i=[];!1===n&&i.push(function(){return"writable"===t._state?q(t,r):h.default.resolve()}),!1===a&&i.push(function(){return"readable"===e._state?Be(e,r):h.default.resolve()}),m(function(){return C(i.map(function(e){return e()}),function(e){return e})},!0,r)},!0===i.aborted)return void l();i.addEventListener("abort",l)}if(y(e,s._closedPromise,function(e){!1===n?m(function(){return q(t,e)},!0,e):v(!0,e)}),y(t,o._closedPromise,function(t){!1===a?m(function(){return Be(e,t)},!0,t):v(!0,t)}),function(e,t,r){"closed"===e._state?r():t.then(r).catch(K)}(e,s._closedPromise,function(){!1===r?m(function(){return t=(e=o)._ownerWritableStream,r=t._state,!0===Z(t)||"closed"===r?h.default.resolve():"errored"===r?h.default.reject(t._storedError):$(e);var e,t,r}):v()}),!0===Z(t)||"closed"===t._state){var p=new TypeError("the destination writable stream closed before all data could be piped to it");!1===a?m(function(){return Be(e,p)},!0,p):v(!0,p)}function b(){var e=c;return c.then(function(){return e!==c?b():void 0})}function y(e,t,r){"errored"===e._state?r(e._storedError):t.catch(r).catch(K)}function m(e,r,n){function a(){e().then(function(){return g(r,n)},function(e){return g(!0,e)}).catch(K)}!0!==u&&(u=!0,"writable"===t._state&&!1===Z(t)?b().then(a):a())}function v(e,r){!0!==u&&(u=!0,"writable"===t._state&&!1===Z(t)?b().then(function(){return g(e,r)}).catch(K):g(e,r))}function g(e,t){ee(o),Ye(s),void 0!==i&&i.removeEventListener("abort",l),e?d(t):f(void 0)}new h.default(function(e,t){!function r(n){n?e():(!0===u?h.default.resolve(!0):o._readyPromise.then(function(){return Xe(s).then(function(e){var t=e.value;return!0===e.done||(c=te(o,t).catch(function(){}),!1)})})).then(r,t)}(!1)}).catch(function(e){c=h.default.resolve(),K(e)})})}function Ke(e,t){return new h.default(function(r,n){var a={_resolve:r,_reject:n,_forAuthorCode:t};e._reader._readIntoRequests.push(a)})}function Re(e,t){return new h.default(function(r,n){var a={_resolve:r,_reject:n,_forAuthorCode:t};e._reader._readRequests.push(a)})}function Be(e,t){return e._disturbed=!0,"closed"===e._state?h.default.resolve(void 0):"errored"===e._state?h.default.reject(e._storedError):(Ue(e),e._readableStreamController[xe](t).then(function(){}))}function Ue(e){e._state="closed";var t=e._reader;if(void 0!==t){if(We(t)){var r=!0,n=!1,a=void 0;try{for(var i,s=(0,l.default)(t._readRequests);!(r=(i=s.next()).done);r=!0){var o=i.value;(0,o._resolve)(Ie(void 0,!0,o._forAuthorCode))}}catch(u){n=!0,a=u}finally{try{!r&&s.return&&s.return()}finally{if(n)throw a}}t._readRequests=[]}Bt(t)}}function Ie(e,t,r){var n=null;!0===r&&(n=Object.prototype);var a=(0,c.default)(n);return Object.defineProperty(a,"value",{value:e,enumerable:!0,writable:!0,configurable:!0}),Object.defineProperty(a,"done",{value:t,enumerable:!0,writable:!0,configurable:!0}),a}function Oe(e,t){e._state="errored",e._storedError=t;var r=e._reader;if(void 0!==r){if(We(r)){var n=!0,a=!1,i=void 0;try{for(var s,o=(0,l.default)(r._readRequests);!(n=(s=o.next()).done);n=!0){s.value._reject(t)}}catch(p){a=!0,i=p}finally{try{!n&&o.return&&o.return()}finally{if(a)throw i}}r._readRequests=[]}else{var u=!0,c=!1,f=void 0;try{for(var d,h=(0,l.default)(r._readIntoRequests);!(u=(d=h.next()).done);u=!0){d.value._reject(t)}}catch(p){c=!0,f=p}finally{try{!u&&h.return&&h.return()}finally{if(c)throw f}}r._readIntoRequests=[]}Rt(r,t)}}function ze(e,t,r){var n=e._reader._readRequests.shift();n._resolve(Ie(t,r,n._forAuthorCode))}function De(e){return e._reader._readIntoRequests.length}function Fe(e){return e._reader._readRequests.length}function Ne(e){var t=e._reader;return void 0!==t&&!!He(t)}function Le(e){var t=e._reader;return void 0!==t&&!!We(t)}var qe=function(){function e(t){if((0,f.default)(this,e),!1===Pe(t))throw new TypeError("ReadableStreamDefaultReader can only be constructed with a ReadableStream instance");if(!0===Ce(t))throw new TypeError("This stream has already been locked for exclusive reading by another reader");Ze(this,t),this._readRequests=[]}return(0,d.default)(e,[{key:"cancel",value:function(e){return We(this)?void 0===this._ownerReadableStream?h.default.reject(Pt("cancel")):Ve(this,e):h.default.reject(Ct("cancel"))}},{key:"read",value:function(){return We(this)?void 0===this._ownerReadableStream?h.default.reject(Pt("read from")):Xe(this,!0):h.default.reject(Ct("read"))}},{key:"releaseLock",value:function(){if(!We(this))throw Ct("releaseLock");if(void 0!==this._ownerReadableStream){if(this._readRequests.length>0)throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled");Ye(this)}}},{key:"closed",get:function(){return We(this)?this._closedPromise:h.default.reject(Ct("closed"))}}]),e}(),Ge=function(){function e(t){if((0,f.default)(this,e),!Pe(t))throw new TypeError("ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a byte source");if(!1===ft(t._readableStreamController))throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source");if(Ce(t))throw new TypeError("This stream has already been locked for exclusive reading by another reader");Ze(this,t),this._readIntoRequests=[]}return(0,d.default)(e,[{key:"cancel",value:function(e){return He(this)?void 0===this._ownerReadableStream?h.default.reject(Pt("cancel")):Ve(this,e):h.default.reject(Ut("cancel"))}},{key:"read",value:function(e){return He(this)?void 0===this._ownerReadableStream?h.default.reject(Pt("read from")):ArrayBuffer.isView(e)?(e.buffer,0===e.byteLength?h.default.reject(new TypeError("view must have non-zero byteLength")):function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=e._ownerReadableStream;return n._disturbed=!0,"errored"===n._state?h.default.reject(n._storedError):function(e,t,r){var n=e._controlledReadableByteStream,a=1;t.constructor!==DataView&&(a=t.constructor.BYTES_PER_ELEMENT);var i=t.constructor,s={buffer:j(t.buffer),byteOffset:t.byteOffset,byteLength:t.byteLength,bytesFilled:0,elementSize:a,ctor:i,readerType:"byob"};if(e._pendingPullIntos.length>0)return e._pendingPullIntos.push(s),Ke(n,r);if("closed"===n._state){var o=new i(s.buffer,s.byteOffset,0);return h.default.resolve(Ie(o,!0,r))}if(e._queueTotalSize>0){if(!0===mt(e,s)){var u=bt(s);return gt(e),h.default.resolve(Ie(u,!1,r))}if(!0===e._closeRequested){var c=new TypeError("Insufficient bytes to fill elements in the given buffer");return St(e,c),h.default.reject(c)}}e._pendingPullIntos.push(s);var f=Ke(n,r);return lt(e),f}(n._readableStreamController,t,r)}(this,e,!0)):h.default.reject(new TypeError("view must be an array buffer view")):h.default.reject(Ut("read"))}},{key:"releaseLock",value:function(){if(!He(this))throw Ut("releaseLock");if(void 0!==this._ownerReadableStream){if(this._readIntoRequests.length>0)throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled");Ye(this)}}},{key:"closed",get:function(){return He(this)?this._closedPromise:h.default.reject(Ut("closed"))}}]),e}();function He(e){return!!i(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readIntoRequests")}function We(e){return!!i(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readRequests")}function Ze(e,t){e._ownerReadableStream=t,t._reader=e,"readable"===t._state?Tt(e):"closed"===t._state?function(e){Tt(e),Bt(e)}(e):Kt(e,t._storedError)}function Ve(e,t){return Be(e._ownerReadableStream,t)}function Ye(e){"readable"===e._ownerReadableStream._state?Rt(e,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")):function(e,t){Kt(e,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness"))}(e),e._ownerReadableStream._reader=void 0,e._ownerReadableStream=void 0}function Xe(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=e._ownerReadableStream;return r._disturbed=!0,"closed"===r._state?h.default.resolve(Ie(void 0,!0,t)):"errored"===r._state?h.default.reject(r._storedError):r._readableStreamController[Ae](t)}var Je=function(){function e(){throw(0,f.default)(this,e),new TypeError}return(0,d.default)(e,[{key:"close",value:function(){if(!1===$e(this))throw It("close");if(!1===st(this))throw new TypeError("The stream is not in a state that permits close");rt(this)}},{key:"enqueue",value:function(e){if(!1===$e(this))throw It("enqueue");if(!1===st(this))throw new TypeError("The stream is not in a state that permits enqueue");return nt(this,e)}},{key:"error",value:function(e){if(!1===$e(this))throw It("error");at(this,e)}},{key:xe,value:function(e){U(this);var t=this._cancelAlgorithm(e);return tt(this),t}},{key:Ae,value:function(e){var t=this._controlledReadableStream;if(this._queue.length>0){var r=R(this);return!0===this._closeRequested&&0===this._queue.length?(tt(this),Ue(t)):Qe(this),h.default.resolve(Ie(r,!1,e))}var n=Re(t,e);return Qe(this),n}},{key:"desiredSize",get:function(){if(!1===$e(this))throw It("desiredSize");return it(this)}}]),e}();function $e(e){return!!i(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledReadableStream")}function Qe(e){!1!==et(e)&&(!0!==e._pulling?(e._pulling=!0,e._pullAlgorithm().then(function(){if(e._pulling=!1,!0===e._pullAgain)return e._pullAgain=!1,Qe(e)},function(t){at(e,t)}).catch(K)):e._pullAgain=!0)}function et(e){var t=e._controlledReadableStream;return!1!==st(e)&&!1!==e._started&&(!0===Ce(t)&&Fe(t)>0||it(e)>0)}function tt(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function rt(e){var t=e._controlledReadableStream;e._closeRequested=!0,0===e._queue.length&&(tt(e),Ue(t))}function nt(e,t){var r=e._controlledReadableStream;if(!0===Ce(r)&&Fe(r)>0)ze(r,t,!1);else{var n=void 0;try{n=e._strategySizeAlgorithm(t)}catch(t){throw at(e,t),t}try{B(e,t,n)}catch(t){throw at(e,t),t}}Qe(e)}function at(e,t){var r=e._controlledReadableStream;"readable"===r._state&&(U(e),tt(e),Oe(r,t))}function it(e){var t=e._controlledReadableStream._state;return"errored"===t?null:"closed"===t?0:e._strategyHWM-e._queueTotalSize}function st(e){var t=e._controlledReadableStream._state;return!1===e._closeRequested&&"readable"===t}function ot(e,t,r,n,a,i,s){t._controlledReadableStream=e,t._queue=void 0,t._queueTotalSize=void 0,U(t),t._started=!1,t._closeRequested=!1,t._pullAgain=!1,t._pulling=!1,t._strategySizeAlgorithm=s,t._strategyHWM=i,t._pullAlgorithm=n,t._cancelAlgorithm=a,e._readableStreamController=t;var o=r();h.default.resolve(o).then(function(){t._started=!0,Qe(t)},function(e){at(t,e)}).catch(K)}var ut=function(){function e(){throw(0,f.default)(this,e),new TypeError("ReadableStreamBYOBRequest cannot be used directly")}return(0,d.default)(e,[{key:"respond",value:function(e){if(!1===dt(this))throw Ot("respond");if(void 0===this._associatedReadableByteStreamController)throw new TypeError("This BYOB request has been invalidated");this._view.buffer,function(e,t){if(!1===k(t=Number(t)))throw new RangeError("bytesWritten must be a finite");kt(e,t)}(this._associatedReadableByteStreamController,e)}},{key:"respondWithNewView",value:function(e){if(!1===dt(this))throw Ot("respond");if(void 0===this._associatedReadableByteStreamController)throw new TypeError("This BYOB request has been invalidated");if(!ArrayBuffer.isView(e))throw new TypeError("You can only respond with array buffer views");e.buffer,function(e,t){var r=e._pendingPullIntos[0];if(r.byteOffset+r.bytesFilled!==t.byteOffset)throw new RangeError("The region specified by view does not match byobRequest");if(r.byteLength!==t.byteLength)throw new RangeError("The buffer of view has different capacity than byobRequest");r.buffer=t.buffer,kt(e,t.byteLength)}(this._associatedReadableByteStreamController,e)}},{key:"view",get:function(){if(!1===dt(this))throw Ot("view");return this._view}}]),e}(),ct=function(){function e(){throw(0,f.default)(this,e),new TypeError("ReadableByteStreamController constructor cannot be used directly")}return(0,d.default)(e,[{key:"close",value:function(){if(!1===ft(this))throw zt("close");if(!0===this._closeRequested)throw new TypeError("The stream has already been closed; do not close it again!");var e=this._controlledReadableByteStream._state;if("readable"!==e)throw new TypeError("The stream (in "+e+" state) is not in the readable state and cannot be closed");!function(e){var t=e._controlledReadableByteStream;if(e._queueTotalSize>0)e._closeRequested=!0;else{if(e._pendingPullIntos.length>0)if(e._pendingPullIntos[0].bytesFilled>0){var r=new TypeError("Insufficient bytes to fill elements in the given buffer");throw St(e,r),r}At(e),Ue(t)}}(this)}},{key:"enqueue",value:function(e){if(!1===ft(this))throw zt("enqueue");if(!0===this._closeRequested)throw new TypeError("stream is closed or draining");var t=this._controlledReadableByteStream._state;if("readable"!==t)throw new TypeError("The stream (in "+t+" state) is not in the readable state and cannot be enqueued to");if(!ArrayBuffer.isView(e))throw new TypeError("You can only enqueue array buffer views when using a ReadableByteStreamController");e.buffer,function(e,t){var r=e._controlledReadableByteStream,n=t.buffer,a=t.byteOffset,i=t.byteLength,s=j(n);!0===Le(r)?0===Fe(r)?yt(e,s,a,i):ze(r,new Uint8Array(s,a,i),!1):!0===Ne(r)?(yt(e,s,a,i),wt(e)):yt(e,s,a,i);lt(e)}(this,e)}},{key:"error",value:function(e){if(!1===ft(this))throw zt("error");St(this,e)}},{key:xe,value:function(e){this._pendingPullIntos.length>0&&(this._pendingPullIntos[0].bytesFilled=0),U(this);var t=this._cancelAlgorithm(e);return At(this),t}},{key:Ae,value:function(e){var t=this._controlledReadableByteStream;if(this._queueTotalSize>0){var r=this._queue.shift(),n=void 0;this._queueTotalSize-=r.byteLength,gt(this);try{n=new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}catch(e){return h.default.reject(e)}return h.default.resolve(Ie(n,!1,e))}var a=this._autoAllocateChunkSize;if(void 0!==a){var i=void 0;try{i=new ArrayBuffer(a)}catch(e){return h.default.reject(e)}var s={buffer:i,byteOffset:0,byteLength:a,bytesFilled:0,elementSize:1,ctor:Uint8Array,readerType:"default"};this._pendingPullIntos.push(s)}var o=Re(t,e);return lt(this),o}},{key:"byobRequest",get:function(){if(!1===ft(this))throw zt("byobRequest");if(void 0===this._byobRequest&&this._pendingPullIntos.length>0){var e=this._pendingPullIntos[0],t=new Uint8Array(e.buffer,e.byteOffset+e.bytesFilled,e.byteLength-e.bytesFilled),r=(0,c.default)(ut.prototype);!function(e,t,r){e._associatedReadableByteStreamController=t,e._view=r}(r,this,t),this._byobRequest=r}return this._byobRequest}},{key:"desiredSize",get:function(){if(!1===ft(this))throw zt("desiredSize");return Et(this)}}]),e}();function ft(e){return!!i(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledReadableByteStream")}function dt(e){return!!i(e)&&!!Object.prototype.hasOwnProperty.call(e,"_associatedReadableByteStreamController")}function lt(e){!1!==function(e){var t=e._controlledReadableByteStream;return"readable"===t._state&&(!0!==e._closeRequested&&(!1!==e._started&&(!0===Le(t)&&Fe(t)>0||(!0===Ne(t)&&De(t)>0||Et(e)>0))))}(e)&&(!0!==e._pulling?(e._pulling=!0,e._pullAlgorithm().then(function(){e._pulling=!1,!0===e._pullAgain&&(e._pullAgain=!1,lt(e))},function(t){St(e,t)}).catch(K)):e._pullAgain=!0)}function ht(e){_t(e),e._pendingPullIntos=[]}function pt(e,t){var r=!1;"closed"===e._state&&(r=!0);var n=bt(t);"default"===t.readerType?ze(e,n,r):function(e,t,r){var n=e._reader._readIntoRequests.shift();n._resolve(Ie(t,r,n._forAuthorCode))}(e,n,r)}function bt(e){var t=e.bytesFilled,r=e.elementSize;return new e.ctor(e.buffer,e.byteOffset,t/r)}function yt(e,t,r,n){e._queue.push({buffer:t,byteOffset:r,byteLength:n}),e._queueTotalSize+=n}function mt(e,t){var r=t.elementSize,n=t.bytesFilled-t.bytesFilled%r,a=Math.min(e._queueTotalSize,t.byteLength-t.bytesFilled),i=t.bytesFilled+a,s=i-i%r,o=a,u=!1;s>n&&(o=s-t.bytesFilled,u=!0);for(var c=e._queue;o>0;){var f=c[0],d=Math.min(o,f.byteLength),l=t.byteOffset+t.bytesFilled;w(t.buffer,l,f.buffer,f.byteOffset,d),f.byteLength===d?c.shift():(f.byteOffset+=d,f.byteLength-=d),e._queueTotalSize-=d,vt(e,d,t),o-=d}return u}function vt(e,t,r){_t(e),r.bytesFilled+=t}function gt(e){0===e._queueTotalSize&&!0===e._closeRequested?(At(e),Ue(e._controlledReadableByteStream)):lt(e)}function _t(e){void 0!==e._byobRequest&&(e._byobRequest._associatedReadableByteStreamController=void 0,e._byobRequest._view=void 0,e._byobRequest=void 0)}function wt(e){for(;e._pendingPullIntos.length>0;){if(0===e._queueTotalSize)return;var t=e._pendingPullIntos[0];!0===mt(e,t)&&(xt(e),pt(e._controlledReadableByteStream,t))}}function kt(e,t){var r=e._pendingPullIntos[0];if("closed"===e._controlledReadableByteStream._state){if(0!==t)throw new TypeError("bytesWritten must be 0 when calling respond() on a closed stream");!function(e,t){t.buffer=j(t.buffer);var r=e._controlledReadableByteStream;if(!0===Ne(r))for(;De(r)>0;)pt(r,xt(e))}(e,r)}else!function(e,t,r){if(r.bytesFilled+t>r.byteLength)throw new RangeError("bytesWritten out of range");if(vt(e,t,r),!(r.bytesFilled0){var a=r.byteOffset+r.bytesFilled,i=r.buffer.slice(a-n,a);yt(e,i,0,i.byteLength)}r.buffer=j(r.buffer),r.bytesFilled-=n,pt(e._controlledReadableByteStream,r),wt(e)}}(e,t,r);lt(e)}function xt(e){var t=e._pendingPullIntos.shift();return _t(e),t}function At(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0}function St(e,t){var r=e._controlledReadableByteStream;"readable"===r._state&&(ht(e),U(e),At(e),Oe(r,t))}function Et(e){var t=e._controlledReadableByteStream._state;return"errored"===t?null:"closed"===t?0:e._strategyHWM-e._queueTotalSize}function jt(e){if("object"!=(void 0===e?"undefined":(0,v.default)(e))||null===e)return!1;var t=(0,o.default)(AbortSignal.prototype,"aborted").get;try{return t.call(e),!0}catch(e){return!1}}function Mt(e){return new TypeError("ReadableStream.prototype."+e+" can only be used on a ReadableStream")}function Pt(e){return new TypeError("Cannot "+e+" a stream using a released reader")}function Ct(e){return new TypeError("ReadableStreamDefaultReader.prototype."+e+" can only be used on a ReadableStreamDefaultReader")}function Tt(e){e._closedPromise=new h.default(function(t,r){e._closedPromise_resolve=t,e._closedPromise_reject=r})}function Kt(e,t){Tt(e),Rt(e,t)}function Rt(e,t){e._closedPromise.catch(function(){}),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}function Bt(e){e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0}function Ut(e){return new TypeError("ReadableStreamBYOBReader.prototype."+e+" can only be used on a ReadableStreamBYOBReader")}function It(e){return new TypeError("ReadableStreamDefaultController.prototype."+e+" can only be used on a ReadableStreamDefaultController")}function Ot(e){return new TypeError("ReadableStreamBYOBRequest.prototype."+e+" can only be used on a ReadableStreamBYOBRequest")}function zt(e){return new TypeError("ReadableByteStreamController.prototype."+e+" can only be used on a ReadableByteStreamController")}var Dt=function(){function e(t){var r=t.highWaterMark;(0,f.default)(this,e),g(this,"highWaterMark",r)}return(0,d.default)(e,[{key:"size",value:function(e){return e.byteLength}}]),e}(),Ft=function(){function e(t){var r=t.highWaterMark;(0,f.default)(this,e),g(this,"highWaterMark",r)}return(0,d.default)(e,[{key:"size",value:function(){return 1}}]),e}(),Nt=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,f.default)(this,e);var a=r.size,i=r.highWaterMark,s=n.size,o=n.highWaterMark;if(void 0!==t.writableType)throw new RangeError("Invalid writable type specified");var u=P(a);if(void 0===i&&(i=1),i=M(i),void 0!==t.readableType)throw new RangeError("Invalid readable type specified");var d=P(s),l=void 0;void 0===o&&(o=0),o=M(o),function(e,t,r,n,a,i){function s(){return t}e._writable=function(e,t,r,n){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:function(){return 1},s=(0,c.default)(z.prototype);return F(s),ne(s,(0,c.default)(re.prototype),e,t,r,n,a,i),s}(s,function(t){return function(e,t){var r=e._transformStreamController;return!0===e._backpressure?e._backpressureChangePromise.then(function(){var n=e._writable;if("erroring"===n._state)throw n._storedError;return Xt(r,t)}):Xt(r,t)}(e,t)},function(){return function(e){var t=e._readable,r=e._transformStreamController,n=r._flushAlgorithm();return Vt(r),n.then(function(){if("errored"===t._state)throw t._storedError;var e=t._readableStreamController;!0===st(e)&&rt(e)}).catch(function(r){throw qt(e,r),t._storedError})}(e)},function(t){return function(e,t){return qt(e,t),h.default.resolve()}(e,t)},r,n),e._readable=je(s,function(){return function(e){return Ht(e,!1),e._backpressureChangePromise}(e)},function(t){return Gt(e,t),h.default.resolve()},a,i),e._backpressure=void 0,e._backpressureChangePromise=void 0,e._backpressureChangePromise_resolve=void 0,Ht(e,!0),e._transformStreamController=void 0}(this,new h.default(function(e){l=e}),i,u,o,d),function(e,t){var r=(0,c.default)(Wt.prototype),n=function(e){try{return Yt(r,e),h.default.resolve()}catch(e){return h.default.reject(e)}},a=t.transform;if(void 0!==a){if("function"!=typeof a)throw new TypeError("transform is not a method");n=function(e){return E(a,t,[e,r])}}var i=A(t,"flush",0,[r]);!function(e,t,r,n){t._controlledTransformStream=e,e._transformStreamController=t,t._transformAlgorithm=r,t._flushAlgorithm=n}(e,r,n,i)}(this,t);var p=S(t,"start",[this._transformStreamController]);l(p)}return(0,d.default)(e,[{key:"readable",get:function(){if(!1===Lt(this))throw $t("readable");return this._readable}},{key:"writable",get:function(){if(!1===Lt(this))throw $t("writable");return this._writable}}]),e}();function Lt(e){return!!i(e)&&!!Object.prototype.hasOwnProperty.call(e,"_transformStreamController")}function qt(e,t){at(e._readable._readableStreamController,t),Gt(e,t)}function Gt(e,t){Vt(e._transformStreamController),oe(e._writable._writableStreamController,t),!0===e._backpressure&&Ht(e,!1)}function Ht(e,t){void 0!==e._backpressureChangePromise&&e._backpressureChangePromise_resolve(),e._backpressureChangePromise=new h.default(function(t){e._backpressureChangePromise_resolve=t}),e._backpressure=t}var Wt=function(){function e(){throw(0,f.default)(this,e),new TypeError("TransformStreamDefaultController instances cannot be created directly")}return(0,d.default)(e,[{key:"enqueue",value:function(e){if(!1===Zt(this))throw Jt("enqueue");Yt(this,e)}},{key:"error",value:function(e){if(!1===Zt(this))throw Jt("error");!function(e,t){qt(e._controlledTransformStream,t)}(this,e)}},{key:"terminate",value:function(){if(!1===Zt(this))throw Jt("terminate");var e,t;e=this._controlledTransformStream,!0===st(t=e._readable._readableStreamController)&&rt(t),Gt(e,new TypeError("TransformStream terminated"))}},{key:"desiredSize",get:function(){if(!1===Zt(this))throw Jt("desiredSize");return it(this._controlledTransformStream._readable._readableStreamController)}}]),e}();function Zt(e){return!!i(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledTransformStream")}function Vt(e){e._transformAlgorithm=void 0,e._flushAlgorithm=void 0}function Yt(e,t){var r=e._controlledTransformStream,n=r._readable._readableStreamController;if(!1===st(n))throw new TypeError("Readable side is not in a state that permits enqueue");try{nt(n,t)}catch(e){throw Gt(r,e),r._readable._storedError}!0!==et(n)!==r._backpressure&&Ht(r,!0)}function Xt(e,t){return e._transformAlgorithm(t).catch(function(t){throw qt(e._controlledTransformStream,t),t})}function Jt(e){return new TypeError("TransformStreamDefaultController.prototype."+e+" can only be used on a TransformStreamDefaultController")}function $t(e){return new TypeError("TransformStream.prototype."+e+" can only be used on a TransformStream")}var Qt={ReadableStream:Se,WritableStream:z,ByteLengthQueuingStrategy:Dt,CountQueuingStrategy:Ft,TransformStream:Nt};void 0!==r&&(0,s.default)(r,Qt),e.ReadableStream=Se,e.WritableStream=z,e.ByteLengthQueuingStrategy=Dt,e.CountQueuingStrategy=Ft,e.TransformStream=Nt,Object.defineProperty(e,"__esModule",{value:!0})},"object"==(void 0===r?"undefined":(0,v.default)(r))&&void 0!==t?i(r):i((a=a||self).WebStreamsPolyfill={})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"babel-runtime/core-js/get-iterator":17,"babel-runtime/core-js/number/is-integer":20,"babel-runtime/core-js/number/is-nan":21,"babel-runtime/core-js/object/assign":22,"babel-runtime/core-js/object/create":23,"babel-runtime/core-js/object/define-property":24,"babel-runtime/core-js/object/get-own-property-descriptor":26,"babel-runtime/core-js/promise":31,"babel-runtime/core-js/symbol":32,"babel-runtime/core-js/symbol/iterator":33,"babel-runtime/helpers/classCallCheck":36,"babel-runtime/helpers/createClass":37,"babel-runtime/helpers/typeof":42}],2:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});r.AES_asm=function(){var e,t,r=!1;function n(r,n){var a=e[(t[r]+t[n])%255];return 0!==r&&0!==n||(a=0),a}var a,i,s,o,u=!1;function c(){function c(r){var n,a,i;for(a=i=function(r){var n=e[255-t[r]];return 0===r&&(n=0),n}(r),n=0;n<4;n++)i^=a=255&(a<<1|a>>>7);return i^=99}r||function(){e=[],t=[];var n,a,i=1;for(n=0;n<255;n++)e[n]=i,a=128&i,i<<=1,i&=255,128===a&&(i^=27),i^=e[n],t[e[n]]=n;e[255]=e[0],t[0]=0,r=!0}(),a=[],i=[],s=[[],[],[],[]],o=[[],[],[],[]];for(var f=0;f<256;f++){var d=c(f);a[f]=d,i[d]=f,s[0][f]=n(2,d)<<24|d<<16|d<<8|n(3,d),o[0][d]=n(14,f)<<24|n(9,f)<<16|n(13,f)<<8|n(11,f);for(var l=1;l<4;l++)s[l][f]=s[l-1][f]>>>8|s[l-1][f]<<24,o[l][d]=o[l-1][d]>>>8|o[l-1][d]<<24}u=!0}var f=function(e,t){u||c();var r=new Uint32Array(t);r.set(a,512),r.set(i,768);for(var n=0;n<4;n++)r.set(s[n],4096+1024*n>>2),r.set(o[n],8192+1024*n>>2);var f=function(e,t,r){"use asm";var n=0,a=0,i=0,s=0,o=0,u=0,c=0,f=0,d=0,l=0,h=0,p=0,b=0,y=0,m=0,v=0,g=0,_=0,w=0,k=0,x=0;var A=new e.Uint32Array(r),S=new e.Uint8Array(r);function E(e,t,r,o,u,c,f,d){e=e|0;t=t|0;r=r|0;o=o|0;u=u|0;c=c|0;f=f|0;d=d|0;var l=0,h=0,p=0,b=0,y=0,m=0,v=0,g=0;l=r|0x400,h=r|0x800,p=r|0xc00;u=u^A[(e|0)>>2],c=c^A[(e|4)>>2],f=f^A[(e|8)>>2],d=d^A[(e|12)>>2];for(g=16;(g|0)<=o<<4;g=g+16|0){b=A[(r|u>>22&1020)>>2]^A[(l|c>>14&1020)>>2]^A[(h|f>>6&1020)>>2]^A[(p|d<<2&1020)>>2]^A[(e|g|0)>>2],y=A[(r|c>>22&1020)>>2]^A[(l|f>>14&1020)>>2]^A[(h|d>>6&1020)>>2]^A[(p|u<<2&1020)>>2]^A[(e|g|4)>>2],m=A[(r|f>>22&1020)>>2]^A[(l|d>>14&1020)>>2]^A[(h|u>>6&1020)>>2]^A[(p|c<<2&1020)>>2]^A[(e|g|8)>>2],v=A[(r|d>>22&1020)>>2]^A[(l|u>>14&1020)>>2]^A[(h|c>>6&1020)>>2]^A[(p|f<<2&1020)>>2]^A[(e|g|12)>>2];u=b,c=y,f=m,d=v}n=A[(t|u>>22&1020)>>2]<<24^A[(t|c>>14&1020)>>2]<<16^A[(t|f>>6&1020)>>2]<<8^A[(t|d<<2&1020)>>2]^A[(e|g|0)>>2],a=A[(t|c>>22&1020)>>2]<<24^A[(t|f>>14&1020)>>2]<<16^A[(t|d>>6&1020)>>2]<<8^A[(t|u<<2&1020)>>2]^A[(e|g|4)>>2],i=A[(t|f>>22&1020)>>2]<<24^A[(t|d>>14&1020)>>2]<<16^A[(t|u>>6&1020)>>2]<<8^A[(t|c<<2&1020)>>2]^A[(e|g|8)>>2],s=A[(t|d>>22&1020)>>2]<<24^A[(t|u>>14&1020)>>2]<<16^A[(t|c>>6&1020)>>2]<<8^A[(t|f<<2&1020)>>2]^A[(e|g|12)>>2]}function j(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;E(0x0000,0x0800,0x1000,x,e,t,r,n)}function M(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;var i=0;E(0x0400,0x0c00,0x2000,x,e,n,r,t);i=a,a=s,s=i}function P(e,t,r,d){e=e|0;t=t|0;r=r|0;d=d|0;E(0x0000,0x0800,0x1000,x,o^e,u^t,c^r,f^d);o=n,u=a,c=i,f=s}function C(e,t,r,d){e=e|0;t=t|0;r=r|0;d=d|0;var l=0;E(0x0400,0x0c00,0x2000,x,e,d,r,t);l=a,a=s,s=l;n=n^o,a=a^u,i=i^c,s=s^f;o=e,u=t,c=r,f=d}function T(e,t,r,d){e=e|0;t=t|0;r=r|0;d=d|0;E(0x0000,0x0800,0x1000,x,o,u,c,f);o=n=n^e,u=a=a^t,c=i=i^r,f=s=s^d}function K(e,t,r,d){e=e|0;t=t|0;r=r|0;d=d|0;E(0x0000,0x0800,0x1000,x,o,u,c,f);n=n^e,a=a^t,i=i^r,s=s^d;o=e,u=t,c=r,f=d}function R(e,t,r,d){e=e|0;t=t|0;r=r|0;d=d|0;E(0x0000,0x0800,0x1000,x,o,u,c,f);o=n,u=a,c=i,f=s;n=n^e,a=a^t,i=i^r,s=s^d}function B(e,t,r,o){e=e|0;t=t|0;r=r|0;o=o|0;E(0x0000,0x0800,0x1000,x,d,l,h,p);p=~v&p|v&p+1;h=~m&h|m&h+((p|0)==0);l=~y&l|y&l+((h|0)==0);d=~b&d|b&d+((l|0)==0);n=n^e;a=a^t;i=i^r;s=s^o}function U(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;var a=0,i=0,s=0,d=0,l=0,h=0,p=0,b=0,y=0,m=0;e=e^o,t=t^u,r=r^c,n=n^f;a=g|0,i=_|0,s=w|0,d=k|0;for(;(y|0)<128;y=y+1|0){if(a>>>31){l=l^e,h=h^t,p=p^r,b=b^n}a=a<<1|i>>>31,i=i<<1|s>>>31,s=s<<1|d>>>31,d=d<<1;m=n&1;n=n>>>1|r<<31,r=r>>>1|t<<31,t=t>>>1|e<<31,e=e>>>1;if(m)e=e^0xe1000000}o=l,u=h,c=p,f=b}function I(e){e=e|0;x=e}function O(e,t,r,o){e=e|0;t=t|0;r=r|0;o=o|0;n=e,a=t,i=r,s=o}function z(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;o=e,u=t,c=r,f=n}function D(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;d=e,l=t,h=r,p=n}function F(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;b=e,y=t,m=r,v=n}function N(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;p=~v&p|v&n,h=~m&h|m&r,l=~y&l|y&t,d=~b&d|b&e}function L(e){e=e|0;if(e&15)return-1;S[e|0]=n>>>24,S[e|1]=n>>>16&255,S[e|2]=n>>>8&255,S[e|3]=n&255,S[e|4]=a>>>24,S[e|5]=a>>>16&255,S[e|6]=a>>>8&255,S[e|7]=a&255,S[e|8]=i>>>24,S[e|9]=i>>>16&255,S[e|10]=i>>>8&255,S[e|11]=i&255,S[e|12]=s>>>24,S[e|13]=s>>>16&255,S[e|14]=s>>>8&255,S[e|15]=s&255;return 16}function q(e){e=e|0;if(e&15)return-1;S[e|0]=o>>>24,S[e|1]=o>>>16&255,S[e|2]=o>>>8&255,S[e|3]=o&255,S[e|4]=u>>>24,S[e|5]=u>>>16&255,S[e|6]=u>>>8&255,S[e|7]=u&255,S[e|8]=c>>>24,S[e|9]=c>>>16&255,S[e|10]=c>>>8&255,S[e|11]=c&255,S[e|12]=f>>>24,S[e|13]=f>>>16&255,S[e|14]=f>>>8&255,S[e|15]=f&255;return 16}function G(){j(0,0,0,0);g=n,_=a,w=i,k=s}function H(e,t,r){e=e|0;t=t|0;r=r|0;var o=0;if(t&15)return-1;while((r|0)>=16){Z[e&7](S[t|0]<<24|S[t|1]<<16|S[t|2]<<8|S[t|3],S[t|4]<<24|S[t|5]<<16|S[t|6]<<8|S[t|7],S[t|8]<<24|S[t|9]<<16|S[t|10]<<8|S[t|11],S[t|12]<<24|S[t|13]<<16|S[t|14]<<8|S[t|15]);S[t|0]=n>>>24,S[t|1]=n>>>16&255,S[t|2]=n>>>8&255,S[t|3]=n&255,S[t|4]=a>>>24,S[t|5]=a>>>16&255,S[t|6]=a>>>8&255,S[t|7]=a&255,S[t|8]=i>>>24,S[t|9]=i>>>16&255,S[t|10]=i>>>8&255,S[t|11]=i&255,S[t|12]=s>>>24,S[t|13]=s>>>16&255,S[t|14]=s>>>8&255,S[t|15]=s&255;o=o+16|0,t=t+16|0,r=r-16|0}return o|0}function W(e,t,r){e=e|0;t=t|0;r=r|0;var n=0;if(t&15)return-1;while((r|0)>=16){V[e&1](S[t|0]<<24|S[t|1]<<16|S[t|2]<<8|S[t|3],S[t|4]<<24|S[t|5]<<16|S[t|6]<<8|S[t|7],S[t|8]<<24|S[t|9]<<16|S[t|10]<<8|S[t|11],S[t|12]<<24|S[t|13]<<16|S[t|14]<<8|S[t|15]);n=n+16|0,t=t+16|0,r=r-16|0}return n|0}var Z=[j,M,P,C,T,K,R,B];var V=[P,U];return{set_rounds:I,set_state:O,set_iv:z,set_nonce:D,set_mask:F,set_counter:N,get_state:L,get_iv:q,gcm_init:G,cipher:H,mac:W}}({Uint8Array:Uint8Array,Uint32Array:Uint32Array},e,t);return f.set_key=function(e,t,n,i,s,u,c,d,l){var h=r.subarray(0,60),p=r.subarray(256,316);h.set([t,n,i,s,u,c,d,l]);for(var b=e,y=1;b<4*e+28;b++){var m=h[b-1];(b%e==0||8===e&&b%e==4)&&(m=a[m>>>24]<<24^a[m>>>16&255]<<16^a[m>>>8&255]<<8^a[255&m]),b%e==0&&(m=m<<8^m>>>24^y<<24,y=y<<1^(128&y?27:0)),h[b]=h[b-e]^m}for(var v=0;v=b-4?m:o[0][a[m>>>24]]^o[1][a[m>>>16&255]]^o[2][a[m>>>8&255]]^o[3][a[255&m]];f.set_rounds(e+5)},f};return f.ENC={ECB:0,CBC:2,CFB:4,OFB:6,CTR:7},f.DEC={ECB:1,CBC:3,CFB:5,OFB:6,CTR:7},f.MAC={CBC:0,GCM:1},f.HEAP_DATA=16384,f}()},{}],3:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.AES=void 0;var n=e("./aes.asm"),a=e("../other/utils"),i=e("../other/errors"),s=[],o=[],u=function(){function e(e,t,r,n){void 0===r&&(r=!0),this.pos=0,this.len=0,this.mode=n,this.pos=0,this.len=0,this.key=e,this.iv=t,this.padding=r,this.acquire_asm()}return e.prototype.acquire_asm=function(){void 0===this.heap&&void 0===this.asm&&(this.heap=s.pop()||(0,a._heap_init)().subarray(n.AES_asm.HEAP_DATA),this.asm=o.pop()||(0,n.AES_asm)(null,this.heap.buffer),this.reset(this.key,this.iv))},e.prototype.release_asm=function(){s.push(this.heap),o.push(this.asm),this.heap=void 0,this.asm=void 0},e.prototype.reset=function(e,t){var r=e.length;if(16!==r&&24!==r&&32!==r)throw new i.IllegalArgumentError("illegal key size");var n=new DataView(e.buffer,e.byteOffset,e.byteLength);if(this.asm.set_key(r>>2,n.getUint32(0),n.getUint32(4),n.getUint32(8),n.getUint32(12),r>16?n.getUint32(16):0,r>16?n.getUint32(20):0,r>24?n.getUint32(24):0,r>24?n.getUint32(28):0),void 0!==t){if(16!==t.length)throw new i.IllegalArgumentError("illegal iv size");var a=new DataView(t.buffer,t.byteOffset,t.byteLength);this.asm.set_iv(a.getUint32(0),a.getUint32(4),a.getUint32(8),a.getUint32(12))}else this.asm.set_iv(0,0,0,0)},e.prototype.AES_Encrypt_process=function(e){if(!(0,a.is_bytes)(e))throw new TypeError("data isn't of expected type");this.acquire_asm();for(var t=this.asm,r=this.heap,i=n.AES_asm.ENC[this.mode],s=n.AES_asm.HEAP_DATA,o=this.pos,u=this.len,c=0,f=e.length||0,d=0,l=0,h=new Uint8Array(u+f&-16);f>0;)u+=l=(0,a._heap_write)(r,o+u,e,c,f),c+=l,f-=l,(l=t.cipher(i,s+o,u))&&h.set(r.subarray(o,o+l),d),d+=l,l0;)u+=p=(0,a._heap_write)(r,o+u,e,c,f),c+=p,f-=p,(p=t.cipher(i,s+o,u-(f?0:h)))&&b.set(r.subarray(o,o+p),d),d+=p,p0){if(o%16){if(this.hasOwnProperty("padding"))throw new i.IllegalArgumentError("data length must be a multiple of the block size");o+=16-o%16}if(e.cipher(r,a+s,o),this.hasOwnProperty("padding")&&this.padding){var c=t[s+u-1];if(c<1||c>16||c>u)throw new i.SecurityError("bad padding");for(var f=0,d=c;d>1;d--)f|=c^t[s+u-d];if(f)throw new i.SecurityError("bad padding");u-=c}}var l=new Uint8Array(u);return u>0&&l.set(t.subarray(s,s+u)),this.pos=0,this.len=0,this.release_asm(),l},e}();r.AES=u},{"../other/errors":14,"../other/utils":15,"./aes.asm":2}],4:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.AES_CBC=void 0;var n=o(e("babel-runtime/core-js/object/create")),a=o(e("babel-runtime/core-js/object/set-prototype-of")),i=e("./aes"),s=e("../other/utils");function o(e){return e&&e.__esModule?e:{default:e}}var u,c=(u=a.default||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}u(e,t),e.prototype=null===t?(0,n.default)(t):(r.prototype=t.prototype,new r)}),f=function(e){function t(t,r,n){return void 0===n&&(n=!0),e.call(this,t,r,n,"CBC")||this}return c(t,e),t.encrypt=function(e,r,n,a){return void 0===n&&(n=!0),new t(r,a,n).encrypt(e)},t.decrypt=function(e,r,n,a){return void 0===n&&(n=!0),new t(r,a,n).decrypt(e)},t.prototype.encrypt=function(e){var t=this.AES_Encrypt_process(e),r=this.AES_Encrypt_finish();return(0,s.joinBytes)(t,r)},t.prototype.decrypt=function(e){var t=this.AES_Decrypt_process(e),r=this.AES_Decrypt_finish();return(0,s.joinBytes)(t,r)},t}(i.AES);r.AES_CBC=f},{"../other/utils":15,"./aes":3,"babel-runtime/core-js/object/create":23,"babel-runtime/core-js/object/set-prototype-of":29}],5:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.AES_CFB=void 0;var n=o(e("babel-runtime/core-js/object/create")),a=o(e("babel-runtime/core-js/object/set-prototype-of")),i=e("./aes"),s=e("../other/utils");function o(e){return e&&e.__esModule?e:{default:e}}var u,c=(u=a.default||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}u(e,t),e.prototype=null===t?(0,n.default)(t):(r.prototype=t.prototype,new r)}),f=function(e){function t(t,r){var n=e.call(this,t,r,!0,"CFB")||this;return delete n.padding,n}return c(t,e),t.encrypt=function(e,r,n){return new t(r,n).encrypt(e)},t.decrypt=function(e,r,n){return new t(r,n).decrypt(e)},t.prototype.encrypt=function(e){var t=this.AES_Encrypt_process(e),r=this.AES_Encrypt_finish();return(0,s.joinBytes)(t,r)},t.prototype.decrypt=function(e){var t=this.AES_Decrypt_process(e),r=this.AES_Decrypt_finish();return(0,s.joinBytes)(t,r)},t}(i.AES);r.AES_CFB=f},{"../other/utils":15,"./aes":3,"babel-runtime/core-js/object/create":23,"babel-runtime/core-js/object/set-prototype-of":29}],6:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.AES_CTR=void 0;var n=u(e("babel-runtime/core-js/object/create")),a=u(e("babel-runtime/core-js/object/set-prototype-of")),i=e("./aes"),s=e("../other/errors"),o=e("../other/utils");function u(e){return e&&e.__esModule?e:{default:e}}var c,f=(c=a.default||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}c(e,t),e.prototype=null===t?(0,n.default)(t):(r.prototype=t.prototype,new r)}),d=function(e){function t(t,r){var n=e.call(this,t,void 0,!1,"CTR")||this;return delete n.padding,n.AES_CTR_set_options(r),n}return f(t,e),t.encrypt=function(e,r,n){return new t(r,n).encrypt(e)},t.decrypt=function(e,r,n){return new t(r,n).encrypt(e)},t.prototype.encrypt=function(e){var t=this.AES_Encrypt_process(e),r=this.AES_Encrypt_finish();return(0,o.joinBytes)(t,r)},t.prototype.decrypt=function(e){var t=this.AES_Encrypt_process(e),r=this.AES_Encrypt_finish();return(0,o.joinBytes)(t,r)},t.prototype.AES_CTR_set_options=function(e,t,r){if(void 0!==r){if(r<8||r>48)throw new s.IllegalArgumentError("illegal counter size");var n=Math.pow(2,r)-1;this.asm.set_mask(0,0,n/4294967296|0,0|n)}else r=48,this.asm.set_mask(0,0,65535,4294967295);if(void 0===e)throw new Error("nonce is required");var a=e.length;if(!a||a>16)throw new s.IllegalArgumentError("illegal nonce size");var i=new DataView(new ArrayBuffer(16));if(new Uint8Array(i.buffer).set(e),this.asm.set_nonce(i.getUint32(0),i.getUint32(4),i.getUint32(8),i.getUint32(12)),void 0!==t){if(t<0||t>=Math.pow(2,r))throw new s.IllegalArgumentError("illegal counter value");this.asm.set_counter(0,0,t/4294967296|0,0|t)}},t}(i.AES);r.AES_CTR=d},{"../other/errors":14,"../other/utils":15,"./aes":3,"babel-runtime/core-js/object/create":23,"babel-runtime/core-js/object/set-prototype-of":29}],7:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.AES_ECB=void 0;var n=o(e("babel-runtime/core-js/object/create")),a=o(e("babel-runtime/core-js/object/set-prototype-of")),i=e("./aes"),s=e("../other/utils");function o(e){return e&&e.__esModule?e:{default:e}}var u,c=(u=a.default||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}u(e,t),e.prototype=null===t?(0,n.default)(t):(r.prototype=t.prototype,new r)}),f=function(e){function t(t,r){return void 0===r&&(r=!1),e.call(this,t,void 0,r,"ECB")||this}return c(t,e),t.encrypt=function(e,r,n){return void 0===n&&(n=!1),new t(r,n).encrypt(e)},t.decrypt=function(e,r,n){return void 0===n&&(n=!1),new t(r,n).decrypt(e)},t.prototype.encrypt=function(e){var t=this.AES_Encrypt_process(e),r=this.AES_Encrypt_finish();return(0,s.joinBytes)(t,r)},t.prototype.decrypt=function(e){var t=this.AES_Decrypt_process(e),r=this.AES_Decrypt_finish();return(0,s.joinBytes)(t,r)},t}(i.AES);r.AES_ECB=f},{"../other/utils":15,"./aes":3,"babel-runtime/core-js/object/create":23,"babel-runtime/core-js/object/set-prototype-of":29}],8:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.AES_GCM=void 0;var n=c(e("babel-runtime/core-js/object/create")),a=c(e("babel-runtime/core-js/object/set-prototype-of")),i=e("../other/errors"),s=e("../other/utils"),o=e("./aes"),u=e("./aes.asm");function c(e){return e&&e.__esModule?e:{default:e}}var f,d=(f=a.default||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}f(e,t),e.prototype=null===t?(0,n.default)(t):(r.prototype=t.prototype,new r)}),l=68719476704,h=function(e){function t(t,r,n,a){void 0===a&&(a=16);var s=e.call(this,t,void 0,!1,"CTR")||this;if(s.tagSize=a,s.gamma0=0,s.counter=1,s.asm.gcm_init(),s.tagSize<4||s.tagSize>16)throw new i.IllegalArgumentError("illegal tagSize value");var o=r.length||0,c=new Uint8Array(16);12!==o?(s._gcm_mac_process(r),s.heap[0]=0,s.heap[1]=0,s.heap[2]=0,s.heap[3]=0,s.heap[4]=0,s.heap[5]=0,s.heap[6]=0,s.heap[7]=0,s.heap[8]=0,s.heap[9]=0,s.heap[10]=0,s.heap[11]=o>>>29,s.heap[12]=o>>>21&255,s.heap[13]=o>>>13&255,s.heap[14]=o>>>5&255,s.heap[15]=o<<3&255,s.asm.mac(u.AES_asm.MAC.GCM,u.AES_asm.HEAP_DATA,16),s.asm.get_iv(u.AES_asm.HEAP_DATA),s.asm.set_iv(0,0,0,0),c.set(s.heap.subarray(0,16))):(c.set(r),c[15]=1);var f=new DataView(c.buffer);if(s.gamma0=f.getUint32(12),s.asm.set_nonce(f.getUint32(0),f.getUint32(4),f.getUint32(8),0),s.asm.set_mask(0,0,0,4294967295),void 0!==n){if(n.length>l)throw new i.IllegalArgumentError("illegal adata length");n.length?(s.adata=n,s._gcm_mac_process(n)):s.adata=void 0}else s.adata=void 0;if(s.counter<1||s.counter>4294967295)throw new RangeError("counter must be a positive 32-bit integer");return s.asm.set_counter(0,0,0,s.gamma0+s.counter|0),s}return d(t,e),t.encrypt=function(e,r,n,a,i){return new t(r,n,a,i).encrypt(e)},t.decrypt=function(e,r,n,a,i){return new t(r,n,a,i).decrypt(e)},t.prototype.encrypt=function(e){return this.AES_GCM_encrypt(e)},t.prototype.decrypt=function(e){return this.AES_GCM_decrypt(e)},t.prototype.AES_GCM_Encrypt_process=function(e){var t=0,r=e.length||0,n=this.asm,a=this.heap,i=this.counter,o=this.pos,c=this.len,f=0,d=c+r&-16,h=0;if((i-1<<4)+c+r>l)throw new RangeError("counter overflow");for(var p=new Uint8Array(d);r>0;)c+=h=(0,s._heap_write)(a,o+c,e,t,r),t+=h,r-=h,h=n.cipher(u.AES_asm.ENC.CTR,u.AES_asm.HEAP_DATA+o,c),(h=n.mac(u.AES_asm.MAC.GCM,u.AES_asm.HEAP_DATA+o,h))&&p.set(a.subarray(o,o+h),f),i+=h>>>4,f+=h,h>>29,t[4]=f>>>21,t[5]=f>>>13&255,t[6]=f>>>5&255,t[7]=f<<3&255,t[8]=t[9]=t[10]=0,t[11]=d>>>29,t[12]=d>>>21&255,t[13]=d>>>13&255,t[14]=d>>>5&255,t[15]=d<<3&255,e.mac(u.AES_asm.MAC.GCM,u.AES_asm.HEAP_DATA,16),e.get_iv(u.AES_asm.HEAP_DATA),e.set_counter(0,0,0,this.gamma0),e.cipher(u.AES_asm.ENC.CTR,u.AES_asm.HEAP_DATA,16),o.set(t.subarray(0,n),s),this.counter=1,this.pos=0,this.len=0,o},t.prototype.AES_GCM_Decrypt_process=function(e){var t=0,r=e.length||0,n=this.asm,a=this.heap,i=this.counter,o=this.tagSize,c=this.pos,f=this.len,d=0,h=f+r>o?f+r-o&-16:0,p=f+r-h,b=0;if((i-1<<4)+f+r>l)throw new RangeError("counter overflow");for(var y=new Uint8Array(h);r>p;)f+=b=(0,s._heap_write)(a,c+f,e,t,r-p),t+=b,r-=b,b=n.mac(u.AES_asm.MAC.GCM,u.AES_asm.HEAP_DATA+c,b),(b=n.cipher(u.AES_asm.DEC.CTR,u.AES_asm.HEAP_DATA+c,b))&&y.set(a.subarray(c,c+b),d),i+=b>>>4,d+=b,c=0,f=0;return r>0&&(f+=(0,s._heap_write)(a,0,e,t,r)),this.counter=i,this.pos=c,this.len=f,y},t.prototype.AES_GCM_Decrypt_finish=function(){var e=this.asm,t=this.heap,r=this.tagSize,n=this.adata,a=this.counter,s=this.pos,o=this.len,c=o-r;if(o>>29,t[4]=h>>>21,t[5]=h>>>13&255,t[6]=h>>>5&255,t[7]=h<<3&255,t[8]=t[9]=t[10]=0,t[11]=p>>>29,t[12]=p>>>21&255,t[13]=p>>>13&255,t[14]=p>>>5&255,t[15]=p<<3&255,e.mac(u.AES_asm.MAC.GCM,u.AES_asm.HEAP_DATA,16),e.get_iv(u.AES_asm.HEAP_DATA),e.set_counter(0,0,0,this.gamma0),e.cipher(u.AES_asm.ENC.CTR,u.AES_asm.HEAP_DATA,16);for(var b=0,y=0;y0;){for(n+=i=(0,s._heap_write)(t,0,e,n,a),a-=i;15&i;)t[i++]=0;r.mac(u.AES_asm.MAC.GCM,u.AES_asm.HEAP_DATA,i)}},t}(o.AES);r.AES_GCM=h},{"../other/errors":14,"../other/utils":15,"./aes":3,"./aes.asm":2,"babel-runtime/core-js/object/create":23,"babel-runtime/core-js/object/set-prototype-of":29}],9:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.Hash=void 0;var n=e("../other/utils"),a=e("../other/errors"),i=function(){function e(){this.pos=0,this.len=0,this.acquire_asm()}return e.prototype.acquire_asm=function(){void 0===this.heap&&void 0===this.asm&&(this.heap=this.constructor.heap_pool.pop()||(0,n._heap_init)(),this.asm=this.constructor.asm_pool.pop()||this.constructor.asm_function({Uint8Array:Uint8Array},null,this.heap.buffer),this.reset())},e.prototype.release_asm=function(){this.constructor.heap_pool.push(this.heap),this.constructor.asm_pool.push(this.asm),this.heap=void 0,this.asm=void 0},e.prototype.reset=function(){return this.acquire_asm(),this.result=null,this.pos=0,this.len=0,this.asm.reset(),this},e.prototype.process=function(e){if(null!==this.result)throw new a.IllegalStateError("state must be reset before processing new data");this.acquire_asm();for(var t=this.asm,r=this.heap,i=this.pos,s=this.len,o=0,u=e.length,c=0;u>0;)s+=c=(0,n._heap_write)(r,i+s,e,o,u),o+=c,u-=c,i+=c=t.process(i,s),(s-=c)||(i=0);return this.pos=i,this.len=s,this},e.prototype.finish=function(){if(null!==this.result)throw new a.IllegalStateError("state must be reset before processing new data");return this.acquire_asm(),this.asm.finish(this.pos,this.len,0),this.result=new Uint8Array(this.HASH_SIZE),this.result.set(this.heap.subarray(0,this.HASH_SIZE)),this.pos=0,this.len=0,this.release_asm(),this},e}();r.Hash=i},{"../other/errors":14,"../other/utils":15}],10:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.sha1_asm=function(e,t,r){"use asm";var n=0,a=0,i=0,s=0,o=0,u=0,c=0,f=0,d=0,l=0,h=0,p=0,b=0,y=0,m=0,v=0,g=0,_=new e.Uint8Array(r);function w(e,t,r,u,c,f,d,l,h,p,b,y,m,v,g,_){e=e|0;t=t|0;r=r|0;u=u|0;c=c|0;f=f|0;d=d|0;l=l|0;h=h|0;p=p|0;b=b|0;y=y|0;m=m|0;v=v|0;g=g|0;_=_|0;var w=0,k=0,x=0,A=0,S=0,E=0,j=0,M=0,P=0,C=0,T=0,K=0,R=0,B=0,U=0,I=0,O=0,z=0,D=0,F=0,N=0,L=0,q=0,G=0,H=0,W=0,Z=0,V=0,Y=0,X=0,J=0,$=0,Q=0,ee=0,te=0,re=0,ne=0,ae=0,ie=0,se=0,oe=0,ue=0,ce=0,fe=0,de=0,le=0,he=0,pe=0,be=0,ye=0,me=0,ve=0,ge=0,_e=0,we=0,ke=0,xe=0,Ae=0,Se=0,Ee=0,je=0,Me=0,Pe=0,Ce=0,Te=0,Ke=0,Re=0,Be=0,Ue=0,Ie=0,Oe=0;w=n;k=a;x=i;A=s;S=o;j=e+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=t+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=r+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=u+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=c+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=f+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=d+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=l+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=h+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=p+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=b+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=y+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=m+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=v+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=g+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;j=_+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=v^h^r^e;M=E<<1|E>>>31;j=M+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=g^p^u^t;P=E<<1|E>>>31;j=P+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=_^b^c^r;C=E<<1|E>>>31;j=C+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=M^y^f^u;T=E<<1|E>>>31;j=T+(w<<5|w>>>27)+S+(k&x|~k&A)+0x5a827999|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=P^m^d^c;K=E<<1|E>>>31;j=K+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=C^v^l^f;R=E<<1|E>>>31;j=R+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=T^g^h^d;B=E<<1|E>>>31;j=B+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=K^_^p^l;U=E<<1|E>>>31;j=U+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=R^M^b^h;I=E<<1|E>>>31;j=I+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=B^P^y^p;O=E<<1|E>>>31;j=O+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=U^C^m^b;z=E<<1|E>>>31;j=z+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=I^T^v^y;D=E<<1|E>>>31;j=D+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=O^K^g^m;F=E<<1|E>>>31;j=F+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=z^R^_^v;N=E<<1|E>>>31;j=N+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=D^B^M^g;L=E<<1|E>>>31;j=L+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=F^U^P^_;q=E<<1|E>>>31;j=q+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=N^I^C^M;G=E<<1|E>>>31;j=G+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=L^O^T^P;H=E<<1|E>>>31;j=H+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=q^z^K^C;W=E<<1|E>>>31;j=W+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=G^D^R^T;Z=E<<1|E>>>31;j=Z+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=H^F^B^K;V=E<<1|E>>>31;j=V+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=W^N^U^R;Y=E<<1|E>>>31;j=Y+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Z^L^I^B;X=E<<1|E>>>31;j=X+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=V^q^O^U;J=E<<1|E>>>31;j=J+(w<<5|w>>>27)+S+(k^x^A)+0x6ed9eba1|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Y^G^z^I;$=E<<1|E>>>31;j=$+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=X^H^D^O;Q=E<<1|E>>>31;j=Q+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=J^W^F^z;ee=E<<1|E>>>31;j=ee+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=$^Z^N^D;te=E<<1|E>>>31;j=te+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Q^V^L^F;re=E<<1|E>>>31;j=re+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=ee^Y^q^N;ne=E<<1|E>>>31;j=ne+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=te^X^G^L;ae=E<<1|E>>>31;j=ae+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=re^J^H^q;ie=E<<1|E>>>31;j=ie+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=ne^$^W^G;se=E<<1|E>>>31;j=se+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=ae^Q^Z^H;oe=E<<1|E>>>31;j=oe+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=ie^ee^V^W;ue=E<<1|E>>>31;j=ue+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=se^te^Y^Z;ce=E<<1|E>>>31;j=ce+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=oe^re^X^V;fe=E<<1|E>>>31;j=fe+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=ue^ne^J^Y;de=E<<1|E>>>31;j=de+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=ce^ae^$^X;le=E<<1|E>>>31;j=le+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=fe^ie^Q^J;he=E<<1|E>>>31;j=he+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=de^se^ee^$;pe=E<<1|E>>>31;j=pe+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=le^oe^te^Q;be=E<<1|E>>>31;j=be+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=he^ue^re^ee;ye=E<<1|E>>>31;j=ye+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=pe^ce^ne^te;me=E<<1|E>>>31;j=me+(w<<5|w>>>27)+S+(k&x|k&A|x&A)-0x70e44324|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=be^fe^ae^re;ve=E<<1|E>>>31;j=ve+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=ye^de^ie^ne;ge=E<<1|E>>>31;j=ge+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=me^le^se^ae;_e=E<<1|E>>>31;j=_e+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=ve^he^oe^ie;we=E<<1|E>>>31;j=we+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=ge^pe^ue^se;ke=E<<1|E>>>31;j=ke+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=_e^be^ce^oe;xe=E<<1|E>>>31;j=xe+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=we^ye^fe^ue;Ae=E<<1|E>>>31;j=Ae+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=ke^me^de^ce;Se=E<<1|E>>>31;j=Se+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=xe^ve^le^fe;Ee=E<<1|E>>>31;j=Ee+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Ae^ge^he^de;je=E<<1|E>>>31;j=je+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Se^_e^pe^le;Me=E<<1|E>>>31;j=Me+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Ee^we^be^he;Pe=E<<1|E>>>31;j=Pe+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=je^ke^ye^pe;Ce=E<<1|E>>>31;j=Ce+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Me^xe^me^be;Te=E<<1|E>>>31;j=Te+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Pe^Ae^ve^ye;Ke=E<<1|E>>>31;j=Ke+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Ce^Se^ge^me;Re=E<<1|E>>>31;j=Re+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Te^Ee^_e^ve;Be=E<<1|E>>>31;j=Be+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Ke^je^we^ge;Ue=E<<1|E>>>31;j=Ue+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Re^Me^ke^_e;Ie=E<<1|E>>>31;j=Ie+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;E=Be^Pe^xe^we;Oe=E<<1|E>>>31;j=Oe+(w<<5|w>>>27)+S+(k^x^A)-0x359d3e2a|0;S=A;A=x;x=k<<30|k>>>2;k=w;w=j;n=n+w|0;a=a+k|0;i=i+x|0;s=s+A|0;o=o+S|0}function k(e){e=e|0;w(_[e|0]<<24|_[e|1]<<16|_[e|2]<<8|_[e|3],_[e|4]<<24|_[e|5]<<16|_[e|6]<<8|_[e|7],_[e|8]<<24|_[e|9]<<16|_[e|10]<<8|_[e|11],_[e|12]<<24|_[e|13]<<16|_[e|14]<<8|_[e|15],_[e|16]<<24|_[e|17]<<16|_[e|18]<<8|_[e|19],_[e|20]<<24|_[e|21]<<16|_[e|22]<<8|_[e|23],_[e|24]<<24|_[e|25]<<16|_[e|26]<<8|_[e|27],_[e|28]<<24|_[e|29]<<16|_[e|30]<<8|_[e|31],_[e|32]<<24|_[e|33]<<16|_[e|34]<<8|_[e|35],_[e|36]<<24|_[e|37]<<16|_[e|38]<<8|_[e|39],_[e|40]<<24|_[e|41]<<16|_[e|42]<<8|_[e|43],_[e|44]<<24|_[e|45]<<16|_[e|46]<<8|_[e|47],_[e|48]<<24|_[e|49]<<16|_[e|50]<<8|_[e|51],_[e|52]<<24|_[e|53]<<16|_[e|54]<<8|_[e|55],_[e|56]<<24|_[e|57]<<16|_[e|58]<<8|_[e|59],_[e|60]<<24|_[e|61]<<16|_[e|62]<<8|_[e|63])}function x(e){e=e|0;_[e|0]=n>>>24;_[e|1]=n>>>16&255;_[e|2]=n>>>8&255;_[e|3]=n&255;_[e|4]=a>>>24;_[e|5]=a>>>16&255;_[e|6]=a>>>8&255;_[e|7]=a&255;_[e|8]=i>>>24;_[e|9]=i>>>16&255;_[e|10]=i>>>8&255;_[e|11]=i&255;_[e|12]=s>>>24;_[e|13]=s>>>16&255;_[e|14]=s>>>8&255;_[e|15]=s&255;_[e|16]=o>>>24;_[e|17]=o>>>16&255;_[e|18]=o>>>8&255;_[e|19]=o&255}function A(){n=0x67452301;a=0xefcdab89;i=0x98badcfe;s=0x10325476;o=0xc3d2e1f0;u=c=0}function S(e,t,r,f,d,l,h){e=e|0;t=t|0;r=r|0;f=f|0;d=d|0;l=l|0;h=h|0;n=e;a=t;i=r;s=f;o=d;u=l;c=h}function E(e,t){e=e|0;t=t|0;var r=0;if(e&63)return-1;while((t|0)>=64){k(e);e=e+64|0;t=t-64|0;r=r+64|0}u=u+r|0;if(u>>>0>>0)c=c+1|0;return r|0}function j(e,t,r){e=e|0;t=t|0;r=r|0;var n=0,a=0;if(e&63)return-1;if(~r)if(r&31)return-1;if((t|0)>=64){n=E(e,t)|0;if((n|0)==-1)return-1;e=e+n|0;t=t-n|0}n=n+t|0;u=u+t|0;if(u>>>0>>0)c=c+1|0;_[e|t]=0x80;if((t|0)>=56){for(a=t+1|0;(a|0)<64;a=a+1|0){_[e|a]=0x00}k(e);t=0;_[e|0]=0}for(a=t+1|0;(a|0)<59;a=a+1|0){_[e|a]=0}_[e|56]=c>>>21&255;_[e|57]=c>>>13&255;_[e|58]=c>>>5&255;_[e|59]=c<<3&255|u>>>29;_[e|60]=u>>>21&255;_[e|61]=u>>>13&255;_[e|62]=u>>>5&255;_[e|63]=u<<3&255;k(e);if(~r)x(r);return n|0}function M(){n=f;a=d;i=l;s=h;o=p;u=64;c=0}function P(){n=b;a=y;i=m;s=v;o=g;u=64;c=0}function C(e,t,r,_,k,x,S,E,j,M,P,C,T,K,R,B){e=e|0;t=t|0;r=r|0;_=_|0;k=k|0;x=x|0;S=S|0;E=E|0;j=j|0;M=M|0;P=P|0;C=C|0;T=T|0;K=K|0;R=R|0;B=B|0;A();w(e^0x5c5c5c5c,t^0x5c5c5c5c,r^0x5c5c5c5c,_^0x5c5c5c5c,k^0x5c5c5c5c,x^0x5c5c5c5c,S^0x5c5c5c5c,E^0x5c5c5c5c,j^0x5c5c5c5c,M^0x5c5c5c5c,P^0x5c5c5c5c,C^0x5c5c5c5c,T^0x5c5c5c5c,K^0x5c5c5c5c,R^0x5c5c5c5c,B^0x5c5c5c5c);b=n;y=a;m=i;v=s;g=o;A();w(e^0x36363636,t^0x36363636,r^0x36363636,_^0x36363636,k^0x36363636,x^0x36363636,S^0x36363636,E^0x36363636,j^0x36363636,M^0x36363636,P^0x36363636,C^0x36363636,T^0x36363636,K^0x36363636,R^0x36363636,B^0x36363636);f=n;d=a;l=i;h=s;p=o;u=64;c=0}function T(e,t,r){e=e|0;t=t|0;r=r|0;var u=0,c=0,f=0,d=0,l=0,h=0;if(e&63)return-1;if(~r)if(r&31)return-1;h=j(e,t,-1)|0;u=n,c=a,f=i,d=s,l=o;P();w(u,c,f,d,l,0x80000000,0,0,0,0,0,0,0,0,0,672);if(~r)x(r);return h|0}function K(e,t,r,u,c){e=e|0;t=t|0;r=r|0;u=u|0;c=c|0;var f=0,d=0,l=0,h=0,p=0,b=0,y=0,m=0,v=0,g=0;if(e&63)return-1;if(~c)if(c&31)return-1;_[e+t|0]=r>>>24;_[e+t+1|0]=r>>>16&255;_[e+t+2|0]=r>>>8&255;_[e+t+3|0]=r&255;T(e,t+4|0,-1)|0;f=b=n,d=y=a,l=m=i,h=v=s,p=g=o;u=u-1|0;while((u|0)>0){M();w(b,y,m,v,g,0x80000000,0,0,0,0,0,0,0,0,0,672);b=n,y=a,m=i,v=s,g=o;P();w(b,y,m,v,g,0x80000000,0,0,0,0,0,0,0,0,0,672);b=n,y=a,m=i,v=s,g=o;f=f^n;d=d^a;l=l^i;h=h^s;p=p^o;u=u-1|0}n=f;a=d;i=l;s=h;o=p;if(~c)x(c);return 0}return{reset:A,init:S,process:E,finish:j,hmac_reset:M,hmac_init:C,hmac_finish:T,pbkdf2_generate_block:K}}},{}],11:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.Sha1=r._sha1_hash_size=r._sha1_block_size=void 0;var n=o(e("babel-runtime/core-js/object/create")),a=o(e("babel-runtime/core-js/object/set-prototype-of")),i=e("./sha1.asm"),s=e("../hash");function o(e){return e&&e.__esModule?e:{default:e}}var u,c=(u=a.default||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}u(e,t),e.prototype=null===t?(0,n.default)(t):(r.prototype=t.prototype,new r)}),f=r._sha1_block_size=64,d=r._sha1_hash_size=20,l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.NAME="sha1",t.BLOCK_SIZE=f,t.HASH_SIZE=d,t}return c(t,e),t.bytes=function(e){return(new t).process(e).finish().result},t.NAME="sha1",t.heap_pool=[],t.asm_pool=[],t.asm_function=i.sha1_asm,t}(s.Hash);r.Sha1=l},{"../hash":9,"./sha1.asm":10,"babel-runtime/core-js/object/create":23,"babel-runtime/core-js/object/set-prototype-of":29}],12:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.sha256_asm=function(e,t,r){"use asm";var n=0,a=0,i=0,s=0,o=0,u=0,c=0,f=0,d=0,l=0,h=0,p=0,b=0,y=0,m=0,v=0,g=0,_=0,w=0,k=0,x=0,A=0,S=0,E=0,j=0,M=0,P=new e.Uint8Array(r);function C(e,t,r,d,l,h,p,b,y,m,v,g,_,w,k,x){e=e|0;t=t|0;r=r|0;d=d|0;l=l|0;h=h|0;p=p|0;b=b|0;y=y|0;m=m|0;v=v|0;g=g|0;_=_|0;w=w|0;k=k|0;x=x|0;var A=0,S=0,E=0,j=0,M=0,P=0,C=0,T=0;A=n;S=a;E=i;j=s;M=o;P=u;C=c;T=f;T=e+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(C^M&(P^C))+0x428a2f98|0;j=j+T|0;T=T+(A&S^E&(A^S))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;C=t+C+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(P^j&(M^P))+0x71374491|0;E=E+C|0;C=C+(T&A^S&(T^A))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;P=r+P+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(M^E&(j^M))+0xb5c0fbcf|0;S=S+P|0;P=P+(C&T^A&(C^T))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;M=d+M+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(j^S&(E^j))+0xe9b5dba5|0;A=A+M|0;M=M+(P&C^T&(P^C))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;j=l+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(E^A&(S^E))+0x3956c25b|0;T=T+j|0;j=j+(M&P^C&(M^P))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;E=h+E+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(S^T&(A^S))+0x59f111f1|0;C=C+E|0;E=E+(j&M^P&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;S=p+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(A^C&(T^A))+0x923f82a4|0;P=P+S|0;S=S+(E&j^M&(E^j))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;A=b+A+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(T^P&(C^T))+0xab1c5ed5|0;M=M+A|0;A=A+(S&E^j&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;T=y+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(C^M&(P^C))+0xd807aa98|0;j=j+T|0;T=T+(A&S^E&(A^S))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;C=m+C+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(P^j&(M^P))+0x12835b01|0;E=E+C|0;C=C+(T&A^S&(T^A))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;P=v+P+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(M^E&(j^M))+0x243185be|0;S=S+P|0;P=P+(C&T^A&(C^T))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;M=g+M+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(j^S&(E^j))+0x550c7dc3|0;A=A+M|0;M=M+(P&C^T&(P^C))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;j=_+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(E^A&(S^E))+0x72be5d74|0;T=T+j|0;j=j+(M&P^C&(M^P))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;E=w+E+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(S^T&(A^S))+0x80deb1fe|0;C=C+E|0;E=E+(j&M^P&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;S=k+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(A^C&(T^A))+0x9bdc06a7|0;P=P+S|0;S=S+(E&j^M&(E^j))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;A=x+A+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(T^P&(C^T))+0xc19bf174|0;M=M+A|0;A=A+(S&E^j&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;e=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(k>>>17^k>>>19^k>>>10^k<<15^k<<13)+e+m|0;T=e+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(C^M&(P^C))+0xe49b69c1|0;j=j+T|0;T=T+(A&S^E&(A^S))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;t=(r>>>7^r>>>18^r>>>3^r<<25^r<<14)+(x>>>17^x>>>19^x>>>10^x<<15^x<<13)+t+v|0;C=t+C+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(P^j&(M^P))+0xefbe4786|0;E=E+C|0;C=C+(T&A^S&(T^A))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;r=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+r+g|0;P=r+P+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(M^E&(j^M))+0x0fc19dc6|0;S=S+P|0;P=P+(C&T^A&(C^T))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;d=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+d+_|0;M=d+M+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(j^S&(E^j))+0x240ca1cc|0;A=A+M|0;M=M+(P&C^T&(P^C))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;l=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(r>>>17^r>>>19^r>>>10^r<<15^r<<13)+l+w|0;j=l+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(E^A&(S^E))+0x2de92c6f|0;T=T+j|0;j=j+(M&P^C&(M^P))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;h=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+h+k|0;E=h+E+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(S^T&(A^S))+0x4a7484aa|0;C=C+E|0;E=E+(j&M^P&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;p=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+p+x|0;S=p+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(A^C&(T^A))+0x5cb0a9dc|0;P=P+S|0;S=S+(E&j^M&(E^j))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;b=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+b+e|0;A=b+A+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(T^P&(C^T))+0x76f988da|0;M=M+A|0;A=A+(S&E^j&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;y=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+t|0;T=y+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(C^M&(P^C))+0x983e5152|0;j=j+T|0;T=T+(A&S^E&(A^S))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;m=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+m+r|0;C=m+C+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(P^j&(M^P))+0xa831c66d|0;E=E+C|0;C=C+(T&A^S&(T^A))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;v=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+v+d|0;P=v+P+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(M^E&(j^M))+0xb00327c8|0;S=S+P|0;P=P+(C&T^A&(C^T))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;g=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+g+l|0;M=g+M+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(j^S&(E^j))+0xbf597fc7|0;A=A+M|0;M=M+(P&C^T&(P^C))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;_=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+_+h|0;j=_+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(E^A&(S^E))+0xc6e00bf3|0;T=T+j|0;j=j+(M&P^C&(M^P))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;w=(k>>>7^k>>>18^k>>>3^k<<25^k<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+w+p|0;E=w+E+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(S^T&(A^S))+0xd5a79147|0;C=C+E|0;E=E+(j&M^P&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;k=(x>>>7^x>>>18^x>>>3^x<<25^x<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+k+b|0;S=k+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(A^C&(T^A))+0x06ca6351|0;P=P+S|0;S=S+(E&j^M&(E^j))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;x=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+x+y|0;A=x+A+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(T^P&(C^T))+0x14292967|0;M=M+A|0;A=A+(S&E^j&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;e=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(k>>>17^k>>>19^k>>>10^k<<15^k<<13)+e+m|0;T=e+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(C^M&(P^C))+0x27b70a85|0;j=j+T|0;T=T+(A&S^E&(A^S))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;t=(r>>>7^r>>>18^r>>>3^r<<25^r<<14)+(x>>>17^x>>>19^x>>>10^x<<15^x<<13)+t+v|0;C=t+C+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(P^j&(M^P))+0x2e1b2138|0;E=E+C|0;C=C+(T&A^S&(T^A))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;r=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+r+g|0;P=r+P+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(M^E&(j^M))+0x4d2c6dfc|0;S=S+P|0;P=P+(C&T^A&(C^T))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;d=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+d+_|0;M=d+M+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(j^S&(E^j))+0x53380d13|0;A=A+M|0;M=M+(P&C^T&(P^C))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;l=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(r>>>17^r>>>19^r>>>10^r<<15^r<<13)+l+w|0;j=l+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(E^A&(S^E))+0x650a7354|0;T=T+j|0;j=j+(M&P^C&(M^P))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;h=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+h+k|0;E=h+E+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(S^T&(A^S))+0x766a0abb|0;C=C+E|0;E=E+(j&M^P&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;p=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+p+x|0;S=p+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(A^C&(T^A))+0x81c2c92e|0;P=P+S|0;S=S+(E&j^M&(E^j))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;b=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+b+e|0;A=b+A+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(T^P&(C^T))+0x92722c85|0;M=M+A|0;A=A+(S&E^j&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;y=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+t|0;T=y+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(C^M&(P^C))+0xa2bfe8a1|0;j=j+T|0;T=T+(A&S^E&(A^S))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;m=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+m+r|0;C=m+C+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(P^j&(M^P))+0xa81a664b|0;E=E+C|0;C=C+(T&A^S&(T^A))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;v=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+v+d|0;P=v+P+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(M^E&(j^M))+0xc24b8b70|0;S=S+P|0;P=P+(C&T^A&(C^T))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;g=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+g+l|0;M=g+M+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(j^S&(E^j))+0xc76c51a3|0;A=A+M|0;M=M+(P&C^T&(P^C))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;_=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+_+h|0;j=_+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(E^A&(S^E))+0xd192e819|0;T=T+j|0;j=j+(M&P^C&(M^P))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;w=(k>>>7^k>>>18^k>>>3^k<<25^k<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+w+p|0;E=w+E+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(S^T&(A^S))+0xd6990624|0;C=C+E|0;E=E+(j&M^P&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;k=(x>>>7^x>>>18^x>>>3^x<<25^x<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+k+b|0;S=k+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(A^C&(T^A))+0xf40e3585|0;P=P+S|0;S=S+(E&j^M&(E^j))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;x=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+x+y|0;A=x+A+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(T^P&(C^T))+0x106aa070|0;M=M+A|0;A=A+(S&E^j&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;e=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(k>>>17^k>>>19^k>>>10^k<<15^k<<13)+e+m|0;T=e+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(C^M&(P^C))+0x19a4c116|0;j=j+T|0;T=T+(A&S^E&(A^S))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;t=(r>>>7^r>>>18^r>>>3^r<<25^r<<14)+(x>>>17^x>>>19^x>>>10^x<<15^x<<13)+t+v|0;C=t+C+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(P^j&(M^P))+0x1e376c08|0;E=E+C|0;C=C+(T&A^S&(T^A))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;r=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+r+g|0;P=r+P+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(M^E&(j^M))+0x2748774c|0;S=S+P|0;P=P+(C&T^A&(C^T))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;d=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+d+_|0;M=d+M+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(j^S&(E^j))+0x34b0bcb5|0;A=A+M|0;M=M+(P&C^T&(P^C))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;l=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(r>>>17^r>>>19^r>>>10^r<<15^r<<13)+l+w|0;j=l+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(E^A&(S^E))+0x391c0cb3|0;T=T+j|0;j=j+(M&P^C&(M^P))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;h=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+h+k|0;E=h+E+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(S^T&(A^S))+0x4ed8aa4a|0;C=C+E|0;E=E+(j&M^P&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;p=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+p+x|0;S=p+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(A^C&(T^A))+0x5b9cca4f|0;P=P+S|0;S=S+(E&j^M&(E^j))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;b=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+b+e|0;A=b+A+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(T^P&(C^T))+0x682e6ff3|0;M=M+A|0;A=A+(S&E^j&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;y=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+t|0;T=y+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(C^M&(P^C))+0x748f82ee|0;j=j+T|0;T=T+(A&S^E&(A^S))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;m=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+m+r|0;C=m+C+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(P^j&(M^P))+0x78a5636f|0;E=E+C|0;C=C+(T&A^S&(T^A))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;v=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+v+d|0;P=v+P+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(M^E&(j^M))+0x84c87814|0;S=S+P|0;P=P+(C&T^A&(C^T))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;g=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+g+l|0;M=g+M+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(j^S&(E^j))+0x8cc70208|0;A=A+M|0;M=M+(P&C^T&(P^C))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;_=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+_+h|0;j=_+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(E^A&(S^E))+0x90befffa|0;T=T+j|0;j=j+(M&P^C&(M^P))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;w=(k>>>7^k>>>18^k>>>3^k<<25^k<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+w+p|0;E=w+E+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(S^T&(A^S))+0xa4506ceb|0;C=C+E|0;E=E+(j&M^P&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;k=(x>>>7^x>>>18^x>>>3^x<<25^x<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+k+b|0;S=k+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(A^C&(T^A))+0xbef9a3f7|0;P=P+S|0;S=S+(E&j^M&(E^j))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;x=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+x+y|0;A=x+A+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(T^P&(C^T))+0xc67178f2|0;M=M+A|0;A=A+(S&E^j&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;n=n+A|0;a=a+S|0;i=i+E|0;s=s+j|0;o=o+M|0;u=u+P|0;c=c+C|0;f=f+T|0}function T(e){e=e|0;C(P[e|0]<<24|P[e|1]<<16|P[e|2]<<8|P[e|3],P[e|4]<<24|P[e|5]<<16|P[e|6]<<8|P[e|7],P[e|8]<<24|P[e|9]<<16|P[e|10]<<8|P[e|11],P[e|12]<<24|P[e|13]<<16|P[e|14]<<8|P[e|15],P[e|16]<<24|P[e|17]<<16|P[e|18]<<8|P[e|19],P[e|20]<<24|P[e|21]<<16|P[e|22]<<8|P[e|23],P[e|24]<<24|P[e|25]<<16|P[e|26]<<8|P[e|27],P[e|28]<<24|P[e|29]<<16|P[e|30]<<8|P[e|31],P[e|32]<<24|P[e|33]<<16|P[e|34]<<8|P[e|35],P[e|36]<<24|P[e|37]<<16|P[e|38]<<8|P[e|39],P[e|40]<<24|P[e|41]<<16|P[e|42]<<8|P[e|43],P[e|44]<<24|P[e|45]<<16|P[e|46]<<8|P[e|47],P[e|48]<<24|P[e|49]<<16|P[e|50]<<8|P[e|51],P[e|52]<<24|P[e|53]<<16|P[e|54]<<8|P[e|55],P[e|56]<<24|P[e|57]<<16|P[e|58]<<8|P[e|59],P[e|60]<<24|P[e|61]<<16|P[e|62]<<8|P[e|63])}function K(e){e=e|0;P[e|0]=n>>>24;P[e|1]=n>>>16&255;P[e|2]=n>>>8&255;P[e|3]=n&255;P[e|4]=a>>>24;P[e|5]=a>>>16&255;P[e|6]=a>>>8&255;P[e|7]=a&255;P[e|8]=i>>>24;P[e|9]=i>>>16&255;P[e|10]=i>>>8&255;P[e|11]=i&255;P[e|12]=s>>>24;P[e|13]=s>>>16&255;P[e|14]=s>>>8&255;P[e|15]=s&255;P[e|16]=o>>>24;P[e|17]=o>>>16&255;P[e|18]=o>>>8&255;P[e|19]=o&255;P[e|20]=u>>>24;P[e|21]=u>>>16&255;P[e|22]=u>>>8&255;P[e|23]=u&255;P[e|24]=c>>>24;P[e|25]=c>>>16&255;P[e|26]=c>>>8&255;P[e|27]=c&255;P[e|28]=f>>>24;P[e|29]=f>>>16&255;P[e|30]=f>>>8&255;P[e|31]=f&255}function R(){n=0x6a09e667;a=0xbb67ae85;i=0x3c6ef372;s=0xa54ff53a;o=0x510e527f;u=0x9b05688c;c=0x1f83d9ab;f=0x5be0cd19;d=l=0}function B(e,t,r,h,p,b,y,m,v,g){e=e|0;t=t|0;r=r|0;h=h|0;p=p|0;b=b|0;y=y|0;m=m|0;v=v|0;g=g|0;n=e;a=t;i=r;s=h;o=p;u=b;c=y;f=m;d=v;l=g}function U(e,t){e=e|0;t=t|0;var r=0;if(e&63)return-1;while((t|0)>=64){T(e);e=e+64|0;t=t-64|0;r=r+64|0}d=d+r|0;if(d>>>0>>0)l=l+1|0;return r|0}function I(e,t,r){e=e|0;t=t|0;r=r|0;var n=0,a=0;if(e&63)return-1;if(~r)if(r&31)return-1;if((t|0)>=64){n=U(e,t)|0;if((n|0)==-1)return-1;e=e+n|0;t=t-n|0}n=n+t|0;d=d+t|0;if(d>>>0>>0)l=l+1|0;P[e|t]=0x80;if((t|0)>=56){for(a=t+1|0;(a|0)<64;a=a+1|0){P[e|a]=0x00}T(e);t=0;P[e|0]=0}for(a=t+1|0;(a|0)<59;a=a+1|0){P[e|a]=0}P[e|56]=l>>>21&255;P[e|57]=l>>>13&255;P[e|58]=l>>>5&255;P[e|59]=l<<3&255|d>>>29;P[e|60]=d>>>21&255;P[e|61]=d>>>13&255;P[e|62]=d>>>5&255;P[e|63]=d<<3&255;T(e);if(~r)K(r);return n|0}function O(){n=h;a=p;i=b;s=y;o=m;u=v;c=g;f=_;d=64;l=0}function z(){n=w;a=k;i=x;s=A;o=S;u=E;c=j;f=M;d=64;l=0}function D(e,t,r,P,T,K,B,U,I,O,z,D,F,N,L,q){e=e|0;t=t|0;r=r|0;P=P|0;T=T|0;K=K|0;B=B|0;U=U|0;I=I|0;O=O|0;z=z|0;D=D|0;F=F|0;N=N|0;L=L|0;q=q|0;R();C(e^0x5c5c5c5c,t^0x5c5c5c5c,r^0x5c5c5c5c,P^0x5c5c5c5c,T^0x5c5c5c5c,K^0x5c5c5c5c,B^0x5c5c5c5c,U^0x5c5c5c5c,I^0x5c5c5c5c,O^0x5c5c5c5c,z^0x5c5c5c5c,D^0x5c5c5c5c,F^0x5c5c5c5c,N^0x5c5c5c5c,L^0x5c5c5c5c,q^0x5c5c5c5c);w=n;k=a;x=i;A=s;S=o;E=u;j=c;M=f;R();C(e^0x36363636,t^0x36363636,r^0x36363636,P^0x36363636,T^0x36363636,K^0x36363636,B^0x36363636,U^0x36363636,I^0x36363636,O^0x36363636,z^0x36363636,D^0x36363636,F^0x36363636,N^0x36363636,L^0x36363636,q^0x36363636);h=n;p=a;b=i;y=s;m=o;v=u;g=c;_=f;d=64;l=0}function F(e,t,r){e=e|0;t=t|0;r=r|0;var d=0,l=0,h=0,p=0,b=0,y=0,m=0,v=0,g=0;if(e&63)return-1;if(~r)if(r&31)return-1;g=I(e,t,-1)|0;d=n,l=a,h=i,p=s,b=o,y=u,m=c,v=f;z();C(d,l,h,p,b,y,m,v,0x80000000,0,0,0,0,0,0,768);if(~r)K(r);return g|0}function N(e,t,r,d,l){e=e|0;t=t|0;r=r|0;d=d|0;l=l|0;var h=0,p=0,b=0,y=0,m=0,v=0,g=0,_=0,w=0,k=0,x=0,A=0,S=0,E=0,j=0,M=0;if(e&63)return-1;if(~l)if(l&31)return-1;P[e+t|0]=r>>>24;P[e+t+1|0]=r>>>16&255;P[e+t+2|0]=r>>>8&255;P[e+t+3|0]=r&255;F(e,t+4|0,-1)|0;h=w=n,p=k=a,b=x=i,y=A=s,m=S=o,v=E=u,g=j=c,_=M=f;d=d-1|0;while((d|0)>0){O();C(w,k,x,A,S,E,j,M,0x80000000,0,0,0,0,0,0,768);w=n,k=a,x=i,A=s,S=o,E=u,j=c,M=f;z();C(w,k,x,A,S,E,j,M,0x80000000,0,0,0,0,0,0,768);w=n,k=a,x=i,A=s,S=o,E=u,j=c,M=f;h=h^n;p=p^a;b=b^i;y=y^s;m=m^o;v=v^u;g=g^c;_=_^f;d=d-1|0}n=h;a=p;i=b;s=y;o=m;u=v;c=g;f=_;if(~l)K(l);return 0}return{reset:R,init:B,process:U,finish:I,hmac_reset:O,hmac_init:D,hmac_finish:F,pbkdf2_generate_block:N}}},{}],13:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.Sha256=r._sha256_hash_size=r._sha256_block_size=void 0;var n=o(e("babel-runtime/core-js/object/create")),a=o(e("babel-runtime/core-js/object/set-prototype-of")),i=e("./sha256.asm"),s=e("../hash");function o(e){return e&&e.__esModule?e:{default:e}}var u,c=(u=a.default||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}u(e,t),e.prototype=null===t?(0,n.default)(t):(r.prototype=t.prototype,new r)}),f=r._sha256_block_size=64,d=r._sha256_hash_size=32,l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.NAME="sha256",t.BLOCK_SIZE=f,t.HASH_SIZE=d,t}return c(t,e),t.bytes=function(e){return(new t).process(e).finish().result},t.NAME="sha256",t.heap_pool=[],t.asm_pool=[],t.asm_function=i.sha256_asm,t}(s.Hash);r.Sha256=l},{"../hash":9,"./sha256.asm":12,"babel-runtime/core-js/object/create":23,"babel-runtime/core-js/object/set-prototype-of":29}],14:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.SecurityError=r.IllegalArgumentError=r.IllegalStateError=void 0;var n=i(e("babel-runtime/core-js/object/create")),a=i(e("babel-runtime/core-js/object/set-prototype-of"));function i(e){return e&&e.__esModule?e:{default:e}}var s,o=(s=a.default||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},function(e,t){function r(){this.constructor=e}s(e,t),e.prototype=null===t?(0,n.default)(t):(r.prototype=t.prototype,new r)}),u=function(e){function t(){for(var t=[],r=0;r>1),n=0;n>1]=parseInt(e.substr(n,2),16);return r},r.base64_to_bytes=function(e){return i(n(e))},r.bytes_to_string=s,r.bytes_to_hex=function(e){for(var t="",r=0;r>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+=1},r.is_number=function(e){return"number"==typeof e},r.is_string=function(e){return"string"==typeof e},r.is_buffer=function(e){return e instanceof ArrayBuffer},r.is_bytes=function(e){return e instanceof Uint8Array},r.is_typed_array=function(e){return e instanceof Int8Array||e instanceof Uint8Array||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array},r._heap_init=function(e,t){var r=e?e.byteLength:t||65536;if(4095&r||r<=0)throw new Error("heap size must be a positive integer and a multiple of 4096");return e=e||new Uint8Array(new ArrayBuffer(r))},r._heap_write=function(e,t,r,n,a){var i=e.length-t,s=i=r)throw new Error("Malformed string, low surrogate expected at position "+a);s=(55296^s)<<10|65536|56320^e.charCodeAt(a)}else if(!t&&s>>>8)throw new Error("Wide characters are not allowed.");!t||s<=127?n[i++]=s:s<=2047?(n[i++]=192|s>>6,n[i++]=128|63&s):s<=65535?(n[i++]=224|s>>12,n[i++]=128|s>>6&63,n[i++]=128|63&s):(n[i++]=240|s>>18,n[i++]=128|s>>12&63,n[i++]=128|s>>6&63,n[i++]=128|63&s)}return n.subarray(0,i)}function s(e,t){void 0===t&&(t=!1);for(var r=e.length,n=new Array(r),a=0,i=0;a=192&&s<224&&a+1=224&&s<240&&a+2=240&&s<248&&a+3>10,n[i++]=56320|1023&o)}}var u="";for(a=0;a=49&&s<=54?s-49+10:s>=17&&s<=22?s-17+10:15&s}return n}function u(e,t,r,n){for(var a=0,i=Math.min(e.length,r),s=t;s=49?o-49+10:o>=17?o-17+10:o}return a}i.isBN=function(e){return e instanceof i||null!==e&&"object"==typeof e&&e.constructor.wordSize===i.wordSize&&Array.isArray(e.words)},i.max=function(e,t){return e.cmp(t)>0?e:t},i.min=function(e,t){return e.cmp(t)<0?e:t},i.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),n(t===(0|t)&&t>=2&&t<=36);var a=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&a++,16===t?this._parseHex(e,a):this._parseBase(e,t,a),"-"===e[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),t,r)},i.prototype._initNumber=function(e,t,r){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(n(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),t,r)},i.prototype._initArray=function(e,t,r){if(n("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var a=0;a=0;a-=3)s=e[a]|e[a-1]<<8|e[a-2]<<16,this.words[i]|=s<>>26-o&67108863,(o+=24)>=26&&(o-=26,i++);else if("le"===r)for(a=0,i=0;a>>26-o&67108863,(o+=24)>=26&&(o-=26,i++);return this.strip()},i.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=6)a=o(e,r,r+6),this.words[n]|=a<>>26-i&4194303,(i+=24)>=26&&(i-=26,n++);r+6!==t&&(a=o(e,t,r+6),this.words[n]|=a<>>26-i&4194303),this.strip()},i.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var n=0,a=1;a<=67108863;a*=t)n++;n--,a=a/t|0;for(var i=e.length-r,s=i%n,o=Math.min(i,i-s)+r,c=0,f=r;f1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function l(e,t,r){r.negative=t.negative^e.negative;var n=e.length+t.length|0;r.length=n,n=n-1|0;var a=0|e.words[0],i=0|t.words[0],s=a*i,o=67108863&s,u=s/67108864|0;r.words[0]=o;for(var c=1;c>>26,d=67108863&u,l=Math.min(c,t.length-1),h=Math.max(0,c-e.length+1);h<=l;h++){var p=c-h|0;f+=(s=(a=0|e.words[p])*(i=0|t.words[h])+d)/67108864|0,d=67108863&s}r.words[c]=0|d,u=0|f}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}i.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var a=0,i=0,s=0;s>>24-a&16777215)||s!==this.length-1?c[6-u.length]+u+r:u+r,(a+=2)>=26&&(a-=26,s--)}for(0!==i&&(r=i.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var l=f[e],h=d[e];r="";var p=this.clone();for(p.negative=0;!p.isZero();){var b=p.modn(h).toString(e);r=(p=p.idivn(h)).isZero()?b+r:c[l-b.length]+b+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(e,t){return n(void 0!==s),this.toArrayLike(s,e,t)},i.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},i.prototype.toArrayLike=function(e,t,r){var a=this.byteLength(),i=r||Math.max(1,a);n(a<=i,"byte array longer than desired length"),n(i>0,"Requested array length <= 0"),this.strip();var s,o,u="le"===t,c=new e(i),f=this.clone();if(u){for(o=0;!f.isZero();o++)s=f.andln(255),f.iushrn(8),c[o]=s;for(;o=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},i.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},i.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var n=0;ne.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){n("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var a=0;a0&&(this.words[a]=~this.words[a]&67108863>>26-r),this.strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,t){n("number"==typeof e&&e>=0);var r=e/26|0,a=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,n=e):(r=e,n=this);for(var a=0,i=0;i>>26;for(;0!==a&&i>>26;if(this.length=r.length,0!==a)this.words[this.length]=a,this.length++;else if(r!==this)for(;ie.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,n,a=this.cmp(e);if(0===a)return this.negative=0,this.length=1,this.words[0]=0,this;a>0?(r=this,n=e):(r=e,n=this);for(var i=0,s=0;s>26,this.words[s]=67108863&t;for(;0!==i&&s>26,this.words[s]=67108863&t;if(0===i&&s>>13,h=0|s[1],p=8191&h,b=h>>>13,y=0|s[2],m=8191&y,v=y>>>13,g=0|s[3],_=8191&g,w=g>>>13,k=0|s[4],x=8191&k,A=k>>>13,S=0|s[5],E=8191&S,j=S>>>13,M=0|s[6],P=8191&M,C=M>>>13,T=0|s[7],K=8191&T,R=T>>>13,B=0|s[8],U=8191&B,I=B>>>13,O=0|s[9],z=8191&O,D=O>>>13,F=0|o[0],N=8191&F,L=F>>>13,q=0|o[1],G=8191&q,H=q>>>13,W=0|o[2],Z=8191&W,V=W>>>13,Y=0|o[3],X=8191&Y,J=Y>>>13,$=0|o[4],Q=8191&$,ee=$>>>13,te=0|o[5],re=8191&te,ne=te>>>13,ae=0|o[6],ie=8191&ae,se=ae>>>13,oe=0|o[7],ue=8191&oe,ce=oe>>>13,fe=0|o[8],de=8191&fe,le=fe>>>13,he=0|o[9],pe=8191&he,be=he>>>13;r.negative=e.negative^t.negative,r.length=19;var ye=(c+(n=Math.imul(d,N))|0)+((8191&(a=(a=Math.imul(d,L))+Math.imul(l,N)|0))<<13)|0;c=((i=Math.imul(l,L))+(a>>>13)|0)+(ye>>>26)|0,ye&=67108863,n=Math.imul(p,N),a=(a=Math.imul(p,L))+Math.imul(b,N)|0,i=Math.imul(b,L);var me=(c+(n=n+Math.imul(d,G)|0)|0)+((8191&(a=(a=a+Math.imul(d,H)|0)+Math.imul(l,G)|0))<<13)|0;c=((i=i+Math.imul(l,H)|0)+(a>>>13)|0)+(me>>>26)|0,me&=67108863,n=Math.imul(m,N),a=(a=Math.imul(m,L))+Math.imul(v,N)|0,i=Math.imul(v,L),n=n+Math.imul(p,G)|0,a=(a=a+Math.imul(p,H)|0)+Math.imul(b,G)|0,i=i+Math.imul(b,H)|0;var ve=(c+(n=n+Math.imul(d,Z)|0)|0)+((8191&(a=(a=a+Math.imul(d,V)|0)+Math.imul(l,Z)|0))<<13)|0;c=((i=i+Math.imul(l,V)|0)+(a>>>13)|0)+(ve>>>26)|0,ve&=67108863,n=Math.imul(_,N),a=(a=Math.imul(_,L))+Math.imul(w,N)|0,i=Math.imul(w,L),n=n+Math.imul(m,G)|0,a=(a=a+Math.imul(m,H)|0)+Math.imul(v,G)|0,i=i+Math.imul(v,H)|0,n=n+Math.imul(p,Z)|0,a=(a=a+Math.imul(p,V)|0)+Math.imul(b,Z)|0,i=i+Math.imul(b,V)|0;var ge=(c+(n=n+Math.imul(d,X)|0)|0)+((8191&(a=(a=a+Math.imul(d,J)|0)+Math.imul(l,X)|0))<<13)|0;c=((i=i+Math.imul(l,J)|0)+(a>>>13)|0)+(ge>>>26)|0,ge&=67108863,n=Math.imul(x,N),a=(a=Math.imul(x,L))+Math.imul(A,N)|0,i=Math.imul(A,L),n=n+Math.imul(_,G)|0,a=(a=a+Math.imul(_,H)|0)+Math.imul(w,G)|0,i=i+Math.imul(w,H)|0,n=n+Math.imul(m,Z)|0,a=(a=a+Math.imul(m,V)|0)+Math.imul(v,Z)|0,i=i+Math.imul(v,V)|0,n=n+Math.imul(p,X)|0,a=(a=a+Math.imul(p,J)|0)+Math.imul(b,X)|0,i=i+Math.imul(b,J)|0;var _e=(c+(n=n+Math.imul(d,Q)|0)|0)+((8191&(a=(a=a+Math.imul(d,ee)|0)+Math.imul(l,Q)|0))<<13)|0;c=((i=i+Math.imul(l,ee)|0)+(a>>>13)|0)+(_e>>>26)|0,_e&=67108863,n=Math.imul(E,N),a=(a=Math.imul(E,L))+Math.imul(j,N)|0,i=Math.imul(j,L),n=n+Math.imul(x,G)|0,a=(a=a+Math.imul(x,H)|0)+Math.imul(A,G)|0,i=i+Math.imul(A,H)|0,n=n+Math.imul(_,Z)|0,a=(a=a+Math.imul(_,V)|0)+Math.imul(w,Z)|0,i=i+Math.imul(w,V)|0,n=n+Math.imul(m,X)|0,a=(a=a+Math.imul(m,J)|0)+Math.imul(v,X)|0,i=i+Math.imul(v,J)|0,n=n+Math.imul(p,Q)|0,a=(a=a+Math.imul(p,ee)|0)+Math.imul(b,Q)|0,i=i+Math.imul(b,ee)|0;var we=(c+(n=n+Math.imul(d,re)|0)|0)+((8191&(a=(a=a+Math.imul(d,ne)|0)+Math.imul(l,re)|0))<<13)|0;c=((i=i+Math.imul(l,ne)|0)+(a>>>13)|0)+(we>>>26)|0,we&=67108863,n=Math.imul(P,N),a=(a=Math.imul(P,L))+Math.imul(C,N)|0,i=Math.imul(C,L),n=n+Math.imul(E,G)|0,a=(a=a+Math.imul(E,H)|0)+Math.imul(j,G)|0,i=i+Math.imul(j,H)|0,n=n+Math.imul(x,Z)|0,a=(a=a+Math.imul(x,V)|0)+Math.imul(A,Z)|0,i=i+Math.imul(A,V)|0,n=n+Math.imul(_,X)|0,a=(a=a+Math.imul(_,J)|0)+Math.imul(w,X)|0,i=i+Math.imul(w,J)|0,n=n+Math.imul(m,Q)|0,a=(a=a+Math.imul(m,ee)|0)+Math.imul(v,Q)|0,i=i+Math.imul(v,ee)|0,n=n+Math.imul(p,re)|0,a=(a=a+Math.imul(p,ne)|0)+Math.imul(b,re)|0,i=i+Math.imul(b,ne)|0;var ke=(c+(n=n+Math.imul(d,ie)|0)|0)+((8191&(a=(a=a+Math.imul(d,se)|0)+Math.imul(l,ie)|0))<<13)|0;c=((i=i+Math.imul(l,se)|0)+(a>>>13)|0)+(ke>>>26)|0,ke&=67108863,n=Math.imul(K,N),a=(a=Math.imul(K,L))+Math.imul(R,N)|0,i=Math.imul(R,L),n=n+Math.imul(P,G)|0,a=(a=a+Math.imul(P,H)|0)+Math.imul(C,G)|0,i=i+Math.imul(C,H)|0,n=n+Math.imul(E,Z)|0,a=(a=a+Math.imul(E,V)|0)+Math.imul(j,Z)|0,i=i+Math.imul(j,V)|0,n=n+Math.imul(x,X)|0,a=(a=a+Math.imul(x,J)|0)+Math.imul(A,X)|0,i=i+Math.imul(A,J)|0,n=n+Math.imul(_,Q)|0,a=(a=a+Math.imul(_,ee)|0)+Math.imul(w,Q)|0,i=i+Math.imul(w,ee)|0,n=n+Math.imul(m,re)|0,a=(a=a+Math.imul(m,ne)|0)+Math.imul(v,re)|0,i=i+Math.imul(v,ne)|0,n=n+Math.imul(p,ie)|0,a=(a=a+Math.imul(p,se)|0)+Math.imul(b,ie)|0,i=i+Math.imul(b,se)|0;var xe=(c+(n=n+Math.imul(d,ue)|0)|0)+((8191&(a=(a=a+Math.imul(d,ce)|0)+Math.imul(l,ue)|0))<<13)|0;c=((i=i+Math.imul(l,ce)|0)+(a>>>13)|0)+(xe>>>26)|0,xe&=67108863,n=Math.imul(U,N),a=(a=Math.imul(U,L))+Math.imul(I,N)|0,i=Math.imul(I,L),n=n+Math.imul(K,G)|0,a=(a=a+Math.imul(K,H)|0)+Math.imul(R,G)|0,i=i+Math.imul(R,H)|0,n=n+Math.imul(P,Z)|0,a=(a=a+Math.imul(P,V)|0)+Math.imul(C,Z)|0,i=i+Math.imul(C,V)|0,n=n+Math.imul(E,X)|0,a=(a=a+Math.imul(E,J)|0)+Math.imul(j,X)|0,i=i+Math.imul(j,J)|0,n=n+Math.imul(x,Q)|0,a=(a=a+Math.imul(x,ee)|0)+Math.imul(A,Q)|0,i=i+Math.imul(A,ee)|0,n=n+Math.imul(_,re)|0,a=(a=a+Math.imul(_,ne)|0)+Math.imul(w,re)|0,i=i+Math.imul(w,ne)|0,n=n+Math.imul(m,ie)|0,a=(a=a+Math.imul(m,se)|0)+Math.imul(v,ie)|0,i=i+Math.imul(v,se)|0,n=n+Math.imul(p,ue)|0,a=(a=a+Math.imul(p,ce)|0)+Math.imul(b,ue)|0,i=i+Math.imul(b,ce)|0;var Ae=(c+(n=n+Math.imul(d,de)|0)|0)+((8191&(a=(a=a+Math.imul(d,le)|0)+Math.imul(l,de)|0))<<13)|0;c=((i=i+Math.imul(l,le)|0)+(a>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,n=Math.imul(z,N),a=(a=Math.imul(z,L))+Math.imul(D,N)|0,i=Math.imul(D,L),n=n+Math.imul(U,G)|0,a=(a=a+Math.imul(U,H)|0)+Math.imul(I,G)|0,i=i+Math.imul(I,H)|0,n=n+Math.imul(K,Z)|0,a=(a=a+Math.imul(K,V)|0)+Math.imul(R,Z)|0,i=i+Math.imul(R,V)|0,n=n+Math.imul(P,X)|0,a=(a=a+Math.imul(P,J)|0)+Math.imul(C,X)|0,i=i+Math.imul(C,J)|0,n=n+Math.imul(E,Q)|0,a=(a=a+Math.imul(E,ee)|0)+Math.imul(j,Q)|0,i=i+Math.imul(j,ee)|0,n=n+Math.imul(x,re)|0,a=(a=a+Math.imul(x,ne)|0)+Math.imul(A,re)|0,i=i+Math.imul(A,ne)|0,n=n+Math.imul(_,ie)|0,a=(a=a+Math.imul(_,se)|0)+Math.imul(w,ie)|0,i=i+Math.imul(w,se)|0,n=n+Math.imul(m,ue)|0,a=(a=a+Math.imul(m,ce)|0)+Math.imul(v,ue)|0,i=i+Math.imul(v,ce)|0,n=n+Math.imul(p,de)|0,a=(a=a+Math.imul(p,le)|0)+Math.imul(b,de)|0,i=i+Math.imul(b,le)|0;var Se=(c+(n=n+Math.imul(d,pe)|0)|0)+((8191&(a=(a=a+Math.imul(d,be)|0)+Math.imul(l,pe)|0))<<13)|0;c=((i=i+Math.imul(l,be)|0)+(a>>>13)|0)+(Se>>>26)|0,Se&=67108863,n=Math.imul(z,G),a=(a=Math.imul(z,H))+Math.imul(D,G)|0,i=Math.imul(D,H),n=n+Math.imul(U,Z)|0,a=(a=a+Math.imul(U,V)|0)+Math.imul(I,Z)|0,i=i+Math.imul(I,V)|0,n=n+Math.imul(K,X)|0,a=(a=a+Math.imul(K,J)|0)+Math.imul(R,X)|0,i=i+Math.imul(R,J)|0,n=n+Math.imul(P,Q)|0,a=(a=a+Math.imul(P,ee)|0)+Math.imul(C,Q)|0,i=i+Math.imul(C,ee)|0,n=n+Math.imul(E,re)|0,a=(a=a+Math.imul(E,ne)|0)+Math.imul(j,re)|0,i=i+Math.imul(j,ne)|0,n=n+Math.imul(x,ie)|0,a=(a=a+Math.imul(x,se)|0)+Math.imul(A,ie)|0,i=i+Math.imul(A,se)|0,n=n+Math.imul(_,ue)|0,a=(a=a+Math.imul(_,ce)|0)+Math.imul(w,ue)|0,i=i+Math.imul(w,ce)|0,n=n+Math.imul(m,de)|0,a=(a=a+Math.imul(m,le)|0)+Math.imul(v,de)|0,i=i+Math.imul(v,le)|0;var Ee=(c+(n=n+Math.imul(p,pe)|0)|0)+((8191&(a=(a=a+Math.imul(p,be)|0)+Math.imul(b,pe)|0))<<13)|0;c=((i=i+Math.imul(b,be)|0)+(a>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,n=Math.imul(z,Z),a=(a=Math.imul(z,V))+Math.imul(D,Z)|0,i=Math.imul(D,V),n=n+Math.imul(U,X)|0,a=(a=a+Math.imul(U,J)|0)+Math.imul(I,X)|0,i=i+Math.imul(I,J)|0,n=n+Math.imul(K,Q)|0,a=(a=a+Math.imul(K,ee)|0)+Math.imul(R,Q)|0,i=i+Math.imul(R,ee)|0,n=n+Math.imul(P,re)|0,a=(a=a+Math.imul(P,ne)|0)+Math.imul(C,re)|0,i=i+Math.imul(C,ne)|0,n=n+Math.imul(E,ie)|0,a=(a=a+Math.imul(E,se)|0)+Math.imul(j,ie)|0,i=i+Math.imul(j,se)|0,n=n+Math.imul(x,ue)|0,a=(a=a+Math.imul(x,ce)|0)+Math.imul(A,ue)|0,i=i+Math.imul(A,ce)|0,n=n+Math.imul(_,de)|0,a=(a=a+Math.imul(_,le)|0)+Math.imul(w,de)|0,i=i+Math.imul(w,le)|0;var je=(c+(n=n+Math.imul(m,pe)|0)|0)+((8191&(a=(a=a+Math.imul(m,be)|0)+Math.imul(v,pe)|0))<<13)|0;c=((i=i+Math.imul(v,be)|0)+(a>>>13)|0)+(je>>>26)|0,je&=67108863,n=Math.imul(z,X),a=(a=Math.imul(z,J))+Math.imul(D,X)|0,i=Math.imul(D,J),n=n+Math.imul(U,Q)|0,a=(a=a+Math.imul(U,ee)|0)+Math.imul(I,Q)|0,i=i+Math.imul(I,ee)|0,n=n+Math.imul(K,re)|0,a=(a=a+Math.imul(K,ne)|0)+Math.imul(R,re)|0,i=i+Math.imul(R,ne)|0,n=n+Math.imul(P,ie)|0,a=(a=a+Math.imul(P,se)|0)+Math.imul(C,ie)|0,i=i+Math.imul(C,se)|0,n=n+Math.imul(E,ue)|0,a=(a=a+Math.imul(E,ce)|0)+Math.imul(j,ue)|0,i=i+Math.imul(j,ce)|0,n=n+Math.imul(x,de)|0,a=(a=a+Math.imul(x,le)|0)+Math.imul(A,de)|0,i=i+Math.imul(A,le)|0;var Me=(c+(n=n+Math.imul(_,pe)|0)|0)+((8191&(a=(a=a+Math.imul(_,be)|0)+Math.imul(w,pe)|0))<<13)|0;c=((i=i+Math.imul(w,be)|0)+(a>>>13)|0)+(Me>>>26)|0,Me&=67108863,n=Math.imul(z,Q),a=(a=Math.imul(z,ee))+Math.imul(D,Q)|0,i=Math.imul(D,ee),n=n+Math.imul(U,re)|0,a=(a=a+Math.imul(U,ne)|0)+Math.imul(I,re)|0,i=i+Math.imul(I,ne)|0,n=n+Math.imul(K,ie)|0,a=(a=a+Math.imul(K,se)|0)+Math.imul(R,ie)|0,i=i+Math.imul(R,se)|0,n=n+Math.imul(P,ue)|0,a=(a=a+Math.imul(P,ce)|0)+Math.imul(C,ue)|0,i=i+Math.imul(C,ce)|0,n=n+Math.imul(E,de)|0,a=(a=a+Math.imul(E,le)|0)+Math.imul(j,de)|0,i=i+Math.imul(j,le)|0;var Pe=(c+(n=n+Math.imul(x,pe)|0)|0)+((8191&(a=(a=a+Math.imul(x,be)|0)+Math.imul(A,pe)|0))<<13)|0;c=((i=i+Math.imul(A,be)|0)+(a>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,n=Math.imul(z,re),a=(a=Math.imul(z,ne))+Math.imul(D,re)|0,i=Math.imul(D,ne),n=n+Math.imul(U,ie)|0,a=(a=a+Math.imul(U,se)|0)+Math.imul(I,ie)|0,i=i+Math.imul(I,se)|0,n=n+Math.imul(K,ue)|0,a=(a=a+Math.imul(K,ce)|0)+Math.imul(R,ue)|0,i=i+Math.imul(R,ce)|0,n=n+Math.imul(P,de)|0,a=(a=a+Math.imul(P,le)|0)+Math.imul(C,de)|0,i=i+Math.imul(C,le)|0;var Ce=(c+(n=n+Math.imul(E,pe)|0)|0)+((8191&(a=(a=a+Math.imul(E,be)|0)+Math.imul(j,pe)|0))<<13)|0;c=((i=i+Math.imul(j,be)|0)+(a>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,n=Math.imul(z,ie),a=(a=Math.imul(z,se))+Math.imul(D,ie)|0,i=Math.imul(D,se),n=n+Math.imul(U,ue)|0,a=(a=a+Math.imul(U,ce)|0)+Math.imul(I,ue)|0,i=i+Math.imul(I,ce)|0,n=n+Math.imul(K,de)|0,a=(a=a+Math.imul(K,le)|0)+Math.imul(R,de)|0,i=i+Math.imul(R,le)|0;var Te=(c+(n=n+Math.imul(P,pe)|0)|0)+((8191&(a=(a=a+Math.imul(P,be)|0)+Math.imul(C,pe)|0))<<13)|0;c=((i=i+Math.imul(C,be)|0)+(a>>>13)|0)+(Te>>>26)|0,Te&=67108863,n=Math.imul(z,ue),a=(a=Math.imul(z,ce))+Math.imul(D,ue)|0,i=Math.imul(D,ce),n=n+Math.imul(U,de)|0,a=(a=a+Math.imul(U,le)|0)+Math.imul(I,de)|0,i=i+Math.imul(I,le)|0;var Ke=(c+(n=n+Math.imul(K,pe)|0)|0)+((8191&(a=(a=a+Math.imul(K,be)|0)+Math.imul(R,pe)|0))<<13)|0;c=((i=i+Math.imul(R,be)|0)+(a>>>13)|0)+(Ke>>>26)|0,Ke&=67108863,n=Math.imul(z,de),a=(a=Math.imul(z,le))+Math.imul(D,de)|0,i=Math.imul(D,le);var Re=(c+(n=n+Math.imul(U,pe)|0)|0)+((8191&(a=(a=a+Math.imul(U,be)|0)+Math.imul(I,pe)|0))<<13)|0;c=((i=i+Math.imul(I,be)|0)+(a>>>13)|0)+(Re>>>26)|0,Re&=67108863;var Be=(c+(n=Math.imul(z,pe))|0)+((8191&(a=(a=Math.imul(z,be))+Math.imul(D,pe)|0))<<13)|0;return c=((i=Math.imul(D,be))+(a>>>13)|0)+(Be>>>26)|0,Be&=67108863,u[0]=ye,u[1]=me,u[2]=ve,u[3]=ge,u[4]=_e,u[5]=we,u[6]=ke,u[7]=xe,u[8]=Ae,u[9]=Se,u[10]=Ee,u[11]=je,u[12]=Me,u[13]=Pe,u[14]=Ce,u[15]=Te,u[16]=Ke,u[17]=Re,u[18]=Be,0!==c&&(u[19]=c,r.length++),r};function p(e,t,r){return(new b).mulp(e,t,r)}function b(e,t){this.x=e,this.y=t}Math.imul||(h=l),i.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?h(this,e,t):r<63?l(this,e,t):r<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var n=0,a=0,i=0;i>>26)|0)>>>26,s&=67108863}r.words[i]=o,n=s,s=a}return 0!==n?r.words[i]=n:r.length--,r.strip()}(this,e,t):p(this,e,t)},b.prototype.makeRBT=function(e){for(var t=new Array(e),r=i.prototype._countBits(e)-1,n=0;n>=1;return n},b.prototype.permute=function(e,t,r,n,a,i){for(var s=0;s>>=1)a++;return 1<>>=13,r[2*s+1]=8191&i,i>>>=13;for(s=2*t;s>=26,t+=a/67108864|0,t+=i>>>26,this.words[r]=67108863&i}return 0!==t&&(this.words[r]=t,this.length++),this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>a}return t}(e);if(0===t.length)return new i(1);for(var r=this,n=0;n=0);var t,r=e%26,a=(e-r)/26,i=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(t=0;t>>26-r}s&&(this.words[t]=s,this.length++)}if(0!==a){for(t=this.length-1;t>=0;t--)this.words[t+a]=this.words[t];for(t=0;t=0),a=t?(t-t%26)/26:0;var i=e%26,s=Math.min((e-i)/26,this.length),o=67108863^67108863>>>i<s)for(this.length-=s,c=0;c=0&&(0!==f||c>=a);c--){var d=0|this.words[c];this.words[c]=f<<26-i|d>>>i,f=d&o}return u&&0!==f&&(u.words[u.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(e,t,r){return n(0===this.negative),this.iushrn(e,t,r)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){n("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,a=1<=0);var t=e%26,r=(e-t)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var a=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},i.prototype.isubn=function(e){if(n("number"==typeof e),n(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[a+r]=67108863&i}for(;a>26,this.words[a+r]=67108863&i;if(0===o)return this.strip();for(n(-1===o),o=0,a=0;a>26,this.words[a]=67108863&i;return this.negative=1,this.strip()},i.prototype._wordDiv=function(e,t){var r=(this.length,e.length),n=this.clone(),a=e,s=0|a.words[a.length-1];0!==(r=26-this._countBits(s))&&(a=a.ushln(r),n.iushln(r),s=0|a.words[a.length-1]);var o,u=n.length-a.length;if("mod"!==t){(o=new i(null)).length=u+1,o.words=new Array(o.length);for(var c=0;c=0;d--){var l=67108864*(0|n.words[a.length+d])+(0|n.words[a.length+d-1]);for(l=Math.min(l/s|0,67108863),n._ishlnsubmul(a,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(a,1,d),n.isZero()||(n.negative^=1);o&&(o.words[d]=l)}return o&&o.strip(),n.strip(),"div"!==t&&0!==r&&n.iushrn(r),{div:o||null,mod:n}},i.prototype.divmod=function(e,t,r){return n(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(o=this.neg().divmod(e,t),"mod"!==t&&(a=o.div.neg()),"div"!==t&&(s=o.mod.neg(),r&&0!==s.negative&&s.iadd(e)),{div:a,mod:s}):0===this.negative&&0!==e.negative?(o=this.divmod(e.neg(),t),"mod"!==t&&(a=o.div.neg()),{div:a,mod:o.mod}):0!=(this.negative&e.negative)?(o=this.neg().divmod(e.neg(),t),"div"!==t&&(s=o.mod.neg(),r&&0!==s.negative&&s.isub(e)),{div:o.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new i(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modn(e.words[0]))}:this._wordDiv(e,t);var a,s,o},i.prototype.div=function(e){return this.divmod(e,"div",!1).div},i.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},i.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},i.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,n=e.ushrn(1),a=e.andln(1),i=r.cmp(n);return i<0||1===a&&0===i?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},i.prototype.modn=function(e){n(e<=67108863);for(var t=(1<<26)%e,r=0,a=this.length-1;a>=0;a--)r=(t*r+(0|this.words[a]))%e;return r},i.prototype.idivn=function(e){n(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var a=(0|this.words[r])+67108864*t;this.words[r]=a/e|0,t=a%e}return this.strip()},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a=new i(1),s=new i(0),o=new i(0),u=new i(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var f=r.clone(),d=t.clone();!t.isZero();){for(var l=0,h=1;0==(t.words[0]&h)&&l<26;++l,h<<=1);if(l>0)for(t.iushrn(l);l-- >0;)(a.isOdd()||s.isOdd())&&(a.iadd(f),s.isub(d)),a.iushrn(1),s.iushrn(1);for(var p=0,b=1;0==(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(o.isOdd()||u.isOdd())&&(o.iadd(f),u.isub(d)),o.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),a.isub(o),s.isub(u)):(r.isub(t),o.isub(a),u.isub(s))}return{a:o,b:u,gcd:r.iushln(c)}},i.prototype._invmp=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a,s=new i(1),o=new i(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,f=1;0==(t.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(t.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);for(var d=0,l=1;0==(r.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(r.iushrn(d);d-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);t.cmp(r)>=0?(t.isub(r),s.isub(o)):(r.isub(t),o.isub(s))}return(a=0===t.cmpn(1)?s:o).cmpn(0)<0&&a.iadd(e),a},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var n=0;t.isEven()&&r.isEven();n++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var a=t.cmp(r);if(a<0){var i=t;t=r,r=i}else if(0===a||0===r.cmpn(1))break;t.isub(r)}return r.iushln(n)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return 0==(1&this.words[0])},i.prototype.isOdd=function(){return 1==(1&this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){n("number"==typeof e);var t=e%26,r=(e-t)/26,a=1<>>26,o&=67108863,this.words[s]=o}return 0!==i&&(this.words[s]=i,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),n(e<=67108863,"Number is too big");var a=0|this.words[0];t=a===e?0:ae.length)return 1;if(this.length=0;r--){var n=0|this.words[r],a=0|e.words[r];if(n!==a){na&&(t=1);break}}return t},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new k(e)},i.prototype.toRed=function(e){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return n(!this.red,"Already a number in reduction context"),this._forceRed(e)},i.prototype.redAdd=function(e){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},i.prototype.redISub=function(e){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},i.prototype.redShl=function(e){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},i.prototype.redMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return n(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function m(e,t){this.name=e,this.p=new i(t,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function v(){m.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function g(){m.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function _(){m.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function w(){m.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=i._prime(e);this.m=t.p,this.prime=t}else n(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function x(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}m.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},m.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var n=t0?r.isub(this.p):r.strip(),r},m.prototype.split=function(e,t){e.iushrn(this.n,0,t)},m.prototype.imulK=function(e){return e.imul(this.k)},a(v,m),v.prototype.split=function(e,t){for(var r=Math.min(e.length,9),n=0;n>>22,a=i}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},v.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=a,t=n}return 0!==t&&(e.words[e.length++]=t),e},i._prime=function(e){if(y[e])return y[e];var t;if("k256"===e)t=new v;else if("p224"===e)t=new g;else if("p192"===e)t=new _;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new w}return y[e]=t,t},k.prototype._verify1=function(e){n(0===e.negative,"red works only with positives"),n(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){n(0==(e.negative|t.negative),"red works only with positives"),n(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(n(t%2==1),3===t){var r=this.m.add(new i(1)).iushrn(2);return this.pow(e,r)}for(var a=this.m.subn(1),s=0;!a.isZero()&&0===a.andln(1);)s++,a.iushrn(1);n(!a.isZero());var o=new i(1).toRed(this),u=o.redNeg(),c=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new i(2*f*f).toRed(this);0!==this.pow(f,c).cmp(u);)f.redIAdd(u);for(var d=this.pow(f,a),l=this.pow(e,a.addn(1).iushrn(1)),h=this.pow(e,a),p=s;0!==h.cmp(o);){for(var b=h,y=0;0!==b.cmp(o);y++)b=b.redSqr();n(y=0;n--){for(var c=t.words[n],f=u-1;f>=0;f--){var d=c>>f&1;a!==r[0]&&(a=this.sqr(a)),0!==d||0!==s?(s<<=1,s|=d,(4===++o||0===n&&0===f)&&(a=this.mul(a,r[s]),o=0,s=0)):o=0}u=26}return a},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},i.mont=function(e){return new x(e)},a(x,k),x.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},x.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},x.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=r.isub(n).iushrn(this.shift),i=a;return a.cmp(this.m)>=0?i=a.isub(this.m):a.cmpn(0)<0&&(i=a.iadd(this.m)),i._forceRed(this)},x.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new i(0)._forceRed(this);var r=e.mul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=r.isub(n).iushrn(this.shift),s=a;return a.cmp(this.m)>=0?s=a.isub(this.m):a.cmpn(0)<0&&(s=a.iadd(this.m)),s._forceRed(this)},x.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===t||t,this)},{buffer:"buffer"}],45:[function(e,t,r){var n;function a(e){this.rand=e}if(t.exports=function(e){return n||(n=new a(null)),n.generate(e)},t.exports.Rand=a,a.prototype.generate=function(e){return this._rand(e)},a.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),r=0;rf;)if((o=u[f++])!=o)return!0}else for(;c>f;f++)if((e||f in u)&&u[f]===r)return e||f||0;return!e&&-1}}},{"./_to-absolute-index":148,"./_to-iobject":150,"./_to-length":151}],79:[function(e,t,r){var n=e("./_ctx"),a=e("./_iobject"),i=e("./_to-object"),s=e("./_to-length"),o=e("./_array-species-create");t.exports=function(e,t){var r=1==e,u=2==e,c=3==e,f=4==e,d=6==e,l=5==e||d,h=t||o;return function(t,o,p){for(var b,y,m=i(t),v=a(m),g=n(o,p,3),_=s(v.length),w=0,k=r?h(t,_):u?h(t,0):void 0;_>w;w++)if((l||w in v)&&(y=g(b=v[w],w,m),e))if(r)k[w]=y;else if(y)switch(e){case 3:return!0;case 5:return b;case 6:return w;case 2:k.push(b)}else if(f)return!1;return d?-1:c||f?f:k}}},{"./_array-species-create":81,"./_ctx":88,"./_iobject":103,"./_to-length":151,"./_to-object":152}],80:[function(e,t,r){var n=e("./_is-object"),a=e("./_is-array"),i=e("./_wks")("species");t.exports=function(e){var t;return a(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!a(t.prototype)||(t=void 0),n(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},{"./_is-array":105,"./_is-object":107,"./_wks":158}],81:[function(e,t,r){var n=e("./_array-species-constructor");t.exports=function(e,t){return new(n(e))(t)}},{"./_array-species-constructor":80}],82:[function(e,t,r){var n=e("./_cof"),a=e("./_wks")("toStringTag"),i="Arguments"==n(function(){return arguments}());t.exports=function(e){var t,r,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(r){}}(t=Object(e),a))?r:i?n(t):"Object"==(s=n(t))&&"function"==typeof t.callee?"Arguments":s}},{"./_cof":83,"./_wks":158}],83:[function(e,t,r){var n={}.toString;t.exports=function(e){return n.call(e).slice(8,-1)}},{}],84:[function(e,t,r){"use strict";var n=e("./_redefine-all"),a=e("./_meta").getWeak,i=e("./_an-object"),s=e("./_is-object"),o=e("./_an-instance"),u=e("./_for-of"),c=e("./_array-methods"),f=e("./_has"),d=e("./_validate-collection"),l=c(5),h=c(6),p=0,b=function(e){return e._l||(e._l=new y)},y=function(){this.a=[]},m=function(e,t){return l(e.a,function(e){return e[0]===t})};y.prototype={get:function(e){var t=m(this,e);if(t)return t[1]},has:function(e){return!!m(this,e)},set:function(e,t){var r=m(this,e);r?r[1]=t:this.a.push([e,t])},delete:function(e){var t=h(this.a,function(t){return t[0]===e});return~t&&this.a.splice(t,1),!!~t}},t.exports={getConstructor:function(e,t,r,i){var c=e(function(e,n){o(e,c,t,"_i"),e._t=t,e._i=p++,e._l=void 0,null!=n&&u(n,r,e[i],e)});return n(c.prototype,{delete:function(e){if(!s(e))return!1;var r=a(e);return!0===r?b(d(this,t)).delete(e):r&&f(r,this._i)&&delete r[this._i]},has:function(e){if(!s(e))return!1;var r=a(e);return!0===r?b(d(this,t)).has(e):r&&f(r,this._i)}}),c},def:function(e,t,r){var n=a(i(t),!0);return!0===n?b(e).set(t,r):n[e._i]=r,e},ufstore:b}},{"./_an-instance":76,"./_an-object":77,"./_array-methods":79,"./_for-of":96,"./_has":98,"./_is-object":107,"./_meta":115,"./_redefine-all":136,"./_validate-collection":155}],85:[function(e,t,r){"use strict";var n=e("./_global"),a=e("./_export"),i=e("./_meta"),s=e("./_fails"),o=e("./_hide"),u=e("./_redefine-all"),c=e("./_for-of"),f=e("./_an-instance"),d=e("./_is-object"),l=e("./_set-to-string-tag"),h=e("./_object-dp").f,p=e("./_array-methods")(0),b=e("./_descriptors");t.exports=function(e,t,r,y,m,v){var g=n[e],_=g,w=m?"set":"add",k=_&&_.prototype,x={};return b&&"function"==typeof _&&(v||k.forEach&&!s(function(){(new _).entries().next()}))?(_=t(function(t,r){f(t,_,e,"_c"),t._c=new g,null!=r&&c(r,m,t[w],t)}),p("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(e){var t="add"==e||"set"==e;e in k&&(!v||"clear"!=e)&&o(_.prototype,e,function(r,n){if(f(this,_,e),!t&&v&&!d(r))return"get"==e&&void 0;var a=this._c[e](0===r?0:r,n);return t?this:a})}),v||h(_.prototype,"size",{get:function(){return this._c.size}})):(_=y.getConstructor(t,e,m,w),u(_.prototype,r),i.NEED=!0),l(_,e),x[e]=_,a(a.G+a.W+a.F,x),v||y.setStrong(_,e,m),_}},{"./_an-instance":76,"./_array-methods":79,"./_descriptors":90,"./_export":94,"./_fails":95,"./_for-of":96,"./_global":97,"./_hide":99,"./_is-object":107,"./_meta":115,"./_object-dp":120,"./_redefine-all":136,"./_set-to-string-tag":142}],86:[function(e,t,r){var n=t.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},{}],87:[function(e,t,r){"use strict";var n=e("./_object-dp"),a=e("./_property-desc");t.exports=function(e,t,r){t in e?n.f(e,t,a(0,r)):e[t]=r}},{"./_object-dp":120,"./_property-desc":135}],88:[function(e,t,r){var n=e("./_a-function");t.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,a){return e.call(t,r,n,a)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":74}],89:[function(e,t,r){t.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},{}],90:[function(e,t,r){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":95}],91:[function(e,t,r){var n=e("./_is-object"),a=e("./_global").document,i=n(a)&&n(a.createElement);t.exports=function(e){return i?a.createElement(e):{}}},{"./_global":97,"./_is-object":107}],92:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],93:[function(e,t,r){var n=e("./_object-keys"),a=e("./_object-gops"),i=e("./_object-pie");t.exports=function(e){var t=n(e),r=a.f;if(r)for(var s,o=r(e),u=i.f,c=0;o.length>c;)u.call(e,s=o[c++])&&t.push(s);return t}},{"./_object-gops":125,"./_object-keys":128,"./_object-pie":129}],94:[function(e,t,r){var n=e("./_global"),a=e("./_core"),i=e("./_ctx"),s=e("./_hide"),o=function(e,t,r){var u,c,f,d=e&o.F,l=e&o.G,h=e&o.S,p=e&o.P,b=e&o.B,y=e&o.W,m=l?a:a[t]||(a[t]={}),v=m.prototype,g=l?n:h?n[t]:(n[t]||{}).prototype;for(u in l&&(r=t),r)(c=!d&&g&&void 0!==g[u])&&u in m||(f=c?g[u]:r[u],m[u]=l&&"function"!=typeof g[u]?r[u]:b&&c?i(f,n):y&&g[u]==f?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):p&&"function"==typeof f?i(Function.call,f):f,p&&((m.virtual||(m.virtual={}))[u]=f,e&o.R&&v&&!v[u]&&s(v,u,f)))};o.F=1,o.G=2,o.S=4,o.P=8,o.B=16,o.W=32,o.U=64,o.R=128,t.exports=o},{"./_core":86,"./_ctx":88,"./_global":97,"./_hide":99}],95:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(t){return!0}}},{}],96:[function(e,t,r){var n=e("./_ctx"),a=e("./_iter-call"),i=e("./_is-array-iter"),s=e("./_an-object"),o=e("./_to-length"),u=e("./core.get-iterator-method"),c={},f={};(r=t.exports=function(e,t,r,d,l){var h,p,b,y,m=l?function(){return e}:u(e),v=n(r,d,t?2:1),g=0;if("function"!=typeof m)throw TypeError(e+" is not iterable!");if(i(m)){for(h=o(e.length);h>g;g++)if((y=t?v(s(p=e[g])[0],p[1]):v(e[g]))===c||y===f)return y}else for(b=m.call(e);!(p=b.next()).done;)if((y=a(b,v,p.value,t))===c||y===f)return y}).BREAK=c,r.RETURN=f},{"./_an-object":77,"./_ctx":88,"./_is-array-iter":104,"./_iter-call":108,"./_to-length":151,"./core.get-iterator-method":159}],97:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],98:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],99:[function(e,t,r){var n=e("./_object-dp"),a=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return n.f(e,t,a(1,r))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":90,"./_object-dp":120,"./_property-desc":135}],100:[function(e,t,r){var n=e("./_global").document;t.exports=n&&n.documentElement},{"./_global":97}],101:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":90,"./_dom-create":91,"./_fails":95}],102:[function(e,t,r){t.exports=function(e,t,r){var n=void 0===r;switch(t.length){case 0:return n?e():e.call(r);case 1:return n?e(t[0]):e.call(r,t[0]);case 2:return n?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return n?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return n?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3])}return e.apply(r,t)}},{}],103:[function(e,t,r){var n=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./_cof":83}],104:[function(e,t,r){var n=e("./_iterators"),a=e("./_wks")("iterator"),i=Array.prototype;t.exports=function(e){return void 0!==e&&(n.Array===e||i[a]===e)}},{"./_iterators":113,"./_wks":158}],105:[function(e,t,r){var n=e("./_cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./_cof":83}],106:[function(e,t,r){var n=e("./_is-object"),a=Math.floor;t.exports=function(e){return!n(e)&&isFinite(e)&&a(e)===e}},{"./_is-object":107}],107:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],108:[function(e,t,r){var n=e("./_an-object");t.exports=function(e,t,r,a){try{return a?t(n(r)[0],r[1]):t(r)}catch(s){var i=e.return;throw void 0!==i&&n(i.call(e)),s}}},{"./_an-object":77}],109:[function(e,t,r){"use strict";var n=e("./_object-create"),a=e("./_property-desc"),i=e("./_set-to-string-tag"),s={};e("./_hide")(s,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,r){e.prototype=n(s,{next:a(1,r)}),i(e,t+" Iterator")}},{"./_hide":99,"./_object-create":119,"./_property-desc":135,"./_set-to-string-tag":142,"./_wks":158}],110:[function(e,t,r){"use strict";var n=e("./_library"),a=e("./_export"),i=e("./_redefine"),s=e("./_hide"),o=e("./_has"),u=e("./_iterators"),c=e("./_iter-create"),f=e("./_set-to-string-tag"),d=e("./_object-gpo"),l=e("./_wks")("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(e,t,r,b,y,m,v){c(r,t,b);var g,_,w,k=function(e){if(!h&&e in E)return E[e];switch(e){case"keys":case"values":return function(){return new r(this,e)}}return function(){return new r(this,e)}},x=t+" Iterator",A="values"==y,S=!1,E=e.prototype,j=E[l]||E["@@iterator"]||y&&E[y],M=!h&&j||k(y),P=y?A?k("entries"):M:void 0,C="Array"==t&&E.entries||j;if(C&&(w=d(C.call(new e)))!==Object.prototype&&w.next&&(f(w,x,!0),n||o(w,l)||s(w,l,p)),A&&j&&"values"!==j.name&&(S=!0,M=function(){return j.call(this)}),n&&!v||!h&&!S&&E[l]||s(E,l,M),u[t]=M,u[x]=p,y)if(g={values:A?M:k("values"),keys:m?M:k("keys"),entries:P},v)for(_ in g)_ in E||i(E,_,g[_]);else a(a.P+a.F*(h||S),t,g);return g}},{"./_export":94,"./_has":98,"./_hide":99,"./_iter-create":109,"./_iterators":113,"./_library":114,"./_object-gpo":126,"./_redefine":137,"./_set-to-string-tag":142,"./_wks":158}],111:[function(e,t,r){var n=e("./_wks")("iterator"),a=!1;try{var i=[7][n]();i.return=function(){a=!0},Array.from(i,function(){throw 2})}catch(s){}t.exports=function(e,t){if(!t&&!a)return!1;var r=!1;try{var i=[7],o=i[n]();o.next=function(){return{done:r=!0}},i[n]=function(){return o},e(i)}catch(s){}return r}},{"./_wks":158}],112:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],113:[function(e,t,r){t.exports={}},{}],114:[function(e,t,r){t.exports=!0},{}],115:[function(e,t,r){var n=e("./_uid")("meta"),a=e("./_is-object"),i=e("./_has"),s=e("./_object-dp").f,o=0,u=Object.isExtensible||function(){return!0},c=!e("./_fails")(function(){return u(Object.preventExtensions({}))}),f=function(e){s(e,n,{value:{i:"O"+ ++o,w:{}}})},d=t.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!a(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,n)){if(!u(e))return"F";if(!t)return"E";f(e)}return e[n].i},getWeak:function(e,t){if(!i(e,n)){if(!u(e))return!0;if(!t)return!1;f(e)}return e[n].w},onFreeze:function(e){return c&&d.NEED&&u(e)&&!i(e,n)&&f(e),e}}},{"./_fails":95,"./_has":98,"./_is-object":107,"./_object-dp":120,"./_uid":154}],116:[function(e,t,r){var n=e("./_global"),a=e("./_task").set,i=n.MutationObserver||n.WebKitMutationObserver,s=n.process,o=n.Promise,u="process"==e("./_cof")(s);t.exports=function(){var e,t,r,c=function(){var n,a;for(u&&(n=s.domain)&&n.exit();e;){a=e.fn,e=e.next;try{a()}catch(i){throw e?r():t=void 0,i}}t=void 0,n&&n.enter()};if(u)r=function(){s.nextTick(c)};else if(!i||n.navigator&&n.navigator.standalone)if(o&&o.resolve){var f=o.resolve();r=function(){f.then(c)}}else r=function(){a.call(n,c)};else{var d=!0,l=document.createTextNode("");new i(c).observe(l,{characterData:!0}),r=function(){l.data=d=!d}}return function(n){var a={fn:n,next:void 0};t&&(t.next=a),e||(e=a,r()),t=a}}},{"./_cof":83,"./_global":97,"./_task":147}],117:[function(e,t,r){"use strict";var n=e("./_a-function");function a(e){var t,r;this.promise=new e(function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n}),this.resolve=n(t),this.reject=n(r)}t.exports.f=function(e){return new a(e)}},{"./_a-function":74}],118:[function(e,t,r){"use strict";var n=e("./_object-keys"),a=e("./_object-gops"),i=e("./_object-pie"),s=e("./_to-object"),o=e("./_iobject"),u=Object.assign;t.exports=!u||e("./_fails")(function(){var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach(function(e){t[e]=e}),7!=u({},e)[r]||Object.keys(u({},t)).join("")!=n})?function(e,t){for(var r=s(e),u=arguments.length,c=1,f=a.f,d=i.f;u>c;)for(var l,h=o(arguments[c++]),p=f?n(h).concat(f(h)):n(h),b=p.length,y=0;b>y;)d.call(h,l=p[y++])&&(r[l]=h[l]);return r}:u},{"./_fails":95,"./_iobject":103,"./_object-gops":125,"./_object-keys":128,"./_object-pie":129,"./_to-object":152}],119:[function(e,t,r){var n=e("./_an-object"),a=e("./_object-dps"),i=e("./_enum-bug-keys"),s=e("./_shared-key")("IE_PROTO"),o=function(){},u=function(){var t,r=e("./_dom-create")("iframe"),n=i.length;for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",(t=r.contentWindow.document).open(),t.write("