fix ec comparison with zero

update-fork
MITSUNARI Shigeo 4 years ago
parent e48973af50
commit ef4a9de257
  1. 12
      include/mcl/ec.hpp
  2. 3
      test/ec_test.cpp

@ -227,6 +227,12 @@ template<class E>
bool isEqualJacobi(const E& P1, const E& P2)
{
typedef typename E::Fp F;
bool zero1 = P1.isZero();
bool zero2 = P2.isZero();
if (zero1) {
return zero2;
}
if (zero2) return false;
F s1, s2, t1, t2;
F::sqr(s1, P1.z);
F::sqr(s2, P2.z);
@ -452,6 +458,12 @@ template<class E>
bool isEqualProj(const E& P1, const E& P2)
{
typedef typename E::Fp F;
bool zero1 = P1.isZero();
bool zero2 = P2.isZero();
if (zero1) {
return zero2;
}
if (zero2) return false;
F t1, t2;
F::mul(t1, P1.x, P2.z);
F::mul(t2, P2.x, P1.z);

@ -95,6 +95,9 @@ struct Test {
if (Ec::getMode() != mcl::ec::Affine) {
CYBOZU_TEST_ASSERT(!R.isNormalized());
}
CYBOZU_TEST_ASSERT(O == O);
CYBOZU_TEST_ASSERT(R != O);
CYBOZU_TEST_ASSERT(O != R);
CYBOZU_TEST_ASSERT(R.isValid());
Ec R2 = P + P;
CYBOZU_TEST_EQUAL(R, R2);

Loading…
Cancel
Save