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/hash.h>
32 virtual size_t max_ptext_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;
67 std::string_view pk_algo,
68 bool allow_null_parameters =
false);
78 virtual bool verify(
const uint8_t msg[],
size_t msg_len,
79 const uint8_t sig[],
size_t sig_len) = 0;
81 std::unique_ptr<HashFunction> m_hash;
87 void update(
const uint8_t msg[],
size_t msg_len)
override;
97#if defined(BOTAN_HAS_RFC6979_GENERATOR)
98 std::string rfc6979_hash_function()
const;
105 std::unique_ptr<HashFunction> m_hash;
112 const uint8_t other_key[],
size_t other_key_len,
113 const uint8_t salt[],
size_t salt_len)
override;
120 std::unique_ptr<KDF> m_kdf;
128 size_t desired_shared_key_len,
130 const uint8_t salt[],
131 size_t salt_len)
override final;
145 std::unique_ptr<KDF> m_kdf;
153 size_t desired_shared_key_len,
154 const uint8_t salt[],
155 size_t salt_len)
override final;
168 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()=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
virtual secure_vector< uint8_t > raw_kem_decrypt(const uint8_t encap_key[], size_t len)=0
size_t shared_key_length(size_t desired_shared_key_len) const override final
~KEM_Decryption_with_KDF()=default
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 final
virtual size_t raw_kem_shared_key_length() const =0
size_t shared_key_length(size_t desired_shared_key_len) const override final
void kem_encrypt(secure_vector< uint8_t > &out_encapsulated_key, secure_vector< uint8_t > &out_shared_key, size_t desired_shared_key_len, RandomNumberGenerator &rng, const uint8_t salt[], size_t salt_len) override final
virtual void raw_kem_encrypt(secure_vector< uint8_t > &out_encapsulated_key, secure_vector< uint8_t > &raw_shared_key, RandomNumberGenerator &rng)=0
virtual size_t raw_kem_shared_key_length() const =0
~KEM_Encryption_with_KDF()=default
~Key_Agreement_with_KDF()=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
std::string hash_function() const override final
~Signature_with_Hash()=default
secure_vector< uint8_t > sign(RandomNumberGenerator &rng) override
virtual bool verify(const uint8_t msg[], size_t msg_len, const uint8_t sig[], size_t sig_len)=0
std::string hash_function() const override final
bool is_valid_signature(const uint8_t sig[], size_t sig_len) override
~Verification_with_Hash()=default
int(* update)(CTX *, const void *, CC_LONG len)
int(* final)(unsigned char *, CTX *)
std::vector< T, secure_allocator< T > > secure_vector