ECCurve.F2m (Bouncy Castle Library 1.52 API Specification)
Date: 2015-03-01

org.bouncycastle.math.ec

## Class ECCurve.F2m

- java.lang.Object
- - org.bouncycastle.math.ec.ECCurve
  - - org.bouncycastle.math.ec.ECCurve.AbstractF2m
    - - org.bouncycastle.math.ec.ECCurve.F2m

- Enclosing class:
    ECCurve

      public static class ECCurve.F2m
      extends ECCurve.AbstractF2m

  Elliptic curves over F2m. The Weierstrass equation is given by `y2 + xy = x3 + ax2 + b`.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.bouncycastle.math.ec.ECCurve

      `ECCurve.AbstractF2m, ECCurve.AbstractFp, ECCurve.Config, ECCurve.F2m, ECCurve.Fp`

  - ### Field Summary

    - ### Fields inherited from class org.bouncycastle.math.ec.ECCurve

      `a, b, cofactor, coord, COORD_AFFINE, COORD_HOMOGENEOUS, COORD_JACOBIAN, COORD_JACOBIAN_CHUDNOVSKY, COORD_JACOBIAN_MODIFIED, COORD_LAMBDA_AFFINE, COORD_LAMBDA_PROJECTIVE, COORD_SKEWED, endomorphism, field, multiplier, order`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `` | `ECCurve.F2m(int m, int k, java.math.BigInteger a, java.math.BigInteger b)` Constructor for Trinomial Polynomial Basis (TPB).
    `` | `ECCurve.F2m(int m, int k, java.math.BigInteger a, java.math.BigInteger b, java.math.BigInteger order, java.math.BigInteger cofactor)` Constructor for Trinomial Polynomial Basis (TPB).
    `` | `ECCurve.F2m(int m, int k1, int k2, int k3, java.math.BigInteger a, java.math.BigInteger b)` Constructor for Pentanomial Polynomial Basis (PPB).
    `` | `ECCurve.F2m(int m, int k1, int k2, int k3, java.math.BigInteger a, java.math.BigInteger b, java.math.BigInteger order, java.math.BigInteger cofactor)` Constructor for Pentanomial Polynomial Basis (PPB).
    `protected` | `ECCurve.F2m(int m, int k1, int k2, int k3, ECFieldElement a, ECFieldElement b, java.math.BigInteger order, java.math.BigInteger cofactor)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected ECCurve` | `cloneCurve()`
    `protected ECMultiplier` | `createDefaultMultiplier()`
    `ECPoint` | `createPoint(java.math.BigInteger x, java.math.BigInteger y, boolean withCompression)`
    `protected ECPoint` | `createRawPoint(ECFieldElement x, ECFieldElement y, boolean withCompression)`
    `protected ECPoint` | `createRawPoint(ECFieldElement x, ECFieldElement y, ECFieldElement[] zs, boolean withCompression)`
    `protected ECPoint` | `decompressPoint(int yTilde, java.math.BigInteger X1)` Decompresses a compressed point P = (xp, yp) (X9.62 s 4.2.2).
    `ECFieldElement` | `fromBigInteger(java.math.BigInteger x)`
    `int` | `getFieldSize()`
    `java.math.BigInteger` | `getH()` Deprecated. use `ECCurve.getCofactor()` instead
    `ECPoint` | `getInfinity()`
    `int` | `getK1()`
    `int` | `getK2()`
    `int` | `getK3()`
    `int` | `getM()`
    `java.math.BigInteger` | `getN()` Deprecated. use `ECCurve.getOrder()` instead
    `boolean` | `isKoblitz()` Returns true if this is a Koblitz curve (ABC curve).
    `boolean` | `isTrinomial()` Return true if curve uses a Trinomial basis.
    `boolean` | `supportsCoordinateSystem(int coord)`

    - ### Methods inherited from class org.bouncycastle.math.ec.ECCurve

      `checkPoint, checkPoints, checkPoints, configure, createPoint, decodePoint, equals, equals, getA, getAllCoordinateSystems, getB, getCofactor, getCoordinateSystem, getEndomorphism, getField, getMultiplier, getOrder, getPreCompInfo, hashCode, importPoint, normalizeAll, normalizeAll, setPreCompInfo, validatePoint, validatePoint`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ECCurve.F2m

          public ECCurve.F2m(int m,
                     int k,
                     java.math.BigInteger a,
                     java.math.BigInteger b)

      Constructor for Trinomial Polynomial Basis (TPB).
      Parameters:
        `m` - The exponent `m` of `F2m`.
        `k` - The integer `k` where `xm + xk + 1` represents the reduction polynomial `f(z)`.
        `a` - The coefficient `a` in the Weierstrass equation for non-supersingular elliptic curves over `F2m`.
        `b` - The coefficient `b` in the Weierstrass equation for non-supersingular elliptic curves over `F2m`.

    - #### ECCurve.F2m

          public ECCurve.F2m(int m,
                     int k,
                     java.math.BigInteger a,
                     java.math.BigInteger b,
                     java.math.BigInteger order,
                     java.math.BigInteger cofactor)

      Constructor for Trinomial Polynomial Basis (TPB).
      Parameters:
        `m` - The exponent `m` of `F2m`.
        `k` - The integer `k` where `xm + xk + 1` represents the reduction polynomial `f(z)`.
        `a` - The coefficient `a` in the Weierstrass equation for non-supersingular elliptic curves over `F2m`.
        `b` - The coefficient `b` in the Weierstrass equation for non-supersingular elliptic curves over `F2m`.
        `order` - The order of the main subgroup of the elliptic curve.
        `cofactor` - The cofactor of the elliptic curve, i.e. `#Ea(F2m) = h * n`.

    - #### ECCurve.F2m

          public ECCurve.F2m(int m,
                     int k1,
                     int k2,
                     int k3,
                     java.math.BigInteger a,
                     java.math.BigInteger b)

      Constructor for Pentanomial Polynomial Basis (PPB).
      Parameters:
        `m` - The exponent `m` of `F2m`.
        `k1` - The integer `k1` where `xm + xk3 + xk2 + xk1 + 1` represents the reduction polynomial `f(z)`.
        `k2` - The integer `k2` where `xm + xk3 + xk2 + xk1 + 1` represents the reduction polynomial `f(z)`.
        `k3` - The integer `k3` where `xm + xk3 + xk2 + xk1 + 1` represents the reduction polynomial `f(z)`.
        `a` - The coefficient `a` in the Weierstrass equation for non-supersingular elliptic curves over `F2m`.
        `b` - The coefficient `b` in the Weierstrass equation for non-supersingular elliptic curves over `F2m`.

    - #### ECCurve.F2m

          public ECCurve.F2m(int m,
                     int k1,
                     int k2,
                     int k3,
                     java.math.BigInteger a,
                     java.math.BigInteger b,
                     java.math.BigInteger order,
                     java.math.BigInteger cofactor)

      Constructor for Pentanomial Polynomial Basis (PPB).
      Parameters:
        `m` - The exponent `m` of `F2m`.
        `k1` - The integer `k1` where `xm + xk3 + xk2 + xk1 + 1` represents the reduction polynomial `f(z)`.
        `k2` - The integer `k2` where `xm + xk3 + xk2 + xk1 + 1` represents the reduction polynomial `f(z)`.
        `k3` - The integer `k3` where `xm + xk3 + xk2 + xk1 + 1` represents the reduction polynomial `f(z)`.
        `a` - The coefficient `a` in the Weierstrass equation for non-supersingular elliptic curves over `F2m`.
        `b` - The coefficient `b` in the Weierstrass equation for non-supersingular elliptic curves over `F2m`.
        `order` - The order of the main subgroup of the elliptic curve.
        `cofactor` - The cofactor of the elliptic curve, i.e. `#Ea(F2m) = h * n`.

    - #### ECCurve.F2m

          protected ECCurve.F2m(int m,
                     int k1,
                     int k2,
                     int k3,
                     ECFieldElement a,
                     ECFieldElement b,
                     java.math.BigInteger order,
                     java.math.BigInteger cofactor)

  - ### Method Detail

    - #### cloneCurve

          protected ECCurve cloneCurve()

      Specified by:
        `cloneCurve` in class `ECCurve`

    - #### supportsCoordinateSystem

          public boolean supportsCoordinateSystem(int coord)

      Overrides:
        `supportsCoordinateSystem` in class `ECCurve`

    - #### createDefaultMultiplier

          protected ECMultiplier createDefaultMultiplier()

      Overrides:
        `createDefaultMultiplier` in class `ECCurve`

    - #### getFieldSize

          public int getFieldSize()

      Specified by:
        `getFieldSize` in class `ECCurve`

    - #### fromBigInteger

          public ECFieldElement fromBigInteger(java.math.BigInteger x)

      Specified by:
        `fromBigInteger` in class `ECCurve`

    - #### createPoint

          public ECPoint createPoint(java.math.BigInteger x,
                            java.math.BigInteger y,
                            boolean withCompression)

      Overrides:
        `createPoint` in class `ECCurve`

    - #### createRawPoint

          protected ECPoint createRawPoint(ECFieldElement x,
                               ECFieldElement y,
                               boolean withCompression)

      Specified by:
        `createRawPoint` in class `ECCurve`

    - #### createRawPoint

          protected ECPoint createRawPoint(ECFieldElement x,
                               ECFieldElement y,
                               ECFieldElement[] zs,
                               boolean withCompression)

      Specified by:
        `createRawPoint` in class `ECCurve`

    - #### getInfinity

          public ECPoint getInfinity()

      Specified by:
        `getInfinity` in class `ECCurve`

    - #### isKoblitz

          public boolean isKoblitz()

      Returns true if this is a Koblitz curve (ABC curve).
      Returns:
        true if this is a Koblitz curve (ABC curve), false otherwise

    - #### decompressPoint

          protected ECPoint decompressPoint(int yTilde,
                                java.math.BigInteger X1)

      Decompresses a compressed point P = (xp, yp) (X9.62 s 4.2.2).
      Specified by:
        `decompressPoint` in class `ECCurve`
      Parameters:
        `yTilde` - ~yp, an indication bit for the decompression of yp.
        `X1` - The field element xp.
      Returns:
        the decompressed point.

    - #### getM

          public int getM()

    - #### isTrinomial

          public boolean isTrinomial()

      Return true if curve uses a Trinomial basis.
      Returns:
        true if curve Trinomial, false otherwise.

    - #### getK1

          public int getK1()

    - #### getK2

          public int getK2()

    - #### getK3

          public int getK3()

    - #### getN

          public java.math.BigInteger getN()

      Deprecated. use `ECCurve.getOrder()` instead

    - #### getH

          public java.math.BigInteger getH()

      Deprecated. use `ECCurve.getCofactor()` instead