8#ifndef BOTAN_PK_OPERATION_IMPL_H_
9#define BOTAN_PK_OPERATION_IMPL_H_
11#include <botan/pk_ops.h>
35 virtual size_t max_ptext_input_bits()
const = 0;
37 virtual std::vector<uint8_t> raw_encrypt(std::span<const uint8_t> msg,
RandomNumberGenerator& rng) = 0;
38 std::unique_ptr<EME> m_eme;
52 std::unique_ptr<EME> m_eme;
59 void update(std::span<const uint8_t> input)
override;
68 std::string_view pk_algo,
69 bool allow_null_parameters = false);
77 virtual
bool verify(std::span<const uint8_t> msg, std::span<const uint8_t> sig) = 0;
85 void update(std::span<const uint8_t> input)
override;
96#if defined(BOTAN_HAS_RFC6979_GENERATOR)
97 std::string rfc6979_hash_function()
const;
101 virtual std::vector<uint8_t> raw_sign(std::span<const uint8_t> input,
RandomNumberGenerator& rng) = 0;
103 std::unique_ptr<HashFunction> m_hash;
109 std::span<const uint8_t> other_key,
110 std::span<const uint8_t> salt)
override;
119 std::unique_ptr<KDF> m_kdf;
124 void kem_encrypt(std::span<uint8_t> out_encapsulated_key,
125 std::span<uint8_t> out_shared_key,
127 size_t desired_shared_key_len,
128 std::span<const uint8_t> salt)
final;
130 size_t shared_key_length(
size_t desired_shared_key_len)
const final;
136 std::span<uint8_t> out_raw_shared_key,
144 std::unique_ptr<KDF> m_kdf;
149 void kem_decrypt(std::span<uint8_t> out_shared_key,
150 std::span<const uint8_t> encapsulated_key,
151 size_t desired_shared_key_len,
152 std::span<const uint8_t> salt)
final;
154 size_t shared_key_length(
size_t desired_shared_key_len)
const final;
160 std::span<const uint8_t> encapsulated_key) = 0;
167 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
virtual void raw_kem_decrypt(std::span< uint8_t > out_raw_shared_key, std::span< const uint8_t > encapsulated_key)=0
virtual size_t raw_kem_shared_key_length() const =0
~KEM_Encryption_with_KDF() override
virtual size_t raw_kem_shared_key_length() const =0
virtual void raw_kem_encrypt(std::span< uint8_t > out_encapsulated_key, std::span< uint8_t > out_raw_shared_key, RandomNumberGenerator &rng)=0
~Key_Agreement_with_KDF() override
~Signature_with_Hash() override
std::string hash_function() const final
~Verification_with_Hash() override
virtual bool verify(std::span< const uint8_t > msg, std::span< const uint8_t > sig)=0
bool is_valid_signature(std::span< const uint8_t > sig) override
int(* update)(CTX *, const void *, CC_LONG len)
int(* final)(unsigned char *, CTX *)
std::vector< T, secure_allocator< T > > secure_vector