Botan 3.0.0
Crypto and TLS for C&
Public Member Functions | List of all members
Botan::PK_KEM_Decryptor Class Referencefinal

#include <pubkey.h>

Public Member Functions

secure_vector< uint8_t > decrypt (const uint8_t encap_key[], size_t encap_key_len, size_t desired_shared_key_len)
 
secure_vector< uint8_t > decrypt (const uint8_t encap_key[], size_t encap_key_len, size_t desired_shared_key_len, const uint8_t salt[], size_t salt_len)
 
secure_vector< uint8_t > decrypt (std::span< const uint8_t > encap_key, size_t desired_shared_key_len, std::span< const uint8_t > salt)
 
PK_KEM_Decryptoroperator= (const PK_KEM_Decryptor &)=delete
 
PK_KEM_Decryptoroperator= (PK_KEM_Decryptor &&)=delete
 
 PK_KEM_Decryptor (const PK_KEM_Decryptor &)=delete
 
 PK_KEM_Decryptor (const Private_Key &key, RandomNumberGenerator &rng, std::string_view kem_param="", std::string_view provider="")
 
 PK_KEM_Decryptor (PK_KEM_Decryptor &&)=delete
 
size_t shared_key_length (size_t desired_shared_key_len) const
 
 ~PK_KEM_Decryptor ()
 

Detailed Description

Public Key Key Encapsulation Mechanism Decryption.

Definition at line 727 of file pubkey.h.

Constructor & Destructor Documentation

◆ PK_KEM_Decryptor() [1/3]

Botan::PK_KEM_Decryptor::PK_KEM_Decryptor ( const Private_Key key,
RandomNumberGenerator rng,
std::string_view  kem_param = "",
std::string_view  provider = "" 
)

Construct an instance.

Parameters
keythe key to use inside the decryptor
rngthe RNG to use
kem_paramadditional KEM parameters
providerthe provider to use

Definition at line 188 of file pubkey.cpp.

192 {
193 m_op = key.create_kem_decryption_op(rng, param, provider);
194 if(!m_op)
195 {
196 throw Invalid_Argument(fmt("Key type {} does not support KEM decryption", key.algo_name()));
197 }
198 }
std::string fmt(std::string_view format, const T &... args)
Definition: fmt.h:60

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

◆ ~PK_KEM_Decryptor()

Botan::PK_KEM_Decryptor::~PK_KEM_Decryptor ( )
default

◆ PK_KEM_Decryptor() [2/3]

Botan::PK_KEM_Decryptor::PK_KEM_Decryptor ( const PK_KEM_Decryptor )
delete

◆ PK_KEM_Decryptor() [3/3]

Botan::PK_KEM_Decryptor::PK_KEM_Decryptor ( PK_KEM_Decryptor &&  )
delete

Member Function Documentation

◆ decrypt() [1/3]

secure_vector< uint8_t > Botan::PK_KEM_Decryptor::decrypt ( const uint8_t  encap_key[],
size_t  encap_key_len,
size_t  desired_shared_key_len 
)
inline

Decrypts the shared key for data encryption.

Parameters
encap_keythe encapsulated key
encap_key_lensize of the encapsulated key in bytes
desired_shared_key_lendesired size of the shared key in bytes
Returns
the shared data encryption key

Definition at line 786 of file pubkey.h.

789 {
790 return this->decrypt(encap_key, encap_key_len,
791 desired_shared_key_len,
792 nullptr, 0);
793 }
secure_vector< uint8_t > decrypt(const uint8_t encap_key[], size_t encap_key_len, size_t desired_shared_key_len, const uint8_t salt[], size_t salt_len)
Definition: pubkey.cpp:202

◆ decrypt() [2/3]

secure_vector< uint8_t > Botan::PK_KEM_Decryptor::decrypt ( const uint8_t  encap_key[],
size_t  encap_key_len,
size_t  desired_shared_key_len,
const uint8_t  salt[],
size_t  salt_len 
)

Decrypts the shared key for data encryption.

Parameters
encap_keythe encapsulated key
encap_key_lensize of the encapsulated key in bytes
desired_shared_key_lendesired size of the shared key in bytes
salta salt value used in the KDF
salt_lensize of the salt value in bytes
Returns
the shared data encryption key

Definition at line 202 of file pubkey.cpp.

207 {
208 return m_op->kem_decrypt(encap_key, encap_key_len,
209 desired_shared_key_len,
210 salt, salt_len);
211 }

◆ decrypt() [3/3]

secure_vector< uint8_t > Botan::PK_KEM_Decryptor::decrypt ( std::span< const uint8_t >  encap_key,
size_t  desired_shared_key_len,
std::span< const uint8_t >  salt 
)
inline

Decrypts the shared key for data encryption.

Parameters
encap_keythe encapsulated key
desired_shared_key_lendesired size of the shared key in bytes
salta salt value used in the KDF
Returns
the shared data encryption key

Definition at line 802 of file pubkey.h.

805 {
806 return this->decrypt(encap_key.data(), encap_key.size(),
807 desired_shared_key_len,
808 salt.data(), salt.size());
809 }

◆ operator=() [1/2]

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

◆ operator=() [2/2]

PK_KEM_Decryptor & Botan::PK_KEM_Decryptor::operator= ( PK_KEM_Decryptor &&  )
delete

◆ shared_key_length()

size_t Botan::PK_KEM_Decryptor::shared_key_length ( size_t  desired_shared_key_len) const

Return the length of the shared key returned by this KEM

If this KEM was used with a KDF, then it will always return exactly the desired key length, because the output of the KEM will be hashed by the KDF.

However if the KEM was used with "Raw" kdf, to request the algorithmic output of the KEM directly, then the desired key length will be ignored and a bytestring that depends on the algorithm is returned

Parameters
desired_shared_key_lenis the requested length.

Definition at line 183 of file pubkey.cpp.

184 {
185 return m_op->shared_key_length(desired_shared_key_len);
186 }

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