7#ifndef BOTAN_EC_INNER_DATA_PC_H_
8#define BOTAN_EC_INNER_DATA_PC_H_
10#include <botan/internal/ec_inner_data.h>
12#include <botan/internal/pcurves.h>
19 m_group(std::move(
group)), m_v(std::move(v)) {}
23 const std::shared_ptr<const EC_Group_Data>&
group()
const override;
25 std::unique_ptr<EC_Scalar_Data>
clone()
const override;
27 size_t bytes()
const override;
37 std::unique_ptr<EC_Scalar_Data>
negate()
const override;
39 std::unique_ptr<EC_Scalar_Data>
invert()
const override;
49 const auto&
value()
const {
return m_v; }
52 std::shared_ptr<const EC_Group_Data> m_group;
64 const std::shared_ptr<const EC_Group_Data>&
group()
const override;
66 std::unique_ptr<EC_AffinePoint_Data>
clone()
const override;
84 std::vector<BigInt>& ws)
const override;
91 std::shared_ptr<const EC_Group_Data> m_group;
108 std::shared_ptr<const EC_Group_Data> m_group;
109 std::unique_ptr<const PCurve::PrimeOrderCurve::PrecomputedMul2Table> m_tbl;
size_t field_element_bytes() const override
void serialize_uncompressed_to(std::span< uint8_t > bytes) const override
void serialize_xy_to(std::span< uint8_t > bytes) const override
std::unique_ptr< EC_AffinePoint_Data > mul(const EC_Scalar_Data &scalar, RandomNumberGenerator &rng, std::vector< BigInt > &ws) const override
std::unique_ptr< EC_AffinePoint_Data > clone() const override
const std::shared_ptr< const EC_Group_Data > & group() const override
EC_AffinePoint_Data_PC(std::shared_ptr< const EC_Group_Data > group, PCurve::PrimeOrderCurve::AffinePoint pt)
EC_Point to_legacy_point() const override
const PCurve::PrimeOrderCurve::AffinePoint & value() const
bool is_identity() const override
void serialize_x_to(std::span< uint8_t > bytes) const override
void serialize_y_to(std::span< uint8_t > bytes) const override
static const EC_AffinePoint_Data_PC & checked_ref(const EC_AffinePoint_Data &data)
void serialize_compressed_to(std::span< uint8_t > bytes) 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
EC_Mul2Table_Data_PC(const EC_AffinePoint_Data &g, const EC_AffinePoint_Data &h)
std::unique_ptr< EC_AffinePoint_Data > mul2_vartime(const EC_Scalar_Data &x, const EC_Scalar_Data &y) const override
void serialize_to(std::span< uint8_t > bytes) const override
std::unique_ptr< EC_Scalar_Data > invert() const override
void assign(const EC_Scalar_Data &y) override
size_t bytes() const override
static const EC_Scalar_Data_PC & checked_ref(const EC_Scalar_Data &data)
std::unique_ptr< EC_Scalar_Data > sub(const EC_Scalar_Data &other) const override
bool is_eq(const EC_Scalar_Data &y) const override
void square_self() override
std::unique_ptr< EC_Scalar_Data > clone() const override
EC_Scalar_Data_PC(std::shared_ptr< const EC_Group_Data > group, PCurve::PrimeOrderCurve::Scalar v)
std::unique_ptr< EC_Scalar_Data > mul(const EC_Scalar_Data &other) const override
const std::shared_ptr< const EC_Group_Data > & group() const override
std::unique_ptr< EC_Scalar_Data > negate() const override
bool is_zero() const override
std::unique_ptr< EC_Scalar_Data > add(const EC_Scalar_Data &other) const override
const auto & value() const
int(* final)(unsigned char *, CTX *)
std::vector< T, secure_allocator< T > > secure_vector