public ECFieldElement add(ECFieldElement b) { int[] z = Nat224.create(); SecP224R1Field.add(x, ((SecP224R1FieldElement)b).x, z); return new SecP224R1FieldElement(z); }
public ECFieldElement add(ECFieldElement b) { int[] z = Nat224.create(); SecP224R1Field.add(x, ((SecP224R1FieldElement)b).x, z); return new SecP224R1FieldElement(z); }
private static void RM(int[] nc, int[] d0, int[] e0, int[] d1, int[] e1, int[] f1, int[] t) { SecP224R1Field.multiply(e1, e0, t); SecP224R1Field.multiply(t, nc, t); SecP224R1Field.multiply(d1, d0, f1); SecP224R1Field.add(f1, t, f1); SecP224R1Field.multiply(d1, e0, t); Nat224.copy(f1, d1); SecP224R1Field.multiply(e1, d0, e1); SecP224R1Field.add(e1, t, e1); SecP224R1Field.square(e1, f1); SecP224R1Field.multiply(f1, nc, f1); }
private static void RM(int[] nc, int[] d0, int[] e0, int[] d1, int[] e1, int[] f1, int[] t) { SecP224R1Field.multiply(e1, e0, t); SecP224R1Field.multiply(t, nc, t); SecP224R1Field.multiply(d1, d0, f1); SecP224R1Field.add(f1, t, f1); SecP224R1Field.multiply(d1, e0, t); Nat224.copy(f1, d1); SecP224R1Field.multiply(e1, d0, e1); SecP224R1Field.add(e1, t, e1); SecP224R1Field.square(e1, f1); SecP224R1Field.multiply(f1, nc, f1); }
private static void RS(int[] d, int[] e, int[] f, int[] t) { SecP224R1Field.multiply(e, d, e); SecP224R1Field.twice(e, e); SecP224R1Field.square(d, t); SecP224R1Field.add(f, t, d); SecP224R1Field.multiply(f, t, f); int c = Nat.shiftUpBits(7, f, 2, 0); SecP224R1Field.reduce32(c, f); }
private static void RS(int[] d, int[] e, int[] f, int[] t) { SecP224R1Field.multiply(e, d, e); SecP224R1Field.twice(e, e); SecP224R1Field.square(d, t); SecP224R1Field.add(f, t, d); SecP224R1Field.multiply(f, t, f); int c = Nat.shiftUpBits(7, f, 2, 0); SecP224R1Field.reduce32(c, f); }
SecP224R1Field.add(X1.x, Z1Squared, M); SecP224R1Field.multiply(M, t1, M); c = Nat224.addBothTo(M, M, M);
SecP224R1Field.add(X1.x, Z1Squared, M); SecP224R1Field.multiply(M, t1, M); c = Nat224.addBothTo(M, M, M);