Botan  1.11.4
Public Member Functions | List of all members
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 std::vector< byte > &in, 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 std::vector< byte > &in, const std::string &params="") const
 
PK_Key_Agreementoperator= (const PK_Key_Agreement &)=delete
 
 PK_Key_Agreement (const PK_Key_Agreement_Key &key, const std::string &kdf)
 
 PK_Key_Agreement (const PK_Key_Agreement_Key &)=delete
 
 ~PK_Key_Agreement ()
 

Detailed Description

Key used for key agreement

Definition at line 323 of file pubkey.h.

Constructor & Destructor Documentation

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 355 of file pubkey.cpp.

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

357  {
358  Algorithm_Factory::Engine_Iterator i(global_state().algorithm_factory());
359 
360  while(const Engine* engine = i.next())
361  {
362  op = engine->get_key_agreement_op(key);
363  if(op)
364  break;
365  }
366 
367  if(!op)
368  throw Lookup_Error("PK_Key_Agreement: No working engine for " +
369  key.algo_name());
370 
371  kdf = (kdf_name == "Raw") ? nullptr : get_kdf(kdf_name);
372  }
Botan::PK_Key_Agreement::PK_Key_Agreement ( const PK_Key_Agreement_Key )
delete
Botan::PK_Key_Agreement::~PK_Key_Agreement ( )
inline

Definition at line 400 of file pubkey.h.

400 { delete op; delete kdf; }

Member Function Documentation

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 374 of file pubkey.cpp.

References Botan::PK_Ops::Key_Agreement::agree(), and Botan::KDF::derive_key().

Referenced by Botan::TLS::Client_Key_Exchange::Client_Key_Exchange().

377  {
378  secure_vector<byte> z = op->agree(in, in_len);
379 
380  if(!kdf)
381  return z;
382 
383  return kdf->derive_key(key_len, z, params, params_len);
384  }
SymmetricKey Botan::PK_Key_Agreement::derive_key ( size_t  key_len,
const std::vector< byte > &  in,
const byte  params[],
size_t  params_len 
) const
inline

Definition at line 349 of file pubkey.h.

References Botan::TLS::derive_key().

353  {
354  return derive_key(key_len, &in[0], in.size(),
355  params, params_len);
356  }
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 365 of file pubkey.h.

References Botan::TLS::derive_key().

368  {
369  return derive_key(key_len, in, in_len,
370  reinterpret_cast<const byte*>(params.data()),
371  params.length());
372  }
SymmetricKey Botan::PK_Key_Agreement::derive_key ( size_t  key_len,
const std::vector< byte > &  in,
const std::string &  params = "" 
) const
inline

Definition at line 380 of file pubkey.h.

References Botan::TLS::derive_key().

383  {
384  return derive_key(key_len, &in[0], in.size(),
385  reinterpret_cast<const byte*>(params.data()),
386  params.length());
387  }
PK_Key_Agreement& Botan::PK_Key_Agreement::operator= ( const PK_Key_Agreement )
delete

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