Botan 3.4.0
Crypto and TLS for C&
Public Member Functions | List of all members
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_Point &public_point)
 Set the public key of the other party.
 

Detailed Description

ECIES Encryption according to ISO 18033-2

Definition at line 196 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 221 of file ecies.cpp.

223 :
224 m_ka(private_key, ecies_params, true, rng),
225 m_params(ecies_params),
226 m_eph_public_key_bin(private_key.public_value()), // returns the uncompressed public key, see conversion below
227 m_iv(),
228 m_other_point(),
229 m_label() {
230 if(ecies_params.compression_type() != EC_Point_Format::Uncompressed) {
231 // ISO 18033: step d
232 // convert only if necessary; m_eph_public_key_bin has been initialized with the uncompressed format
233 m_eph_public_key_bin = m_params.domain().OS2ECP(m_eph_public_key_bin).encode(ecies_params.compression_type());
234 }
235 m_mac = m_params.create_mac();
236 m_cipher = m_params.create_cipher(Cipher_Dir::Encryption);
237}
const EC_Group & domain() const
Definition ecies.h:76
std::unique_ptr< Cipher_Mode > create_cipher(Cipher_Dir direction) const
creates an instance of the data encryption method
Definition ecies.cpp:214
std::unique_ptr< MessageAuthenticationCode > create_mac() const
creates an instance of the message authentication code
Definition ecies.cpp:210
EC_Point OS2ECP(const uint8_t bits[], size_t len) const
Definition ec_group.cpp:561
std::vector< uint8_t > encode(EC_Point_Format format) const
Definition ec_point.cpp:568

References Botan::ECIES_KA_Params::compression_type(), Botan::ECIES_System_Params::create_cipher(), Botan::ECIES_System_Params::create_mac(), Botan::ECIES_KA_Params::domain(), Botan::EC_Point::encode(), Botan::Encryption, Botan::EC_Group::OS2ECP(), 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 242 of file ecies.cpp.

242 :
243 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:221

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 218 of file ecies.h.

218{ 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 221 of file ecies.h.

221{ m_label = std::vector<uint8_t>(label.begin(), label.end()); }

◆ set_other_key()

void Botan::ECIES_Encryptor::set_other_key ( const EC_Point & public_point)
inline

Set the public key of the other party.

Definition at line 215 of file ecies.h.

215{ m_other_point = public_point; }

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