10#ifndef BOTAN_KYBER_90S_H_
11#define BOTAN_KYBER_90S_H_
13#include <botan/hash.h>
14#include <botan/internal/aes_crystals_xof.h>
16#include <botan/internal/kyber_symmetric_primitives.h>
44 m_aes256_xof->clear();
45 const std::array<uint8_t, 12> nonce_buffer{nonce, 0};
46 m_aes256_xof->start(nonce_buffer, seed);
50 Botan::XOF&
get_XOF(std::span<const uint8_t> seed, std::tuple<uint8_t, uint8_t> mpos)
const override {
51 m_aes256_xof->clear();
52 const std::array<uint8_t, 12> iv{std::get<0>(mpos), std::get<1>(mpos), 0};
53 m_aes256_xof->start(iv, seed);
58 std::unique_ptr<HashFunction> m_sha512;
59 std::unique_ptr<HashFunction> m_sha256;
60 mutable std::unique_ptr<AES_256_CTR_XOF> m_aes256_xof;
std::optional< std::array< uint8_t, 1 > > seed_expansion_domain_separator(const KyberConstants &) const override
HashFunction & get_G() const override
HashFunction & get_J() const override
Botan::XOF & get_XOF(std::span< const uint8_t > seed, std::tuple< uint8_t, uint8_t > mpos) const override
HashFunction & get_KDF() const override
Kyber_90s_Symmetric_Primitives()
HashFunction & get_H() const override
Botan::XOF & get_PRF(std::span< const uint8_t > seed, const uint8_t nonce) const override
int(* final)(unsigned char *, CTX *)