Add tests for adding P+Q with P.x!=Q.x and P.y=-Q.y

pull/11871/head
Pieter Wuille 10 years ago committed by Andrew Poelstra
parent 8c5d5f7b5b
commit 765742021a
No known key found for this signature in database
GPG Key ID: C588D63CE41B97C1

@ -958,11 +958,17 @@ void ge_equals_gej(const secp256k1_ge_t *a, const secp256k1_gej_t *b) {
void test_ge(void) { void test_ge(void) {
int i, i1; int i, i1;
#ifdef USE_ENDOMORPHISM
int runs = 6;
#else
int runs = 4; int runs = 4;
#endif
/* Points: (infinity, p1, p1, -p1, -p1, p2, p2, -p2, -p2, p3, p3, -p3, -p3, p4, p4, -p4, -p4). /* Points: (infinity, p1, p1, -p1, -p1, p2, p2, -p2, -p2, p3, p3, -p3, -p3, p4, p4, -p4, -p4).
* The second in each pair of identical points uses a random Z coordinate in the Jacobian form. * The second in each pair of identical points uses a random Z coordinate in the Jacobian form.
* All magnitudes are randomized. * All magnitudes are randomized.
* All 17*17 combinations of points are added to eachother, using all applicable methods. * All 17*17 combinations of points are added to eachother, using all applicable methods.
*
* When the endomorphism code is compiled in, p5 = lambda*p1 and p6 = lambda^2*p1 are added as well.
*/ */
secp256k1_ge_t *ge = (secp256k1_ge_t *)malloc(sizeof(secp256k1_ge_t) * (1 + 4 * runs)); secp256k1_ge_t *ge = (secp256k1_ge_t *)malloc(sizeof(secp256k1_ge_t) * (1 + 4 * runs));
secp256k1_gej_t *gej = (secp256k1_gej_t *)malloc(sizeof(secp256k1_gej_t) * (1 + 4 * runs)); secp256k1_gej_t *gej = (secp256k1_gej_t *)malloc(sizeof(secp256k1_gej_t) * (1 + 4 * runs));
@ -977,6 +983,14 @@ void test_ge(void) {
int j; int j;
secp256k1_ge_t g; secp256k1_ge_t g;
random_group_element_test(&g); random_group_element_test(&g);
#ifdef USE_ENDOMORPHISM
if (i >= runs - 2) {
secp256k1_ge_mul_lambda(&g, &ge[1]);
}
if (i >= runs - 1) {
secp256k1_ge_mul_lambda(&g, &g);
}
#endif
ge[1 + 4 * i] = g; ge[1 + 4 * i] = g;
ge[2 + 4 * i] = g; ge[2 + 4 * i] = g;
secp256k1_ge_neg(&ge[3 + 4 * i], &g); secp256k1_ge_neg(&ge[3 + 4 * i], &g);

Loading…
Cancel
Save