Botan  2.7.0
Crypto and TLS for C++11
Public Member Functions | List of all members
Botan::CurveGFp Class Referencefinal

#include <curve_gfp.h>

Public Member Functions

bool a_is_minus_3 () const
 
bool a_is_zero () const
 
 CurveGFp ()=default
 
 CurveGFp (const BigInt &p, const BigInt &a, const BigInt &b)
 
 CurveGFp (const CurveGFp &)=default
 
void from_rep (BigInt &x, secure_vector< word > &ws) const
 
BigInt from_rep (const BigInt &x, secure_vector< word > &ws) const
 
const BigIntget_1_rep () const
 
const BigIntget_a () const
 
const BigIntget_a_rep () const
 
const BigIntget_b () const
 
const BigIntget_b_rep () const
 
const BigIntget_p () const
 
size_t get_p_words () const
 
size_t get_ws_size () const
 
BigInt invert_element (const BigInt &x, secure_vector< word > &ws) const
 
bool is_one (const BigInt &x) const
 
void mul (BigInt &z, const BigInt &x, const BigInt &y, secure_vector< word > &ws) const
 
void mul (BigInt &z, const word x_w[], size_t x_size, const BigInt &y, secure_vector< word > &ws) const
 
BigInt mul (const BigInt &x, const BigInt &y, secure_vector< word > &ws) const
 
BigInt mul_to_tmp (const BigInt &x, const BigInt &y, secure_vector< word > &ws) const
 
CurveGFpoperator= (const CurveGFp &)=default
 
bool operator== (const CurveGFp &other) const
 
void redc_mod_p (BigInt &z, secure_vector< word > &ws) const
 
void sqr (BigInt &z, const BigInt &x, secure_vector< word > &ws) const
 
void sqr (BigInt &z, const word x_w[], size_t x_size, secure_vector< word > &ws) const
 
BigInt sqr (const BigInt &x, secure_vector< word > &ws) const
 
BigInt sqr_to_tmp (const BigInt &x, secure_vector< word > &ws) const
 
void swap (CurveGFp &other)
 
void to_rep (BigInt &x, secure_vector< word > &ws) const
 

Detailed Description

This class represents an elliptic curve over GF(p)

There should not be any reason for applications to use this type. If you need EC primitives use the interfaces EC_Group and PointGFp

It is likely this class will be removed entirely in a future major release.

Definition at line 95 of file curve_gfp.h.

Constructor & Destructor Documentation

◆ CurveGFp() [1/3]

Botan::CurveGFp::CurveGFp ( )
default

Create an uninitialized CurveGFp

◆ CurveGFp() [2/3]

Botan::CurveGFp::CurveGFp ( const BigInt p,
const BigInt a,
const BigInt b 
)
inline

Construct the elliptic curve E: y^2 = x^3 + ax + b over GF(p)

Parameters
pprime number of the field
afirst coefficient
bsecond coefficient

Definition at line 110 of file curve_gfp.h.

110  :
111  m_repr(choose_repr(p, a, b))
112  {
113  }

◆ CurveGFp() [3/3]

Botan::CurveGFp::CurveGFp ( const CurveGFp )
default

Member Function Documentation

◆ a_is_minus_3()

bool Botan::CurveGFp::a_is_minus_3 ( ) const
inline

Definition at line 145 of file curve_gfp.h.

Referenced by Botan::PointGFp::mult2().

145 { return m_repr->a_is_minus_3(); }

◆ a_is_zero()

bool Botan::CurveGFp::a_is_zero ( ) const
inline

Definition at line 146 of file curve_gfp.h.

Referenced by Botan::PointGFp::mult2().

146 { return m_repr->a_is_zero(); }

◆ from_rep() [1/2]

void Botan::CurveGFp::from_rep ( BigInt x,
secure_vector< word > &  ws 
) const
inline

Definition at line 160 of file curve_gfp.h.

Referenced by Botan::PointGFp::get_affine_x(), Botan::PointGFp::get_affine_y(), and Botan::PointGFp::on_the_curve().

161  {
162  m_repr->from_curve_rep(x, ws);
163  }

◆ from_rep() [2/2]

