public ECFieldElement addOne() { BigInteger x2 = x.add(ECConstants.ONE); if (x2.compareTo(q) == 0) { x2 = ECConstants.ZERO; } return new Fp(q, r, x2); }
private static BigInteger solveQuadraticEquation(BigInteger n, BigInteger r, BigInteger s) { BigInteger det = r.multiply(r).subtract(s.shiftLeft(2)).mod(n); BigInteger root = new ECFieldElement.Fp(n, det).sqrt().toBigInteger(); if (!root.testBit(0)) { root = n.subtract(root); } return root.shiftRight(1); // NOTE: implicit -1 of the low-bit }
public X9FieldElement(BigInteger p, ASN1OctetString s) { this(new ECFieldElement.Fp(p, new BigInteger(1, s.getOctets()))); }
/** * @deprecated Will be removed */ public X9FieldElement(BigInteger p, ASN1OctetString s) { this(new ECFieldElement.Fp(p, new BigInteger(1, s.getOctets()))); }
public ECFieldElement square() { return new Fp(q, r, modMult(x, x)); }
public ECFieldElement fromBigInteger(BigInteger x) { return new ECFieldElement.Fp(this.q, this.r, x); }
public ECFieldElement divide(ECFieldElement b) { return new Fp(q, r, modMult(x, modInverse(b.toBigInteger()))); }
public ECFieldElement add(ECFieldElement b) { return new Fp(q, r, modAdd(x, b.toBigInteger())); }
public ECFieldElement divide(ECFieldElement b) { return new Fp(q, r, modMult(x, modInverse(b.toBigInteger()))); }
public ECFieldElement multiplyMinusProduct(ECFieldElement b, ECFieldElement x, ECFieldElement y) { BigInteger ax = this.x, bx = b.toBigInteger(), xx = x.toBigInteger(), yx = y.toBigInteger(); BigInteger ab = ax.multiply(bx); BigInteger xy = xx.multiply(yx); return new Fp(q, r, modReduce(ab.subtract(xy))); }
public ECFieldElement subtract(ECFieldElement b) { return new Fp(q, r, modSubtract(x, b.toBigInteger())); }
public ECFieldElement invert() { // TODO Modular inversion can be faster for a (Generalized) Mersenne Prime. return new Fp(q, r, modInverse(x)); }
public ECFieldElement squarePlusProduct(ECFieldElement x, ECFieldElement y) { BigInteger ax = this.x, xx = x.toBigInteger(), yx = y.toBigInteger(); BigInteger aa = ax.multiply(ax); BigInteger xy = xx.multiply(yx); return new Fp(q, r, modReduce(aa.add(xy))); }
@SuppressWarnings("deprecation") public SM2KeyGenerator() { ECCurve curve = new org.bouncycastle.math.ec.ECCurve.Fp(p, a, b); ECFieldElement x = new Fp(p, gx); ECFieldElement y = new Fp(p, gy); ECPoint point = new org.bouncycastle.math.ec.ECPoint.Fp(curve, x, y); ecdp = new ECDomainParameters(curve, point, n); }
public ECFieldElement multiplyPlusProduct(ECFieldElement b, ECFieldElement x, ECFieldElement y) { BigInteger ax = this.x, bx = b.toBigInteger(), xx = x.toBigInteger(), yx = y.toBigInteger(); BigInteger ab = ax.multiply(bx); BigInteger xy = xx.multiply(yx); return new Fp(q, r, modReduce(ab.add(xy))); }
public ECFieldElement multiplyMinusProduct(ECFieldElement b, ECFieldElement x, ECFieldElement y) { BigInteger ax = this.x, bx = b.toBigInteger(), xx = x.toBigInteger(), yx = y.toBigInteger(); BigInteger ab = ax.multiply(bx); BigInteger xy = xx.multiply(yx); return new Fp(q, r, modReduce(ab.subtract(xy))); }
public ECFieldElement squareMinusProduct(ECFieldElement x, ECFieldElement y) { BigInteger ax = this.x, xx = x.toBigInteger(), yx = y.toBigInteger(); BigInteger aa = ax.multiply(ax); BigInteger xy = xx.multiply(yx); return new Fp(q, r, modReduce(aa.subtract(xy))); }
X9ECParameters x9 = NISTNamedCurves.getByName("P-224"); ECCurve.Fp curve = (Fp) x9.getCurve(); BigInteger q = curve.getQ(); ECFieldElement x1 = new ECFieldElement.Fp(q, new BigInteger("8")); ECFieldElement y1 = new ECFieldElement.Fp(q, new BigInteger("9"));
public ECFieldElement multiplyPlusProduct(ECFieldElement b, ECFieldElement x, ECFieldElement y) { BigInteger ax = this.x, bx = b.toBigInteger(), xx = x.toBigInteger(), yx = y.toBigInteger(); BigInteger ab = ax.multiply(bx); BigInteger xy = xx.multiply(yx); return new Fp(q, r, modReduce(ab.add(xy))); }
public ECFieldElement squarePlusProduct(ECFieldElement x, ECFieldElement y) { BigInteger ax = this.x, xx = x.toBigInteger(), yx = y.toBigInteger(); BigInteger aa = ax.multiply(ax); BigInteger xy = xx.multiply(yx); return new Fp(q, r, modReduce(aa.add(xy))); }