Botan 3.7.1
Crypto and TLS for C&
Botan::ECIES_Encryptor Class Referencefinal

#include <ecies.h>

Inheritance diagram for Botan::ECIES_Encryptor:
Botan::PK_Encryptor

Public Member Functions

 ECIES_Encryptor (const PK_Key_Agreement_Key &private_key, const ECIES_System_Params &ecies_params, RandomNumberGenerator &rng)
 
 ECIES_Encryptor (RandomNumberGenerator &rng, const ECIES_System_Params &ecies_params)
 
std::vector< uint8_t > encrypt (const uint8_t in[], size_t length, RandomNumberGenerator &rng) const
 
std::vector< uint8_t > encrypt (std::span< const uint8_t > in, RandomNumberGenerator &rng) const
 
void set_initialization_vector (const InitializationVector &iv)
 Set the initialization vector for the data encryption method.
 
void set_label (std::string_view label)
 Set the label which is appended to the input for the message authentication code.
 
void set_other_key (const EC_AffinePoint &pt)
 Set the public key of the other party.
 

Detailed Description

ECIES Encryption according to ISO 18033-2

Definition at line 215 of file ecies.h.

Constructor & Destructor Documentation

◆ ECIES_Encryptor() [1/2]

Botan::ECIES_Encryptor::ECIES_Encryptor ( const PK_Key_Agreement_Key & private_key,
const ECIES_System_Params & ecies_params,
RandomNumberGenerator & rng )
Parameters
private_keythe (ephemeral) private key which is used for the key agreement
ecies_paramssettings for ecies
rngrandom generator to use

Definition at line 260 of file ecies.cpp.

262 :
263 m_ka(private_key, ecies_params, true, rng),
264 m_params(ecies_params),
265 m_eph_public_key_bin(private_key.public_value()), // returns the uncompressed public key, see conversion below
266 m_iv(),
267 m_other_point(),
268 m_label() {
269 if(ecies_params.compression_type() != EC_Point_Format::Uncompressed) {
270 // ISO 18033: step d
271 // convert only if necessary; m_eph_public_key_bin has been initialized with the uncompressed format
272 m_eph_public_key_bin =
273 EC_AffinePoint(m_params.domain(), m_eph_public_key_bin).serialize(ecies_params.compression_type());
274 }
275 m_mac = m_params.create_mac();
276 m_cipher = m_params.create_cipher(Cipher_Dir::Encryption);
277}
const EC_Group & domain() const
Definition ecies.h:82
std::unique_ptr< Cipher_Mode > create_cipher(Cipher_Dir direction) const
creates an instance of the data encryption method
Definition ecies.cpp:253
std::unique_ptr< MessageAuthenticationCode > create_mac() const
creates an instance of the message authentication code
Definition ecies.cpp:249

References Botan::ECIES_KA_Params::compression_type(), Botan::ECIES_System_Params::create_cipher(), Botan::ECIES_System_Params::create_mac(), Botan::Encryption, and Botan::Uncompressed.

◆ ECIES_Encryptor() [2/2]

Botan::ECIES_Encryptor::ECIES_Encryptor ( RandomNumberGenerator & rng,
const ECIES_System_Params & ecies_params )

Creates an ephemeral private key which is used for the key agreement

Parameters
rngrandom generator used during private key generation
ecies_paramssettings for ecies

Definition at line 282 of file ecies.cpp.

282 :
283 ECIES_Encryptor(ECDH_PrivateKey(rng, ecies_params.domain()), ecies_params, rng) {}
ECIES_Encryptor(const PK_Key_Agreement_Key &private_key, const ECIES_System_Params &ecies_params, RandomNumberGenerator &rng)
Definition ecies.cpp:260

Member Function Documentation

◆ encrypt() [1/2]

std::vector< uint8_t > Botan::PK_Encryptor::encrypt ( const uint8_t in[],
size_t length,
RandomNumberGenerator & rng ) const
inlineinherited

Encrypt a message.

Parameters
inthe message as a byte array
lengththe length of the above byte array
rngthe random number source to use
Returns
encrypted message

Definition at line 37 of file pubkey.h.

37 {
38 return enc(in, length, rng);
39 }

Referenced by Botan::TLS::Client_Key_Exchange::Client_Key_Exchange(), and Botan::KeyPair::encryption_consistency_check().

◆ encrypt() [2/2]

std::vector< uint8_t > Botan::PK_Encryptor::encrypt ( std::span< const uint8_t > in,
RandomNumberGenerator & rng ) const
inlineinherited

Encrypt a message.

Parameters
inthe message
rngthe random number source to use
Returns
encrypted message

Definition at line 47 of file pubkey.h.

47 {
48 return enc(in.data(), in.size(), rng);
49 }

◆ set_initialization_vector()

void Botan::ECIES_Encryptor::set_initialization_vector ( const InitializationVector & iv)
inline

Set the initialization vector for the data encryption method.

Definition at line 244 of file ecies.h.

244{ m_iv = iv; }

◆ set_label()

void Botan::ECIES_Encryptor::set_label ( std::string_view label)
inline

Set the label which is appended to the input for the message authentication code.

Definition at line 247 of file ecies.h.

247{ m_label.assign(label.begin(), label.end()); }

◆ set_other_key()

void Botan::ECIES_Encryptor::set_other_key ( const EC_AffinePoint & pt)
inline

Set the public key of the other party.

Definition at line 241 of file ecies.h.

241{ m_other_point = pt; }

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