Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/src/tests.c
Show First 20 Lines • Show All 3,628 Lines • ▼ Show 20 Lines | void run_ecmult_gen_blind(void) { | ||||
for (i = 0; i < 10; i++) { | for (i = 0; i < 10; i++) { | ||||
test_ecmult_gen_blind(); | test_ecmult_gen_blind(); | ||||
} | } | ||||
} | } | ||||
#ifdef USE_ENDOMORPHISM | #ifdef USE_ENDOMORPHISM | ||||
/***** ENDOMORPHISH TESTS *****/ | /***** ENDOMORPHISH TESTS *****/ | ||||
void test_scalar_split(const secp256k1_scalar* full) { | void test_scalar_split(const secp256k1_scalar* full) { | ||||
secp256k1_scalar s1, slam; | secp256k1_scalar s, s1, slam; | ||||
const unsigned char zero[32] = {0}; | const unsigned char zero[32] = {0}; | ||||
unsigned char tmp[32]; | unsigned char tmp[32]; | ||||
secp256k1_scalar_split_lambda(&s1, &slam, full); | secp256k1_scalar_split_lambda(&s1, &slam, full); | ||||
/* check slam*lambda + s1 == full */ | |||||
secp256k1_scalar_mul(&s, &secp256k1_const_lambda, &slam); | |||||
secp256k1_scalar_add(&s, &s, &s1); | |||||
CHECK(secp256k1_scalar_eq(&s, full)); | |||||
/* check that both are <= 128 bits in size */ | /* check that both are <= 128 bits in size */ | ||||
if (secp256k1_scalar_is_high(&s1)) { | if (secp256k1_scalar_is_high(&s1)) { | ||||
secp256k1_scalar_negate(&s1, &s1); | secp256k1_scalar_negate(&s1, &s1); | ||||
} | } | ||||
if (secp256k1_scalar_is_high(&slam)) { | if (secp256k1_scalar_is_high(&slam)) { | ||||
secp256k1_scalar_negate(&slam, &slam); | secp256k1_scalar_negate(&slam, &slam); | ||||
} | } | ||||
secp256k1_scalar_get_b32(tmp, &s1); | secp256k1_scalar_get_b32(tmp, &s1); | ||||
CHECK(secp256k1_memcmp_var(zero, tmp, 16) == 0); | CHECK(secp256k1_memcmp_var(zero, tmp, 16) == 0); | ||||
secp256k1_scalar_get_b32(tmp, &slam); | secp256k1_scalar_get_b32(tmp, &slam); | ||||
CHECK(secp256k1_memcmp_var(zero, tmp, 16) == 0); | CHECK(secp256k1_memcmp_var(zero, tmp, 16) == 0); | ||||
} | } | ||||
void run_endomorphism_tests(void) { | void run_endomorphism_tests(void) { | ||||
unsigned i; | unsigned i; | ||||
static secp256k1_scalar s; | |||||
test_scalar_split(&secp256k1_scalar_zero); | |||||
test_scalar_split(&secp256k1_scalar_one); | |||||
secp256k1_scalar_negate(&s,&secp256k1_scalar_one); | |||||
test_scalar_split(&s); | |||||
test_scalar_split(&secp256k1_const_lambda); | |||||
secp256k1_scalar_add(&s, &secp256k1_const_lambda, &secp256k1_scalar_one); | |||||
test_scalar_split(&s); | |||||
for (i = 0; i < 100U * count; ++i) { | for (i = 0; i < 100U * count; ++i) { | ||||
secp256k1_scalar full; | secp256k1_scalar full; | ||||
random_scalar_order_test(&full); | random_scalar_order_test(&full); | ||||
test_scalar_split(&full); | test_scalar_split(&full); | ||||
} | } | ||||
for (i = 0; i < sizeof(scalars_near_split_bounds) / sizeof(scalars_near_split_bounds[0]); ++i) { | for (i = 0; i < sizeof(scalars_near_split_bounds) / sizeof(scalars_near_split_bounds[0]); ++i) { | ||||
test_scalar_split(&scalars_near_split_bounds[i]); | test_scalar_split(&scalars_near_split_bounds[i]); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 2,091 Lines • Show Last 20 Lines |