BigInt Botan::CurveGFp::from_rep ( const BigInt x,
secure_vector< word > &  ws 
) const
inline

Definition at line 165 of file curve_gfp.h.

166  {
167  BigInt xt(x);
168  m_repr->from_curve_rep(xt, ws);
169  return xt;
170  }

◆ get_1_rep()

const BigInt& Botan::CurveGFp::get_1_rep ( ) const
inline

Definition at line 143 of file curve_gfp.h.

Referenced by Botan::PointGFp::add(), Botan::PointGFp::add_affine(), Botan::PointGFp::force_affine(), and Botan::PointGFp::force_all_affine().

143 { return m_repr->get_1_rep(); }

◆ get_a()

const BigInt& Botan::CurveGFp::get_a ( ) const
inline
Returns
curve coefficient a

Definition at line 122 of file curve_gfp.h.

Referenced by operator==(), and Botan::OS2ECP().

122 { return m_repr->get_a(); }

◆ get_a_rep()

const BigInt& Botan::CurveGFp::get_a_rep ( ) const
inline

Definition at line 139 of file curve_gfp.h.

Referenced by Botan::PointGFp::mult2(), and Botan::PointGFp::on_the_curve().

139 { return m_repr->get_a_rep(); }

◆ get_b()

const BigInt& Botan::CurveGFp::get_b ( ) const
inline
Returns
curve coefficient b

Definition at line 127 of file curve_gfp.h.

Referenced by operator==(), and Botan::OS2ECP().

127 { return m_repr->get_b(); }

◆ get_b_rep()

const BigInt& Botan::CurveGFp::get_b_rep ( ) const
inline

Definition at line 141 of file curve_gfp.h.

Referenced by Botan::PointGFp::on_the_curve().

141 { return m_repr->get_b_rep(); }

◆ get_p()

const BigInt& Botan::CurveGFp::get_p ( ) const
inline

Get prime modulus of the field of the curve

Returns
prime modulus of the field of the curve

Definition at line 133 of file curve_gfp.h.

Referenced by Botan::PointGFp::add(), Botan::PointGFp::add_affine(), Botan::PointGFp::encode(), Botan::PointGFp::mult2(), operator==(), Botan::OS2ECP(), Botan::PointGFp::PointGFp(), and Botan::PointGFp::randomize_repr().

133 { return m_repr->get_p(); }

◆ get_p_words()

size_t Botan::CurveGFp::get_p_words ( ) const
inline

Definition at line 135 of file curve_gfp.h.

135 { return m_repr->get_p_words(); }

◆ get_ws_size()

size_t Botan::CurveGFp::get_ws_size ( ) const
inline

◆ invert_element()

BigInt Botan::CurveGFp::invert_element ( const BigInt x,
secure_vector< word > &  ws 
) const
inline

Definition at line 150 of file curve_gfp.h.

Referenced by Botan::PointGFp::force_affine(), Botan::PointGFp::force_all_affine(), Botan::PointGFp::get_affine_x(), and Botan::PointGFp::get_affine_y().

151  {
152  return m_repr->invert_element(x, ws);
153  }

◆ is_one()

bool Botan::CurveGFp::is_one ( const BigInt x) const
inline

Definition at line 148 of file curve_gfp.h.

Referenced by Botan::PointGFp::is_affine().

148 { return m_repr->is_one(x); }

◆ mul() [1/3]

void Botan::CurveGFp::mul ( BigInt z,
const BigInt x,
const BigInt y,
secure_vector< word > &  ws 
) const
inline

◆ mul() [2/3]

void Botan::CurveGFp::mul ( BigInt z,
const word  x_w[],
size_t  x_size,
const BigInt y,
secure_vector< word > &  ws 
) const
inline

Definition at line 184 of file curve_gfp.h.

186  {
187  m_repr->curve_mul_words(z, x_w, x_size, y, ws);
188  }

◆ mul() [3/3]

BigInt Botan::CurveGFp::mul ( const BigInt x,
const BigInt y,
secure_vector< word > &  ws 
) const
inline

Definition at line 200 of file curve_gfp.h.

201  {
202  return mul_to_tmp(x, y, ws);
203  }
BigInt mul_to_tmp(const BigInt &x, const BigInt &y, secure_vector< word > &ws) const
Definition: curve_gfp.h:210

