@@ -38,6 +38,8 @@ static void help(int default_iters) {
38
38
printf (" ecdsa : all ECDSA algorithms--sign, verify, recovery (if enabled)\n" );
39
39
printf (" ecdsa_sign : ECDSA siging algorithm\n" );
40
40
printf (" ecdsa_verify : ECDSA verification algorithm\n" );
41
+ printf (" ec : all EC public key algorithms (keygen)\n" );
42
+ printf (" ec_keygen : EC public key generation\n" );
41
43
42
44
#ifdef ENABLE_MODULE_RECOVERY
43
45
printf (" ecdsa_recover : ECDSA public key recovery algorithm\n" );
@@ -115,6 +117,30 @@ static void bench_sign_run(void* arg, int iters) {
115
117
}
116
118
}
117
119
120
+ static void bench_keygen_setup (void * arg ) {
121
+ int i ;
122
+ bench_data * data = (bench_data * )arg ;
123
+
124
+ for (i = 0 ; i < 32 ; i ++ ) {
125
+ data -> key [i ] = i + 65 ;
126
+ }
127
+ }
128
+
129
+ static void bench_keygen_run (void * arg , int iters ) {
130
+ int i ;
131
+ bench_data * data = (bench_data * )arg ;
132
+
133
+ for (i = 0 ; i < iters ; i ++ ) {
134
+ unsigned char pub33 [33 ];
135
+ size_t len = 33 ;
136
+ secp256k1_pubkey pubkey ;
137
+ CHECK (secp256k1_ec_pubkey_create (data -> ctx , & pubkey , data -> key ));
138
+ CHECK (secp256k1_ec_pubkey_serialize (data -> ctx , pub33 , & len , & pubkey , SECP256K1_EC_COMPRESSED ));
139
+ memcpy (data -> key , pub33 + 1 , 32 );
140
+ }
141
+ }
142
+
143
+
118
144
#ifdef ENABLE_MODULE_ECDH
119
145
# include "modules/ecdh/bench_impl.h"
120
146
#endif
@@ -139,7 +165,8 @@ int main(int argc, char** argv) {
139
165
140
166
/* Check for invalid user arguments */
141
167
char * valid_args [] = {"ecdsa" , "verify" , "ecdsa_verify" , "sign" , "ecdsa_sign" , "ecdh" , "recover" ,
142
- "ecdsa_recover" , "schnorrsig" , "schnorrsig_verify" , "schnorrsig_sign" };
168
+ "ecdsa_recover" , "schnorrsig" , "schnorrsig_verify" , "schnorrsig_sign" , "ec" ,
169
+ "keygen" , "ec_keygen" };
143
170
size_t valid_args_size = sizeof (valid_args )/sizeof (valid_args [0 ]);
144
171
int invalid_args = have_invalid_args (argc , argv , valid_args , valid_args_size );
145
172
@@ -201,6 +228,7 @@ int main(int argc, char** argv) {
201
228
if (d || have_flag (argc , argv , "ecdsa" ) || have_flag (argc , argv , "verify" ) || have_flag (argc , argv , "ecdsa_verify" )) run_benchmark ("ecdsa_verify" , bench_verify , NULL , NULL , & data , 10 , iters );
202
229
203
230
if (d || have_flag (argc , argv , "ecdsa" ) || have_flag (argc , argv , "sign" ) || have_flag (argc , argv , "ecdsa_sign" )) run_benchmark ("ecdsa_sign" , bench_sign_run , bench_sign_setup , NULL , & data , 10 , iters );
231
+ if (d || have_flag (argc , argv , "ec" ) || have_flag (argc , argv , "keygen" ) || have_flag (argc , argv , "ec_keygen" )) run_benchmark ("ec_keygen" , bench_keygen_run , bench_keygen_setup , NULL , & data , 10 , iters );
204
232
205
233
secp256k1_context_destroy (data .ctx );
206
234
0 commit comments