18#if CRYPTOPP_MSC_VERSION
20# pragma warning(disable: 4231 4275)
23NAMESPACE_BEGIN(CryptoPP)
30 typedef Field::Element FieldElement;
42 EC2N(
const Field &field,
const Field::Element &a,
const Field::Element &b)
43 : m_field(field), m_a(a), m_b(b) {}
54 bool Equal(
const Point &P,
const Point &Q)
const;
55 const Point& Identity()
const;
56 const Point& Inverse(
const Point &P)
const;
58 const Point& Add(
const Point &P,
const Point &Q)
const;
59 const Point& Double(
const Point &P)
const;
61 Point Multiply(
const Integer &k,
const Point &P)
const
62 {
return ScalarMultiply(P, k);}
63 Point CascadeMultiply(
const Integer &k1,
const Point &P,
const Integer &k2,
const Point &Q)
const
64 {
return CascadeScalarMultiply(P, k1, Q, k2);}
67 bool VerifyPoint(
const Point &P)
const;
70 {
return 1 + (compressed?1:2)*m_field->MaxElementByteLength();}
73 bool DecodePoint(Point &P,
const byte *encodedPoint,
size_t len)
const;
74 void EncodePoint(
byte *encodedPoint,
const Point &P,
bool compressed)
const;
81 const Field & GetField()
const {
return *m_field;}
82 const FieldElement & GetA()
const {
return m_a;}
83 const FieldElement & GetB()
const {
return m_b;}
85 bool operator==(
const EC2N &rhs)
const
86 {
return GetField() == rhs.GetField() && m_a == rhs.m_a && m_b == rhs.m_b;}
90 FieldElement m_a, m_b;
132#if CRYPTOPP_MSC_VERSION
Classes for performing mathematics over different fields.
DL_FixedBasePrecomputation adapter class.
DL_GroupPrecomputation interface.
Elliptic Curve over GF(2^n)
unsigned int EncodedPointSize(bool compressed=false) const
Determines encoded point size.
bool InversionIsFast() const
Determine if inversion is fast.
EC2N(const Field &field, const Field::Element &a, const Field::Element &b)
Construct an EC2N.
const AbstractGroup< Element > & GetGroup() const
Retrieves AbstractGroup interface.
Element BERDecodeElement(BufferedTransformation &bt) const
Decodes element in DER format.
void SetCurve(const EC2N &ec)
Set the elliptic curve.
const EC2N & GetCurve() const
Get the elliptic curve.
void DEREncodeElement(BufferedTransformation &bt, const Element &v) const
Encodes element in DER format.
Elliptic Curve precomputation.
Abstract class for encoding and decoding ellicptic curve points.
GF(2^n) with Polynomial Basis.
Multiple precision integer with arithmetic operations.
static Integer CRYPTOPP_API Power2(size_t e)
Exponentiates to a power of 2.
Interface for random number generators.
A pointer which can be copied and cloned.
Abstract base classes that provide a uniform interface to this library.
Classes for Elliptic Curve points.
Classes for precomputation in a group.
Classes and functions for schemes over GF(2^n)
Multiple precision integer with arithmetic operations.
This file contains helper classes/functions for implementing public key algorithms.
Classes for automatic resource management.
Elliptical Curve Point over GF(2^n)