Bouncy Castle Cryptography 1.50

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.Config, ECCurve.F2m, ECCurve.Fp
 
Field Summary
 
Fields inherited from class org.bouncycastle.math.ec.ECCurve
a, b, coord, COORD_AFFINE, COORD_HOMOGENEOUS, COORD_JACOBIAN, COORD_JACOBIAN_CHUDNOVSKY, COORD_JACOBIAN_MODIFIED, COORD_LAMBDA_AFFINE, COORD_LAMBDA_PROJECTIVE, COORD_SKEWED, multiplier
 
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).
protected ECCurve.F2m(int m, int k1, int k2, int k3, ECFieldElement a, ECFieldElement b, java.math.BigInteger n, java.math.BigInteger h)
           
 
Method Summary
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 decompressPoint(int yTilde, java.math.BigInteger X1)
          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()
           
 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.
 boolean supportsCoordinateSystem(int coord)
           
 
Methods inherited from class org.bouncycastle.math.ec.ECCurve
checkPoint, checkPoints, configure, createPoint, decodePoint, getA, getAllCoordinateSystems, getB, getCoordinateSystem, getMultiplier, getPreCompInfo, importPoint, normalizeAll, setPreCompInfo
 
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.

ECCurve.F2m

protected ECCurve.F2m(int m,
                      int k1,
                      int k2,
                      int k3,
                      ECFieldElement a,
                      ECFieldElement b,
                      java.math.BigInteger n,
                      java.math.BigInteger h)
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

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.

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

Bouncy Castle Cryptography 1.50