Botan 3.7.1
Crypto and TLS for C&
Botan::EC_PrivateKey_Data Class Referencefinal

#include <ec_key_data.h>

Public Member Functions

 EC_PrivateKey_Data (EC_Group group, EC_Scalar x)
 
 EC_PrivateKey_Data (EC_Group group, std::span< const uint8_t > bytes)
 
const EC_Groupgroup () const
 
const BigIntlegacy_bigint () const
 
const EC_Scalarprivate_key () const
 
std::shared_ptr< EC_PublicKey_Datapublic_key (bool with_modular_inverse) const
 
std::shared_ptr< EC_PublicKey_Datapublic_key (RandomNumberGenerator &rng, bool with_modular_inverse) const
 
template<typename T >
T serialize () const
 
void serialize_to (std::span< uint8_t > output) const
 

Detailed Description

Definition at line 50 of file ec_key_data.h.

Constructor & Destructor Documentation

◆ EC_PrivateKey_Data() [1/2]

Botan::EC_PrivateKey_Data::EC_PrivateKey_Data ( EC_Group group,
EC_Scalar x )

Definition at line 20 of file ec_key_data.cpp.

20 :
21 m_group(std::move(group)), m_scalar(std::move(x)), m_legacy_x(m_scalar.to_bigint()) {}
const EC_Group & group() const
Definition ec_key_data.h:69
BigInt to_bigint() const
Definition ec_scalar.cpp:73

◆ EC_PrivateKey_Data() [2/2]

Botan::EC_PrivateKey_Data::EC_PrivateKey_Data ( EC_Group group,
std::span< const uint8_t > bytes )

Definition at line 52 of file ec_key_data.cpp.

52 :
53 m_group(std::move(group)),
54 m_scalar(decode_ec_secret_key_scalar(m_group, bytes)),
55 m_legacy_x(m_scalar.to_bigint()) {}

Member Function Documentation

◆ group()

const EC_Group & Botan::EC_PrivateKey_Data::group ( ) const
inline

Definition at line 69 of file ec_key_data.h.

69{ return m_group; }

Referenced by serialize().

◆ legacy_bigint()

const BigInt & Botan::EC_PrivateKey_Data::legacy_bigint ( ) const
inline

Definition at line 73 of file ec_key_data.h.

73{ return m_legacy_x; }

◆ private_key()

const EC_Scalar & Botan::EC_PrivateKey_Data::private_key ( ) const
inline

Definition at line 71 of file ec_key_data.h.

71{ return m_scalar; }

◆ public_key() [1/2]

std::shared_ptr< EC_PublicKey_Data > Botan::EC_PrivateKey_Data::public_key ( bool with_modular_inverse) const

Definition at line 71 of file ec_key_data.cpp.

71 {
72 Null_RNG null_rng;
73 return this->public_key(null_rng, with_modular_inverse);
74}
std::shared_ptr< EC_PublicKey_Data > public_key(RandomNumberGenerator &rng, bool with_modular_inverse) const

References public_key().

◆ public_key() [2/2]

std::shared_ptr< EC_PublicKey_Data > Botan::EC_PrivateKey_Data::public_key ( RandomNumberGenerator & rng,
bool with_modular_inverse ) const

Definition at line 57 of file ec_key_data.cpp.

58 {
59 auto public_point = [&] {
60 std::vector<BigInt> ws;
61 if(with_modular_inverse) {
62 return EC_AffinePoint::g_mul(m_scalar.invert(), rng, ws);
63 } else {
64 return EC_AffinePoint::g_mul(m_scalar, rng, ws);
65 }
66 };
67
68 return std::make_shared<EC_PublicKey_Data>(m_group, public_point());
69}
static EC_AffinePoint g_mul(const EC_Scalar &scalar, RandomNumberGenerator &rng, std::vector< BigInt > &ws)
EC_Scalar invert() const

References Botan::EC_AffinePoint::g_mul(), and Botan::EC_Scalar::invert().

Referenced by public_key().

◆ serialize()

template<typename T >
T Botan::EC_PrivateKey_Data::serialize ( ) const
inline

Definition at line 63 of file ec_key_data.h.

63 {
64 T bytes(this->group().get_order_bytes());
65 this->serialize_to(bytes);
66 return bytes;
67 }
void serialize_to(std::span< uint8_t > output) const
FE_25519 T
Definition ge.cpp:34

References group(), serialize_to(), and T.

◆ serialize_to()

void Botan::EC_PrivateKey_Data::serialize_to ( std::span< uint8_t > output) const

Definition at line 76 of file ec_key_data.cpp.

76 {
77 m_scalar.serialize_to(output);
78}
void serialize_to(std::span< uint8_t > bytes) const
Definition ec_scalar.cpp:84

References Botan::EC_Scalar::serialize_to().

Referenced by serialize().


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