Package 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 byy2 + 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 Description F2m(int m, int k1, int k2, int k3, java.math.BigInteger a, java.math.BigInteger b)
Deprecated.use constructor taking order/cofactorF2m(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
F2m(int m, int k1, int k2, int k3, ECFieldElement a, ECFieldElement b, java.math.BigInteger order, java.math.BigInteger cofactor)
F2m(int m, int k, java.math.BigInteger a, java.math.BigInteger b)
Deprecated.use constructor taking order/cofactorF2m(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).
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ECCurve
cloneCurve()
ECLookupTable
createCacheSafeLookupTable(ECPoint[] points, int off, int len)
Create a cache-safe lookup table for the specified sequence of points.protected ECMultiplier
createDefaultMultiplier()
protected ECPoint
createRawPoint(ECFieldElement x, ECFieldElement y)
protected ECPoint
createRawPoint(ECFieldElement x, ECFieldElement y, ECFieldElement[] zs)
ECFieldElement
fromBigInteger(java.math.BigInteger x)
int
getFieldSize()
ECPoint
getInfinity()
int
getK1()
int
getK2()
int
getK3()
int
getM()
boolean
isTrinomial()
Return true if curve uses a Trinomial basis.boolean
supportsCoordinateSystem(int coord)
-
Methods inherited from class org.bouncycastle.math.ec.ECCurve.AbstractF2m
createPoint, decompressPoint, inverse, isKoblitz, isValidFieldElement, randomFieldElement, randomFieldElementMult, solveQuadraticEquation
-
Methods inherited from class org.bouncycastle.math.ec.ECCurve
checkPoint, checkPoints, checkPoints, configure, decodePoint, equals, equals, getA, getAllCoordinateSystems, getB, getCofactor, getCoordinateSystem, getEndomorphism, getField, getMultiplier, getOrder, getPreCompInfo, hashCode, importPoint, normalizeAll, normalizeAll, precompute, validatePoint
-
-
-
-
Constructor Detail
-
F2m
public F2m(int m, int k, java.math.BigInteger a, java.math.BigInteger b)
Deprecated.use constructor taking order/cofactorConstructor for Trinomial Polynomial Basis (TPB).- Parameters:
m
- The exponentm
ofF2m
.k
- The integerk
wherexm + xk + 1
represents the reduction polynomialf(z)
.a
- The coefficienta
in the Weierstrass equation for non-supersingular elliptic curves overF2m
.b
- The coefficientb
in the Weierstrass equation for non-supersingular elliptic curves overF2m
.
-
F2m
public 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 exponentm
ofF2m
.k
- The integerk
wherexm + xk + 1
represents the reduction polynomialf(z)
.a
- The coefficienta
in the Weierstrass equation for non-supersingular elliptic curves overF2m
.b
- The coefficientb
in the Weierstrass equation for non-supersingular elliptic curves overF2m
.order
- The order of the main subgroup of the elliptic curve.cofactor
- The cofactor of the elliptic curve, i.e.#Ea(F2m) = h * n
.
-
F2m
public F2m(int m, int k1, int k2, int k3, java.math.BigInteger a, java.math.BigInteger b)
Deprecated.use constructor taking order/cofactorConstructor for Pentanomial Polynomial Basis (PPB).- Parameters:
m
- The exponentm
ofF2m
.k1
- The integerk1
wherexm + xk3 + xk2 + xk1 + 1
represents the reduction polynomialf(z)
.k2
- The integerk2
wherexm + xk3 + xk2 + xk1 + 1
represents the reduction polynomialf(z)
.k3
- The integerk3
wherexm + xk3 + xk2 + xk1 + 1
represents the reduction polynomialf(z)
.a
- The coefficienta
in the Weierstrass equation for non-supersingular elliptic curves overF2m
.b
- The coefficientb
in the Weierstrass equation for non-supersingular elliptic curves overF2m
.
-
F2m
public 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 exponentm
ofF2m
.k1
- The integerk1
wherexm + xk3 + xk2 + xk1 + 1
represents the reduction polynomialf(z)
.k2
- The integerk2
wherexm + xk3 + xk2 + xk1 + 1
represents the reduction polynomialf(z)
.k3
- The integerk3
wherexm + xk3 + xk2 + xk1 + 1
represents the reduction polynomialf(z)
.a
- The coefficienta
in the Weierstrass equation for non-supersingular elliptic curves overF2m
.b
- The coefficientb
in the Weierstrass equation for non-supersingular elliptic curves overF2m
.order
- The order of the main subgroup of the elliptic curve.cofactor
- The cofactor of the elliptic curve, i.e.#Ea(F2m) = h * n
.
-
F2m
protected 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 classECCurve
-
supportsCoordinateSystem
public boolean supportsCoordinateSystem(int coord)
- Overrides:
supportsCoordinateSystem
in classECCurve
-
createDefaultMultiplier
protected ECMultiplier createDefaultMultiplier()
- Overrides:
createDefaultMultiplier
in classECCurve
-
getFieldSize
public int getFieldSize()
- Specified by:
getFieldSize
in classECCurve
-
fromBigInteger
public ECFieldElement fromBigInteger(java.math.BigInteger x)
- Specified by:
fromBigInteger
in classECCurve
-
createRawPoint
protected ECPoint createRawPoint(ECFieldElement x, ECFieldElement y)
- Specified by:
createRawPoint
in classECCurve
-
createRawPoint
protected ECPoint createRawPoint(ECFieldElement x, ECFieldElement y, ECFieldElement[] zs)
- Specified by:
createRawPoint
in classECCurve
-
getInfinity
public ECPoint getInfinity()
- Specified by:
getInfinity
in classECCurve
-
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()
-
createCacheSafeLookupTable
public ECLookupTable createCacheSafeLookupTable(ECPoint[] points, int off, int len)
Description copied from class:ECCurve
Create a cache-safe lookup table for the specified sequence of points. All the points MUST belong to thisECCurve
instance, and MUST already be normalized.- Overrides:
createCacheSafeLookupTable
in classECCurve
-
-