11#ifndef BOTAN_FRODOKEM_AES_GENERATOR_H_
12#define BOTAN_FRODOKEM_AES_GENERATOR_H_
14#include <botan/internal/aes.h>
15#include <botan/internal/frodo_constants.h>
16#include <botan/internal/frodo_types.h>
17#include <botan/internal/loadstor.h>
18#include <botan/internal/stl_util.h>
34 return [n = constants.
n(), aes = setup_aes(seed_a)](std::span<uint8_t> out, uint16_t i) {
37 for(
size_t j = 0; j < n; j += 8) {
40 auto out_coefs = out_bs.
next(aes.block_size());
43 store_le(
static_cast<uint16_t
>(i), out_coefs.data());
44 store_le(
static_cast<uint16_t
>(j), out_coefs.data() +
sizeof(uint16_t));
45 for(
size_t ii = 4; ii < out_coefs.size(); ++ii) {
49 aes.encrypt(out_coefs);
#define BOTAN_ASSERT_NOMSG(expr)
Helper class to ease in-place marshalling of concatenated fixed-length values.
constexpr std::span< uint8_t > next(size_t bytes)
FrodoKEMMode mode() const
void set_key(const SymmetricKey &key)
constexpr auto store_le(ParamTs &&... params)
auto create_aes_row_generator(const FrodoKEMConstants &constants, StrongSpan< const FrodoSeedA > seed_a)