7#include <botan/internal/raw_hash.h>
9#include <botan/exceptn.h>
10#include <botan/mem_ops.h>
15 m_bits += std::make_pair(input.data(), input.size());
19 if(m_output_length > 0 && m_bits.size() != m_output_length) {
21 throw Invalid_Argument(
"Raw padding was configured to use a " + std::to_string(m_output_length) +
22 " byte hash but instead was used for a " + std::to_string(m_bits.size()) +
" byte hash");
25 copy_mem(out.data(), m_bits.data(), m_bits.size());
34 return std::make_unique<RawHashFunction>(*
this);
38 return std::make_unique<RawHashFunction>(m_name, m_output_length);
42 if(m_output_length > 0) {
43 return m_output_length;
Invalid_Argument(std::string_view msg)
void final_result(std::span< uint8_t > out) override
std::unique_ptr< HashFunction > copy_state() const override
void add_data(std::span< const uint8_t > input) override
std::unique_ptr< HashFunction > new_object() const override
size_t output_length() const override
constexpr void copy_mem(T *out, const T *in, size_t n)