public ECFieldElement fromBigInteger(BigInteger x) { return new SecP192R1FieldElement(x); }
if (Y1.isZero()) SecP192R1Field.square(Y1Squared, T); boolean Z1IsOne = Z1.isOne(); SecP192R1Field.reduce32(c, t1); SecP192R1FieldElement X3 = new SecP192R1FieldElement(T); SecP192R1Field.square(M, X3.x); SecP192R1Field.subtract(X3.x, S, X3.x); SecP192R1Field.subtract(X3.x, S, X3.x); SecP192R1FieldElement Y3 = new SecP192R1FieldElement(S); SecP192R1Field.subtract(S, X3.x, Y3.x); SecP192R1Field.multiply(Y3.x, M, Y3.x); SecP192R1Field.subtract(Y3.x, t1, Y3.x); SecP192R1FieldElement Z3 = new SecP192R1FieldElement(M); SecP192R1Field.twice(Y1.x, Z3.x); if (!Z1IsOne)
int[] t4 = Nat192.create(); boolean Z1IsOne = Z1.isOne(); int[] U2, S2; if (Z1IsOne) boolean Z2IsOne = Z2.isOne(); int[] U1, S1; if (Z2IsOne) SecP192R1Field.reduce32(c, G); SecP192R1FieldElement X3 = new SecP192R1FieldElement(t4); SecP192R1Field.square(R, X3.x); SecP192R1Field.subtract(X3.x, G, X3.x); SecP192R1FieldElement Y3 = new SecP192R1FieldElement(G); SecP192R1Field.subtract(V, X3.x, Y3.x); SecP192R1Field.multiplyAddToExt(Y3.x, R, tt1); SecP192R1Field.reduce(tt1, Y3.x); SecP192R1FieldElement Z3 = new SecP192R1FieldElement(H); if (!Z1IsOne)
if (Y1.isZero()) SecP192R1Field.square(Y1Squared, T); boolean Z1IsOne = Z1.isOne(); SecP192R1Field.reduce32(c, t1); SecP192R1FieldElement X3 = new SecP192R1FieldElement(T); SecP192R1Field.square(M, X3.x); SecP192R1Field.subtract(X3.x, S, X3.x); SecP192R1Field.subtract(X3.x, S, X3.x); SecP192R1FieldElement Y3 = new SecP192R1FieldElement(S); SecP192R1Field.subtract(S, X3.x, Y3.x); SecP192R1Field.multiply(Y3.x, M, Y3.x); SecP192R1Field.subtract(Y3.x, t1, Y3.x); SecP192R1FieldElement Z3 = new SecP192R1FieldElement(M); SecP192R1Field.twice(Y1.x, Z3.x); if (!Z1IsOne)
int[] t4 = Nat192.create(); boolean Z1IsOne = Z1.isOne(); int[] U2, S2; if (Z1IsOne) boolean Z2IsOne = Z2.isOne(); int[] U1, S1; if (Z2IsOne) SecP192R1Field.reduce32(c, G); SecP192R1FieldElement X3 = new SecP192R1FieldElement(t4); SecP192R1Field.square(R, X3.x); SecP192R1Field.subtract(X3.x, G, X3.x); SecP192R1FieldElement Y3 = new SecP192R1FieldElement(G); SecP192R1Field.subtract(V, X3.x, Y3.x); SecP192R1Field.multiplyAddToExt(Y3.x, R, tt1); SecP192R1Field.reduce(tt1, Y3.x); SecP192R1FieldElement Z3 = new SecP192R1FieldElement(H); if (!Z1IsOne)
public ECFieldElement fromBigInteger(BigInteger x) { return new SecP192R1FieldElement(x); }
public ECPoint lookup(int index) { int[] x = Nat192.create(), y = Nat192.create(); int pos = 0; for (int i = 0; i < len; ++i) { int MASK = ((i ^ index) - 1) >> 31; for (int j = 0; j < FE_INTS; ++j) { x[j] ^= table[pos + j] & MASK; y[j] ^= table[pos + FE_INTS + j] & MASK; } pos += (FE_INTS * 2); } return createRawPoint(new SecP192R1FieldElement(x), new SecP192R1FieldElement(y), false); } };
public ECFieldElement add(ECFieldElement b) { int[] z = Nat192.create(); SecP192R1Field.add(x, ((SecP192R1FieldElement)b).x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement multiply(ECFieldElement b) { int[] z = Nat192.create(); SecP192R1Field.multiply(x, ((SecP192R1FieldElement)b).x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement negate() { int[] z = Nat192.create(); SecP192R1Field.negate(x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement square() { int[] z = Nat192.create(); SecP192R1Field.square(x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement addOne() { int[] z = Nat192.create(); SecP192R1Field.addOne(x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement negate() { int[] z = Nat192.create(); SecP192R1Field.negate(x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement addOne() { int[] z = Nat192.create(); SecP192R1Field.addOne(x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement invert() { // return new SecP192R1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat192.create(); Mod.invert(SecP192R1Field.P, x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement multiply(ECFieldElement b) { int[] z = Nat192.create(); SecP192R1Field.multiply(x, ((SecP192R1FieldElement)b).x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement subtract(ECFieldElement b) { int[] z = Nat192.create(); SecP192R1Field.subtract(x, ((SecP192R1FieldElement)b).x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement invert() { // return new SecP192R1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat192.create(); Mod.invert(SecP192R1Field.P, x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement add(ECFieldElement b) { int[] z = Nat192.create(); SecP192R1Field.add(x, ((SecP192R1FieldElement)b).x, z); return new SecP192R1FieldElement(z); }
public ECFieldElement subtract(ECFieldElement b) { int[] z = Nat192.create(); SecP192R1Field.subtract(x, ((SecP192R1FieldElement)b).x, z); return new SecP192R1FieldElement(z); }