9#ifndef BOTAN_ASCON_PERM_H_
10#define BOTAN_ASCON_PERM_H_
12#include <botan/internal/sponge.h>
34 m_init_final_rounds(config.init_and_final_rounds),
35 m_processing_rounds(config.processing_rounds) {
37 "Invalid Ascon initialization/finalization rounds");
39 BOTAN_ARG_CHECK(m_processing_rounds > 0 && m_processing_rounds <= 16,
"Invalid Ascon processing rounds");
42 std::string
provider()
const {
return "base"; }
44 void absorb(std::span<const uint8_t> input, std::optional<uint8_t> permutation_rounds = std::nullopt);
45 void squeeze(std::span<uint8_t> output);
57 template <
size_t offset,
size_t count>
60 return std::span{
state()}.template subspan<offset, count>();
64 void finish(uint8_t rounds);
68 uint8_t m_init_final_rounds;
69 uint8_t m_processing_rounds;
#define BOTAN_ARG_CHECK(expr, msg)
consteval Ascon_p(Config config)
constexpr auto range_of_state()
void squeeze(std::span< uint8_t > output)
void absorb(std::span< const uint8_t > input, std::optional< uint8_t > permutation_rounds=std::nullopt)
void percolate_in(std::span< uint8_t > data)
void percolate_out(std::span< uint8_t > data)
void intermediate_finish()
std::string provider() const
static constexpr size_t state_bytes()
std::array< word, words > state_t
constexpr Sponge(Config config)
uint8_t processing_rounds
uint8_t init_and_final_rounds