dh.js 1.6 KB

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