8#ifndef BOTAN_PK_OPERATION_IMPL_H_
9#define BOTAN_PK_OPERATION_IMPL_H_
11#include <botan/pk_ops.h>
37 virtual size_t max_ptext_input_bits()
const = 0;
39 virtual std::vector<uint8_t> raw_encrypt(std::span<const uint8_t> msg,
RandomNumberGenerator& rng) = 0;
40 std::unique_ptr<EME> m_eme;
54 std::unique_ptr<EME> m_eme;
61 void update(std::span<const uint8_t> input)
override;
70 std::string_view pk_algo,
71 bool allow_null_parameters = false);
79 virtual
bool verify(std::span<const uint8_t> msg, std::span<const uint8_t> sig) = 0;
87 void update(std::span<const uint8_t> input)
override;
98#if defined(BOTAN_HAS_RFC6979_GENERATOR)
99 std::string rfc6979_hash_function()
const;
103 virtual std::vector<uint8_t> raw_sign(std::span<const uint8_t> input,
RandomNumberGenerator& rng) = 0;
105 std::unique_ptr<HashFunction> m_hash;
111 std::span<const uint8_t> other_key,
112 std::span<const uint8_t> salt)
override;
121 std::unique_ptr<KDF> m_kdf;
126 void kem_encrypt(std::span<uint8_t> out_encapsulated_key,
127 std::span<uint8_t> out_shared_key,
129 size_t desired_shared_key_len,
130 std::span<const uint8_t> salt)
final;
138 std::span<uint8_t> out_raw_shared_key,
146 std::unique_ptr<KDF> m_kdf;
151 void kem_decrypt(std::span<uint8_t> out_shared_key,
152 std::span<const uint8_t> encapsulated_key,
153 size_t desired_shared_key_len,
154 std::span<const uint8_t> salt)
final;
162 std::span<const uint8_t> encapsulated_key) = 0;
169 std::unique_ptr<KDF> m_kdf;
Decryption_with_EME(std::string_view eme)
~Decryption_with_EME() override
secure_vector< uint8_t > decrypt(uint8_t &valid_mask, std::span< const uint8_t > ctext) override
std::vector< uint8_t > encrypt(std::span< const uint8_t > ptext, RandomNumberGenerator &rng) override
size_t max_input_bits() const override
~Encryption_with_EME() override
Encryption_with_EME(std::string_view eme)
~KEM_Decryption_with_KDF() override
void kem_decrypt(std::span< uint8_t > out_shared_key, std::span< const uint8_t > encapsulated_key, size_t desired_shared_key_len, std::span< const uint8_t > salt) final
KEM_Decryption_with_KDF(std::string_view kdf)
virtual void raw_kem_decrypt(std::span< uint8_t > out_raw_shared_key, std::span< const uint8_t > encapsulated_key)=0
size_t shared_key_length(size_t desired_shared_key_len) const final
virtual size_t raw_kem_shared_key_length() const =0
void kem_encrypt(std::span< uint8_t > out_encapsulated_key, std::span< uint8_t > out_shared_key, RandomNumberGenerator &rng, size_t desired_shared_key_len, std::span< const uint8_t > salt) final
~KEM_Encryption_with_KDF() override
virtual size_t raw_kem_shared_key_length() const =0
size_t shared_key_length(size_t desired_shared_key_len) const final
virtual void raw_kem_encrypt(std::span< uint8_t > out_encapsulated_key, std::span< uint8_t > out_raw_shared_key, RandomNumberGenerator &rng)=0
KEM_Encryption_with_KDF(std::string_view kdf)
Key_Agreement_with_KDF(std::string_view kdf)
~Key_Agreement_with_KDF() override
secure_vector< uint8_t > agree(size_t key_len, std::span< const uint8_t > other_key, std::span< const uint8_t > salt) override
std::vector< uint8_t > sign(RandomNumberGenerator &rng) override
~Signature_with_Hash() override
Signature_with_Hash(std::string_view hash)
std::string hash_function() const final
void update(std::span< const uint8_t > input) override
~Verification_with_Hash() override
virtual bool verify(std::span< const uint8_t > msg, std::span< const uint8_t > sig)=0
Verification_with_Hash(std::string_view hash)
bool is_valid_signature(std::span< const uint8_t > sig) override
std::vector< T, secure_allocator< T > > secure_vector