8#ifndef BOTAN_PK_OPERATION_IMPL_H_
9#define BOTAN_PK_OPERATION_IMPL_H_
11#include <botan/internal/pk_ops.h>
12#include <botan/internal/eme.h>
14#include <botan/internal/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;
50 std::unique_ptr<EME> m_eme;
58 void update(
const uint8_t msg[],
size_t msg_len)
override;
98 virtual bool verify(
const uint8_t[],
size_t,
99 const uint8_t[],
size_t)
116 std::unique_ptr<EMSA>
clone_emsa()
const {
return m_emsa->new_object(); }
119 std::unique_ptr<EMSA> m_emsa;
120 const std::string m_hash;
127 void update(
const uint8_t msg[],
size_t msg_len)
override;
149 std::unique_ptr<EMSA>
clone_emsa()
const {
return m_emsa->new_object(); }
157 virtual size_t max_input_bits()
const = 0;
162 std::unique_ptr<EMSA> m_emsa;
163 const std::string m_hash;
171 const uint8_t other_key[],
size_t other_key_len,
172 const uint8_t salt[],
size_t salt_len)
override;
179 std::unique_ptr<KDF> m_kdf;
187 size_t desired_shared_key_len,
189 const uint8_t salt[],
200 std::unique_ptr<KDF> m_kdf;
208 size_t desired_shared_key_len,
209 const uint8_t salt[],
219 std::unique_ptr<KDF> m_kdf;
secure_vector< uint8_t > decrypt(uint8_t &valid_mask, const uint8_t msg[], size_t msg_len) override
Decryption_with_EME(const std::string &eme)
~Decryption_with_EME()=default
~Encryption_with_EME()=default
size_t max_input_bits() const override
secure_vector< uint8_t > encrypt(const uint8_t msg[], size_t msg_len, RandomNumberGenerator &rng) override
Encryption_with_EME(const std::string &eme)
virtual secure_vector< uint8_t > raw_kem_decrypt(const uint8_t encap_key[], size_t len)=0
~KEM_Decryption_with_KDF()=default
KEM_Decryption_with_KDF(const std::string &kdf)
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
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
KEM_Encryption_with_KDF(const std::string &kdf)
virtual void raw_kem_encrypt(secure_vector< uint8_t > &out_encapsulated_key, secure_vector< uint8_t > &raw_shared_key, Botan::RandomNumberGenerator &rng)=0
~KEM_Encryption_with_KDF()=default
~Key_Agreement_with_KDF()=default
Key_Agreement_with_KDF(const std::string &kdf)
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
std::string hash_for_signature()
virtual secure_vector< uint8_t > message_prefix() const
virtual bool has_prefix()
void update(const uint8_t msg[], size_t msg_len) override
Signature_with_EMSA(const std::string &emsa, bool with_message_recovery=false)
secure_vector< uint8_t > sign(RandomNumberGenerator &rng) override
~Signature_with_EMSA()=default
std::unique_ptr< EMSA > clone_emsa() const
void update(const uint8_t msg[], size_t msg_len) override
virtual secure_vector< uint8_t > message_prefix() const
std::string hash_for_signature()
~Verification_with_EMSA()=default
std::unique_ptr< EMSA > clone_emsa() const
virtual bool with_recovery() const =0
bool is_valid_signature(const uint8_t sig[], size_t sig_len) override
virtual bool has_prefix()
Verification_with_EMSA(const std::string &emsa, bool has_message_recovery=false)
virtual size_t max_input_bits() const =0
virtual secure_vector< uint8_t > verify_mr(const uint8_t[], size_t)
virtual bool verify(const uint8_t[], size_t, const uint8_t[], size_t)
std::vector< T, secure_allocator< T > > secure_vector