Botan 3.3.0
Crypto and TLS for C&
Public Member Functions | Friends | 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_to_tmp (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 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
 

Friends

void swap (CurveGFp &x, CurveGFp &y)
 

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 EC_Point

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

Definition at line 85 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 98 of file curve_gfp.h.

98: m_repr(choose_repr(p, a, b)) {}

◆ 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 130 of file curve_gfp.h.

130{ return m_repr->a_is_minus_3(); }

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

◆ a_is_zero()

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

Definition at line 132 of file curve_gfp.h.

132{ return m_repr->a_is_zero(); }

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

◆ from_rep()

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

Definition at line 140 of file curve_gfp.h.

140{ m_repr->from_curve_rep(x, ws); }

Referenced by Botan::EC_Point::get_affine_x(), and Botan::EC_Point::get_affine_y().

◆ from_rep_to_tmp()

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

Definition at line 142 of file curve_gfp.h.

142 {
143 BigInt xt(x);
144 m_repr->from_curve_rep(xt, ws);
145 return xt;
146 }

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

◆ get_1_rep()

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

Definition at line 128 of file curve_gfp.h.

128{ return m_repr->get_1_rep(); }

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

◆ get_a()

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

Definition at line 107 of file curve_gfp.h.

107{ return m_repr->get_a(); }

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

◆ get_a_rep()

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

Definition at line 124 of file curve_gfp.h.

124{ return m_repr->get_a_rep(); }

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

◆ get_b()

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

Definition at line 112 of file curve_gfp.h.

112{ return m_repr->get_b(); }

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

◆ get_b_rep()

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

Definition at line 126 of file curve_gfp.h.

126{ return m_repr->get_b_rep(); }

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

◆ get_p()

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

◆ get_p_words()

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

Definition at line 120 of file curve_gfp.h.

120{ 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 136 of file curve_gfp.h.

136{ return m_repr->invert_element(x, ws); }

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

◆ is_one()

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

Definition at line 134 of file curve_gfp.h.

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

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

◆ 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 154 of file curve_gfp.h.

154 {
155 m_repr->curve_mul_words(z, x_w, x_size, y, ws);
156 }

◆ mul() [3/3]

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

Definition at line 164 of file curve_gfp.h.

164{ return mul_to_tmp(x, y, ws); }
BigInt mul_to_tmp(const BigInt &x, const BigInt &y, secure_vector< word > &ws) const
Definition curve_gfp.h:168

◆ mul_to_tmp()

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

Definition at line 168 of file curve_gfp.h.

168 {
169 BigInt z;
170 m_repr->curve_mul(z, x, y, ws);
171 return z;
172 }

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

◆ 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 189 of file curve_gfp.h.

189 {
190 if(m_repr.get() == other.m_repr.get()) {
191 return true;
192 }
193
194 return (get_p() == other.get_p()) && (get_a() == other.get_a()) && (get_b() == other.get_b());
195 }
const BigInt & get_a() const
Definition curve_gfp.h:107
const BigInt & get_p() const
Definition curve_gfp.h:118
const BigInt & get_b() const
Definition curve_gfp.h:112

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

◆ sqr() [1/3]

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

◆ 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 160 of file curve_gfp.h.

160 {
161 m_repr->curve_sqr_words(z, x_w, x_size, ws);
162 }

◆ sqr() [3/3]

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

Definition at line 166 of file curve_gfp.h.

166{ return sqr_to_tmp(x, ws); }
BigInt sqr_to_tmp(const BigInt &x, secure_vector< word > &ws) const
Definition curve_gfp.h:174

◆ sqr_to_tmp()

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

Definition at line 174 of file curve_gfp.h.

174 {
175 BigInt z;
176 m_repr->curve_sqr(z, x, ws);
177 return z;
178 }

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

◆ swap()

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

Definition at line 180 of file curve_gfp.h.

180{ std::swap(m_repr, other.m_repr); }

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

◆ to_rep()

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

Definition at line 138 of file curve_gfp.h.

138{ m_repr->to_curve_rep(x, ws); }

Referenced by Botan::EC_Point::EC_Point().

Friends And Related Symbol Documentation

◆ swap

void swap ( CurveGFp & x,
CurveGFp & y )
friend

Definition at line 182 of file curve_gfp.h.

182{ x.swap(y); }

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