From 5f837302dfb32ce8d86598dd40969b5807692867 Mon Sep 17 00:00:00 2001 From: Tim Ruffing Date: Wed, 5 May 2021 09:38:22 +0200 Subject: [PATCH 1/2] tests: Test secp256k1_ge_set_all_gej_var for all infinity inputs --- src/tests.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/tests.c b/src/tests.c index a146394305..55a0b3d587 100644 --- a/src/tests.c +++ b/src/tests.c @@ -3115,6 +3115,17 @@ void test_ge(void) { ge_equals_gej(&ge[i], &gej[i]); } + /* Test batch gej -> ge conversion with all infinities. */ + for (i = 0; i < 4 * runs + 1; i++) { + secp256k1_gej_set_infinity(&gej[i]); + } + /* batch invert */ + secp256k1_ge_set_all_gej_var(ge, gej, 4 * runs + 1); + /* check result */ + for (i = 0; i < 4 * runs + 1; i++) { + ge_equals_gej(&ge[i], &gej[i]); + } + free(ge); free(gej); } From ebdb8f4903c13a60953ea11d3621633acf58edc4 Mon Sep 17 00:00:00 2001 From: Tim Ruffing Date: Wed, 5 May 2021 09:38:22 +0200 Subject: [PATCH 2/2] tests: Improve secp256k1_ge_set_all_gej_var for some infinity inputs --- src/tests.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/tests.c b/src/tests.c index 55a0b3d587..2be002329a 100644 --- a/src/tests.c +++ b/src/tests.c @@ -3103,8 +3103,13 @@ void test_ge(void) { for (i = 0; i < 4 * runs + 1; i++) { random_group_element_test(&ge[i]); /* randomly set half the points to infinity */ - if(secp256k1_fe_is_odd(&ge[i].x)) { - secp256k1_ge_set_infinity(&ge[i]); + if (secp256k1_fe_is_odd(&ge[i].x) == i % 2) { + secp256k1_ge_set_infinity(&ge[i]); + } + int odd = secp256k1_fe_is_odd(&ge[i].x); + CHECK(odd == 0 || odd == 1); + if (!!secp256k1_fe_is_odd(&ge[i].x) == i % 2) { + secp256k1_ge_set_infinity(&ge[i]); } secp256k1_gej_set_ge(&gej[i], &ge[i]); }