Botan 3.12.0
Crypto and TLS for C&
Botan::DL_PublicKey Class Referencefinal

#include <dl_scheme.h>

Public Member Functions

bool check_key (RandomNumberGenerator &rng, bool strong) const
std::vector< uint8_t > DER_encode () const
 DL_PublicKey (const AlgorithmIdentifier &alg_id, std::span< const uint8_t > key_bits, DL_Group_Format format)
 DL_PublicKey (const DL_Group &group, const BigInt &public_key)
size_t estimated_strength () const
const BigIntget_int_field (std::string_view algo_name, std::string_view field) const
const DL_Groupgroup () const
size_t p_bits () const
const BigIntpublic_key () const
std::vector< uint8_t > public_key_as_bytes () const

Detailed Description

Definition at line 21 of file dl_scheme.h.

Constructor & Destructor Documentation

◆ DL_PublicKey() [1/2]

Botan::DL_PublicKey::DL_PublicKey ( const DL_Group & group,
const BigInt & public_key )

Definition at line 38 of file dl_scheme.cpp.

38 : m_group(group), m_public_key(public_key) {
39 // The subgroup check (y^q == 1 mod p) is deferred to check_key() since it can be expensive
40 BOTAN_ARG_CHECK(m_public_key > 1 && m_public_key < m_group.get_p(), "Invalid DL public key");
41}
#define BOTAN_ARG_CHECK(expr, msg)
Definition assert.h:33
const BigInt & public_key() const
Definition dl_scheme.h:31
const DL_Group & group() const
Definition dl_scheme.h:29

References BOTAN_ARG_CHECK, group(), and public_key().

◆ DL_PublicKey() [2/2]

Botan::DL_PublicKey::DL_PublicKey ( const AlgorithmIdentifier & alg_id,
std::span< const uint8_t > key_bits,
DL_Group_Format format )

Definition at line 43 of file dl_scheme.cpp.

45 :
46 m_group(alg_id.parameters(), format), m_public_key(decode_single_bigint(key_bits)) {
47 BOTAN_ARG_CHECK(m_public_key > 1 && m_public_key < m_group.get_p(), "Invalid DL public key");
48}

References BOTAN_ARG_CHECK.

Member Function Documentation

◆ check_key()

bool Botan::DL_PublicKey::check_key ( RandomNumberGenerator & rng,
bool strong ) const

Definition at line 60 of file dl_scheme.cpp.

60 {
61 return m_group.verify_group(rng, strong) && m_group.verify_public_element(m_public_key);
62}

◆ DER_encode()

std::vector< uint8_t > Botan::DL_PublicKey::DER_encode ( ) const

Definition at line 54 of file dl_scheme.cpp.

54 {
55 std::vector<uint8_t> output;
56 DER_Encoder(output).encode(m_public_key);
57 return output;
58}

References Botan::DER_Encoder::encode().

◆ estimated_strength()

size_t Botan::DL_PublicKey::estimated_strength ( ) const

Definition at line 64 of file dl_scheme.cpp.

64 {
65 return m_group.estimated_strength();
66}

◆ get_int_field()

const BigInt & Botan::DL_PublicKey::get_int_field ( std::string_view algo_name,
std::string_view field ) const

Definition at line 105 of file dl_scheme.cpp.

105 {
106 if(field == "p") {
107 return m_group.get_p();
108 } else if(field == "q") {
109 return m_group.get_q();
110 } else if(field == "g") {
111 return m_group.get_g();
112 } else if(field == "y") {
113 return m_public_key;
114 } else {
115 throw Unknown_PK_Field_Name(algo, field);
116 }
117}

◆ group()

const DL_Group & Botan::DL_PublicKey::group ( ) const
inline

Definition at line 29 of file dl_scheme.h.

29{ return m_group; }

Referenced by DL_PublicKey().

◆ p_bits()

size_t Botan::DL_PublicKey::p_bits ( ) const

Definition at line 68 of file dl_scheme.cpp.

68 {
69 return m_group.p_bits();
70}

◆ public_key()

const BigInt & Botan::DL_PublicKey::public_key ( ) const
inline

Definition at line 31 of file dl_scheme.h.

31{ return m_public_key; }

Referenced by DL_PublicKey().

◆ public_key_as_bytes()

std::vector< uint8_t > Botan::DL_PublicKey::public_key_as_bytes ( ) const

Definition at line 50 of file dl_scheme.cpp.

50 {
51 return m_public_key.serialize(m_group.p_bytes());
52}

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