@@ -45,3 +45,22 @@ def do(setup_statements, statement):
4545 name = curve , sep = ":" , siglen = len (sig ), unit = "s" , keygen = keygen ,
4646 keygen_inv = 1.0 / keygen , sign = sign , sign_inv = 1.0 / sign , verify = verf ,
4747 verify_inv = 1.0 / verf , form = ".5f" , form_inv = ".2f" ))
48+
49+ print ('' )
50+
51+ ecdh_form = ("{name:>16}{sep:1} {ecdh:>9{form}}{unit:1} "
52+ "{ecdh_inv:>9{form_inv}}" )
53+
54+ print (ecdh_form .format (ecdh = "ecdh" , ecdh_inv = "ecdh/s" , name = "" , sep = "" ,
55+ unit = "" , form = "" , form_inv = "" ))
56+
57+ for curve in [i .name for i in curves ]:
58+ S1 = "from ecdsa import SigningKey, ECDH, {0}" .format (curve )
59+ S2 = "our = SigningKey.generate({0})" .format (curve )
60+ S3 = "remote = SigningKey.generate({0}).verifying_key" .format (curve )
61+ S4 = "ecdh = ECDH(private_key=our, public_key=remote)"
62+ S5 = "ecdh.generate_sharedsecret_bytes()"
63+ ecdh = do ([S1 , S2 , S3 , S4 ], S5 )
64+ print (ecdh_form .format (
65+ name = curve , sep = ":" , unit = "s" , form = ".5f" , form_inv = ".2f" ,
66+ ecdh = ecdh , ecdh_inv = 1.0 / ecdh ))
0 commit comments