Botan 3.0.0
Crypto and TLS for C&
Public Member Functions | Protected Member Functions | List of all members
Botan::PK_Ops::Key_Agreement_with_KDF Class Referenceabstract

#include <pk_ops_impl.h>

Inheritance diagram for Botan::PK_Ops::Key_Agreement_with_KDF:
Botan::PK_Ops::Key_Agreement

Public Member Functions

secure_vector< uint8_t > agree (size_t key_len, const uint8_t other_key[], size_t other_key_len, const uint8_t salt[], size_t salt_len) override
 
virtual size_t agreed_value_size () const =0
 

Protected Member Functions

 Key_Agreement_with_KDF (std::string_view kdf)
 
 ~Key_Agreement_with_KDF ()=default
 

Detailed Description

Definition at line 108 of file pk_ops_impl.h.

Constructor & Destructor Documentation

◆ Key_Agreement_with_KDF()

Botan::PK_Ops::Key_Agreement_with_KDF::Key_Agreement_with_KDF ( std::string_view  kdf)
explicitprotected

Definition at line 60 of file pk_ops.cpp.

61 {
62 if(kdf != "Raw")
63 m_kdf = KDF::create_or_throw(kdf);
64 }
static std::unique_ptr< KDF > create_or_throw(std::string_view algo_spec, std::string_view provider="")
Definition: kdf.cpp:213

References Botan::KDF::create_or_throw().

◆ ~Key_Agreement_with_KDF()

Botan::PK_Ops::Key_Agreement_with_KDF::~Key_Agreement_with_KDF ( )
protecteddefault

Member Function Documentation

◆ agree()

secure_vector< uint8_t > Botan::PK_Ops::Key_Agreement_with_KDF::agree ( size_t  key_len,
const uint8_t  other_key[],
size_t  other_key_len,
const uint8_t  salt[],
size_t  salt_len 
)
overridevirtual

Implements Botan::PK_Ops::Key_Agreement.

Definition at line 66 of file pk_ops.cpp.

69 {
70 if(salt_len > 0 && m_kdf == nullptr)
71 throw Invalid_Argument("PK_Key_Agreement::derive_key requires a KDF to use a salt");
72
73 secure_vector<uint8_t> z = raw_agree(w, w_len);
74 if(m_kdf)
75 return m_kdf->derive_key(key_len, z, salt, salt_len);
76 return z;
77 }

◆ agreed_value_size()

virtual size_t Botan::PK_Ops::Key_Agreement::agreed_value_size ( ) const
pure virtualinherited

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