Crypto++  5.6.3
Free C++ class library of cryptographic schemes
Public Types | Public Member Functions | List of all members
ECP Class Reference

Elliptic Curve over GF(p), where p is prime. More...

+ Inheritance diagram for ECP:

Public Types

typedef ModularArithmetic Field
 
typedef Integer FieldElement
 
typedef ECPPoint Point
 
- Public Types inherited from AbstractGroup< ECPPoint >
typedef ECPPoint Element
 

Public Member Functions

 ECP (const ECP &ecp, bool convertToMontgomeryRepresentation=false)
 
 ECP (const Integer &modulus, const FieldElement &a, const FieldElement &b)
 
 ECP (BufferedTransformation &bt)
 
void DEREncode (BufferedTransformation &bt) const
 
bool Equal (const Point &P, const Point &Q) const
 Compare two elements for equality. More...
 
const PointIdentity () const
 Provides the Identity element. More...
 
const PointInverse (const Point &P) const
 Inverts the element in the group. More...
 
bool InversionIsFast () const
 Determine if inversion is fast. More...
 
const PointAdd (const Point &P, const Point &Q) const
 Adds elements in the group. More...
 
const PointDouble (const Point &P) const
 Doubles an element in the group. More...
 
Point ScalarMultiply (const Point &P, const Integer &k) const
 Performs a scalar multiplication. More...
 
Point CascadeScalarMultiply (const Point &P, const Integer &k1, const Point &Q, const Integer &k2) const
 TODO. More...
 
void SimultaneousMultiply (Point *results, const Point &base, const Integer *exponents, unsigned int exponentsCount) const
 Multiplies a base to multiple exponents in a group. More...
 
Point Multiply (const Integer &k, const Point &P) const
 
Point CascadeMultiply (const Integer &k1, const Point &P, const Integer &k2, const Point &Q) const
 
bool ValidateParameters (RandomNumberGenerator &rng, unsigned int level=3) const
 
bool VerifyPoint (const Point &P) const
 
unsigned int EncodedPointSize (bool compressed=false) const
 
bool DecodePoint (Point &P, BufferedTransformation &bt, size_t len) const
 
bool DecodePoint (Point &P, const byte *encodedPoint, size_t len) const
 
void EncodePoint (byte *encodedPoint, const Point &P, bool compressed) const
 
void EncodePoint (BufferedTransformation &bt, const Point &P, bool compressed) const
 
Point BERDecodePoint (BufferedTransformation &bt) const
 
void DEREncodePoint (BufferedTransformation &bt, const Point &P, bool compressed) const
 
Integer FieldSize () const
 
const FieldGetField () const
 
const FieldElementGetA () const
 
const FieldElementGetB () const
 
bool operator== (const ECP &rhs) const
 
- Public Member Functions inherited from AbstractGroup< ECPPoint >
virtual const ElementSubtract (const Element &a, const Element &b) const
 Subtracts elements in the group. More...
 
virtual ElementAccumulate (Element &a, const Element &b) const
 TODO. More...
 
virtual ElementReduce (Element &a, const Element &b) const
 Reduces an element in the congruence class. More...
 

Detailed Description

Elliptic Curve over GF(p), where p is prime.

Definition at line 42 of file ecp.h.

Member Function Documentation

bool ECP::Equal ( const Point a,
const Point b 
) const
virtual

Compare two elements for equality.

Parameters
afirst element
bsecond element
Returns
true if the elements are equal, false otherwise

Equal() tests the elements for equality using a==b

Implements AbstractGroup< ECPPoint >.

const Point& ECP::Identity ( ) const
virtual

Provides the Identity element.

Returns
the Identity element

Implements AbstractGroup< ECPPoint >.

const Point& ECP::Inverse ( const Point a) const
virtual

Inverts the element in the group.

Parameters
afirst element
Returns
the inverse of the element

Implements AbstractGroup< ECPPoint >.

bool ECP::InversionIsFast ( ) const
inlinevirtual

Determine if inversion is fast.

Returns
true if inversion is fast, false otherwise

Reimplemented from AbstractGroup< ECPPoint >.

Definition at line 63 of file ecp.h.

const Point& ECP::Add ( const Point a,
const Point b 
) const
virtual

Adds elements in the group.

Parameters
afirst element
bsecond element
Returns
the sum of a and b

Implements AbstractGroup< ECPPoint >.

const Point& ECP::Double ( const Point a) const
virtual

Doubles an element in the group.

Parameters
athe element
Returns
the element doubled

Reimplemented from AbstractGroup< ECPPoint >.

Point ECP::ScalarMultiply ( const Point a,
const Integer e 
) const
virtual

Performs a scalar multiplication.

Parameters
amultiplicand
emultiplier
Returns
the product

Reimplemented from AbstractGroup< ECPPoint >.

Point ECP::CascadeScalarMultiply ( const Point x,
const Integer e1,
const Point y,
const Integer e2 
) const
virtual

TODO.

Parameters
xfirst multiplicand
e1the first multiplier
ysecond multiplicand
e2the second multiplier
Returns
TODO

Reimplemented from AbstractGroup< ECPPoint >.

void ECP::SimultaneousMultiply ( Point results,
const Point base,
const Integer exponents,
unsigned int  exponentsCount 
) const
virtual

Multiplies a base to multiple exponents in a group.

Parameters
resultsan array of Elements
basethe base to raise to the exponents
exponentsan array of exponents
exponentsCountthe number of exponents in the array

SimultaneousMultiply() multiplies the base to each exponent in the exponents array and stores the result at the respective position in the results array.

SimultaneousMultiply() must be implemented in a derived class.

Precondition
COUNTOF(results) == exponentsCount
COUNTOF(exponents) == exponentsCount

Reimplemented from AbstractGroup< ECPPoint >.


The documentation for this class was generated from the following file: