@@ -95,7 +95,7 @@ func inv(dest, x *Fp2) { | |||||
fpMul(&e2, &x.B, &x.B) // = b*b*R*R | fpMul(&e2, &x.B, &x.B) // = b*b*R*R | ||||
fp2Add(&e1, &e1, &e2) // = (a^2 + b^2)*R*R | fp2Add(&e1, &e1, &e2) // = (a^2 + b^2)*R*R | ||||
fpMontRdc(&f1, &e1) // = (a^2 + b^2)*R mod p | fpMontRdc(&f1, &e1) // = (a^2 + b^2)*R mod p | ||||
// Now&f1 = a^2 + b^2 | |||||
// Now f1 = a^2 + b^2 | |||||
fpMulRdc(&f2, &f1, &f1) | fpMulRdc(&f2, &f1, &f1) | ||||
p34(&f2, &f2) | p34(&f2, &f2) | ||||
@@ -1,17 +1,5 @@ | |||||
package sike | package sike | ||||
// Interface for working with isogenies. | |||||
type isogeny interface { | |||||
// Given a torsion point on a curve computes isogenous curve. | |||||
// Returns curve coefficients (A:C), so that E_(A/C) = E_(A/C)/<P>, | |||||
// where P is a provided projective point. Sets also isogeny constants | |||||
// that are needed for isogeny evaluation. | |||||
GenerateCurve(*ProjectivePoint) CurveCoefficientsEquiv | |||||
// Evaluates isogeny at caller provided point. Requires isogeny curve constants | |||||
// to be earlier computed by GenerateCurve. | |||||
EvaluatePoint(*ProjectivePoint) ProjectivePoint | |||||
} | |||||
// Stores isogeny 3 curve constants | // Stores isogeny 3 curve constants | ||||
type isogeny3 struct { | type isogeny3 struct { | ||||
K1 Fp2 | K1 Fp2 | ||||