35 void update(
const uint8_t in[],
size_t length) { add_data({in, length}); }
41 void update(std::span<const uint8_t> in) { add_data(in); }
47 void update_be(uint16_t val);
53 void update_be(uint32_t val);
59 void update_be(uint64_t val);
65 void update_le(uint16_t val);
71 void update_le(uint32_t val);
77 void update_le(uint64_t val);
84 void update(std::string_view str);
90 void update(uint8_t in) { add_data({&in, 1}); }
103 template <concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
106 final_result(output);
120 void final(std::span<uint8_t> out);
126 template <concepts::resizable_
byte_buffer T>
139 template <concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
140 T
process(
const uint8_t in[],
size_t length) {
151 template <concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
163 template <concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
176 virtual void add_data(std::span<const uint8_t> input) = 0;
182 virtual void final_result(std::span<uint8_t> out) = 0;