34 void update(
const uint8_t in[],
size_t length) { add_data({in, length}); }
40 void update(std::span<const uint8_t> in) { add_data(in); }
42 void update_be(uint16_t val);
43 void update_be(uint32_t val);
44 void update_be(uint64_t val);
46 void update_le(uint16_t val);
47 void update_le(uint32_t val);
48 void update_le(uint64_t val);
55 void update(std::string_view str);
61 void update(uint8_t in) { add_data({&in, 1}); }
76 template <concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
85 void final(std::span<uint8_t> out);
87 template <concepts::resizable_
byte_buffer T>
100 template <concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
101 T
process(
const uint8_t in[],
size_t length) {
112 template <concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
124 template <concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
137 virtual void add_data(std::span<const uint8_t> input) = 0;
143 virtual void final_result(std::span<uint8_t> out) = 0;