You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
w.conditional_assign(&(MINUS_SQRT_B1* ee * w), !u1_is_square);
702
+
u = (w.square() - A* e.square() - w * w1).half();
703
+
704
+
ok &= u.is_square();
705
+
706
+
// If the source point was a low-order point, then the computations
707
+
// above are incorrect. We handle this case here; among the
708
+
// low-order points, only the neutral point is in the prime-order
709
+
// subgroup.
710
+
let is_low_order = self.X.is_zero() | self.Y.is_zero();
711
+
let is_neutral = self.Y.ct_eq(&self.Z);
712
+
ok ^= is_low_order &(ok ^ is_neutral);
713
+
714
+
ok
715
+
}
716
+
664
717
/// Edwards_Isogeny is derived from the doubling formula
665
718
/// XXX: There is a duplicate method in the twisted edwards module to compute the dual isogeny
666
719
/// XXX: Not much point trying to make it generic I think. So what we can do is optimise each respective isogeny method for a=1 or a = -1 (currently, I just made it really slow and simple)
0 commit comments