6 #ifndef CRYPTOPP_EC2N_H 7 #define CRYPTOPP_EC2N_H 18 #if CRYPTOPP_MSC_VERSION 19 # pragma warning(push) 20 # pragma warning(disable: 4231 4275) 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;
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;}
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 133 # pragma warning(pop) Element BERDecodeElement(BufferedTransformation &bt) const
Decodes element in DER format.
This file contains helper classes/functions for implementing public key algorithms.
const AbstractGroup< Element > & GetGroup() const
Retrieves AbstractGroup interface.
const char * Identity()
ConstByteArrayParameter.
unsigned int EncodedPointSize(bool compressed=false) const
Determines encoded point size.
Abstract base classes that provide a uniform interface to this library.
Classes for automatic resource management.
Interface for random number generators.
bool InversionIsFast() const
Determine if inversion is fast.
Classes for Elliptic Curve points.
Classes for performing mathematics over different fields.
bool operator==(const OID &lhs, const OID &rhs)
Compare two OIDs for equality.
void SetCurve(const EC2N &ec)
Set the elliptic curve.
EC2N(const Field &field, const Field::Element &a, const Field::Element &b)
Construct an EC2N.
A pointer which can be copied and cloned.
Multiple precision integer with arithmetic operations.
Elliptic Curve over GF(2^n)
#define CRYPTOPP_DLL_TEMPLATE_CLASS
Instantiate templates in a dynamic library.
Classes and functions for schemes over GF(2^n)
static Integer Power2(size_t e)
Exponentiates to a power of 2.
unsigned char byte
8-bit unsigned datatype
Classes for precomputation in a group.
GF(2^n) with Polynomial Basis.
Abstract class for encoding and decoding ellicptic curve points.
Elliptic Curve precomputation.
Multiple precision integer with arithmetic operations.
const EC2N & GetCurve() const
Get the elliptic curve.
Crypto++ library namespace.
Elliptical Curve Point over GF(2^n)
DL_FixedBasePrecomputation adapter class.
void DEREncodeElement(BufferedTransformation &bt, const Element &v) const
Encodes element in DER format.