8#ifndef BOTAN_HASH_FUNCTION_BASE_CLASS_H_
9#define BOTAN_HASH_FUNCTION_BASE_CLASS_H_
11#include <botan/buf_comp.h>
28 static std::unique_ptr<HashFunction>
create(std::string_view algo_spec, std::string_view
provider =
"");
37 static std::unique_ptr<HashFunction>
create_or_throw(std::string_view algo_spec, std::string_view
provider =
"");
43 static std::vector<std::string>
providers(std::string_view algo_spec);
49 virtual std::string
provider()
const {
return "base"; }
61 virtual std::string
name()
const = 0;
77 virtual std::unique_ptr<HashFunction>
copy_state()
const = 0;
82 virtual std::unique_ptr<HashFunction>
new_object()
const = 0;
#define BOTAN_PUBLIC_API(maj, min)
static std::vector< std::string > providers(std::string_view algo_spec)
virtual std::string provider() const
static std::unique_ptr< HashFunction > create_or_throw(std::string_view algo_spec, std::string_view provider="")
HashFunction * clone() const
static std::unique_ptr< HashFunction > create(std::string_view algo_spec, std::string_view provider="")
virtual size_t hash_block_size() const
virtual std::unique_ptr< HashFunction > copy_state() const =0
virtual std::unique_ptr< HashFunction > new_object() const =0
virtual std::string name() const =0
~HashFunction() override=default