Socket
Socket
Sign inDemoInstall

diffie-hellman

Package Overview
Dependencies
2
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.0.0 to 2.1.0

79

generatePrime.js

@@ -11,2 +11,7 @@

var TWO = new BN(2);
var FIVE = new BN(5);
var SIX = new BN(6);
var TEN = new BN(10);
var THREE = new BN(3);
var SEVEN = new BN(7);
var ELEVEN = new BN(11);

@@ -51,12 +56,35 @@ var FOUR = new BN(4);

}
function findPrime(bits, crypto) {
function findPrime(bits, gen ,crypto) {
gen = new BN(gen);
var runs, comp;
function generateRandom(bits) {
runs = -1;
var r = crypto.randomBytes(Math.ceil(bits / 8));
r[0] |= 0xc0;
r[r.length - 1] |= 3;
var rem;
var out = new BN(r);
while (out.mod(TWENTYFOUR).cmp(ELEVEN)) {
out.iadd(FOUR);
if (!gen.cmp(TWO)) {
while (out.mod(TWENTYFOUR).cmp(ELEVEN)) {
out.iadd(FOUR);
}
comp = {
major: [TWENTYFOUR],
minor: [TWELVE]
};
} else if (!gen.cmp(FIVE)) {
rem = out.mod(TEN);
while (rem.cmp(THREE)) {
out.iadd(FOUR);
rem = out.mod(TEN);
}
comp = {
major: [FOUR, SIX],
minor: [TWO, THREE]
};
} else {
comp = {
major: [FOUR],
minor: [TWO]
}
}

@@ -68,6 +96,6 @@ return out;

var runs = 0;
var n2 = num.shrn(1);
while (true) {
runs++;
if (num.bitLength() > bits) {

@@ -77,34 +105,15 @@ num = generateRandom(bits);

}
if (!simpleSieve(n2)) {
num.iadd(TWENTYFOUR);
n2.iadd(TWELVE);
continue;
}
if (!fermatTest(n2)) {
num.iadd(TWENTYFOUR);
n2.iadd(TWELVE);
continue;
}
if (!millerRabin.test(n2)) {
num.iadd(TWENTYFOUR);
n2.iadd(TWELVE);
continue;
}
if (!simpleSieve(num)) {
num.iadd(TWENTYFOUR);
n2.iadd(TWELVE);
continue;
}
if (!fermatTest(num)) {
num.iadd(TWENTYFOUR);
n2.iadd(TWELVE);
continue;
}
if (millerRabin.test(num)) {
runs++;
if (simpleSieve(n2) &&
fermatTest(n2) &&
millerRabin.test(n2) &&
simpleSieve(num) &&
fermatTest(num) &&
millerRabin.test(num)) {
return num;
}
num.iadd(TWENTYFOUR);
n2.iadd(TWELVE);
num.iadd(comp.major[runs%comp.major.length]);
n2.iadd(comp.minor[runs%comp.minor.length]);
}
}

@@ -14,5 +14,3 @@ var primes = require('./primes.json');

function DiffieHellman(prime, enc, generator, genc) {
if (typeof prime === 'number') {
return new DH(generatePrime(prime, crypto), new Buffer([2]), crypto, true);
}
if (Buffer.isBuffer(enc) ||

@@ -27,10 +25,14 @@ (typeof enc === 'string' && ['hex', 'binary', 'base64'].indexOf(enc) === -1)) {

generator = generator || new Buffer([2]);
if (!Buffer.isBuffer(generator)) {
generator = new Buffer(generator, genc);
}
if (typeof prime === 'number') {
return new DH(generatePrime(prime, generator, crypto), generator, crypto, true);
}
if (!Buffer.isBuffer(prime)) {
prime = new Buffer(prime, enc);
}
if (!Buffer.isBuffer(generator)) {
generator = new Buffer(generator, genc);
}
return new DH(prime, generator, crypto, true);
};
}
{
"name": "diffie-hellman",
"version": "2.0.0",
"version": "2.1.0",
"description": "pure js diffie-hellman",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -8,3 +8,5 @@ var test = require('tape');

];
function isNode10() {
return process.version && process.version.split('.').length === 3 && parseInt(process.version.split('.')[1], 10) <= 10;
}
var lens = [

@@ -39,10 +41,10 @@ 64, 65, 128, 384, 512, 1024,

function bylen(t) {
function bylen(t, generator) {
return function (len){
t.test('' + len, function (t) {
t.plan(5);
var dh2 = myCrypto.createDiffieHellman(len);
t.plan(6);
var dh2 = myCrypto.createDiffieHellman(len, generator);
var prime2 = dh2.getPrime();
var p2 = prime2.toString('hex');
var dh1 = nodeCrypto.createDiffieHellman(prime2, 2);
var dh1 = nodeCrypto.createDiffieHellman(prime2, generator);
//console.log('error', dh1.verifyError)

@@ -55,2 +57,3 @@ var p1 = dh1.getPrime().toString('hex');

t.equals(p1, p2, 'equal primes');
t.equals(dh1.getGenerator('hex'), dh2.getGenerator('hex'), 'equal generators');
var pubk1 = dh1.getPublicKey();

@@ -89,6 +92,12 @@ var pubk2 = dh2.getPublicKey();

test('create primes', function (t) {
var f = bylen(t);
test('create primes gen 2', function (t) {
var f = bylen(t, new Buffer([2]));
lens2.forEach(f);
});
if (!isNode10()) {
test('create primes gen 5', function (t) {
var f = bylen(t, new Buffer([5]));
lens2.forEach(f);
});
}

@@ -95,0 +104,0 @@ test('create primes other way', function (t) {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc