org.bouncycastle.math.ec
Class ECCurve.F2m

java.lang.Object
  extended by org.bouncycastle.math.ec.ECCurve
      extended by org.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.bouncycastle.math.ec.ECCurve
ECCurve.F2m, ECCurve.Fp
 
Field Summary
private  ECPoint.F2m infinity
           
private  int k1
          TPB: The integer k where xm + xk + 1 represents the reduction polynomial f(z).
PPB: The integer k1 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).
private  int k2
          TPB: Always set to 0
PPB: The integer k2 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).
private  int k3
          TPB: Always set to 0
PPB: The integer k3 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).
private  int m
          The exponent m of F2m.
 
Fields inherited from class org.bouncycastle.math.ec.ECCurve
a, b
 
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 k1, int k2, int k3, java.math.BigInteger a, java.math.BigInteger b)
          Constructor for Pentanomial Polynomial Basis (PPB).
 
Method Summary
 ECPoint createPoint(java.math.BigInteger x, java.math.BigInteger y, boolean withCompression)
           
 ECPoint decodePoint(byte[] encoded)
           
private  ECPoint decompressPoint(byte[] xEnc, int ypBit)
          Decompresses a compressed point P = (xp, yp) (X9.62 s 4.2.2).
 boolean equals(java.lang.Object anObject)
           
 ECFieldElement fromBigInteger(java.math.BigInteger x)
           
 int getFieldSize()
           
 ECPoint getInfinity()
           
 int getK1()
           
 int getK2()
           
 int getK3()
           
 int getM()
           
 int hashCode()
           
 boolean isTrinomial()
          Return true if curve uses a Trinomial basis.
private  ECFieldElement solveQuadradicEquation(ECFieldElement beta)
          Solves a quadratic equation z2 + z = beta(X9.62 D.1.6) The other solution is z + 1.
 
Methods inherited from class org.bouncycastle.math.ec.ECCurve
getA, getB
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m

private int m
The exponent m of F2m.


k1

private int k1
TPB: The integer k where xm + xk + 1 represents the reduction polynomial f(z).
PPB: The integer k1 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).


k2

private int k2
TPB: Always set to 0
PPB: The integer k2 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).


k3

private int k3
TPB: Always set to 0
PPB: The integer k3 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).


infinity

private ECPoint.F2m infinity
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 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.
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

decompressPoint

private ECPoint decompressPoint(byte[] xEnc,
                                int ypBit)
Decompresses a compressed point P = (xp, yp) (X9.62 s 4.2.2).

Parameters:
xEnc - The encoding of field element xp.
ypBit - ~yp, an indication bit for the decompression of yp.
Returns:
the decompressed point.

solveQuadradicEquation

private ECFieldElement solveQuadradicEquation(ECFieldElement beta)
Solves a quadratic equation z2 + z = beta(X9.62 D.1.6) The other solution is z + 1.

Parameters:
beta - The value to solve the qradratic equation for.
Returns:
the solution for z2 + z = beta or null if no solution exists.

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