W72crm_web-master/node_modules/crypto-browserify/test/dh.js

61 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

2025-05-27 11:25:53 +08:00
'use strict';
var test = require('tape');
var crypto = require('diffie-hellman/browser');
test('diffie-hellman mod groups', function (t) {
[
'modp1',
'modp2',
'modp5',
'modp14',
'modp15',
'modp16'
].forEach(function (mod) {
t.test(mod, function (st) {
st.plan(3);
var dh1 = crypto.getDiffieHellman(mod);
var p1 = dh1.getPrime().toString('hex');
dh1.generateKeys();
var dh2 = crypto.getDiffieHellman(mod);
var p2 = dh2.getPrime().toString('hex');
dh2.generateKeys();
st.equals(p1, p2, 'equal primes');
var pubk1 = dh1.getPublicKey();
var pubk2 = dh2.getPublicKey();
st.notEquals(pubk1, pubk2, 'diff public keys');
var pub1 = dh1.computeSecret(pubk2).toString('hex');
var pub2 = dh2.computeSecret(dh1.getPublicKey()).toString('hex');
st.equals(pub1, pub2, 'equal secrets');
});
});
});
test('diffie-hellman key lengths', function (t) {
[
64,
65,
192
].forEach(function (len) {
t.test(String(len), function (st) {
st.plan(3);
var dh2 = crypto.createDiffieHellman(len);
var prime2 = dh2.getPrime();
var p2 = prime2.toString('hex');
var dh1 = crypto.createDiffieHellman(prime2);
var p1 = dh1.getPrime().toString('hex');
dh1.generateKeys();
dh2.generateKeys();
st.equals(p1, p2, 'equal primes');
var pubk1 = dh1.getPublicKey();
var pubk2 = dh2.getPublicKey();
st.notEquals(pubk1, pubk2, 'diff public keys');
var pub1 = dh1.computeSecret(pubk2).toString('hex');
var pub2 = dh2.computeSecret(dh1.getPublicKey()).toString('hex');
st.equals(pub1, pub2, 'equal secrets');
});
});
});