ecdh.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. 'use strict';
  2. var mods = [
  3. 'secp256k1',
  4. 'secp224r1',
  5. 'prime256v1',
  6. 'prime192v1'
  7. ];
  8. var test = require('tape');
  9. var createECDH1 = require('../').createECDH;
  10. var createECDH2 = require('create-ecdh/browser');
  11. mods.forEach(function (mod) {
  12. test('createECDH: ' + mod + ' uncompressed', function (t) {
  13. t.plan(2);
  14. var dh1 = createECDH1(mod);
  15. dh1.generateKeys();
  16. var dh2 = createECDH2(mod);
  17. dh2.generateKeys();
  18. var pubk1 = dh1.getPublicKey();
  19. var pubk2 = dh2.getPublicKey();
  20. t.notEquals(pubk1.toString('hex'), pubk2.toString('hex'), 'diff public keys');
  21. var pub1 = dh1.computeSecret(pubk2).toString('hex');
  22. var pub2 = dh2.computeSecret(pubk1).toString('hex');
  23. t.equals(pub1, pub2, 'equal secrets');
  24. });
  25. test('createECDH: ' + mod + ' compressed', function (t) {
  26. t.plan(2);
  27. var dh1 = createECDH1(mod);
  28. dh1.generateKeys();
  29. var dh2 = createECDH2(mod);
  30. dh2.generateKeys();
  31. var pubk1 = dh1.getPublicKey(null, 'compressed');
  32. var pubk2 = dh2.getPublicKey(null, 'compressed');
  33. t.notEquals(pubk1.toString('hex'), pubk2.toString('hex'), 'diff public keys');
  34. var pub1 = dh1.computeSecret(pubk2).toString('hex');
  35. var pub2 = dh2.computeSecret(pubk1).toString('hex');
  36. t.equals(pub1, pub2, 'equal secrets');
  37. });
  38. test('createECDH: ' + mod + ' set stuff', function (t) {
  39. t.plan(5);
  40. var dh1 = createECDH1(mod);
  41. var dh2 = createECDH2(mod);
  42. dh1.generateKeys();
  43. dh2.generateKeys();
  44. dh1.setPrivateKey(dh2.getPrivateKey());
  45. dh1.setPublicKey(dh2.getPublicKey());
  46. var priv1 = dh1.getPrivateKey('hex');
  47. var priv2 = dh2.getPrivateKey('hex');
  48. t.equals(priv1, priv2, 'same private key');
  49. var pubk1 = dh1.getPublicKey();
  50. var pubk2 = dh2.getPublicKey();
  51. t.equals(pubk1.toString('hex'), pubk2.toString('hex'), 'same public keys, uncompressed');
  52. t.equals(dh1.getPublicKey('hex', 'compressed'), dh2.getPublicKey('hex', 'compressed'), 'same public keys compressed');
  53. t.equals(dh1.getPublicKey('hex', 'hybrid'), dh2.getPublicKey('hex', 'hybrid'), 'same public keys hybrid');
  54. var pub1 = dh1.computeSecret(pubk2).toString('hex');
  55. var pub2 = dh2.computeSecret(pubk1).toString('hex');
  56. t.equals(pub1, pub2, 'equal secrets');
  57. });
  58. });