Botan 3.9.0
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 93 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 188 of file ec_inner_bn.cpp.

188 :
189 m_group(g.group()), m_tbl(g.to_legacy_point(), h.to_legacy_point()) {
190 BOTAN_ARG_CHECK(h.group() == m_group, "Curve mismatch");
191}
#define BOTAN_ARG_CHECK(expr, msg)
Definition assert.h:33

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 193 of file ec_inner_bn.cpp.

194 {
195 BOTAN_ARG_CHECK(x.group() == m_group && y.group() == m_group, "Curve mismatch");
196
197 const auto& bn_x = EC_Scalar_Data_BN::checked_ref(x);
198 const auto& bn_y = EC_Scalar_Data_BN::checked_ref(y);
199 auto pt = m_tbl.multi_exp(bn_x.value(), bn_y.value());
200
201 if(pt.is_zero()) {
202 return nullptr;
203 }
204 return std::make_unique<EC_AffinePoint_Data_BN>(m_group, std::move(pt));
205}
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 207 of file ec_inner_bn.cpp.

209 {
210 BOTAN_ARG_CHECK(x.group() == m_group && y.group() == m_group && v.group() == m_group, "Curve mismatch");
211
212 const auto& bn_v = EC_Scalar_Data_BN::checked_ref(v);
213 const auto& bn_x = EC_Scalar_Data_BN::checked_ref(x);
214 const auto& bn_y = EC_Scalar_Data_BN::checked_ref(y);
215 const auto pt = m_tbl.multi_exp(bn_x.value(), bn_y.value());
216
217 return pt._is_x_eq_to_v_mod_order(bn_v.value());
218}

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: