Botan 3.8.1
Crypto and TLS for C&
Botan::EC_Mul2Table_Data_BN Class Referencefinal

#include <ec_inner_bn.h>

Inheritance diagram for Botan::EC_Mul2Table_Data_BN:
Botan::EC_Mul2Table_Data

Public Member Functions

 EC_Mul2Table_Data_BN (const EC_AffinePoint_Data &g, const EC_AffinePoint_Data &h)
 
std::unique_ptr< EC_AffinePoint_Datamul2_vartime (const EC_Scalar_Data &x, const EC_Scalar_Data &y) const override
 
bool mul2_vartime_x_mod_order_eq (const EC_Scalar_Data &v, const EC_Scalar_Data &x, const EC_Scalar_Data &y) const override
 

Detailed Description

Definition at line 91 of file ec_inner_bn.h.

Constructor & Destructor Documentation

◆ EC_Mul2Table_Data_BN()

Botan::EC_Mul2Table_Data_BN::EC_Mul2Table_Data_BN ( const EC_AffinePoint_Data & g,
const EC_AffinePoint_Data & h )

Definition at line 181 of file ec_inner_bn.cpp.

181 :
182 m_group(g.group()), m_tbl(g.to_legacy_point(), h.to_legacy_point()) {
183 BOTAN_ARG_CHECK(h.group() == m_group, "Curve mismatch");
184}
#define BOTAN_ARG_CHECK(expr, msg)
Definition assert.h:31

References BOTAN_ARG_CHECK, and Botan::EC_AffinePoint_Data::group().

Member Function Documentation

◆ mul2_vartime()

std::unique_ptr< EC_AffinePoint_Data > Botan::EC_Mul2Table_Data_BN::mul2_vartime ( const EC_Scalar_Data & x,
const EC_Scalar_Data & y ) const
overridevirtual

Implements Botan::EC_Mul2Table_Data.

Definition at line 186 of file ec_inner_bn.cpp.

187 {
188 BOTAN_ARG_CHECK(x.group() == m_group && y.group() == m_group, "Curve mismatch");
189
190 const auto& bn_x = EC_Scalar_Data_BN::checked_ref(x);
191 const auto& bn_y = EC_Scalar_Data_BN::checked_ref(y);
192 auto pt = m_tbl.multi_exp(bn_x.value(), bn_y.value());
193
194 if(pt.is_zero()) {
195 return nullptr;
196 }
197 return std::make_unique<EC_AffinePoint_Data_BN>(m_group, std::move(pt));
198}
static const EC_Scalar_Data_BN & checked_ref(const EC_Scalar_Data &data)

References BOTAN_ARG_CHECK, Botan::EC_Scalar_Data_BN::checked_ref(), and Botan::EC_Scalar_Data::group().

◆ mul2_vartime_x_mod_order_eq()

bool Botan::EC_Mul2Table_Data_BN::mul2_vartime_x_mod_order_eq ( const EC_Scalar_Data & v,
const EC_Scalar_Data & x,
const EC_Scalar_Data & y ) const
overridevirtual

Implements Botan::EC_Mul2Table_Data.

Definition at line 200 of file ec_inner_bn.cpp.

202 {
203 BOTAN_ARG_CHECK(x.group() == m_group && y.group() == m_group && v.group() == m_group, "Curve mismatch");
204
205 const auto& bn_v = EC_Scalar_Data_BN::checked_ref(v);
206 const auto& bn_x = EC_Scalar_Data_BN::checked_ref(x);
207 const auto& bn_y = EC_Scalar_Data_BN::checked_ref(y);
208 const auto pt = m_tbl.multi_exp(bn_x.value(), bn_y.value());
209
210 return pt._is_x_eq_to_v_mod_order(bn_v.value());
211}

References BOTAN_ARG_CHECK, Botan::EC_Scalar_Data_BN::checked_ref(), and Botan::EC_Scalar_Data::group().


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