diff --git a/lib/curve.c b/lib/curve.c index d1c8ab0c9a67594dfc60bee9e2f91427091d4fbd..47fc6e6b274cbb1deb5d01fd34d51420490c77c7 100644 --- a/lib/curve.c +++ b/lib/curve.c @@ -474,11 +474,9 @@ static void elliptic_curve_random (mpz_ptr P_x, mpz_ptr P_y, The point is not really random, since successive X-coordinates from 1 on are tested. */ { - mpz_t tmp; long unsigned int P_x_long = 0; bool P_infty = true; - mpz_init (tmp); while (P_infty) { P_x_long++; /* P_y = P_x^3 + a P_x + b */ @@ -487,7 +485,7 @@ static void elliptic_curve_random (mpz_ptr P_x, mpz_ptr P_y, mpz_add_ui (P_y, P_y, P_x_long * P_x_long * P_x_long); mpz_mod (P_y, P_y, p); /* try to compute the square root of P_y */ - if (mpz_jacobi (P_y, p) != -1) { + if (mpz_jacobi (P_y, p) == 1) { mpz_set_ui (P_x, P_x_long); cm_nt_mpz_tonelli (P_y, P_y, p); /* get rid of the cofactor */ @@ -495,7 +493,6 @@ static void elliptic_curve_random (mpz_ptr P_x, mpz_ptr P_y, elliptic_curve_multiply (P_x, P_y, &P_infty, cofactor, a, p); } } - mpz_clear (tmp); } /*****************************************************************************/