UNPKG

1.62 kBJavaScriptView Raw
1var test = require('tape')
2var crypto = require('diffie-hellman/browser')
3
4test('diffie-hellman mod groups', function (t) {
5 [
6 'modp1', 'modp2', 'modp5', 'modp14', 'modp15', 'modp16'
7 ].forEach(function (mod) {
8 t.test(mod, function (t) {
9 t.plan(3)
10 var dh1 = crypto.getDiffieHellman(mod)
11 var p1 = dh1.getPrime().toString('hex')
12 dh1.generateKeys()
13 var dh2 = crypto.getDiffieHellman(mod)
14 var p2 = dh2.getPrime().toString('hex')
15 dh2.generateKeys()
16 t.equals(p1, p2, 'equal primes')
17 var pubk1 = dh1.getPublicKey()
18 var pubk2 = dh2.getPublicKey()
19 t.notEquals(pubk1, pubk2, 'diff public keys')
20 var pub1 = dh1.computeSecret(pubk2).toString('hex')
21 var pub2 = dh2.computeSecret(dh1.getPublicKey()).toString('hex')
22 t.equals(pub1, pub2, 'equal secrets')
23 })
24 })
25})
26
27test('diffie-hellman key lengths', function (t) {
28 [
29 64, 65, 192
30 ].forEach(function (len) {
31 t.test('' + len, function (t) {
32 t.plan(3)
33 var dh2 = crypto.createDiffieHellman(len)
34 var prime2 = dh2.getPrime()
35 var p2 = prime2.toString('hex')
36 var dh1 = crypto.createDiffieHellman(prime2)
37 var p1 = dh1.getPrime().toString('hex')
38 dh1.generateKeys()
39 dh2.generateKeys()
40 t.equals(p1, p2, 'equal primes')
41 var pubk1 = dh1.getPublicKey()
42 var pubk2 = dh2.getPublicKey()
43 t.notEquals(pubk1, pubk2, 'diff public keys')
44 var pub1 = dh1.computeSecret(pubk2).toString('hex')
45 var pub2 = dh2.computeSecret(dh1.getPublicKey()).toString('hex')
46 t.equals(pub1, pub2, 'equal secrets')
47 })
48 })
49})