Class ECCurve.F2m
java.lang.Object
org.gudy.bouncycastle.math.ec.ECCurve
org.gudy.bouncycastle.math.ec.ECCurve.F2m
- Enclosing class:
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 ECCurve
ECCurve.F2m, ECCurve.Fp -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate BigIntegerThe cofactor of the curve.private ECPoint.F2mThe point at infinity on this curve.private intTPB: The integerkwherexm + xk + 1represents the reduction polynomialf(z).
PPB: The integerk1wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z).private intTPB: Always set to0
PPB: The integerk2wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z).private intTPB: Always set to0
PPB: The integerk3wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z).private intThe exponentmofF2m.private byteThe parameterμof the elliptic curve if this is a Koblitz curve.private BigIntegerThe order of the base point of the curve.private BigInteger[]The auxiliary valuess0ands1used for partial modular reduction for Koblitz curves. -
Constructor Summary
ConstructorsConstructorDescriptionF2m(int m, int k1, int k2, int k3, BigInteger a, BigInteger b) Constructor for Pentanomial Polynomial Basis (PPB).F2m(int m, int k1, int k2, int k3, BigInteger a, BigInteger b, BigInteger n, BigInteger h) Constructor for Pentanomial Polynomial Basis (PPB).F2m(int m, int k, BigInteger a, BigInteger b) Constructor for Trinomial Polynomial Basis (TPB).F2m(int m, int k, BigInteger a, BigInteger b, BigInteger n, BigInteger h) Constructor for Trinomial Polynomial Basis (TPB). -
Method Summary
Modifier and TypeMethodDescriptioncreatePoint(BigInteger x, BigInteger y, boolean withCompression) decodePoint(byte[] encoded) private ECPointdecompressPoint(byte[] xEnc, int ypBit) Decompresses a compressed point P = (xp, yp) (X9.62 s 4.2.2).booleanintgetH()intgetK1()intgetK2()intgetK3()intgetM()(package private) bytegetMu()Returns the parameterμof the elliptic curve.getN()(package private) BigInteger[]getSi()inthashCode()booleanReturns true if this is a Koblitz curve (ABC curve).booleanReturn true if curve uses a Trinomial basis.private ECFieldElementSolves a quadratic equationz2 + z = beta(X9.62 D.1.6) The other solution isz + 1.
-
Field Details
-
m
private int mThe exponentmofF2m. -
k1
private int k1TPB: The integerkwherexm + xk + 1represents the reduction polynomialf(z).
PPB: The integerk1wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z). -
k2
private int k2TPB: Always set to0
PPB: The integerk2wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z). -
k3
private int k3TPB: Always set to0
PPB: The integerk3wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z). -
n
The order of the base point of the curve. -
h
The cofactor of the curve. -
infinity
The point at infinity on this curve. -
mu
private byte muThe parameterμof the elliptic curve if this is a Koblitz curve. -
si
The auxiliary valuess0ands1used for partial modular reduction for Koblitz curves.
-
-
Constructor Details
-
F2m
Constructor for Trinomial Polynomial Basis (TPB).- Parameters:
m- The exponentmofF2m.k- The integerkwherexm + xk + 1represents the reduction polynomialf(z).a- The coefficientain the Weierstrass equation for non-supersingular elliptic curves overF2m.b- The coefficientbin the Weierstrass equation for non-supersingular elliptic curves overF2m.
-
F2m
Constructor for Trinomial Polynomial Basis (TPB).- Parameters:
m- The exponentmofF2m.k- The integerkwherexm + xk + 1represents the reduction polynomialf(z).a- The coefficientain the Weierstrass equation for non-supersingular elliptic curves overF2m.b- The coefficientbin the Weierstrass equation for non-supersingular elliptic curves overF2m.n- The order of the main subgroup of the elliptic curve.h- The cofactor of the elliptic curve, i.e.#Ea(F2m) = h * n.
-
F2m
Constructor for Pentanomial Polynomial Basis (PPB).- Parameters:
m- The exponentmofF2m.k1- The integerk1wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z).k2- The integerk2wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z).k3- The integerk3wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z).a- The coefficientain the Weierstrass equation for non-supersingular elliptic curves overF2m.b- The coefficientbin the Weierstrass equation for non-supersingular elliptic curves overF2m.
-
F2m
Constructor for Pentanomial Polynomial Basis (PPB).- Parameters:
m- The exponentmofF2m.k1- The integerk1wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z).k2- The integerk2wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z).k3- The integerk3wherexm + xk3 + xk2 + xk1 + 1represents the reduction polynomialf(z).a- The coefficientain the Weierstrass equation for non-supersingular elliptic curves overF2m.b- The coefficientbin the Weierstrass equation for non-supersingular elliptic curves overF2m.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 Details
-
getFieldSize
public int getFieldSize()- Specified by:
getFieldSizein classECCurve
-
fromBigInteger
- Specified by:
fromBigIntegerin classECCurve
-
createPoint
- Specified by:
createPointin classECCurve
-
decodePoint
- Specified by:
decodePointin classECCurve
-
getInfinity
- Specified by:
getInfinityin classECCurve
-
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
-
getMu
byte getMu()Returns the parameterμof the elliptic curve.- Returns:
μof the elliptic curve.- Throws:
IllegalArgumentException- if the given ECCurve is not a Koblitz curve.
-
getSi
BigInteger[] getSi()- Returns:
- the auxiliary values
s0ands1used for partial modular reduction for Koblitz curves.
-
decompressPoint
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
Solves a quadratic equationz2 + z = beta(X9.62 D.1.6) The other solution isz + 1.- Parameters:
beta- The value to solve the qradratic equation for.- Returns:
- the solution for
z2 + z = betaornullif no solution exists.
-
equals
-
hashCode
-
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
-
getH
-