8 #ifndef BOTAN_BUFFERED_COMPUTATION_H__
9 #define BOTAN_BUFFERED_COMPUTATION_H__
11 #include <botan/secmem.h>
12 #include <botan/loadstor.h>
27 virtual size_t output_length()
const = 0;
34 void update(
const uint8_t in[],
size_t length) { add_data(in, length); }
42 add_data(in.data(), in.size());
49 void update(
const std::vector<uint8_t>& in)
51 add_data(in.data(), in.size());
60 for(
size_t i = 0; i !=
sizeof(T); ++i)
74 add_data(reinterpret_cast<const uint8_t*>(str.data()), str.size());
81 void update(uint8_t in) { add_data(&in, 1); }
89 void final(uint8_t out[]) { final_result(out); }
99 final_result(output.data());
105 std::vector<uint8_t> output(output_length());
106 final_result(output.data());
110 template<
typename Alloc>
111 void final(std::vector<uint8_t, Alloc>& out)
113 out.resize(output_length());
114 final_result(out.data());
126 add_data(in, length);
138 add_data(in.data(), in.size());
150 add_data(in.data(), in.size());
173 virtual void add_data(
const uint8_t input[],
size_t length) = 0;
179 virtual void final_result(uint8_t out[]) = 0;
void update(const std::vector< uint8_t > &in)
secure_vector< uint8_t > process(const std::string &in)
secure_vector< uint8_t > process(const std::vector< uint8_t > &in)
void update(const std::string &str)
std::vector< T, secure_allocator< T >> secure_vector
secure_vector< uint8_t > process(const secure_vector< uint8_t > &in)
secure_vector< uint8_t > process(const uint8_t in[], size_t length)
std::vector< uint8_t > final_stdvec()
void update(const secure_vector< uint8_t > &in)
virtual ~Buffered_Computation()
void update(const uint8_t in[], size_t length)
uint8_t get_byte(size_t byte_num, T input)
void update_be(const T in)