Add benchmark for key generation
This commit is contained in:
parent
30574f22ea
commit
a597a5a9ce
30
src/bench.c
30
src/bench.c
@ -38,6 +38,8 @@ static void help(int default_iters) {
|
|||||||
printf(" ecdsa : all ECDSA algorithms--sign, verify, recovery (if enabled)\n");
|
printf(" ecdsa : all ECDSA algorithms--sign, verify, recovery (if enabled)\n");
|
||||||
printf(" ecdsa_sign : ECDSA siging algorithm\n");
|
printf(" ecdsa_sign : ECDSA siging algorithm\n");
|
||||||
printf(" ecdsa_verify : ECDSA verification algorithm\n");
|
printf(" ecdsa_verify : ECDSA verification algorithm\n");
|
||||||
|
printf(" ec : all EC public key algorithms (keygen)\n");
|
||||||
|
printf(" ec_keygen : EC public key generation\n");
|
||||||
|
|
||||||
#ifdef ENABLE_MODULE_RECOVERY
|
#ifdef ENABLE_MODULE_RECOVERY
|
||||||
printf(" ecdsa_recover : ECDSA public key recovery algorithm\n");
|
printf(" ecdsa_recover : ECDSA public key recovery algorithm\n");
|
||||||
@ -115,6 +117,30 @@ static void bench_sign_run(void* arg, int iters) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void bench_keygen_setup(void* arg) {
|
||||||
|
int i;
|
||||||
|
bench_data *data = (bench_data*)arg;
|
||||||
|
|
||||||
|
for (i = 0; i < 32; i++) {
|
||||||
|
data->key[i] = i + 65;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void bench_keygen_run(void *arg, int iters) {
|
||||||
|
int i;
|
||||||
|
bench_data *data = (bench_data*)arg;
|
||||||
|
|
||||||
|
for (i = 0; i < iters; i++) {
|
||||||
|
unsigned char pub33[33];
|
||||||
|
size_t len = 33;
|
||||||
|
secp256k1_pubkey pubkey;
|
||||||
|
CHECK(secp256k1_ec_pubkey_create(data->ctx, &pubkey, data->key));
|
||||||
|
CHECK(secp256k1_ec_pubkey_serialize(data->ctx, pub33, &len, &pubkey, SECP256K1_EC_COMPRESSED));
|
||||||
|
memcpy(data->key, pub33 + 1, 32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef ENABLE_MODULE_ECDH
|
#ifdef ENABLE_MODULE_ECDH
|
||||||
# include "modules/ecdh/bench_impl.h"
|
# include "modules/ecdh/bench_impl.h"
|
||||||
#endif
|
#endif
|
||||||
@ -139,7 +165,8 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
/* Check for invalid user arguments */
|
/* Check for invalid user arguments */
|
||||||
char* valid_args[] = {"ecdsa", "verify", "ecdsa_verify", "sign", "ecdsa_sign", "ecdh", "recover",
|
char* valid_args[] = {"ecdsa", "verify", "ecdsa_verify", "sign", "ecdsa_sign", "ecdh", "recover",
|
||||||
"ecdsa_recover", "schnorrsig", "schnorrsig_verify", "schnorrsig_sign"};
|
"ecdsa_recover", "schnorrsig", "schnorrsig_verify", "schnorrsig_sign", "ec",
|
||||||
|
"keygen", "ec_keygen"};
|
||||||
size_t valid_args_size = sizeof(valid_args)/sizeof(valid_args[0]);
|
size_t valid_args_size = sizeof(valid_args)/sizeof(valid_args[0]);
|
||||||
int invalid_args = have_invalid_args(argc, argv, valid_args, valid_args_size);
|
int invalid_args = have_invalid_args(argc, argv, valid_args, valid_args_size);
|
||||||
|
|
||||||
@ -201,6 +228,7 @@ int main(int argc, char** argv) {
|
|||||||
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);
|
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);
|
||||||
|
|
||||||
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);
|
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);
|
||||||
|
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);
|
||||||
|
|
||||||
secp256k1_context_destroy(data.ctx);
|
secp256k1_context_destroy(data.ctx);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user