Bouncy Castle Cryptography Library 1.86

org.bouncycastle.math.ec.custom.gm
Class SM9P256V1Curve

java.lang.Object
  extended byorg.bouncycastle.math.ec.ECCurve
      extended byorg.bouncycastle.math.ec.ECCurve.AbstractFp
          extended byorg.bouncycastle.math.ec.custom.gm.SM9P256V1Curve

public class SM9P256V1Curve
extends ECCurve.AbstractFp

The SM9 G1 curve E: y^2 = x^3 + 5 (a = 0) over the 256-bit Barreto-Naehrig base field F_q (GM/T 0044.5-2016), backed by the constant-time Montgomery field SM9P256V1Field. This is the same custom-curve pattern as SM2P256V1Curve but for a general (non-Solinas) prime; it is used only as the G1 of the SM9 identity-based schemes and supports uncompressed points only.


Nested Class Summary
 
Nested classes inherited from class org.bouncycastle.math.ec.ECCurve
ECCurve.AbstractF2m, ECCurve.AbstractFp, ECCurve.Config, ECCurve.F2m, ECCurve.Fp
 
Field Summary
protected  SM9P256V1Point infinity
           
static java.math.BigInteger q
           
 
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
SM9P256V1Curve()
           
 
Method Summary
protected  ECCurve cloneCurve()
           
 ECLookupTable createCacheSafeLookupTable(ECPoint[] points, int off, int len)
          Create a cache-safe lookup table for the specified sequence of points.
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()
           
 java.math.BigInteger getQ()
           
 boolean supportsCoordinateSystem(int coord)
           
 
Methods inherited from class org.bouncycastle.math.ec.ECCurve.AbstractFp
decompressPoint, isValidFieldElement, randomFieldElement, randomFieldElementMult
 
Methods inherited from class org.bouncycastle.math.ec.ECCurve
checkPoint, checkPoints, checkPoints, configure, createDefaultMultiplier, createPoint, decodePoint, equals, equals, getA, getAffinePointEncodingLength, getAllCoordinateSystems, getB, getCofactor, getCoordinateSystem, getEndomorphism, getField, getFieldElementEncodingLength, getMultiplier, getOrder, getPreCompInfo, hashCode, importPoint, normalizeAll, normalizeAll, precompute, validatePoint
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

q

public static final java.math.BigInteger q

infinity

protected SM9P256V1Point infinity
Constructor Detail

SM9P256V1Curve

public SM9P256V1Curve()
Method Detail

cloneCurve

protected ECCurve cloneCurve()
Specified by:
cloneCurve in class ECCurve

supportsCoordinateSystem

public boolean supportsCoordinateSystem(int coord)
Overrides:
supportsCoordinateSystem in class ECCurve

getQ

public java.math.BigInteger getQ()
Overrides:
getQ in class ECCurve.AbstractFp

getFieldSize

public int getFieldSize()
Specified by:
getFieldSize in class ECCurve

fromBigInteger

public ECFieldElement fromBigInteger(java.math.BigInteger x)
Specified by:
fromBigInteger in class ECCurve

createRawPoint

protected ECPoint createRawPoint(ECFieldElement x,
                                 ECFieldElement y)
Specified by:
createRawPoint in class ECCurve

createRawPoint

protected ECPoint createRawPoint(ECFieldElement x,
                                 ECFieldElement y,
                                 ECFieldElement[] zs)
Specified by:
createRawPoint in class ECCurve

getInfinity

public ECPoint getInfinity()
Specified by:
getInfinity in class ECCurve

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 this ECCurve instance, and MUST already be normalized.

Overrides:
createCacheSafeLookupTable in class ECCurve

Bouncy Castle Cryptography Library 1.86