{"version":3,"sources":["../node_modules/diffie-hellman/lib/generatePrime.js","../node_modules/diffie-hellman/browser.js","../node_modules/diffie-hellman/lib/dh.js"],"names":["randomBytes","require","module","exports","findPrime","simpleSieve","fermatTest","BN","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","primes","_getPrimes","res","i","k","sqrt","Math","ceil","j","p","length","modn","cmpn","red","mont","toRed","redPow","subn","fromRed","bits","gen","num","n2","bitLength","ishrn","isEven","iadd","testn","cmp","mod","shrn","test","generatePrime","DH","ENCODINGS","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","prime","Buffer","createDiffieHellman","DiffieHellman","enc","generator","genc","isBuffer","undefined","SEVEN","setPublicKey","pub","this","_pub","setPrivateKey","priv","_priv","primeCache","malleable","setGenerator","__prime","_prime","_primeLen","_primeCode","formatReturnValue","bn","buf","toArray","toString","Object","defineProperty","prototype","enumerable","get","hex","join","rem","error","checkPrime","__gen","generateKeys","_gen","getPublicKey","computeSecret","other","secret","out","getPrime","front","fill","concat","getPrivateKey","getGenerator"],"mappings":"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","file":"static/js/diffie-hellman.a3799334.chunk.js","sourcesContent":["var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n"],"sourceRoot":""}