10#include <botan/internal/cshake_xof.h>
12#include <botan/exceptn.h>
13#include <botan/mem_ops.h>
14#include <botan/internal/keccak_helpers.h>
15#include <botan/internal/loadstor.h>
16#include <botan/internal/mem_utils.h>
21 m_keccak(capacity, 0b00, 2), m_function_name(std::move(
function_name)), m_output_generated(false) {
31void cSHAKE_XOF::reset() {
33 m_output_generated =
false;
37 return m_keccak.provider();
41 return m_keccak.byte_rate();
51 return m_function_name.size() + salt_length > 0;
54void cSHAKE_XOF::start_msg(std::span<const uint8_t> salt, std::span<const uint8_t> key) {
60void cSHAKE_XOF::add_data(std::span<const uint8_t> input) {
65void cSHAKE_XOF::generate_bytes(std::span<uint8_t> output) {
66 if(!m_output_generated) {
67 m_output_generated =
true;
#define BOTAN_ASSERT_NOMSG(expr)
#define BOTAN_STATE_CHECK(expr)
void absorb(std::span< const uint8_t > input)
Absorb input data into the Keccak sponge.
size_t block_size() const final
cSHAKE_XOF(size_t capacity, std::vector< uint8_t > function_name)
const std::vector< uint8_t > & function_name() const
bool valid_salt_length(size_t salt_length) const final
std::string provider() const final
std::span< const uint8_t > as_span_of_bytes(const char *s, size_t len)
size_t keccak_absorb_padded_strings_encoding(T &sink, size_t padding_mod, Ts... byte_strings)