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>
29 create(
const std::string& algo_spec,
30 const std::string& provider =
"");
39 static std::unique_ptr<HashFunction>
40 create_or_throw(
const std::string& algo_spec,
41 const std::string& provider =
"");
47 static std::vector<std::string> providers(
const std::string& algo_spec);
53 virtual std::string
provider()
const {
return "base"; }
65 virtual std::string
name()
const = 0;
81 virtual std::unique_ptr<HashFunction>
copy_state()
const = 0;
86 virtual std::unique_ptr<HashFunction>
new_object()
const = 0;
93 return this->new_object().release();
virtual std::string provider() const
HashFunction * clone() const
virtual ~HashFunction()=default
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
#define BOTAN_PUBLIC_API(maj, min)