8#include <botan/internal/tls_messages.h>
9#include <botan/internal/tls_reader.h>
10#include <botan/pubkey.h>
14#include <botan/loadstor.h>
29 include_length =
true;
44 pre_master[0] = (pref_version >> 8) & 0xFF;
45 pre_master[1] = (pref_version ) & 0xFF;
49 key_material = encryptor.
encrypt(pre_master, rng);
51 if(using_version ==
SSL_V3)
52 include_length =
false;
67 include_length =
true;
70 include_length =
false;
72 deserialize(contents);
97 TLS_Data_Reader reader(buf);
98 key_material = reader.get_range<
byte>(2, 0, 65535);
128 pre_master = rng.
random_vec(dh_priv->public_value().size());
138 pre_master = decryptor.
decrypt(key_material);
140 if(pre_master.size() != 48 ||
141 make_u16bit(pre_master[0], pre_master[1]) != version)
147 pre_master[0] = (version >> 8) & 0xFF;
148 pre_master[1] = (version ) & 0xFF;
TLS_Ciphersuite_Algos kex_type() const
Client_Key_Exchange(RandomNumberGenerator &rng, Record_Writer &output, HandshakeHash &hash, const Public_Key *my_key, Version_Code using_version, Version_Code pref_version)
SecureVector< byte > pre_master_secret() const
MemoryVector< byte > public_value() const
void send(Record_Writer &, HandshakeHash &) const
SecureVector< byte > bits_of() const
SecureVector< byte > decrypt(const byte in[], size_t length) const
SecureVector< byte > encrypt(const byte in[], size_t length, RandomNumberGenerator &rng) const
SymmetricKey derive_key(size_t key_len, const byte in[], size_t in_len, const byte params[], size_t params_len) const
SecureVector< byte > random_vec(size_t bytes)
u16bit make_u16bit(byte i0, byte i1)
std::invalid_argument Invalid_Argument
void append_tls_length_value(MemoryRegion< byte > &buf, const T *vals, size_t vals_size, size_t tag_size)
Decoding_Error(const std::string &name)