◆ mul_to_tmp()

BigInt Botan::CurveGFp::mul_to_tmp ( const BigInt x,
const BigInt y,
secure_vector< word > &  ws 
) const
inline

Definition at line 210 of file curve_gfp.h.

Referenced by Botan::PointGFp::force_affine(), Botan::PointGFp::force_all_affine(), Botan::PointGFp::get_affine_y(), Botan::PointGFp::on_the_curve(), and Botan::PointGFp::randomize_repr().

211  {
212  BigInt z;
213  m_repr->curve_mul(z, x, y, ws);
214  return z;
215  }

◆ operator=()

CurveGFp& Botan::CurveGFp::operator= ( const CurveGFp )
default

◆ operator==()

bool Botan::CurveGFp::operator== ( const CurveGFp other) const
inline

Equality operator

Parameters
othera curve
Returns
true iff *this is the same as other

Definition at line 234 of file curve_gfp.h.

References get_a(), get_b(), and get_p().

235  {
236  if(m_repr.get() == other.m_repr.get())
237  return true;
238 
239  return (get_p() == other.get_p()) &&
240  (get_a() == other.get_a()) &&
241  (get_b() == other.get_b());
242  }
const BigInt & get_b() const
Definition: curve_gfp.h:127
const BigInt & get_a() const
Definition: curve_gfp.h:122
const BigInt & get_p() const
Definition: curve_gfp.h:133

◆ redc_mod_p()

void Botan::CurveGFp::redc_mod_p ( BigInt z,
secure_vector< word > &  ws 
) const
inline

Definition at line 174 of file curve_gfp.h.

Referenced by Botan::PointGFp::mult2().

175  {
176  m_repr->redc_mod_p(z, ws);
177  }

◆ sqr() [1/3]

void Botan::CurveGFp::sqr ( BigInt z,
const BigInt x,
secure_vector< word > &  ws 
) const
inline

Definition at line 190 of file curve_gfp.h.

Referenced by Botan::PointGFp::add(), Botan::PointGFp::add_affine(), Botan::PointGFp::force_all_affine(), and Botan::PointGFp::mult2().

191  {
192  m_repr->curve_sqr(z, x, ws);
193  }

◆ sqr() [2/3]

void Botan::CurveGFp::sqr ( BigInt z,
const word  x_w[],
size_t  x_size,
secure_vector< word > &  ws 
) const
inline

Definition at line 195 of file curve_gfp.h.

196  {
197  m_repr->curve_sqr_words(z, x_w, x_size, ws);
198  }

◆ sqr() [3/3]

BigInt Botan::CurveGFp::sqr ( const BigInt x,
secure_vector< word > &  ws 
) const
inline

Definition at line 205 of file curve_gfp.h.

206  {
207  return sqr_to_tmp(x, ws);
208  }
BigInt sqr_to_tmp(const BigInt &x, secure_vector< word > &ws) const
Definition: curve_gfp.h:217

◆ sqr_to_tmp()

BigInt Botan::CurveGFp::sqr_to_tmp ( const BigInt x,
secure_vector< word > &  ws 
) const
inline

Definition at line 217 of file curve_gfp.h.

Referenced by Botan::PointGFp::force_affine(), Botan::PointGFp::get_affine_x(), Botan::PointGFp::get_affine_y(), Botan::PointGFp::on_the_curve(), and Botan::PointGFp::randomize_repr().

218  {
219  BigInt z;
220  m_repr->curve_sqr(z, x, ws);
221  return z;
222  }

◆ swap()

void Botan::CurveGFp::swap ( CurveGFp other)
inline

Definition at line 224 of file curve_gfp.h.

Referenced by Botan::PointGFp::swap().

225  {
226  std::swap(m_repr, other.m_repr);
227  }

◆ to_rep()

void Botan::CurveGFp::to_rep ( BigInt x,
secure_vector< word > &  ws 
) const
inline

Definition at line 155 of file curve_gfp.h.

Referenced by Botan::PointGFp::PointGFp().

156  {
157  m_repr->to_curve_rep(x, ws);
158  }

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