public ECFieldElement fromBigInteger(BigInteger x) { return new SecT571FieldElement(x); }
public ECFieldElement fromBigInteger(BigInteger x) { return new SecT571FieldElement(x); }
public ECPoint lookup(int index) { long[] x = Nat576.create64(), y = Nat576.create64(); int pos = 0; for (int i = 0; i < len; ++i) { long MASK = ((i ^ index) - 1) >> 31; for (int j = 0; j < FE_LONGS; ++j) { x[j] ^= table[pos + j] & MASK; y[j] ^= table[pos + FE_LONGS + j] & MASK; } pos += (FE_LONGS * 2); } return createRawPoint(new SecT571FieldElement(x), new SecT571FieldElement(y), false); } };
public ECPoint lookup(int index) { long[] x = Nat576.create64(), y = Nat576.create64(); int pos = 0; for (int i = 0; i < len; ++i) { long MASK = ((i ^ index) - 1) >> 31; for (int j = 0; j < FE_LONGS; ++j) { x[j] ^= table[pos + j] & MASK; y[j] ^= table[pos + FE_LONGS + j] & MASK; } pos += (FE_LONGS * 2); } return createRawPoint(new SecT571FieldElement(x), new SecT571FieldElement(y), false); } };
public ECFieldElement add(ECFieldElement b) { long[] z = Nat576.create64(); SecT571Field.add(x, ((SecT571FieldElement)b).x, z); return new SecT571FieldElement(z); }
public ECFieldElement sqrt() { long[] z = Nat576.create64(); SecT571Field.sqrt(x, z); return new SecT571FieldElement(z); }
public ECFieldElement addOne() { long[] z = Nat576.create64(); SecT571Field.addOne(x, z); return new SecT571FieldElement(z); }
public ECFieldElement square() { long[] z = Nat576.create64(); SecT571Field.square(x, z); return new SecT571FieldElement(z); }
public ECFieldElement multiply(ECFieldElement b) { long[] z = Nat576.create64(); SecT571Field.multiply(x, ((SecT571FieldElement)b).x, z); return new SecT571FieldElement(z); }
public ECFieldElement squarePow(int pow) { if (pow < 1) { return this; } long[] z = Nat576.create64(); SecT571Field.squareN(x, pow, z); return new SecT571FieldElement(z); }
public ECFieldElement invert() { long[] z = Nat576.create64(); SecT571Field.invert(x, z); return new SecT571FieldElement(z); }
return createRawPoint(new SecT571FieldElement(x), new SecT571FieldElement(y), false);
public ECFieldElement squarePlusProduct(ECFieldElement x, ECFieldElement y) { long[] ax = this.x; long[] xx = ((SecT571FieldElement)x).x, yx = ((SecT571FieldElement)y).x; long[] tt = Nat576.createExt64(); SecT571Field.squareAddToExt(ax, tt); SecT571Field.multiplyAddToExt(xx, yx, tt); long[] z = Nat576.create64(); SecT571Field.reduce(tt, z); return new SecT571FieldElement(z); }
public ECFieldElement multiplyPlusProduct(ECFieldElement b, ECFieldElement x, ECFieldElement y) { long[] ax = this.x, bx = ((SecT571FieldElement)b).x; long[] xx = ((SecT571FieldElement)x).x, yx = ((SecT571FieldElement)y).x; long[] tt = Nat576.createExt64(); SecT571Field.multiplyAddToExt(ax, bx, tt); SecT571Field.multiplyAddToExt(xx, yx, tt); long[] z = Nat576.create64(); SecT571Field.reduce(tt, z); return new SecT571FieldElement(z); }
return new SecT571R1Point(curve, new SecT571FieldElement(T), SecT571R1Curve.SecT571R1_B_SQRT, withCompression); SecT571Field.multiplyAddToExt(T, L1Z1, tt); SecT571FieldElement X3 = new SecT571FieldElement(t1); SecT571Field.square(T, X3.x); SecT571FieldElement Z3 = new SecT571FieldElement(T); if (Z1Precomp != null) SecT571Field.reduce(tt, t2); SecT571Field.addBothTo(X3.x, Z3.x, t2); SecT571FieldElement L3 = new SecT571FieldElement(t2);
return new SecT571R1Point(curve, new SecT571FieldElement(A), SecT571R1Curve.SecT571R1_B_SQRT, withCompression); SecT571FieldElement X3 = new SecT571FieldElement(); SecT571Field.square(A, X3.x); SecT571Field.multiply(X3.x, X2Z1Sq, X3.x); SecT571FieldElement Z3 = new SecT571FieldElement(t1); SecT571Field.multiply(A, B, Z3.x); SecT571Field.multiplyPrecomp(Z3.x, Z1SqPrecomp, Z3.x); SecT571FieldElement L3 = new SecT571FieldElement(t2); SecT571Field.add(A, B, L3.x); SecT571Field.square(L3.x, L3.x);
SecT571Field.multiplyPrecomp(U2, APrecomp, AU2); X3 = new SecT571FieldElement(t1); SecT571Field.multiply(AU1, AU2, X3.x); Z3 = new SecT571FieldElement(t3); SecT571Field.multiplyPrecomp(B, APrecomp, Z3.x); SecT571Field.multiplyAddToExt(t4, Z3.x, tt); L3 = new SecT571FieldElement(t4); SecT571Field.reduce(tt, L3.x);
SecT571Field.multiplyPrecomp(U2, APrecomp, AU2); X3 = new SecT571FieldElement(t1); SecT571Field.multiply(AU1, AU2, X3.x); Z3 = new SecT571FieldElement(t3); SecT571Field.multiplyPrecomp(B, APrecomp, Z3.x); SecT571Field.multiplyAddToExt(t4, Z3.x, tt); L3 = new SecT571FieldElement(t4); SecT571Field.reduce(tt, L3.x);