204 {
205 if(salt_len > 0 && m_kdf == nullptr)
206 throw Invalid_Argument("PK_KEM_Encryptor::encrypt requires a KDF to use a salt");
207
208 secure_vector<uint8_t> raw_shared;
210
212 "KEM produced encapsulated key with different length than expected");
213
215 "KEM produced shared key with different length than expected");
216
217 out_shared_key = (m_kdf)
218 ? m_kdf->derive_key(desired_shared_key_len,
219 raw_shared.data(), raw_shared.size(),
220 salt, salt_len)
221 : raw_shared;
222 }
#define BOTAN_ASSERT_EQUAL(expr1, expr2, assertion_made)
virtual void raw_kem_encrypt(secure_vector< uint8_t > &out_encapsulated_key, secure_vector< uint8_t > &raw_shared_key, RandomNumberGenerator &rng)=0