Botan 3.11.0
Crypto and TLS for C&
Botan::Kyber_Algos::PolynomialSampler< SeedT > Class Template Reference

#include <kyber_algos.h>

Public Member Functions

 PolynomialSampler (StrongSpan< const SeedT > seed, const KyberConstants &mode)
KyberPoly sample_polynomial_cbd_eta2 ()
KyberPolyVec sample_polynomial_vector_cbd_eta1 ()
KyberPolyVec sample_polynomial_vector_cbd_eta2 ()

Detailed Description

template<typename SeedT>
requires std::same_as<KyberSeedSigma, SeedT> || std::same_as<KyberEncryptionRandomness, SeedT>
class Botan::Kyber_Algos::PolynomialSampler< SeedT >

Allows sampling multiple polynomials from a single seed via a XOF.

Used in Algorithms 13 (K-PKE.KeyGen) and 14 (K-PKE.Encrypt), and takes care of the continuous nonce value internally.

Definition at line 62 of file kyber_algos.h.

Constructor & Destructor Documentation

◆ PolynomialSampler()

template<typename SeedT>
Botan::Kyber_Algos::PolynomialSampler< SeedT >::PolynomialSampler ( StrongSpan< const SeedT > seed,
const KyberConstants & mode )
inline

Definition at line 64 of file kyber_algos.h.

64 :
65 m_seed(seed), m_mode(mode), m_nonce(0) {}

Member Function Documentation

◆ sample_polynomial_cbd_eta2()

template<typename SeedT>
KyberPoly Botan::Kyber_Algos::PolynomialSampler< SeedT >::sample_polynomial_cbd_eta2 ( )
inline

Definition at line 75 of file kyber_algos.h.

77 {
79 sample_poly_cbd(poly, m_mode.eta2());
80 return poly;
81 }

Referenced by Botan::Kyber_PublicKeyInternal::indcpa_encrypt().

◆ sample_polynomial_vector_cbd_eta1()

template<typename SeedT>
KyberPolyVec Botan::Kyber_Algos::PolynomialSampler< SeedT >::sample_polynomial_vector_cbd_eta1 ( )
inline

Definition at line 67 of file kyber_algos.h.

67 {
68 KyberPolyVec vec(m_mode.k());
69 for(auto& poly : vec) {
70 sample_poly_cbd(poly, m_mode.eta1());
71 }
72 return vec;
73 }

Referenced by Botan::Kyber_Algos::expand_keypair(), and Botan::Kyber_PublicKeyInternal::indcpa_encrypt().

◆ sample_polynomial_vector_cbd_eta2()

template<typename SeedT>
KyberPolyVec Botan::Kyber_Algos::PolynomialSampler< SeedT >::sample_polynomial_vector_cbd_eta2 ( )
inline

Definition at line 83 of file kyber_algos.h.

85 {
86 KyberPolyVec vec(m_mode.k());
87 for(auto& poly : vec) {
88 sample_poly_cbd(poly, m_mode.eta2());
89 }
90 return vec;
91 }

Referenced by Botan::Kyber_PublicKeyInternal::indcpa_encrypt().


The documentation for this class was generated from the following file: