Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/src/bench_recover.c
Show All 9 Lines | |||||
#include "bench.h" | #include "bench.h" | ||||
typedef struct { | typedef struct { | ||||
secp256k1_context *ctx; | secp256k1_context *ctx; | ||||
unsigned char msg[32]; | unsigned char msg[32]; | ||||
unsigned char sig[64]; | unsigned char sig[64]; | ||||
} bench_recover_data; | } bench_recover_data; | ||||
void bench_recover(void* arg) { | void bench_recover(void* arg, int iters) { | ||||
int i; | int i; | ||||
bench_recover_data *data = (bench_recover_data*)arg; | bench_recover_data *data = (bench_recover_data*)arg; | ||||
secp256k1_pubkey pubkey; | secp256k1_pubkey pubkey; | ||||
unsigned char pubkeyc[33]; | unsigned char pubkeyc[33]; | ||||
for (i = 0; i < 20000; i++) { | for (i = 0; i < iters; i++) { | ||||
int j; | int j; | ||||
size_t pubkeylen = 33; | size_t pubkeylen = 33; | ||||
secp256k1_ecdsa_recoverable_signature sig; | secp256k1_ecdsa_recoverable_signature sig; | ||||
CHECK(secp256k1_ecdsa_recoverable_signature_parse_compact(data->ctx, &sig, data->sig, i % 2)); | CHECK(secp256k1_ecdsa_recoverable_signature_parse_compact(data->ctx, &sig, data->sig, i % 2)); | ||||
CHECK(secp256k1_ecdsa_recover(data->ctx, &pubkey, &sig, data->msg)); | CHECK(secp256k1_ecdsa_recover(data->ctx, &pubkey, &sig, data->msg)); | ||||
CHECK(secp256k1_ec_pubkey_serialize(data->ctx, pubkeyc, &pubkeylen, &pubkey, SECP256K1_EC_COMPRESSED)); | CHECK(secp256k1_ec_pubkey_serialize(data->ctx, pubkeyc, &pubkeylen, &pubkey, SECP256K1_EC_COMPRESSED)); | ||||
for (j = 0; j < 32; j++) { | for (j = 0; j < 32; j++) { | ||||
data->sig[j + 32] = data->msg[j]; /* Move former message to S. */ | data->sig[j + 32] = data->msg[j]; /* Move former message to S. */ | ||||
Show All 13 Lines | void bench_recover_setup(void* arg) { | ||||
for (i = 0; i < 64; i++) { | for (i = 0; i < 64; i++) { | ||||
data->sig[i] = 65 + i; | data->sig[i] = 65 + i; | ||||
} | } | ||||
} | } | ||||
int main(void) { | int main(void) { | ||||
bench_recover_data data; | bench_recover_data data; | ||||
int iters = get_iters(20000); | |||||
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY); | data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY); | ||||
run_benchmark("ecdsa_recover", bench_recover, bench_recover_setup, NULL, &data, 10, 20000); | run_benchmark("ecdsa_recover", bench_recover, bench_recover_setup, NULL, &data, 10, iters); | ||||
secp256k1_context_destroy(data.ctx); | secp256k1_context_destroy(data.ctx); | ||||
return 0; | return 0; | ||||
} | } |