ECP Class Reference

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

`#include <ecp.h>`

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 ()
| Construct an ECP.
| ECP (const ECP &ecp, bool convertToMontgomeryRepresentation)
| Construct an ECP.
| ECP (const Integer &modulus, const FieldElement &a, const FieldElement &b)
| Construct an ECP.
| ECP (BufferedTransformation &bt)
| Construct an ECP from BER encoded parameters.
void | DEREncode (BufferedTransformation &bt) const
| DER Encode.
bool | Equal (const Point &P, const Point &Q) const
| Compare two points.
const Point & | Identity () const
| Provides the Identity element.
const Point & | Inverse (const Point &P) const
| Inverts the element in the group.
bool | InversionIsFast () const
| Determine if inversion is fast.
const Point & | Add (const Point &P, const Point &Q) const
| Adds elements in the group.
const Point & | Double (const Point &P) const
| Doubles an element in the group.
Point | ScalarMultiply (const Point &P, const Integer &k) const
| Performs a scalar multiplication.
Point | CascadeScalarMultiply (const Point &P, const Integer &k1, const Point &Q, const Integer &k2) const
| TODO.
void | SimultaneousMultiply (Point *results, const Point &base, const Integer *exponents, unsigned int exponentsCount) const
| Multiplies a base to multiple exponents in a group.
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
| Verifies points on elliptic curve.
unsigned int | EncodedPointSize (bool compressed=false) const
| Determines encoded point size.
bool | DecodePoint (Point &P, BufferedTransformation &bt, size_t len) const
| Decodes an elliptic curve point.
bool | DecodePoint (Point &P, const byte *encodedPoint, size_t len) const
void | EncodePoint (byte *encodedPoint, const Point &P, bool compressed) const
| Encodes an elliptic curve point.
void | EncodePoint (BufferedTransformation &bt, const Point &P, bool compressed) const
Point | BERDecodePoint (BufferedTransformation &bt) const
| BER Decodes an elliptic curve point.
void | DEREncodePoint (BufferedTransformation &bt, const Point &P, bool compressed) const
| DER Encodes an elliptic curve point.
Integer | FieldSize () const
const Field & | GetField () const
const FieldElement & | GetA () const
const FieldElement & | GetB () const
bool | operator== (const ECP &rhs) const
Public Member Functions inherited from AbstractGroup< ECPPoint >
virtual const Element & | Subtract (const Element &a, const Element &b) const
| Subtracts elements in the group.
virtual Element & | Accumulate (Element &a, const Element &b) const
| TODO.
virtual Element & | Reduce (Element &a, const Element &b) const
| Reduces an element in the congruence class.

## Detailed Description

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

Definition at line 26 of file ecp.h.

## Member Typedef Documentation

## Field

typedef ModularArithmetic ECP::Field

Definition at line 29 of file ecp.h.

## FieldElement

typedef Integer ECP::FieldElement

Definition at line 30 of file ecp.h.

## Point

typedef ECPPoint ECP::Point

Definition at line 31 of file ecp.h.

## Constructor & Destructor Documentation

## ~ECP()

virtual ECP::~ECP | ( |  | ) |

inline virtual

Definition at line 33 of file ecp.h.

## ECP() [1/4]

ECP::ECP | ( |  | ) |

inline

Construct an ECP.

Definition at line 36 of file ecp.h.

## ECP() [2/4]

ECP::ECP | ( | const ECP & | ecp,
|  | bool | convertToMontgomeryRepresentation )

Construct an ECP.

Parameters

  ecp | the other ECP object
  convertToMontgomeryRepresentation | flag indicating if the curve should be converted to a MontgomeryRepresentation.

Prior to Crypto++ 8.3 the default value for convertToMontgomeryRepresentation was false. it was changed due to two audit tools finding, "Signature-compatible with a copy constructor".

See also
  ModularArithmetic, MontgomeryRepresentation

## ECP() [3/4]

ECP::ECP | ( | const Integer & | modulus,
|  | const FieldElement & | a,
|  | const FieldElement & | b )

inline

Construct an ECP.

Parameters

  modulus | the prime modulus
  a | Field::Element
  b | Field::Element

Definition at line 52 of file ecp.h.

## ECP() [4/4]

ECP::ECP | ( | BufferedTransformation & | bt | ) |

Construct an ECP from BER encoded parameters.

Parameters

  bt | BufferedTransformation derived object

This constructor will decode and extract the fields fieldID and curve of the sequence ECParameters

## Member Function Documentation

## DEREncode()

void ECP::DEREncode | ( | BufferedTransformation & | bt | ) | const

DER Encode.

Parameters

  bt | BufferedTransformation derived object

DEREncode encode the fields fieldID and curve of the sequence ECParameters

## Equal()

bool ECP::Equal | ( | const Point & | P,
|  | const Point & | Q ) const

virtual

Compare two points.

Parameters

  P | the first point
  Q | the second point

Returns
  true if equal, false otherwise

Implements AbstractGroup< ECPPoint >.

