Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/src/bench_sign.c
Show All 11 Lines | |||||
#include "include/secp256k1_schnorr.h" | #include "include/secp256k1_schnorr.h" | ||||
#endif | #endif | ||||
typedef struct { | typedef struct { | ||||
secp256k1_context* ctx; | secp256k1_context* ctx; | ||||
unsigned char msg[32]; | unsigned char msg[32]; | ||||
unsigned char key[32]; | unsigned char key[32]; | ||||
} bench_sign; | } bench_sign_data; | ||||
static void bench_sign_setup(void* arg) { | static void bench_sign_setup(void* arg) { | ||||
int i; | int i; | ||||
bench_sign *data = (bench_sign*)arg; | bench_sign_data *data = (bench_sign_data*)arg; | ||||
for (i = 0; i < 32; i++) { | for (i = 0; i < 32; i++) { | ||||
data->msg[i] = i + 1; | data->msg[i] = i + 1; | ||||
} | } | ||||
for (i = 0; i < 32; i++) { | for (i = 0; i < 32; i++) { | ||||
data->key[i] = i + 65; | data->key[i] = i + 65; | ||||
} | } | ||||
} | } | ||||
static void bench_sign_run(void* arg, int iters) { | static void bench_sign_run(void* arg, int iters) { | ||||
int i; | int i; | ||||
bench_sign *data = (bench_sign*)arg; | bench_sign_data *data = (bench_sign_data*)arg; | ||||
unsigned char sig[74]; | unsigned char sig[74]; | ||||
for (i = 0; i < iters; i++) { | for (i = 0; i < iters; i++) { | ||||
size_t siglen = 74; | size_t siglen = 74; | ||||
int j; | int j; | ||||
secp256k1_ecdsa_signature signature; | secp256k1_ecdsa_signature signature; | ||||
CHECK(secp256k1_ecdsa_sign(data->ctx, &signature, data->msg, data->key, NULL, NULL)); | CHECK(secp256k1_ecdsa_sign(data->ctx, &signature, data->msg, data->key, NULL, NULL)); | ||||
CHECK(secp256k1_ecdsa_signature_serialize_der(data->ctx, sig, &siglen, &signature)); | CHECK(secp256k1_ecdsa_signature_serialize_der(data->ctx, sig, &siglen, &signature)); | ||||
for (j = 0; j < 32; j++) { | for (j = 0; j < 32; j++) { | ||||
data->msg[j] = sig[j]; | data->msg[j] = sig[j]; | ||||
data->key[j] = sig[j + 32]; | data->key[j] = sig[j + 32]; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
#ifdef ENABLE_MODULE_SCHNORR | #ifdef ENABLE_MODULE_SCHNORR | ||||
static void bench_schnorr_sign_run(void* arg, int iters) { | static void bench_schnorr_sign_run(void* arg, int iters) { | ||||
int i,j; | int i,j; | ||||
bench_sign *data = (bench_sign*)arg; | bench_sign_data *data = (bench_sign_data*)arg; | ||||
unsigned char sig[64]; | unsigned char sig[64]; | ||||
for (i = 0; i < iters; i++) { | for (i = 0; i < iters; i++) { | ||||
CHECK(secp256k1_schnorr_sign(data->ctx, sig, data->msg, data->key, NULL, NULL)); | CHECK(secp256k1_schnorr_sign(data->ctx, sig, data->msg, data->key, NULL, NULL)); | ||||
for (j = 0; j < 32; j++) { | for (j = 0; j < 32; j++) { | ||||
data->msg[j] = sig[j]; | data->msg[j] = sig[j]; | ||||
data->key[j] = sig[j + 32]; | data->key[j] = sig[j + 32]; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||
int main(void) { | int main(void) { | ||||
bench_sign data; | bench_sign_data data; | ||||
int iters = get_iters(20000); | int iters = get_iters(20000); | ||||
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN); | data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN); | ||||
run_benchmark("ecdsa_sign", bench_sign_run, bench_sign_setup, NULL, &data, 10, iters); | run_benchmark("ecdsa_sign", bench_sign_run, bench_sign_setup, NULL, &data, 10, iters); | ||||
#ifdef ENABLE_MODULE_SCHNORR | #ifdef ENABLE_MODULE_SCHNORR | ||||
run_benchmark("schnorr_sign", bench_schnorr_sign_run, bench_sign_setup, NULL, &data, 10, iters); | run_benchmark("schnorr_sign", bench_schnorr_sign_run, bench_sign_setup, NULL, &data, 10, iters); | ||||
#endif | #endif | ||||
secp256k1_context_destroy(data.ctx); | secp256k1_context_destroy(data.ctx); | ||||
return 0; | return 0; | ||||
} | } |