10#include <botan/internal/cshake_xof.h>
12#include <botan/internal/keccak_helpers.h>
13#include <botan/internal/mem_utils.h>
19 m_function_name(std::move(function_name)),
20 m_output_generated(
false) {
30void cSHAKE_XOF::reset() {
32 m_output_generated =
false;
36 return m_keccak.provider();
40 return m_keccak.byte_rate();
50 return m_function_name.size() + salt_length > 0;
53void cSHAKE_XOF::start_msg(std::span<const uint8_t> salt, std::span<const uint8_t> key) {
59void cSHAKE_XOF::add_data(std::span<const uint8_t> input) {
64void cSHAKE_XOF::generate_bytes(std::span<uint8_t> output) {
65 if(!m_output_generated) {
66 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)
static constexpr KeccakPadding cshake()
NIST SP.800-185 Section 3.3.