Botan 3.3.0
Crypto and TLS for C&
Public Member Functions | List of all members
Botan::Kyber_90s_Symmetric_Primitives Class Reference

#include <kyber_90s.h>

Inheritance diagram for Botan::Kyber_90s_Symmetric_Primitives:
Botan::Kyber_Symmetric_Primitives

Public Member Functions

std::unique_ptr< HashFunctionG () const override
 
std::unique_ptr< HashFunctionH () const override
 
std::unique_ptr< HashFunctionKDF () const override
 
 Kyber_90s_Symmetric_Primitives ()
 
secure_vector< uint8_t > PRF (std::span< const uint8_t > seed, const uint8_t nonce, const size_t outlen) const override
 
Botan::XOFXOF (std::span< const uint8_t > seed, std::tuple< uint8_t, uint8_t > mpos) const override
 

Detailed Description

Definition at line 22 of file kyber_90s.h.

Constructor & Destructor Documentation

◆ Kyber_90s_Symmetric_Primitives()

Botan::Kyber_90s_Symmetric_Primitives::Kyber_90s_Symmetric_Primitives ( )
inline

Definition at line 24 of file kyber_90s.h.

24 :
25 m_sha512(HashFunction::create_or_throw("SHA-512")),
26 m_sha256(HashFunction::create_or_throw("SHA-256")),
27 m_aes256_ctr_xof(std::make_unique<AES_256_CTR_XOF>()),
28 m_aes256_ctr_prf(std::make_unique<AES_256_CTR_XOF>()) {}
static std::unique_ptr< HashFunction > create_or_throw(std::string_view algo_spec, std::string_view provider="")
Definition hash.cpp:298

Member Function Documentation

◆ G()

std::unique_ptr< HashFunction > Botan::Kyber_90s_Symmetric_Primitives::G ( ) const
inlineoverridevirtual

Implements Botan::Kyber_Symmetric_Primitives.

Definition at line 30 of file kyber_90s.h.

30{ return m_sha512->new_object(); }

◆ H()

std::unique_ptr< HashFunction > Botan::Kyber_90s_Symmetric_Primitives::H ( ) const
inlineoverridevirtual

Implements Botan::Kyber_Symmetric_Primitives.

Definition at line 32 of file kyber_90s.h.

32{ return m_sha256->new_object(); }

◆ KDF()

std::unique_ptr< HashFunction > Botan::Kyber_90s_Symmetric_Primitives::KDF ( ) const
inlineoverridevirtual

Implements Botan::Kyber_Symmetric_Primitives.

Definition at line 34 of file kyber_90s.h.

34{ return m_sha256->new_object(); }

◆ PRF()

secure_vector< uint8_t > Botan::Kyber_90s_Symmetric_Primitives::PRF ( std::span< const uint8_t > seed,
const uint8_t nonce,
const size_t outlen ) const
inlineoverridevirtual

Implements Botan::Kyber_Symmetric_Primitives.

Definition at line 43 of file kyber_90s.h.

45 {
46 m_aes256_ctr_prf->clear();
47 const std::array<uint8_t, 12> nonce_buffer{nonce, 0};
48 m_aes256_ctr_prf->start(nonce_buffer, seed);
49 return m_aes256_ctr_prf->output(outlen);
50 }

◆ XOF()

Botan::XOF & Botan::Kyber_90s_Symmetric_Primitives::XOF ( std::span< const uint8_t > seed,
std::tuple< uint8_t, uint8_t > mpos ) const
inlineoverridevirtual

Implements Botan::Kyber_Symmetric_Primitives.

Definition at line 36 of file kyber_90s.h.

36 {
37 m_aes256_ctr_xof->clear();
38 const std::array<uint8_t, 12> iv{std::get<0>(mpos), std::get<1>(mpos), 0};
39 m_aes256_ctr_xof->start(iv, seed);
40 return *m_aes256_ctr_xof;
41 }

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