org.gudy.bouncycastle.math.ec
Class ECCurve.F2m

java.lang.Object
  extended by org.gudy.bouncycastle.math.ec.ECCurve
      extended by org.gudy.bouncycastle.math.ec.ECCurve.F2m
Enclosing class:
ECCurve

public static class ECCurve.F2m
extends ECCurve

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.gudy.bouncycastle.math.ec.ECCurve
ECCurve.F2m, ECCurve.Fp
 
Constructor Summary
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 n, java.math.BigInteger h)
          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 n, java.math.BigInteger h)
          Constructor for Pentanomial Polynomial Basis (PPB).
 
Method Summary
 ECPoint createPoint(java.math.BigInteger x, java.math.BigInteger y, boolean withCompression)
           
 ECPoint decodePoint(byte[] encoded)
           
 boolean equals(java.lang.Object anObject)
           
 ECFieldElement fromBigInteger(java.math.BigInteger x)
           
 int getFieldSize()
           
 java.math.BigInteger getH()
           
 ECPoint getInfinity()
           
 int getK1()
           
 int getK2()
           
 int getK3()
           
 int getM()
           
 java.math.BigInteger getN()
           
 int hashCode()
           
 boolean isKoblitz()
          Returns true if this is a Koblitz curve (ABC curve).
 boolean isTrinomial()
          Return true if curve uses a Trinomial basis.
 
Methods inherited from class org.gudy.bouncycastle.math.ec.ECCurve
getA, getB
 
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 n,
                   java.math.BigInteger h)
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.
n - The order of the main subgroup of the elliptic curve.
h - 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 n,
                   java.math.BigInteger h)
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.
n - The order of the main subgroup of the elliptic curve.
h - The cofactor of the elliptic curve, i.e. #Ea(F2m) = h * n.
Method Detail

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)
Specified by:
createPoint in class ECCurve

decodePoint

public ECPoint decodePoint(byte[] encoded)
Specified by:
decodePoint 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

equals

public boolean equals(java.lang.Object anObject)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

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()

getH

public java.math.BigInteger getH()