mirror of
https://github.com/idanoo/GoScrobble
synced 2025-07-02 06:02:19 +00:00
0.2.0 - Mid migration
This commit is contained in:
parent
139e6a915e
commit
7e38fdbd7d
42393 changed files with 5358157 additions and 62 deletions
10
web/node_modules/diffie-hellman/.travis.yml
generated
vendored
Normal file
10
web/node_modules/diffie-hellman/.travis.yml
generated
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
language: node_js
|
||||
node_js:
|
||||
- "0.11"
|
||||
- "0.10"
|
||||
- "0.12"
|
||||
- "1"
|
||||
- "2"
|
||||
- "3"
|
||||
- "4"
|
||||
sudo: false
|
19
web/node_modules/diffie-hellman/LICENSE
generated
vendored
Normal file
19
web/node_modules/diffie-hellman/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
Copyright (c) 2017 Calvin Metcalf
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
42
web/node_modules/diffie-hellman/browser.js
generated
vendored
Normal file
42
web/node_modules/diffie-hellman/browser.js
generated
vendored
Normal file
|
@ -0,0 +1,42 @@
|
|||
var generatePrime = require('./lib/generatePrime')
|
||||
var primes = require('./lib/primes.json')
|
||||
|
||||
var DH = require('./lib/dh')
|
||||
|
||||
function getDiffieHellman (mod) {
|
||||
var prime = new Buffer(primes[mod].prime, 'hex')
|
||||
var gen = new Buffer(primes[mod].gen, 'hex')
|
||||
|
||||
return new DH(prime, gen)
|
||||
}
|
||||
|
||||
var ENCODINGS = {
|
||||
'binary': true, 'hex': true, 'base64': true
|
||||
}
|
||||
|
||||
function createDiffieHellman (prime, enc, generator, genc) {
|
||||
if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {
|
||||
return createDiffieHellman(prime, 'binary', enc, generator)
|
||||
}
|
||||
|
||||
enc = enc || 'binary'
|
||||
genc = genc || 'binary'
|
||||
generator = generator || new Buffer([2])
|
||||
|
||||
if (!Buffer.isBuffer(generator)) {
|
||||
generator = new Buffer(generator, genc)
|
||||
}
|
||||
|
||||
if (typeof prime === 'number') {
|
||||
return new DH(generatePrime(prime, generator), generator, true)
|
||||
}
|
||||
|
||||
if (!Buffer.isBuffer(prime)) {
|
||||
prime = new Buffer(prime, enc)
|
||||
}
|
||||
|
||||
return new DH(prime, generator, true)
|
||||
}
|
||||
|
||||
exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman
|
||||
exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman
|
10
web/node_modules/diffie-hellman/index.js
generated
vendored
Normal file
10
web/node_modules/diffie-hellman/index.js
generated
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
var crypto = require('crypto')
|
||||
|
||||
// getDiffieHellman
|
||||
exports.DiffieHellmanGroup = crypto.DiffieHellmanGroup
|
||||
exports.createDiffieHellmanGroup = crypto.createDiffieHellmanGroup
|
||||
exports.getDiffieHellman = crypto.getDiffieHellman
|
||||
|
||||
// createDiffieHellman
|
||||
exports.createDiffieHellman = crypto.createDiffieHellman
|
||||
exports.DiffieHellman = crypto.DiffieHellman
|
164
web/node_modules/diffie-hellman/lib/dh.js
generated
vendored
Normal file
164
web/node_modules/diffie-hellman/lib/dh.js
generated
vendored
Normal file
|
@ -0,0 +1,164 @@
|
|||
var BN = require('bn.js');
|
||||
var MillerRabin = require('miller-rabin');
|
||||
var millerRabin = new MillerRabin();
|
||||
var TWENTYFOUR = new BN(24);
|
||||
var ELEVEN = new BN(11);
|
||||
var TEN = new BN(10);
|
||||
var THREE = new BN(3);
|
||||
var SEVEN = new BN(7);
|
||||
var primes = require('./generatePrime');
|
||||
var randomBytes = require('randombytes');
|
||||
module.exports = DH;
|
||||
|
||||
function setPublicKey(pub, enc) {
|
||||
enc = enc || 'utf8';
|
||||
if (!Buffer.isBuffer(pub)) {
|
||||
pub = new Buffer(pub, enc);
|
||||
}
|
||||
this._pub = new BN(pub);
|
||||
return this;
|
||||
}
|
||||
|
||||
function setPrivateKey(priv, enc) {
|
||||
enc = enc || 'utf8';
|
||||
if (!Buffer.isBuffer(priv)) {
|
||||
priv = new Buffer(priv, enc);
|
||||
}
|
||||
this._priv = new BN(priv);
|
||||
return this;
|
||||
}
|
||||
|
||||
var primeCache = {};
|
||||
function checkPrime(prime, generator) {
|
||||
var gen = generator.toString('hex');
|
||||
var hex = [gen, prime.toString(16)].join('_');
|
||||
if (hex in primeCache) {
|
||||
return primeCache[hex];
|
||||
}
|
||||
var error = 0;
|
||||
|
||||
if (prime.isEven() ||
|
||||
!primes.simpleSieve ||
|
||||
!primes.fermatTest(prime) ||
|
||||
!millerRabin.test(prime)) {
|
||||
//not a prime so +1
|
||||
error += 1;
|
||||
|
||||
if (gen === '02' || gen === '05') {
|
||||
// we'd be able to check the generator
|
||||
// it would fail so +8
|
||||
error += 8;
|
||||
} else {
|
||||
//we wouldn't be able to test the generator
|
||||
// so +4
|
||||
error += 4;
|
||||
}
|
||||
primeCache[hex] = error;
|
||||
return error;
|
||||
}
|
||||
if (!millerRabin.test(prime.shrn(1))) {
|
||||
//not a safe prime
|
||||
error += 2;
|
||||
}
|
||||
var rem;
|
||||
switch (gen) {
|
||||
case '02':
|
||||
if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {
|
||||
// unsuidable generator
|
||||
error += 8;
|
||||
}
|
||||
break;
|
||||
case '05':
|
||||
rem = prime.mod(TEN);
|
||||
if (rem.cmp(THREE) && rem.cmp(SEVEN)) {
|
||||
// prime mod 10 needs to equal 3 or 7
|
||||
error += 8;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
error += 4;
|
||||
}
|
||||
primeCache[hex] = error;
|
||||
return error;
|
||||
}
|
||||
|
||||
function DH(prime, generator, malleable) {
|
||||
this.setGenerator(generator);
|
||||
this.__prime = new BN(prime);
|
||||
this._prime = BN.mont(this.__prime);
|
||||
this._primeLen = prime.length;
|
||||
this._pub = undefined;
|
||||
this._priv = undefined;
|
||||
this._primeCode = undefined;
|
||||
if (malleable) {
|
||||
this.setPublicKey = setPublicKey;
|
||||
this.setPrivateKey = setPrivateKey;
|
||||
} else {
|
||||
this._primeCode = 8;
|
||||
}
|
||||
}
|
||||
Object.defineProperty(DH.prototype, 'verifyError', {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
if (typeof this._primeCode !== 'number') {
|
||||
this._primeCode = checkPrime(this.__prime, this.__gen);
|
||||
}
|
||||
return this._primeCode;
|
||||
}
|
||||
});
|
||||
DH.prototype.generateKeys = function () {
|
||||
if (!this._priv) {
|
||||
this._priv = new BN(randomBytes(this._primeLen));
|
||||
}
|
||||
this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();
|
||||
return this.getPublicKey();
|
||||
};
|
||||
|
||||
DH.prototype.computeSecret = function (other) {
|
||||
other = new BN(other);
|
||||
other = other.toRed(this._prime);
|
||||
var secret = other.redPow(this._priv).fromRed();
|
||||
var out = new Buffer(secret.toArray());
|
||||
var prime = this.getPrime();
|
||||
if (out.length < prime.length) {
|
||||
var front = new Buffer(prime.length - out.length);
|
||||
front.fill(0);
|
||||
out = Buffer.concat([front, out]);
|
||||
}
|
||||
return out;
|
||||
};
|
||||
|
||||
DH.prototype.getPublicKey = function getPublicKey(enc) {
|
||||
return formatReturnValue(this._pub, enc);
|
||||
};
|
||||
|
||||
DH.prototype.getPrivateKey = function getPrivateKey(enc) {
|
||||
return formatReturnValue(this._priv, enc);
|
||||
};
|
||||
|
||||
DH.prototype.getPrime = function (enc) {
|
||||
return formatReturnValue(this.__prime, enc);
|
||||
};
|
||||
|
||||
DH.prototype.getGenerator = function (enc) {
|
||||
return formatReturnValue(this._gen, enc);
|
||||
};
|
||||
|
||||
DH.prototype.setGenerator = function (gen, enc) {
|
||||
enc = enc || 'utf8';
|
||||
if (!Buffer.isBuffer(gen)) {
|
||||
gen = new Buffer(gen, enc);
|
||||
}
|
||||
this.__gen = gen;
|
||||
this._gen = new BN(gen);
|
||||
return this;
|
||||
};
|
||||
|
||||
function formatReturnValue(bn, enc) {
|
||||
var buf = new Buffer(bn.toArray());
|
||||
if (!enc) {
|
||||
return buf;
|
||||
} else {
|
||||
return buf.toString(enc);
|
||||
}
|
||||
}
|
105
web/node_modules/diffie-hellman/lib/generatePrime.js
generated
vendored
Normal file
105
web/node_modules/diffie-hellman/lib/generatePrime.js
generated
vendored
Normal file
|
@ -0,0 +1,105 @@
|
|||
var randomBytes = require('randombytes');
|
||||
module.exports = findPrime;
|
||||
findPrime.simpleSieve = simpleSieve;
|
||||
findPrime.fermatTest = fermatTest;
|
||||
var BN = require('bn.js');
|
||||
var TWENTYFOUR = new BN(24);
|
||||
var MillerRabin = require('miller-rabin');
|
||||
var millerRabin = new MillerRabin();
|
||||
var ONE = new BN(1);
|
||||
var TWO = new BN(2);
|
||||
var FIVE = new BN(5);
|
||||
var SIXTEEN = new BN(16);
|
||||
var EIGHT = new BN(8);
|
||||
var TEN = new BN(10);
|
||||
var THREE = new BN(3);
|
||||
var SEVEN = new BN(7);
|
||||
var ELEVEN = new BN(11);
|
||||
var FOUR = new BN(4);
|
||||
var TWELVE = new BN(12);
|
||||
var primes = null;
|
||||
|
||||
function _getPrimes() {
|
||||
if (primes !== null)
|
||||
return primes;
|
||||
|
||||
var limit = 0x100000;
|
||||
var res = [];
|
||||
res[0] = 2;
|
||||
for (var i = 1, k = 3; k < limit; k += 2) {
|
||||
var sqrt = Math.ceil(Math.sqrt(k));
|
||||
for (var j = 0; j < i && res[j] <= sqrt; j++)
|
||||
if (k % res[j] === 0)
|
||||
break;
|
||||
|
||||
if (i !== j && res[j] <= sqrt)
|
||||
continue;
|
||||
|
||||
res[i++] = k;
|
||||
}
|
||||
primes = res;
|
||||
return res;
|
||||
}
|
||||
|
||||
function simpleSieve(p) {
|
||||
var primes = _getPrimes();
|
||||
|
||||
for (var i = 0; i < primes.length; i++)
|
||||
if (p.modn(primes[i]) === 0) {
|
||||
if (p.cmpn(primes[i]) === 0) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function fermatTest(p) {
|
||||
var red = BN.mont(p);
|
||||
return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;
|
||||
}
|
||||
|
||||
function findPrime(bits, gen) {
|
||||
if (bits < 16) {
|
||||
// this is what openssl does
|
||||
if (gen === 2 || gen === 5) {
|
||||
return new BN([0x8c, 0x7b]);
|
||||
} else {
|
||||
return new BN([0x8c, 0x27]);
|
||||
}
|
||||
}
|
||||
gen = new BN(gen);
|
||||
|
||||
var num, n2;
|
||||
|
||||
while (true) {
|
||||
num = new BN(randomBytes(Math.ceil(bits / 8)));
|
||||
while (num.bitLength() > bits) {
|
||||
num.ishrn(1);
|
||||
}
|
||||
if (num.isEven()) {
|
||||
num.iadd(ONE);
|
||||
}
|
||||
if (!num.testn(1)) {
|
||||
num.iadd(TWO);
|
||||
}
|
||||
if (!gen.cmp(TWO)) {
|
||||
while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {
|
||||
num.iadd(FOUR);
|
||||
}
|
||||
} else if (!gen.cmp(FIVE)) {
|
||||
while (num.mod(TEN).cmp(THREE)) {
|
||||
num.iadd(FOUR);
|
||||
}
|
||||
}
|
||||
n2 = num.shrn(1);
|
||||
if (simpleSieve(n2) && simpleSieve(num) &&
|
||||
fermatTest(n2) && fermatTest(num) &&
|
||||
millerRabin.test(n2) && millerRabin.test(num)) {
|
||||
return num;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
34
web/node_modules/diffie-hellman/lib/primes.json
generated
vendored
Normal file
34
web/node_modules/diffie-hellman/lib/primes.json
generated
vendored
Normal file
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"modp1": {
|
||||
"gen": "02",
|
||||
"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"
|
||||
},
|
||||
"modp2": {
|
||||
"gen": "02",
|
||||
"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"
|
||||
},
|
||||
"modp5": {
|
||||
"gen": "02",
|
||||
"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"
|
||||
},
|
||||
"modp14": {
|
||||
"gen": "02",
|
||||
"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"
|
||||
},
|
||||
"modp15": {
|
||||
"gen": "02",
|
||||
"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"
|
||||
},
|
||||
"modp16": {
|
||||
"gen": "02",
|
||||
"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"
|
||||
},
|
||||
"modp17": {
|
||||
"gen": "02",
|
||||
"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"
|
||||
},
|
||||
"modp18": {
|
||||
"gen": "02",
|
||||
"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"
|
||||
}
|
||||
}
|
19
web/node_modules/diffie-hellman/node_modules/bn.js/LICENSE
generated
vendored
Normal file
19
web/node_modules/diffie-hellman/node_modules/bn.js/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
Copyright Fedor Indutny, 2015.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
200
web/node_modules/diffie-hellman/node_modules/bn.js/README.md
generated
vendored
Normal file
200
web/node_modules/diffie-hellman/node_modules/bn.js/README.md
generated
vendored
Normal file
|
@ -0,0 +1,200 @@
|
|||
# <img src="./logo.png" alt="bn.js" width="160" height="160" />
|
||||
|
||||
> BigNum in pure javascript
|
||||
|
||||
[](http://travis-ci.org/indutny/bn.js)
|
||||
|
||||
## Install
|
||||
`npm install --save bn.js`
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
const BN = require('bn.js');
|
||||
|
||||
var a = new BN('dead', 16);
|
||||
var b = new BN('101010', 2);
|
||||
|
||||
var res = a.add(b);
|
||||
console.log(res.toString(10)); // 57047
|
||||
```
|
||||
|
||||
**Note**: decimals are not supported in this library.
|
||||
|
||||
## Notation
|
||||
|
||||
### Prefixes
|
||||
|
||||
There are several prefixes to instructions that affect the way the work. Here
|
||||
is the list of them in the order of appearance in the function name:
|
||||
|
||||
* `i` - perform operation in-place, storing the result in the host object (on
|
||||
which the method was invoked). Might be used to avoid number allocation costs
|
||||
* `u` - unsigned, ignore the sign of operands when performing operation, or
|
||||
always return positive value. Second case applies to reduction operations
|
||||
like `mod()`. In such cases if the result will be negative - modulo will be
|
||||
added to the result to make it positive
|
||||
|
||||
### Postfixes
|
||||
|
||||
The only available postfix at the moment is:
|
||||
|
||||
* `n` - which means that the argument of the function must be a plain JavaScript
|
||||
Number. Decimals are not supported.
|
||||
|
||||
### Examples
|
||||
|
||||
* `a.iadd(b)` - perform addition on `a` and `b`, storing the result in `a`
|
||||
* `a.umod(b)` - reduce `a` modulo `b`, returning positive value
|
||||
* `a.iushln(13)` - shift bits of `a` left by 13
|
||||
|
||||
## Instructions
|
||||
|
||||
Prefixes/postfixes are put in parens at the of the line. `endian` - could be
|
||||
either `le` (little-endian) or `be` (big-endian).
|
||||
|
||||
### Utilities
|
||||
|
||||
* `a.clone()` - clone number
|
||||
* `a.toString(base, length)` - convert to base-string and pad with zeroes
|
||||
* `a.toNumber()` - convert to Javascript Number (limited to 53 bits)
|
||||
* `a.toJSON()` - convert to JSON compatible hex string (alias of `toString(16)`)
|
||||
* `a.toArray(endian, length)` - convert to byte `Array`, and optionally zero
|
||||
pad to length, throwing if already exceeding
|
||||
* `a.toArrayLike(type, endian, length)` - convert to an instance of `type`,
|
||||
which must behave like an `Array`
|
||||
* `a.toBuffer(endian, length)` - convert to Node.js Buffer (if available). For
|
||||
compatibility with browserify and similar tools, use this instead:
|
||||
`a.toArrayLike(Buffer, endian, length)`
|
||||
* `a.bitLength()` - get number of bits occupied
|
||||
* `a.zeroBits()` - return number of less-significant consequent zero bits
|
||||
(example: `1010000` has 4 zero bits)
|
||||
* `a.byteLength()` - return number of bytes occupied
|
||||
* `a.isNeg()` - true if the number is negative
|
||||
* `a.isEven()` - no comments
|
||||
* `a.isOdd()` - no comments
|
||||
* `a.isZero()` - no comments
|
||||
* `a.cmp(b)` - compare numbers and return `-1` (a `<` b), `0` (a `==` b), or `1` (a `>` b)
|
||||
depending on the comparison result (`ucmp`, `cmpn`)
|
||||
* `a.lt(b)` - `a` less than `b` (`n`)
|
||||
* `a.lte(b)` - `a` less than or equals `b` (`n`)
|
||||
* `a.gt(b)` - `a` greater than `b` (`n`)
|
||||
* `a.gte(b)` - `a` greater than or equals `b` (`n`)
|
||||
* `a.eq(b)` - `a` equals `b` (`n`)
|
||||
* `a.toTwos(width)` - convert to two's complement representation, where `width` is bit width
|
||||
* `a.fromTwos(width)` - convert from two's complement representation, where `width` is the bit width
|
||||
* `BN.isBN(object)` - returns true if the supplied `object` is a BN.js instance
|
||||
|
||||
### Arithmetics
|
||||
|
||||
* `a.neg()` - negate sign (`i`)
|
||||
* `a.abs()` - absolute value (`i`)
|
||||
* `a.add(b)` - addition (`i`, `n`, `in`)
|
||||
* `a.sub(b)` - subtraction (`i`, `n`, `in`)
|
||||
* `a.mul(b)` - multiply (`i`, `n`, `in`)
|
||||
* `a.sqr()` - square (`i`)
|
||||
* `a.pow(b)` - raise `a` to the power of `b`
|
||||
* `a.div(b)` - divide (`divn`, `idivn`)
|
||||
* `a.mod(b)` - reduct (`u`, `n`) (but no `umodn`)
|
||||
* `a.divRound(b)` - rounded division
|
||||
|
||||
### Bit operations
|
||||
|
||||
* `a.or(b)` - or (`i`, `u`, `iu`)
|
||||
* `a.and(b)` - and (`i`, `u`, `iu`, `andln`) (NOTE: `andln` is going to be replaced
|
||||
with `andn` in future)
|
||||
* `a.xor(b)` - xor (`i`, `u`, `iu`)
|
||||
* `a.setn(b)` - set specified bit to `1`
|
||||
* `a.shln(b)` - shift left (`i`, `u`, `iu`)
|
||||
* `a.shrn(b)` - shift right (`i`, `u`, `iu`)
|
||||
* `a.testn(b)` - test if specified bit is set
|
||||
* `a.maskn(b)` - clear bits with indexes higher or equal to `b` (`i`)
|
||||
* `a.bincn(b)` - add `1 << b` to the number
|
||||
* `a.notn(w)` - not (for the width specified by `w`) (`i`)
|
||||
|
||||
### Reduction
|
||||
|
||||
* `a.gcd(b)` - GCD
|
||||
* `a.egcd(b)` - Extended GCD results (`{ a: ..., b: ..., gcd: ... }`)
|
||||
* `a.invm(b)` - inverse `a` modulo `b`
|
||||
|
||||
## Fast reduction
|
||||
|
||||
When doing lots of reductions using the same modulo, it might be beneficial to
|
||||
use some tricks: like [Montgomery multiplication][0], or using special algorithm
|
||||
for [Mersenne Prime][1].
|
||||
|
||||
### Reduction context
|
||||
|
||||
To enable this tricks one should create a reduction context:
|
||||
|
||||
```js
|
||||
var red = BN.red(num);
|
||||
```
|
||||
where `num` is just a BN instance.
|
||||
|
||||
Or:
|
||||
|
||||
```js
|
||||
var red = BN.red(primeName);
|
||||
```
|
||||
|
||||
Where `primeName` is either of these [Mersenne Primes][1]:
|
||||
|
||||
* `'k256'`
|
||||
* `'p224'`
|
||||
* `'p192'`
|
||||
* `'p25519'`
|
||||
|
||||
Or:
|
||||
|
||||
```js
|
||||
var red = BN.mont(num);
|
||||
```
|
||||
|
||||
To reduce numbers with [Montgomery trick][0]. `.mont()` is generally faster than
|
||||
`.red(num)`, but slower than `BN.red(primeName)`.
|
||||
|
||||
### Converting numbers
|
||||
|
||||
Before performing anything in reduction context - numbers should be converted
|
||||
to it. Usually, this means that one should:
|
||||
|
||||
* Convert inputs to reducted ones
|
||||
* Operate on them in reduction context
|
||||
* Convert outputs back from the reduction context
|
||||
|
||||
Here is how one may convert numbers to `red`:
|
||||
|
||||
```js
|
||||
var redA = a.toRed(red);
|
||||
```
|
||||
Where `red` is a reduction context created using instructions above
|
||||
|
||||
Here is how to convert them back:
|
||||
|
||||
```js
|
||||
var a = redA.fromRed();
|
||||
```
|
||||
|
||||
### Red instructions
|
||||
|
||||
Most of the instructions from the very start of this readme have their
|
||||
counterparts in red context:
|
||||
|
||||
* `a.redAdd(b)`, `a.redIAdd(b)`
|
||||
* `a.redSub(b)`, `a.redISub(b)`
|
||||
* `a.redShl(num)`
|
||||
* `a.redMul(b)`, `a.redIMul(b)`
|
||||
* `a.redSqr()`, `a.redISqr()`
|
||||
* `a.redSqrt()` - square root modulo reduction context's prime
|
||||
* `a.redInvm()` - modular inverse of the number
|
||||
* `a.redNeg()`
|
||||
* `a.redPow(b)` - modular exponentiation
|
||||
|
||||
## LICENSE
|
||||
|
||||
This software is licensed under the MIT License.
|
||||
|
||||
[0]: https://en.wikipedia.org/wiki/Montgomery_modular_multiplication
|
||||
[1]: https://en.wikipedia.org/wiki/Mersenne_prime
|
3446
web/node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js
generated
vendored
Normal file
3446
web/node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
36
web/node_modules/diffie-hellman/node_modules/bn.js/package.json
generated
vendored
Normal file
36
web/node_modules/diffie-hellman/node_modules/bn.js/package.json
generated
vendored
Normal file
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"name": "bn.js",
|
||||
"version": "4.12.0",
|
||||
"description": "Big number implementation in pure javascript",
|
||||
"main": "lib/bn.js",
|
||||
"scripts": {
|
||||
"lint": "semistandard",
|
||||
"unit": "mocha --reporter=spec test/*-test.js",
|
||||
"test": "npm run lint && npm run unit"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git@github.com:indutny/bn.js"
|
||||
},
|
||||
"keywords": [
|
||||
"BN",
|
||||
"BigNum",
|
||||
"Big number",
|
||||
"Modulo",
|
||||
"Montgomery"
|
||||
],
|
||||
"author": "Fedor Indutny <fedor@indutny.com>",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/indutny/bn.js/issues"
|
||||
},
|
||||
"homepage": "https://github.com/indutny/bn.js",
|
||||
"browser": {
|
||||
"buffer": false
|
||||
},
|
||||
"devDependencies": {
|
||||
"istanbul": "^0.3.5",
|
||||
"mocha": "^2.1.0",
|
||||
"semistandard": "^7.0.4"
|
||||
}
|
||||
}
|
35
web/node_modules/diffie-hellman/package.json
generated
vendored
Normal file
35
web/node_modules/diffie-hellman/package.json
generated
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"name": "diffie-hellman",
|
||||
"version": "5.0.3",
|
||||
"description": "pure js diffie-hellman",
|
||||
"main": "index.js",
|
||||
"browser": "browser.js",
|
||||
"scripts": {
|
||||
"test": "node test.js | tspec"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/crypto-browserify/diffie-hellman.git"
|
||||
},
|
||||
"keywords": [
|
||||
"diffie",
|
||||
"hellman",
|
||||
"diffiehellman",
|
||||
"dh"
|
||||
],
|
||||
"author": "Calvin Metcalf",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/crypto-browserify/diffie-hellman/issues"
|
||||
},
|
||||
"homepage": "https://github.com/crypto-browserify/diffie-hellman",
|
||||
"dependencies": {
|
||||
"bn.js": "^4.1.0",
|
||||
"miller-rabin": "^4.0.0",
|
||||
"randombytes": "^2.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tap-spec": "^1.0.1",
|
||||
"tape": "^3.0.1"
|
||||
}
|
||||
}
|
4
web/node_modules/diffie-hellman/readme.md
generated
vendored
Normal file
4
web/node_modules/diffie-hellman/readme.md
generated
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
diffie hellman [](https://travis-ci.org/crypto-browserify/diffie-hellman)
|
||||
====
|
||||
|
||||
pure js diffie-hellman, same api as node, most hard parts thanks to [bn.js](https://www.npmjs.org/package/bn.js) by [@indutny](https://github.com/indutny). In node just returns an object with `crypto.createDiffieHellman` and `crypto.getDiffieHellman` in the browser returns a shim. To require the pure JavaScript one in node `require('diffie-hellman/browser');`;
|
Loading…
Add table
Add a link
Reference in a new issue