9#ifndef BOTAN_XOF_BASE_CLASS_H_
10#define BOTAN_XOF_BASE_CLASS_H_
12#include <botan/concepts.h>
13#include <botan/secmem.h>
14#include <botan/sym_algo.h>
38 static std::unique_ptr<XOF>
create(std::string_view algo_spec, std::string_view
provider =
"");
53 static std::vector<std::string>
providers(std::string_view algo_spec);
59 virtual std::string
provider()
const;
65 m_xof_started =
false;
72 virtual std::string
name()
const = 0;
84 void start(std::span<const uint8_t> salt = {}, std::span<const uint8_t> key = {});
140 void update(std::span<const uint8_t> input) {
152 template <concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
162 template <
size_t count>
164 std::array<uint8_t, count> out;
188 generate_bytes({&out, 1});
200 virtual void start_msg(std::span<const uint8_t> salt, std::span<const uint8_t> key);
213 virtual void add_data(std::span<const uint8_t> input) = 0;
225 virtual void generate_bytes(std::span<uint8_t> output) = 0;
230 virtual void reset() = 0;
233 bool m_xof_started =
false;
#define BOTAN_PUBLIC_API(maj, min)
virtual std::unique_ptr< XOF > new_object() const =0
static std::unique_ptr< XOF > create_or_throw(std::string_view algo_spec, std::string_view provider="")
void output(std::span< uint8_t > output)
virtual std::string provider() const
std::array< uint8_t, count > output()
uint8_t output_next_byte()
virtual bool valid_salt_length(size_t salt_len) const
std::vector< uint8_t > output_stdvec(size_t bytes)
virtual Key_Length_Specification key_spec() const
static std::unique_ptr< XOF > create(std::string_view algo_spec, std::string_view provider="")
virtual size_t block_size() const =0
virtual std::string name() const =0
void start(std::span< const uint8_t > salt={}, std::span< const uint8_t > key={})
virtual std::unique_ptr< XOF > copy_state() const =0
void update(std::span< const uint8_t > input)
static std::vector< std::string > providers(std::string_view algo_spec)
virtual bool accepts_input() const =0