Skip to content

Commit 5c789dc

Browse files
Merge #1168: Replace deprecated context flags with NONE in benchmarks and tests
d6dc0f4 tests: Switch to NONE contexts in module tests (Jonas Nick) 0c8a5ca tests: Switch to NONE contexts in tests.c (Jonas Nick) 86540e9 tests: add test for deprecated flags and rm them from run_context (Jonas Nick) caa0ad6 group: add gej_eq_var (Jonas Nick) 37ba744 tests: Switch to NONE contexts in exhaustive and ctime tests (Jonas Nick) 8d7a9a8 benchmarks: Switch to NONE contexts (Jonas Nick) Pull request description: Based on #1126. ACKs for top commit: real-or-random: ACK d6dc0f4 diff looks good and tests pass locally sipa: utACK d6dc0f4 Tree-SHA512: 1fb1dc1336409b52827787a03c791a21ee1d6b1bdc388d1fa126600572f348ba16865a01d29bac67b36b8f29f30cda117d82913e2044ccb9d073f5d04338ac9f
2 parents e3f8477 + d6dc0f4 commit 5c789dc

15 files changed

+312
-433
lines changed

src/bench.c

+5-10
Original file line numberDiff line numberDiff line change
@@ -164,31 +164,31 @@ int main(int argc, char** argv) {
164164

165165
/* Check if the user tries to benchmark optional module without building it */
166166
#ifndef ENABLE_MODULE_ECDH
167-
if (have_flag(argc, argv, "ecdh")) {
167+
if (have_flag(argc, argv, "ecdh")) {
168168
fprintf(stderr, "./bench: ECDH module not enabled.\n");
169169
fprintf(stderr, "Use ./configure --enable-module-ecdh.\n\n");
170170
return 1;
171171
}
172172
#endif
173173

174174
#ifndef ENABLE_MODULE_RECOVERY
175-
if (have_flag(argc, argv, "recover") || have_flag(argc, argv, "ecdsa_recover")) {
175+
if (have_flag(argc, argv, "recover") || have_flag(argc, argv, "ecdsa_recover")) {
176176
fprintf(stderr, "./bench: Public key recovery module not enabled.\n");
177177
fprintf(stderr, "Use ./configure --enable-module-recovery.\n\n");
178178
return 1;
179179
}
180180
#endif
181181

182182
#ifndef ENABLE_MODULE_SCHNORRSIG
183-
if (have_flag(argc, argv, "schnorrsig") || have_flag(argc, argv, "schnorrsig_sign") || have_flag(argc, argv, "schnorrsig_verify")) {
183+
if (have_flag(argc, argv, "schnorrsig") || have_flag(argc, argv, "schnorrsig_sign") || have_flag(argc, argv, "schnorrsig_verify")) {
184184
fprintf(stderr, "./bench: Schnorr signatures module not enabled.\n");
185185
fprintf(stderr, "Use ./configure --enable-module-schnorrsig.\n\n");
186186
return 1;
187187
}
188188
#endif
189189

190-
/* ECDSA verification benchmark */
191-
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);
190+
/* ECDSA benchmark */
191+
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_NONE);
192192

193193
for (i = 0; i < 32; i++) {
194194
data.msg[i] = 1 + i;
@@ -206,11 +206,6 @@ int main(int argc, char** argv) {
206206
print_output_table_header_row();
207207
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);
208208

209-
secp256k1_context_destroy(data.ctx);
210-
211-
/* ECDSA signing benchmark */
212-
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN);
213-
214209
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);
215210

216211
secp256k1_context_destroy(data.ctx);

src/bench_ecmult.c

+2-4
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,7 @@ static void bench_ecmult_teardown_helper(bench_data* data, size_t* seckey_offset
8484
}
8585
}
8686
secp256k1_ecmult_gen(&data->ctx->ecmult_gen_ctx, &tmp, &sum_scalars);
87-
secp256k1_gej_neg(&tmp, &tmp);
88-
secp256k1_gej_add_var(&tmp, &tmp, &sum_output, NULL);
89-
CHECK(secp256k1_gej_is_infinity(&tmp));
87+
CHECK(secp256k1_gej_eq_var(&tmp, &sum_output));
9088
}
9189

9290
static void bench_ecmult_setup(void* arg) {
@@ -308,7 +306,7 @@ int main(int argc, char **argv) {
308306
}
309307
}
310308

