Botan 1.10.17
Botan::PK_Key_Agreement Class Reference

#include <pubkey.h>

Public Member Functions

SymmetricKey derive_key (size_t key_len, const byte in[], size_t in_len, const byte params[], size_t params_len) const
SymmetricKey derive_key (size_t key_len, const byte in[], size_t in_len, const std::string &params="") const
SymmetricKey derive_key (size_t key_len, const MemoryRegion< byte > &in, const byte params[], size_t params_len) const
SymmetricKey derive_key (size_t key_len, const MemoryRegion< byte > &in, const std::string &params="") const
 PK_Key_Agreement (const PK_Key_Agreement_Key &key, const std::string &kdf)
 ~PK_Key_Agreement ()

Detailed Description

Key used for key agreement

Definition at line 312 of file pubkey.h.

Constructor & Destructor Documentation

◆ PK_Key_Agreement()

Botan::PK_Key_Agreement::PK_Key_Agreement ( const PK_Key_Agreement_Key & key,
const std::string & kdf )

Construct a PK Key Agreement.

Parameters
keythe key to use
kdfname of the KDF to use (or 'Raw' for no KDF)

Definition at line 359 of file pubkey.cpp.

361 {
362 Algorithm_Factory::Engine_Iterator i(global_state().algorithm_factory());
363
364 op = 0;
365
366 while(const Engine* engine = i.next())
367 {
368 op = engine->get_key_agreement_op(key);
369 if(op)
370 break;
371 }
372
373 if(!op)
374 throw Lookup_Error("Key agreement with " + key.algo_name() + " not supported");
375
376 kdf = (kdf_name == "Raw") ? 0 : get_kdf(kdf_name);
377 }
KDF * get_kdf(const std::string &algo_spec)
Definition get_enc.cpp:174
Library_State & global_state()
Lookup_Error(const std::string &err)
Definition exceptn.h:37

References Botan::Public_Key::algo_name(), Botan::get_kdf(), Botan::global_state(), Botan::Lookup_Error::Lookup_Error(), and Botan::Algorithm_Factory::Engine_Iterator::next().

Referenced by Botan::get_pk_kas().

◆ ~PK_Key_Agreement()

Botan::PK_Key_Agreement::~PK_Key_Agreement ( )
inline

Definition at line 386 of file pubkey.h.

386{ delete op; delete kdf; }

Member Function Documentation

◆ derive_key() [1/4]

SymmetricKey Botan::PK_Key_Agreement::derive_key ( size_t key_len,
const byte in[],
size_t in_len,
const byte params[],
size_t params_len ) const

Definition at line 379 of file pubkey.cpp.

382 {
383 SecureVector<byte> z = op->agree(in, in_len);
384
385 if(!kdf)
386 return z;
387
388 return kdf->derive_key(key_len, z, params, params_len);
389 }

Referenced by Botan::Client_Key_Exchange::Client_Key_Exchange(), derive_key(), derive_key(), derive_key(), and Botan::Client_Key_Exchange::pre_master_secret().

◆ derive_key() [2/4]

SymmetricKey Botan::PK_Key_Agreement::derive_key ( size_t key_len,
const byte in[],
size_t in_len,
const std::string & params = "" ) const
inline

Definition at line 354 of file pubkey.h.

357 {
358 return derive_key(key_len, in, in_len,
359 reinterpret_cast<const byte*>(params.data()),
360 params.length());
361 }
SymmetricKey derive_key(size_t key_len, const byte in[], size_t in_len, const byte params[], size_t params_len) const
Definition pubkey.cpp:379

References derive_key().

◆ derive_key() [3/4]

SymmetricKey Botan::PK_Key_Agreement::derive_key ( size_t key_len,
const MemoryRegion< byte > & in,
const byte params[],
size_t params_len ) const
inline

Definition at line 338 of file pubkey.h.

342 {
343 return derive_key(key_len, &in[0], in.size(),
344 params, params_len);
345 }

References derive_key(), and Botan::MemoryRegion< T >::size().

◆ derive_key() [4/4]

SymmetricKey Botan::PK_Key_Agreement::derive_key ( size_t key_len,
const MemoryRegion< byte > & in,
const std::string & params = "" ) const
inline

Definition at line 369 of file pubkey.h.

372 {
373 return derive_key(key_len, &in[0], in.size(),
374 reinterpret_cast<const byte*>(params.data()),
375 params.length());
376 }

References derive_key(), and Botan::MemoryRegion< T >::size().


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