## Identity()

const Point & ECP::Identity | ( |  | ) | const

virtual

Provides the Identity element.

Returns
  the Identity element

Implements AbstractGroup< ECPPoint >.

## Inverse()

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

virtual

Inverts the element in the group.

Parameters

  a | first element

Returns
  the inverse of the element

Implements AbstractGroup< ECPPoint >.

## InversionIsFast()

bool ECP::InversionIsFast | ( |  | ) | const

inline virtual

Determine if inversion is fast.

Returns
  true if inversion is fast, false otherwise

Reimplemented from AbstractGroup< ECPPoint >.

Definition at line 75 of file ecp.h.

## Add()

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

virtual

Adds elements in the group.

Parameters

  a | first element
  b | second element

Returns
  the sum of a and b

Implements AbstractGroup< ECPPoint >.

## Double()

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

virtual

Doubles an element in the group.

Parameters

  a | the element

Returns
  the element doubled

Reimplemented from AbstractGroup< ECPPoint >.

## ScalarMultiply()

Point ECP::ScalarMultiply | ( | const Point & | a,
|  | const Integer & | e ) const

virtual

Performs a scalar multiplication.

Parameters

  a | multiplicand
  e | multiplier

Returns
  the product

Reimplemented from AbstractGroup< ECPPoint >.

## CascadeScalarMultiply()

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

virtual

TODO.

Parameters

  x | first multiplicand
  e1 | the first multiplier
  y | second multiplicand
  e2 | the second multiplier

Returns
  TODO

Reimplemented from AbstractGroup< ECPPoint >.

## SimultaneousMultiply()

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

  results | an array of Elements
  base | the base to raise to the exponents
  exponents | an array of exponents
  exponentsCount | the 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 >.

## Multiply()

Point ECP::Multiply | ( | const Integer & | k,
|  | const Point & | P ) const

inline

Definition at line 82 of file ecp.h.

## CascadeMultiply()

Point ECP::CascadeMultiply | ( | const Integer & | k1,
|  | const Point & | P,
|  | const Integer & | k2,
|  | const Point & | Q ) const

inline

Definition at line 84 of file ecp.h.

## VerifyPoint()

bool ECP::VerifyPoint | ( | const Point & | P | ) | const

virtual

Verifies points on elliptic curve.

Parameters

  P | point to verify

Returns
  true if the point is valid, false otherwise

Implements EncodedPoint< ECPPoint >.

## EncodedPointSize()

unsigned int ECP::EncodedPointSize | ( | bool | compressed = false | ) | const

inline virtual

Determines encoded point size.

Parameters

  compressed | flag indicating if the point is compressed

Returns
  the minimum number of bytes required to encode the point

Implements EncodedPoint< ECPPoint >.

Definition at line 90 of file ecp.h.

## DecodePoint()

bool ECP::DecodePoint | ( | Point & | P,
|  | BufferedTransformation & | bt,
|  | size_t | len ) const

virtual

Decodes an elliptic curve point.

Parameters

  P | point which is decoded
  bt | source BufferedTransformation
  len | number of bytes to read from the BufferedTransformation

Returns
  true if a point was decoded, false otherwise

Implements EncodedPoint< ECPPoint >.

## EncodePoint()

void ECP::EncodePoint | ( | byte * | encodedPoint,
|  | const Point & | P,
|  | bool | compressed ) const

virtual

Encodes an elliptic curve point.

Parameters

  P | point which is decoded
  encodedPoint | byte array for the encoded point
  compressed | flag indicating if the point is compressed

encodedPoint must be at least EncodedPointSize() in length

Implements EncodedPoint< ECPPoint >.

## BERDecodePoint()

Point ECP::BERDecodePoint | ( | BufferedTransformation & | bt | ) | const

virtual

BER Decodes an elliptic curve point.

Parameters

  bt | source BufferedTransformation

Returns
  the decoded elliptic curve point

Implements EncodedPoint< ECPPoint >.

## DEREncodePoint()

void ECP::DEREncodePoint | ( | BufferedTransformation & | bt,
|  | const Point & | P,
|  | bool | compressed ) const

virtual

DER Encodes an elliptic curve point.

Parameters

  bt | target BufferedTransformation
  P | point which is encoded
  compressed | flag indicating if the point is compressed

Implements EncodedPoint< ECPPoint >.

## FieldSize()

Integer ECP::FieldSize | ( |  | ) | const

inline

Definition at line 101 of file ecp.h.

## GetField()

const Field & ECP::GetField | ( |  | ) | const

inline

Definition at line 102 of file ecp.h.

## GetA()

const FieldElement & ECP::GetA | ( |  | ) | const

inline

Definition at line 103 of file ecp.h.

## GetB()

const FieldElement & ECP::GetB | ( |  | ) | const

inline

Definition at line 104 of file ecp.h.

## operator==()

bool ECP::operator== | ( | const ECP & | rhs | ) | const

inline

Definition at line 106 of file ecp.h.

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

- ecp.h