311-
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);
309+
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_NONE);
312310
scratch_size = secp256k1_strauss_scratch_size(POINTS) + STRAUSS_SCRATCH_OBJECTS*16;
313311
if (!have_flag(argc, argv, "simple")) {
314312
data.scratch = secp256k1_scratch_space_create(data.ctx, scratch_size);

src/bench_internal.c

+3-12
Original file line numberDiff line numberDiff line change
@@ -343,19 +343,11 @@ void bench_rfc6979_hmac_sha256(void* arg, int iters) {
343343
}
344344
}
345345

346-
void bench_context_verify(void* arg, int iters) {
346+
void bench_context(void* arg, int iters) {
347347
int i;
348348
(void)arg;
349349
for (i = 0; i < iters; i++) {
350-
secp256k1_context_destroy(secp256k1_context_create(SECP256K1_CONTEXT_VERIFY));
351-
}
352-
}
353-
354-
void bench_context_sign(void* arg, int iters) {
355-
int i;
356-
(void)arg;
357-
for (i = 0; i < iters; i++) {
358-
secp256k1_context_destroy(secp256k1_context_create(SECP256K1_CONTEXT_SIGN));
350+
secp256k1_context_destroy(secp256k1_context_create(SECP256K1_CONTEXT_NONE));
359351
}
360352
}
361353

@@ -395,8 +387,7 @@ int main(int argc, char **argv) {
395387
if (d || have_flag(argc, argv, "hash") || have_flag(argc, argv, "hmac")) run_benchmark("hash_hmac_sha256", bench_hmac_sha256, bench_setup, NULL, &data, 10, iters);
396388
if (d || have_flag(argc, argv, "hash") || have_flag(argc, argv, "rng6979")) run_benchmark("hash_rfc6979_hmac_sha256", bench_rfc6979_hmac_sha256, bench_setup, NULL, &data, 10, iters);
397389

398-
if (d || have_flag(argc, argv, "context") || have_flag(argc, argv, "verify")) run_benchmark("context_verify", bench_context_verify, bench_setup, NULL, &data, 10, 1 + iters/1000);
399-
if (d || have_flag(argc, argv, "context") || have_flag(argc, argv, "sign")) run_benchmark("context_sign", bench_context_sign, bench_setup, NULL, &data, 10, 1 + iters/100);
390+
if (d || have_flag(argc, argv, "context")) run_benchmark("context_create", bench_context, bench_setup, NULL, &data, 10, iters);
400391

401392
return 0;
402393
}

src/group.h

+3
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ static void secp256k1_gej_set_infinity(secp256k1_gej *r);
9797
/** Set a group element (jacobian) equal to another which is given in affine coordinates. */
9898
static void secp256k1_gej_set_ge(secp256k1_gej *r, const secp256k1_ge *a);
9999

100+
/** Check two group elements (jacobian) for equality in variable time. */
101+
static int secp256k1_gej_eq_var(const secp256k1_gej *a, const secp256k1_gej *b);
102+
100103
/** Compare the X coordinate of a group element (jacobian). */
101104
static int secp256k1_gej_eq_x_var(const secp256k1_fe *x, const secp256k1_gej *a);
102105

src/group_impl.h

+7
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,13 @@ static void secp256k1_gej_set_ge(secp256k1_gej *r, const secp256k1_ge *a) {
236236
secp256k1_fe_set_int(&r->z, 1);
237237
}
238238

239+
static int secp256k1_gej_eq_var(const secp256k1_gej *a, const secp256k1_gej *b) {
240+
secp256k1_gej tmp;
241+
secp256k1_gej_neg(&tmp, a);
242+
secp256k1_gej_add_var(&tmp, &tmp, b, NULL);
243+
return secp256k1_gej_is_infinity(&tmp);
244+
}
245+
239246
static int secp256k1_gej_eq_x_var(const secp256k1_fe *x, const secp256k1_gej *a) {
240247
secp256k1_fe r, r2;
241248
VERIFY_CHECK(!a->infinity);

src/modules/ecdh/tests_impl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ int ecdh_hash_function_custom(unsigned char *output, const unsigned char *x, con
2626

2727
void test_ecdh_api(void) {
2828
/* Setup context that just counts errors */
29-
secp256k1_context *tctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN);
29+
secp256k1_context *tctx = secp256k1_context_create(SECP256K1_CONTEXT_NONE);
3030
secp256k1_pubkey point;
3131
unsigned char res[32];
3232
unsigned char s_one[32] = { 0 };

0 commit comments

Comments
 (0)