tests: simplify random_fe_non_zero (remove loop limit and unneeded normalize)

`random_fe_non_zero` contains a loop iteration limit that ensures that
we abort if `random_fe` ever yielded zero more than ten times in a row.
This construct was first introduced in PR #19 (commit 09ca4f32) for
random non-square field elements and was later refactored into the
non-zero helper in PR #25 (commit 6d6102fe). The copy-over to the
exhaustive tests happened recently in PR #1118 (commit 0f864207).

This case seems to be practically irrelevant and I'd argue for keeping
things simple and removing it; if there's really a worry that the test's
random generator is heavily biased towards certain values or value
ranges then there should consequently be checks at other places too
(e.g. directly in `random_fe` for 256-bit values that repeatedly
overflow, i.e. >= p).

Also, the _fe_normalize call is not needed and can be removed, as the
result of `random_fe` is already normalized.
This commit is contained in:
Sebastian Falbesoner 2023-08-07 02:09:58 +02:00
parent 060e32cb60
commit dc5514144f
2 changed files with 4 additions and 18 deletions

View File

@ -2967,16 +2967,9 @@ static void random_fe(secp256k1_fe *x) {
}
static void random_fe_non_zero(secp256k1_fe *nz) {
int tries = 10;
while (--tries >= 0) {
do {
random_fe(nz);
secp256k1_fe_normalize(nz);
if (!secp256k1_fe_is_zero(nz)) {
break;
}
}
/* Infinitesimal probability of spurious failure here */
CHECK(tries >= 0);
} while (secp256k1_fe_is_zero(nz));
}
static void random_fe_non_square(secp256k1_fe *ns) {

View File

@ -70,16 +70,9 @@ static void random_fe(secp256k1_fe *x) {
}
static void random_fe_non_zero(secp256k1_fe *nz) {
int tries = 10;
while (--tries >= 0) {
do {
random_fe(nz);
secp256k1_fe_normalize(nz);
if (!secp256k1_fe_is_zero(nz)) {
break;
}
}
/* Infinitesimal probability of spurious failure here */
CHECK(tries >= 0);
} while (secp256k1_fe_is_zero(nz));
}
/** END stolen from tests.c */