public ECFieldElement multiply(final ECFieldElement b) { // Right-to-left comb multiplication in the IntArray // Input: Binary polynomials a(z) and b(z) of degree at most m-1 // Output: c(z) = a(z) * b(z) mod f(z) // No check performed here for performance reasons. Instead the // elements involved are checked in ECPoint.F2m // checkFieldElements(this, b); F2m bF2m = (F2m) b; IntArray mult = x.multiply(bF2m.x, m); mult.reduce(m, new int[] {k1, k2, k3}); return new F2m(m, k1, k2, k3, mult); }
public ECFieldElement square() { IntArray squared = x.square(m); squared.reduce(m, new int[] {k1, k2, k3}); return new F2m(m, k1, k2, k3, squared); }