8 #ifndef BOTAN_PK_OPERATION_IMPL_H__
9 #define BOTAN_PK_OPERATION_IMPL_H__
11 #include <botan/pk_ops.h>
12 #include <botan/eme.h>
13 #include <botan/kdf.h>
14 #include <botan/emsa.h>
32 virtual size_t max_raw_input_bits()
const = 0;
36 std::unique_ptr<EME> m_eme;
43 const uint8_t msg[],
size_t msg_len)
override;
49 virtual size_t max_raw_input_bits()
const = 0;
51 std::unique_ptr<EME> m_eme;
59 void update(
const uint8_t msg[],
size_t msg_len)
override;
63 const uint8_t sig[],
size_t sig_len);
102 virtual bool verify(
const uint8_t[],
size_t,
103 const uint8_t[],
size_t)
123 const std::string m_hash;
130 void update(
const uint8_t msg[],
size_t msg_len)
override;
158 virtual size_t max_input_bits()
const = 0;
160 bool self_test_signature(
const std::vector<uint8_t>& msg,
161 const std::vector<uint8_t>& sig)
const;
166 const std::string m_hash;
174 const uint8_t other_key[],
size_t other_key_len,
175 const uint8_t salt[],
size_t salt_len)
override;
182 std::unique_ptr<KDF> m_kdf;
190 size_t desired_shared_key_len,
192 const uint8_t salt[],
193 size_t salt_len)
override;
203 std::unique_ptr<KDF> m_kdf;
211 size_t desired_shared_key_len,
212 const uint8_t salt[],
213 size_t salt_len)
override;
222 std::unique_ptr<KDF> m_kdf;
secure_vector< uint8_t > encrypt(const uint8_t msg[], size_t msg_len, RandomNumberGenerator &rng) override
void update(const uint8_t msg[], size_t msg_len) override
~Signature_with_EMSA()=default
virtual void raw_kem_encrypt(secure_vector< uint8_t > &out_encapsulated_key, secure_vector< uint8_t > &raw_shared_key, Botan::RandomNumberGenerator &rng)=0
secure_vector< uint8_t > kem_decrypt(const uint8_t encap_key[], size_t len, size_t desired_shared_key_len, const uint8_t salt[], size_t salt_len) override
Key_Agreement_with_KDF(const std::string &kdf)
~KEM_Decryption_with_KDF()=default
Encryption_with_EME(const std::string &eme)
KEM_Decryption_with_KDF(const std::string &kdf)
bool do_check(const secure_vector< uint8_t > &msg, const uint8_t sig[], size_t sig_len)
virtual bool has_prefix()
virtual bool verify(const uint8_t[], size_t, const uint8_t[], size_t)
virtual secure_vector< uint8_t > message_prefix() const
Decryption_with_EME(const std::string &eme)
Signature_with_EMSA(const std::string &emsa)
KEM_Encryption_with_KDF(const std::string &kdf)
~KEM_Encryption_with_KDF()=default
~Key_Agreement_with_KDF()=default
std::unique_ptr< EMSA > m_emsa
virtual bool has_prefix()
std::vector< T, secure_allocator< T >> secure_vector
void kem_encrypt(secure_vector< uint8_t > &out_encapsulated_key, secure_vector< uint8_t > &out_shared_key, size_t desired_shared_key_len, Botan::RandomNumberGenerator &rng, const uint8_t salt[], size_t salt_len) override
virtual secure_vector< uint8_t > raw_kem_decrypt(const uint8_t encap_key[], size_t len)=0
virtual size_t max_input_bits() const =0
secure_vector< uint8_t > sign(RandomNumberGenerator &rng) override
~Verification_with_EMSA()=default
size_t max_input_bits() const override
Verification_with_EMSA(const std::string &emsa)
std::string hash_for_signature()
virtual secure_vector< uint8_t > message_prefix() const
void update(const uint8_t msg[], size_t msg_len) override
virtual bool with_recovery() const =0
bool is_valid_signature(const uint8_t sig[], size_t sig_len) override
std::unique_ptr< EMSA > m_emsa
std::string hash_for_signature()
virtual secure_vector< uint8_t > verify_mr(const uint8_t[], size_t)
~Encryption_with_EME()=default
secure_vector< uint8_t > decrypt(uint8_t &valid_mask, const uint8_t msg[], size_t msg_len) override
~Decryption_with_EME()=default
secure_vector< uint8_t > agree(size_t key_len, const uint8_t other_key[], size_t other_key_len, const uint8_t salt[], size_t salt_len) override