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

#include <kyber_modern.h>

Inheritance diagram for Botan::Kyber_Modern_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_Modern_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 > matrix_position) const override
 

Detailed Description

Definition at line 24 of file kyber_modern.h.

Constructor & Destructor Documentation

◆ Kyber_Modern_Symmetric_Primitives()

Botan::Kyber_Modern_Symmetric_Primitives::Kyber_Modern_Symmetric_Primitives ( )
inline

Definition at line 26 of file kyber_modern.h.

26 :
27 m_sha3_512(HashFunction::create_or_throw("SHA-3(512)")),
28 m_sha3_256(HashFunction::create_or_throw("SHA-3(256)")),
29 m_shake256_256(HashFunction::create_or_throw("SHAKE-256(256)")),
30 m_shake128(Botan::XOF::create_or_throw("SHAKE-128")) {}
static std::unique_ptr< HashFunction > create_or_throw(std::string_view algo_spec, std::string_view provider="")
Definition hash.cpp:298
static std::unique_ptr< XOF > create_or_throw(std::string_view algo_spec, std::string_view provider="")
Definition xof.cpp:42

Member Function Documentation

◆ G()

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

Implements Botan::Kyber_Symmetric_Primitives.

Definition at line 32 of file kyber_modern.h.

32{ return m_sha3_512->new_object(); }

◆ H()

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

Implements Botan::Kyber_Symmetric_Primitives.

Definition at line 34 of file kyber_modern.h.

34{ return m_sha3_256->new_object(); }

◆ KDF()

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

Implements Botan::Kyber_Symmetric_Primitives.

Definition at line 36 of file kyber_modern.h.

36{ return m_shake256_256->new_object(); }

◆ PRF()

secure_vector< uint8_t > Botan::Kyber_Modern_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 48 of file kyber_modern.h.

50 {
51 SHAKE_256 kdf(outlen * 8);
52 kdf.update(seed.data(), seed.size());
53 kdf.update(nonce);
54 return kdf.final();
55 }

References Botan::Buffered_Computation::final(), and Botan::Buffered_Computation::update().

◆ XOF()

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

Implements Botan::Kyber_Symmetric_Primitives.

Definition at line 38 of file kyber_modern.h.

38 {
39 m_shake128->clear();
40 m_shake128->update(seed);
41
42 const std::array<uint8_t, 2> matrix_position_buffer{std::get<0>(matrix_position),
43 std::get<1>(matrix_position)};
44 m_shake128->update(matrix_position_buffer);
45 return *m_shake128;
46 }

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