Botan 3.11.0
Crypto and TLS for C&
Botan::PK_Key_Agreement Class Referencefinal

#include <pubkey.h>

Public Member Functions

size_t agreed_value_size () const
SymmetricKey derive_key (size_t key_len, const uint8_t peer_key[], size_t peer_key_len, const uint8_t salt[], size_t salt_len) const
SymmetricKey derive_key (size_t key_len, const uint8_t peer_key[], size_t peer_key_len, std::string_view salt="") const
SymmetricKey derive_key (size_t key_len, std::span< const uint8_t > peer_key, const uint8_t salt[], size_t salt_len) const
SymmetricKey derive_key (size_t key_len, std::span< const uint8_t > peer_key, std::span< const uint8_t > salt) const
SymmetricKey derive_key (size_t key_len, std::span< const uint8_t > peer_key, std::string_view salt="") const
PK_Key_Agreementoperator= (const PK_Key_Agreement &)=delete
PK_Key_Agreementoperator= (PK_Key_Agreement &&) noexcept
 PK_Key_Agreement (const PK_Key_Agreement &)=delete
 PK_Key_Agreement (const Private_Key &key, RandomNumberGenerator &rng, std::string_view kdf, std::string_view provider="")
 PK_Key_Agreement (PK_Key_Agreement &&) noexcept
 ~PK_Key_Agreement ()

Detailed Description

Object used for key agreement

Definition at line 396 of file pubkey.h.

Constructor & Destructor Documentation

◆ PK_Key_Agreement() [1/3]

Botan::PK_Key_Agreement::PK_Key_Agreement ( const Private_Key & key,
RandomNumberGenerator & rng,
std::string_view kdf,
std::string_view provider = "" )

Construct a PK Key Agreement.

Parameters
keythe key to use
rngthe random generator to use
kdfname of the KDF to use (or 'Raw' for no KDF)
providerthe algo provider to use (or empty for default)

Definition at line 213 of file pubkey.cpp.

216 {
217 m_op = key.create_key_agreement_op(rng, kdf, provider);
218 if(!m_op) {
219 throw Invalid_Argument(fmt("Key type {} does not support key agreement", key.algo_name()));
220 }
221}
std::string fmt(std::string_view format, const T &... args)
Definition fmt.h:53

References Botan::Asymmetric_Key::algo_name(), Botan::Private_Key::create_key_agreement_op(), and Botan::fmt().

Referenced by agreed_value_size(), operator=(), operator=(), PK_Key_Agreement(), and PK_Key_Agreement().

◆ ~PK_Key_Agreement()

Botan::PK_Key_Agreement::~PK_Key_Agreement ( )
default

◆ PK_Key_Agreement() [2/3]

Botan::PK_Key_Agreement::PK_Key_Agreement ( const PK_Key_Agreement & )
delete

References PK_Key_Agreement().

◆ PK_Key_Agreement() [3/3]

Botan::PK_Key_Agreement::PK_Key_Agreement ( PK_Key_Agreement && )
defaultnoexcept

References PK_Key_Agreement().

Member Function Documentation

◆ agreed_value_size()

size_t Botan::PK_Key_Agreement::agreed_value_size ( ) const

Return the underlying size of the value that is agreed. If derive_key is called with a length of 0 with a "Raw" KDF, it will return a value of this size.

Definition at line 228 of file pubkey.cpp.

228 {
229 return m_op->agreed_value_size();
230}

References agreed_value_size(), and PK_Key_Agreement().

Referenced by agreed_value_size().

◆ derive_key() [1/5]

SymmetricKey Botan::PK_Key_Agreement::derive_key ( size_t key_len,
const uint8_t peer_key[],
size_t peer_key_len,
const uint8_t salt[],
size_t salt_len ) const
inline

Perform Key Agreement Operation

Parameters
key_lenthe desired key output size (ignored if "Raw" KDF is used)
peer_keythe other parties key
peer_key_lenthe length of peer_key in bytes
saltextra derivation salt
salt_lenthe length of salt in bytes

Definition at line 434 of file pubkey.h.

435 {
436 return this->derive_key(key_len, {peer_key, peer_key_len}, {salt, salt_len});
437 }
SymmetricKey derive_key(size_t key_len, std::span< const uint8_t > peer_key, std::span< const uint8_t > salt) const
Definition pubkey.cpp:245

References derive_key().

◆ derive_key() [2/5]

SymmetricKey Botan::PK_Key_Agreement::derive_key ( size_t key_len,
const uint8_t peer_key[],
size_t peer_key_len,
std::string_view salt = "" ) const

Perform Key Agreement Operation

Parameters
key_lenthe desired key output size (ignored if "Raw" KDF is used)
peer_keythe other parties key
peer_key_lenthe length of peer_key in bytes
saltextra derivation info

Definition at line 232 of file pubkey.cpp.

235 {
236 return this->derive_key(key_len, {peer_key, peer_key_len}, as_span_of_bytes(salt));
237}
std::span< const uint8_t > as_span_of_bytes(const char *s, size_t len)
Definition mem_utils.h:59

References Botan::as_span_of_bytes(), and derive_key().

◆ derive_key() [3/5]

SymmetricKey Botan::PK_Key_Agreement::derive_key ( size_t key_len,
std::span< const uint8_t > peer_key,
const uint8_t salt[],
size_t salt_len ) const
inline

Perform Key Agreement Operation

Parameters
key_lenthe desired key output size (ignored if "Raw" KDF is used)
peer_keythe other parties key
saltextra derivation salt
salt_lenthe length of salt in bytes

Definition at line 446 of file pubkey.h.

449 {
450 return derive_key(key_len, peer_key.data(), peer_key.size(), salt, salt_len);
451 }

References derive_key().

◆ derive_key() [4/5]

SymmetricKey Botan::PK_Key_Agreement::derive_key ( size_t key_len,
std::span< const uint8_t > peer_key,
std::span< const uint8_t > salt ) const

Perform Key Agreement Operation

Parameters
key_lenthe desired key output size (ignored if "Raw" KDF is used)
peer_keythe other parties key
saltextra derivation salt

Definition at line 245 of file pubkey.cpp.

247 {
248 return SymmetricKey(m_op->agree(key_len, peer_key, salt));
249}
OctetString SymmetricKey
Definition symkey.h:140

Referenced by derive_key(), derive_key(), derive_key(), derive_key(), operator=(), and Botan::TLS::Callbacks::tls_ephemeral_key_agreement().

◆ derive_key() [5/5]

SymmetricKey Botan::PK_Key_Agreement::derive_key ( size_t key_len,
std::span< const uint8_t > peer_key,
std::string_view salt = "" ) const

Perform Key Agreement Operation

Parameters
key_lenthe desired key output size (ignored if "Raw" KDF is used)
peer_keythe other parties key
saltextra derivation info

Definition at line 239 of file pubkey.cpp.

241 {
242 return this->derive_key(key_len, peer_key, as_span_of_bytes(salt));
243}

References Botan::as_span_of_bytes(), and derive_key().

◆ operator=() [1/2]

PK_Key_Agreement & Botan::PK_Key_Agreement::operator= ( const PK_Key_Agreement & )
delete

References PK_Key_Agreement().

◆ operator=() [2/2]

PK_Key_Agreement & Botan::PK_Key_Agreement::operator= ( PK_Key_Agreement && )
defaultnoexcept

References derive_key(), and PK_Key_Agreement().


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