Org.BouncyCastle.Math.EC.ECCurve
namespace Org.BouncyCastle.Math.EC
{
public abstract class ECCurve
{
public class Config
{
protected ECCurve outer;
protected int coord;
protected ECEndomorphism endomorphism;
protected ECMultiplier multiplier;
public Config SetCoordinateSystem(int coord);
public Config SetEndomorphism(ECEndomorphism endomorphism);
public Config SetMultiplier(ECMultiplier multiplier);
public ECCurve Create();
}
public const int COORD_AFFINE = 0;
public const int COORD_HOMOGENEOUS = 1;
public const int COORD_JACOBIAN = 2;
public const int COORD_JACOBIAN_CHUDNOVSKY = 3;
public const int COORD_JACOBIAN_MODIFIED = 4;
public const int COORD_LAMBDA_AFFINE = 5;
public const int COORD_LAMBDA_PROJECTIVE = 6;
public const int COORD_SKEWED = 7;
protected readonly IFiniteField m_field;
protected ECFieldElement m_a;
protected ECFieldElement m_b;
protected BigInteger m_order;
protected BigInteger m_cofactor;
protected int m_coord;
protected ECEndomorphism m_endomorphism;
protected ECMultiplier m_multiplier;
public abstract int FieldSize { get; }
public virtual int FieldElementEncodingLength { get; }
public abstract ECPoint Infinity { get; }
public virtual IFiniteField Field { get; }
public virtual ECFieldElement A { get; }
public virtual ECFieldElement B { get; }
public virtual BigInteger Order { get; }
public virtual BigInteger Cofactor { get; }
public virtual int CoordinateSystem { get; }
public static int[] GetAllCoordinateSystems();
protected ECCurve(IFiniteField field);
public abstract ECFieldElement FromBigInteger(BigInteger x);
public abstract bool IsValidFieldElement(BigInteger x);
public abstract ECFieldElement RandomFieldElement(SecureRandom r);
public abstract ECFieldElement RandomFieldElementMult(SecureRandom r);
public virtual Config Configure();
public virtual int GetAffinePointEncodingLength(bool compressed);
public virtual ECPoint ValidatePoint(BigInteger x, BigInteger y);
public virtual ECPoint CreatePoint(BigInteger x, BigInteger y);
protected abstract ECCurve CloneCurve();
protected virtual ECMultiplier CreateDefaultMultiplier();
public virtual bool SupportsCoordinateSystem(int coord);
public virtual PreCompInfo GetPreCompInfo(ECPoint point, string name);
public virtual PreCompInfo Precompute(ECPoint point, string name, IPreCompCallback callback);
public virtual ECPoint ImportPoint(ECPoint p);
public virtual void NormalizeAll(ECPoint[] points);
public virtual void NormalizeAll(ECPoint[] points, int off, int len, ECFieldElement iso);
public virtual ECLookupTable CreateCacheSafeLookupTable(ECPoint[] points, int off, int len);
protected virtual void CheckPoint(ECPoint point);
protected virtual void CheckPoints(ECPoint[] points);
protected virtual void CheckPoints(ECPoint[] points, int off, int len);
public virtual bool Equals(ECCurve other);
protected abstract ECPoint DecompressPoint(int yTilde, BigInteger X1);
public virtual ECEndomorphism GetEndomorphism();
public virtual ECMultiplier GetMultiplier();
public virtual ECPoint DecodePoint(byte[] encoded);
}
}