9#ifndef BOTAN_SPONGE_CONSTRUCTION_H_
10#define BOTAN_SPONGE_CONSTRUCTION_H_
12#include <botan/exceptn.h>
24template <
size_t words, std::
unsigned_
integral word = u
int64_t>
38 constexpr explicit Sponge(
Config config) : m_S(config.initial_state), m_S_cursor(0), m_bit_rate(config.
bit_rate) {
39 if(m_bit_rate % (
sizeof(
word) * 8) != 0 || m_bit_rate > words *
sizeof(
word) * 8) {
48 constexpr size_t bit_rate()
const {
return m_bit_rate; }
50 constexpr size_t byte_rate()
const {
return m_bit_rate / 8; }
56 constexpr auto&
state() {
return m_S; }
58 size_t cursor()
const {
return m_S_cursor; }
constexpr size_t bit_capacity() const
static constexpr size_t state_bytes()
static constexpr size_t word_bytes
std::array< word, words > state_t
constexpr size_t byte_rate() const
constexpr size_t byte_capacity() const
constexpr size_t bit_rate() const
static constexpr size_t word_bits
static constexpr size_t state_bits()
constexpr Sponge(Config config)
std::conditional_t< HasNative64BitRegisters, std::uint64_t, uint32_t > word
state_t initial_state
The number of bits that using algorithms can modify between permutations.