refactor: introduce testutil.h (deduplicate random_fe_
, ge_equals_
helpers)
This commit is contained in:
parent
dc5514144f
commit
c45b7c4fbb
@ -46,6 +46,7 @@ noinst_HEADERS += src/precomputed_ecmult.h
|
||||
noinst_HEADERS += src/precomputed_ecmult_gen.h
|
||||
noinst_HEADERS += src/assumptions.h
|
||||
noinst_HEADERS += src/checkmem.h
|
||||
noinst_HEADERS += src/testutil.h
|
||||
noinst_HEADERS += src/util.h
|
||||
noinst_HEADERS += src/int128.h
|
||||
noinst_HEADERS += src/int128_impl.h
|
||||
|
43
src/tests.c
43
src/tests.c
@ -23,6 +23,7 @@
|
||||
#include "../include/secp256k1_preallocated.h"
|
||||
#include "testrand_impl.h"
|
||||
#include "checkmem.h"
|
||||
#include "testutil.h"
|
||||
#include "util.h"
|
||||
|
||||
#include "../contrib/lax_der_parsing.c"
|
||||
@ -2956,22 +2957,6 @@ static void run_scalar_tests(void) {
|
||||
|
||||
/***** FIELD TESTS *****/
|
||||
|
||||
static void random_fe(secp256k1_fe *x) {
|
||||
unsigned char bin[32];
|
||||
do {
|
||||
secp256k1_testrand256(bin);
|
||||
if (secp256k1_fe_set_b32_limit(x, bin)) {
|
||||
return;
|
||||
}
|
||||
} while(1);
|
||||
}
|
||||
|
||||
static void random_fe_non_zero(secp256k1_fe *nz) {
|
||||
do {
|
||||
random_fe(nz);
|
||||
} while (secp256k1_fe_is_zero(nz));
|
||||
}
|
||||
|
||||
static void random_fe_non_square(secp256k1_fe *ns) {
|
||||
secp256k1_fe r;
|
||||
random_fe_non_zero(ns);
|
||||
@ -3691,15 +3676,6 @@ static void run_inverse_tests(void)
|
||||
|
||||
/***** GROUP TESTS *****/
|
||||
|
||||
static void ge_equals_ge(const secp256k1_ge *a, const secp256k1_ge *b) {
|
||||
CHECK(a->infinity == b->infinity);
|
||||
if (a->infinity) {
|
||||
return;
|
||||
}
|
||||
CHECK(secp256k1_fe_equal(&a->x, &b->x));
|
||||
CHECK(secp256k1_fe_equal(&a->y, &b->y));
|
||||
}
|
||||
|
||||
/* This compares jacobian points including their Z, not just their geometric meaning. */
|
||||
static int gej_xyz_equals_gej(const secp256k1_gej *a, const secp256k1_gej *b) {
|
||||
secp256k1_gej a2;
|
||||
@ -3722,23 +3698,6 @@ static int gej_xyz_equals_gej(const secp256k1_gej *a, const secp256k1_gej *b) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void ge_equals_gej(const secp256k1_ge *a, const secp256k1_gej *b) {
|
||||
secp256k1_fe z2s;
|
||||
secp256k1_fe u1, u2, s1, s2;
|
||||
CHECK(a->infinity == b->infinity);
|
||||
if (a->infinity) {
|
||||
return;
|
||||
}
|
||||
/* Check a.x * b.z^2 == b.x && a.y * b.z^3 == b.y, to avoid inverses. */
|
||||
secp256k1_fe_sqr(&z2s, &b->z);
|
||||
secp256k1_fe_mul(&u1, &a->x, &z2s);
|
||||
u2 = b->x;
|
||||
secp256k1_fe_mul(&s1, &a->y, &z2s); secp256k1_fe_mul(&s1, &s1, &b->z);
|
||||
s2 = b->y;
|
||||
CHECK(secp256k1_fe_equal(&u1, &u2));
|
||||
CHECK(secp256k1_fe_equal(&s1, &s2));
|
||||
}
|
||||
|
||||
static void test_ge(void) {
|
||||
int i, i1;
|
||||
int runs = 6;
|
||||
|
@ -28,54 +28,11 @@
|
||||
#include "testrand_impl.h"
|
||||
#include "ecmult_compute_table_impl.h"
|
||||
#include "ecmult_gen_compute_table_impl.h"
|
||||
#include "testutil.h"
|
||||
#include "util.h"
|
||||
|
||||
static int count = 2;
|
||||
|
||||
/** stolen from tests.c */
|
||||
static void ge_equals_ge(const secp256k1_ge *a, const secp256k1_ge *b) {
|
||||
CHECK(a->infinity == b->infinity);
|
||||
if (a->infinity) {
|
||||
return;
|
||||
}
|
||||
CHECK(secp256k1_fe_equal(&a->x, &b->x));
|
||||
CHECK(secp256k1_fe_equal(&a->y, &b->y));
|
||||
}
|
||||
|
||||
static void ge_equals_gej(const secp256k1_ge *a, const secp256k1_gej *b) {
|
||||
secp256k1_fe z2s;
|
||||
secp256k1_fe u1, u2, s1, s2;
|
||||
CHECK(a->infinity == b->infinity);
|
||||
if (a->infinity) {
|
||||
return;
|
||||
}
|
||||
/* Check a.x * b.z^2 == b.x && a.y * b.z^3 == b.y, to avoid inverses. */
|
||||
secp256k1_fe_sqr(&z2s, &b->z);
|
||||
secp256k1_fe_mul(&u1, &a->x, &z2s);
|
||||
u2 = b->x;
|
||||
secp256k1_fe_mul(&s1, &a->y, &z2s); secp256k1_fe_mul(&s1, &s1, &b->z);
|
||||
s2 = b->y;
|
||||
CHECK(secp256k1_fe_equal(&u1, &u2));
|
||||
CHECK(secp256k1_fe_equal(&s1, &s2));
|
||||
}
|
||||
|
||||
static void random_fe(secp256k1_fe *x) {
|
||||
unsigned char bin[32];
|
||||
do {
|
||||
secp256k1_testrand256(bin);
|
||||
if (secp256k1_fe_set_b32_limit(x, bin)) {
|
||||
return;
|
||||
}
|
||||
} while(1);
|
||||
}
|
||||
|
||||
static void random_fe_non_zero(secp256k1_fe *nz) {
|
||||
do {
|
||||
random_fe(nz);
|
||||
} while (secp256k1_fe_is_zero(nz));
|
||||
}
|
||||
/** END stolen from tests.c */
|
||||
|
||||
static uint32_t num_cores = 1;
|
||||
static uint32_t this_core = 0;
|
||||
|
||||
|
55
src/testutil.h
Normal file
55
src/testutil.h
Normal file
@ -0,0 +1,55 @@
|
||||
/***********************************************************************
|
||||
* Distributed under the MIT software license, see the accompanying *
|
||||
* file COPYING or https://www.opensource.org/licenses/mit-license.php.*
|
||||
***********************************************************************/
|
||||
|
||||
#ifndef SECP256K1_TESTUTIL_H
|
||||
#define SECP256K1_TESTUTIL_H
|
||||
|
||||
#include "field.h"
|
||||
#include "testrand.h"
|
||||
#include "util.h"
|
||||
|
||||
static void random_fe(secp256k1_fe *x) {
|
||||
unsigned char bin[32];
|
||||
do {
|
||||
secp256k1_testrand256(bin);
|
||||
if (secp256k1_fe_set_b32_limit(x, bin)) {
|
||||
return;
|
||||
}
|
||||
} while(1);
|
||||
}
|
||||
|
||||
static void random_fe_non_zero(secp256k1_fe *nz) {
|
||||
do {
|
||||
random_fe(nz);
|
||||
} while (secp256k1_fe_is_zero(nz));
|
||||
}
|
||||
|
||||
static void ge_equals_ge(const secp256k1_ge *a, const secp256k1_ge *b) {
|
||||
CHECK(a->infinity == b->infinity);
|
||||
if (a->infinity) {
|
||||
return;
|
||||
}
|
||||
CHECK(secp256k1_fe_equal(&a->x, &b->x));
|
||||
CHECK(secp256k1_fe_equal(&a->y, &b->y));
|
||||
}
|
||||
|
||||
static void ge_equals_gej(const secp256k1_ge *a, const secp256k1_gej *b) {
|
||||
secp256k1_fe z2s;
|
||||
secp256k1_fe u1, u2, s1, s2;
|
||||
CHECK(a->infinity == b->infinity);
|
||||
if (a->infinity) {
|
||||
return;
|
||||
}
|
||||
/* Check a.x * b.z^2 == b.x && a.y * b.z^3 == b.y, to avoid inverses. */
|
||||
secp256k1_fe_sqr(&z2s, &b->z);
|
||||
secp256k1_fe_mul(&u1, &a->x, &z2s);
|
||||
u2 = b->x;
|
||||
secp256k1_fe_mul(&s1, &a->y, &z2s); secp256k1_fe_mul(&s1, &s1, &b->z);
|
||||
s2 = b->y;
|
||||
CHECK(secp256k1_fe_equal(&u1, &u2));
|
||||
CHECK(secp256k1_fe_equal(&s1, &s2));
|
||||
}
|
||||
|
||||
#endif /* SECP256K1_TESTUTIL_H */
|
Loading…
x
Reference in New Issue
Block a user