8#ifndef BOTAN_BUFFERED_COMPUTATION_H_
9#define BOTAN_BUFFERED_COMPUTATION_H_
11#include <botan/secmem.h>
33 void update(
const uint8_t in[],
size_t length) { add_data(in, length); }
41 add_data(in.data(), in.size());
48 void update(
const std::vector<uint8_t>& in)
50 add_data(in.data(), in.size());
53 void update_be(uint16_t val);
54 void update_be(uint32_t val);
55 void update_be(uint64_t val);
57 void update_le(uint16_t val);
58 void update_le(uint32_t val);
59 void update_le(uint64_t val);
75 void update(uint8_t in) { add_data(&in, 1); }
83 void final(uint8_t out[]) { final_result(out); }
93 final_result(output.data());
99 std::vector<uint8_t> output(output_length());
100 final_result(output.data());
104 template<
typename Alloc>
105 void final(std::vector<uint8_t, Alloc>& out)
107 out.resize(output_length());
108 final_result(out.data());
120 add_data(in, length);
132 add_data(in.data(), in.size());
144 add_data(in.data(), in.size());
167 virtual void add_data(
const uint8_t input[],
size_t length) = 0;
173 virtual void final_result(uint8_t out[]) = 0;
void update(const std::string &str)
secure_vector< uint8_t > process(const std::string &in)
secure_vector< uint8_t > process(const std::vector< uint8_t > &in)
void update(const uint8_t in[], size_t length)
void update(const std::vector< uint8_t > &in)
secure_vector< uint8_t > process(const uint8_t in[], size_t length)
virtual size_t output_length() const =0
secure_vector< uint8_t > process(const secure_vector< uint8_t > &in)
std::vector< uint8_t > final_stdvec()
void update(const secure_vector< uint8_t > &in)
virtual ~Buffered_Computation()=default
int(* update)(CTX *, const void *, CC_LONG len)
#define BOTAN_PUBLIC_API(maj, min)
std::vector< T, secure_allocator< T > > secure_vector
const uint8_t * cast_char_ptr_to_uint8(const char *s)