public ECFieldElement invert() { // return new SecP192K1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat192.create(); Mod.invert(SecP192K1Field.P, x, z); return new SecP192K1FieldElement(z); }
ac = inversionStep(p, u, len, a, ac); inversionResult(p, ac, a, z); return; ac = inversionStep(p, u, uvLen, a, ac); if (Nat.isOne(uvLen, u)) inversionResult(p, ac, a, z); return; bc = inversionStep(p, v, uvLen, b, bc); if (Nat.isOne(uvLen, v)) inversionResult(p, bc, b, z); return;
/** * return a sqrt root - the routine verifies that the calculation returns the right value - if * none exists it returns null. */ public ECFieldElement sqrt() { int[] c = this.x; if (Nat224.isZero(c) || Nat224.isOne(c)) { return this; } int[] nc = Nat224.create(); SecP224R1Field.negate(c, nc); int[] r = Mod.random(SecP224R1Field.P); int[] t = Nat224.create(); if (!isSquare(c)) { return null; } while (!trySqrt(nc, r, t)) { SecP224R1Field.addOne(r, r); } SecP224R1Field.square(t, r); return Nat224.eq(c, r) ? new SecP224R1FieldElement(t) : null; }
int zeroes = getTrailingZeroes(u[0]); if (zeroes > 0)
ac = inversionStep(p, u, len, a, ac); inversionResult(p, ac, a, z); return; ac = inversionStep(p, u, uvLen, a, ac); if (Nat.isOne(uvLen, u)) inversionResult(p, ac, a, z); return; bc = inversionStep(p, v, uvLen, b, bc); if (Nat.isOne(uvLen, v)) inversionResult(p, bc, b, z); return;
/** * return a sqrt root - the routine verifies that the calculation returns the right value - if * none exists it returns null. */ public ECFieldElement sqrt() { int[] c = this.x; if (Nat224.isZero(c) || Nat224.isOne(c)) { return this; } int[] nc = Nat224.create(); SecP224R1Field.negate(c, nc); int[] r = Mod.random(SecP224R1Field.P); int[] t = Nat224.create(); if (!isSquare(c)) { return null; } while (!trySqrt(nc, r, t)) { SecP224R1Field.addOne(r, r); } SecP224R1Field.square(t, r); return Nat224.eq(c, r) ? new SecP224R1FieldElement(t) : null; }
int zeroes = getTrailingZeroes(u[0]); if (zeroes > 0)
public ECFieldElement invert() { // return new SM2P256V1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat256.create(); Mod.invert(SM2P256V1Field.P, x, z); return new SM2P256V1FieldElement(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 ECFieldElement invert() { // return new SecP256K1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat256.create(); Mod.invert(SecP256K1Field.P, x, z); return new SecP256K1FieldElement(z); }
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 ECFieldElement invert() { // return new SecP128R1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat128.create(); Mod.invert(SecP128R1Field.P, x, z); return new SecP128R1FieldElement(z); }
public ECFieldElement invert() { // return new SecP224K1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat224.create(); Mod.invert(SecP224K1Field.P, x, z); return new SecP224K1FieldElement(z); }
public ECFieldElement invert() { // return new SecP160R1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat160.create(); Mod.invert(SecP160R1Field.P, x, z); return new SecP160R1FieldElement(z); }
public ECFieldElement invert() { // return new Curve25519FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat256.create(); Mod.invert(Curve25519Field.P, x, z); return new Curve25519FieldElement(z); }
public ECFieldElement invert() { // return new SecP160R2FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat160.create(); Mod.invert(SecP160R2Field.P, x, z); return new SecP160R2FieldElement(z); }
public ECFieldElement invert() { // return new SecP224R1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat224.create(); Mod.invert(SecP224R1Field.P, x, z); return new SecP224R1FieldElement(z); }
public ECFieldElement invert() { // return new SecP256K1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat256.create(); Mod.invert(SecP256K1Field.P, x, z); return new SecP256K1FieldElement(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 invert() { // return new SecP256R1FieldElement(toBigInteger().modInverse(Q)); int[] z = Nat256.create(); Mod.invert(SecP256R1Field.P, x, z); return new SecP256R1FieldElement(z); }