8#ifndef BOTAN_BUFFERED_COMPUTATION_H_
9#define BOTAN_BUFFERED_COMPUTATION_H_
11#include <botan/concepts.h>
12#include <botan/secmem.h>
35 void update(
const uint8_t in[],
size_t length) { add_data(in, length); }
41 void update(std::span<const uint8_t> in)
43 add_data(in.data(), in.size());
46 void update_be(uint16_t val);
47 void update_be(uint32_t val);
48 void update_be(uint64_t val);
50 void update_le(uint16_t val);
51 void update_le(uint32_t val);
52 void update_le(uint64_t val);
68 void update(uint8_t in) { add_data(&in, 1); }
76 void final(uint8_t out[]) { final_result(out); }
83 template<concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
86 T output(output_length());
87 final_result(output.data());
93 return final<std::vector<uint8_t>>();
96 void final(std::span<uint8_t> out)
99 final_result(out.data());
102 template<concepts::resizable_
byte_buffer T>
105 out.resize(output_length());
106 final_result(out.data());
116 template<concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
129 template<concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
142 template<concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
156 virtual void add_data(
const uint8_t input[],
size_t length) = 0;
162 virtual void final_result(uint8_t out[]) = 0;
#define BOTAN_ASSERT_NOMSG(expr)
T process(std::string_view in)
void update(const uint8_t in[], size_t length)
T process(std::span< const uint8_t > in)
void update(std::span< const uint8_t > in)
void update(std::string_view str)
virtual size_t output_length() const =0
std::vector< uint8_t > final_stdvec()
virtual ~Buffered_Computation()=default
T process(const uint8_t in[], size_t length)
int(* update)(CTX *, const void *, CC_LONG len)
#define BOTAN_PUBLIC_API(maj, min)
const uint8_t * cast_char_ptr_to_uint8(const char *s)