Index: mozilla/security/nss/lib/freebl/ecl/ecp_aff.c |
=================================================================== |
--- mozilla/security/nss/lib/freebl/ecl/ecp_aff.c (revision 180595) |
+++ mozilla/security/nss/lib/freebl/ecl/ecp_aff.c (working copy) |
@@ -285,11 +285,10 @@ |
} |
/* left-hand side: y^2 */ |
MP_CHECKOK( group->meth->field_sqr(&pyt, &accl, group->meth) ); |
- /* right-hand side: x^3 + a*x + b */ |
+ /* right-hand side: x^3 + a*x + b = (x^2 + a)*x + b by Horner's rule */ |
MP_CHECKOK( group->meth->field_sqr(&pxt, &tmp, group->meth) ); |
- MP_CHECKOK( group->meth->field_mul(&pxt, &tmp, &accr, group->meth) ); |
- MP_CHECKOK( group->meth->field_mul(&group->curvea, &pxt, &tmp, group->meth) ); |
- MP_CHECKOK( group->meth->field_add(&tmp, &accr, &accr, group->meth) ); |
+ MP_CHECKOK( group->meth->field_add(&tmp, &group->curvea, &tmp, group->meth) ); |
+ MP_CHECKOK( group->meth->field_mul(&tmp, &pxt, &accr, group->meth) ); |
MP_CHECKOK( group->meth->field_add(&accr, &group->curveb, &accr, group->meth) ); |
/* check LHS - RHS == 0 */ |
MP_CHECKOK( group->meth->field_sub(&accl, &accr, &accr, group->meth) ); |