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