public SecP384R1FieldElement() { this.x = Nat.create(12); }
public SecP384R1FieldElement() { this.x = Nat.create(12); }
public ECFieldElement invert() { // return new SecP384R1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat.create(12); Mod.invert(SecP384R1Field.P, x, z); return new SecP384R1FieldElement(z); }
public static void multiply(int[] x, int[] y, int[] z) { int[] tt = Nat.create(33); implMultiply(x, y, tt); reduce(tt, z); }
public ECFieldElement add(ECFieldElement b) { int[] z = Nat.create(17); SecP521R1Field.add(x, ((SecP521R1FieldElement)b).x, z); return new SecP521R1FieldElement(z); }
public ECFieldElement negate() { int[] z = Nat.create(17); SecP521R1Field.negate(x, z); return new SecP521R1FieldElement(z); }
public ECFieldElement add(ECFieldElement b) { int[] z = Nat.create(12); SecP384R1Field.add(x, ((SecP384R1FieldElement)b).x, z); return new SecP384R1FieldElement(z); }
public ECFieldElement square() { int[] z = Nat.create(12); SecP384R1Field.square(x, z); return new SecP384R1FieldElement(z); }
public ECFieldElement subtract(ECFieldElement b) { int[] z = Nat.create(17); SecP521R1Field.subtract(x, ((SecP521R1FieldElement)b).x, z); return new SecP521R1FieldElement(z); }
public ECFieldElement invert() { // return new SecP521R1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat.create(17); Mod.invert(SecP521R1Field.P, x, z); return new SecP521R1FieldElement(z); }
public static void multiply(int[] x, int[] y, int[] z) { int[] tt = Nat.create(24); Nat384.mul(x, y, tt); reduce(tt, z); }
public ECFieldElement addOne() { int[] z = Nat.create(12); SecP384R1Field.addOne(x, z); return new SecP384R1FieldElement(z); }
public ECFieldElement negate() { int[] z = Nat.create(12); SecP384R1Field.negate(x, z); return new SecP384R1FieldElement(z); }
public static void multiply(int[] x, int[] y, int[] z) { int[] tt = Nat.create(24); Nat384.mul(x, y, tt); reduce(tt, z); }
public ECFieldElement subtract(ECFieldElement b) { int[] z = Nat.create(12); SecP384R1Field.subtract(x, ((SecP384R1FieldElement)b).x, z); return new SecP384R1FieldElement(z); }
public ECFieldElement multiply(ECFieldElement b) { int[] z = Nat.create(12); SecP384R1Field.multiply(x, ((SecP384R1FieldElement)b).x, z); return new SecP384R1FieldElement(z); }
public static void square(int[] x, int[] z) { int[] tt = Nat.create(24); Nat384.square(x, tt); reduce(tt, z); }
public ECFieldElement divide(ECFieldElement b) { // return multiply(b.invert()); int[] z = Nat.create(12); Mod.invert(SecP384R1Field.P, ((SecP384R1FieldElement)b).x, z); SecP384R1Field.multiply(z, x, z); return new SecP384R1FieldElement(z); }
public ECFieldElement divide(ECFieldElement b) { // return multiply(b.invert()); int[] z = Nat.create(17); Mod.invert(SecP521R1Field.P, ((SecP521R1FieldElement)b).x, z); SecP521R1Field.multiply(z, x, z); return new SecP521R1FieldElement(z); }
public static void squareN(int[] x, int n, int[] z) { // assert n > 0; int[] tt = Nat.create(24); Nat384.square(x, tt); reduce(tt, z); while (--n > 0) { Nat384.square(z, tt); reduce(tt, z); } }