Botan 3.4.0
Crypto and TLS for C&
Public Types | Public Member Functions | Static Public Member Functions | List of all members
Botan::Dilithium_Symmetric_Primitives Class Referenceabstract

#include <dilithium_symmetric_primitives.h>

Inheritance diagram for Botan::Dilithium_Symmetric_Primitives:
Botan::Dilithium_AES_Symmetric_Primitives Botan::Dilithium_Common_Symmetric_Primitives

Public Types

enum class  XofType { k128 , k256 }
 

Public Member Functions

secure_vector< uint8_t > CRH (std::span< const uint8_t > in, size_t out_len) const
 
secure_vector< uint8_t > ExpandMask (std::span< const uint8_t > seed, uint16_t nonce, size_t out_len) const
 
secure_vector< uint8_t > H (std::span< const uint8_t > seed, size_t out_len) const
 
virtual std::unique_ptr< Botan::XOFXOF (XofType type, std::span< const uint8_t > seed, uint16_t nonce) const =0
 
virtual ~Dilithium_Symmetric_Primitives ()=default
 

Static Public Member Functions

static std::unique_ptr< Dilithium_Symmetric_Primitivescreate (DilithiumMode mode)
 

Detailed Description

Adapter class that uses polymorphy to distinguish Dilithium "common" from Dilithium "AES" modes.

Definition at line 28 of file dilithium_symmetric_primitives.h.

Member Enumeration Documentation

◆ XofType

Constructor & Destructor Documentation

◆ ~Dilithium_Symmetric_Primitives()

virtual Botan::Dilithium_Symmetric_Primitives::~Dilithium_Symmetric_Primitives ( )
virtualdefault

Member Function Documentation

◆ create()

std::unique_ptr< Dilithium_Symmetric_Primitives > Botan::Dilithium_Symmetric_Primitives::create ( DilithiumMode mode)
static

Definition at line 22 of file dilithium_symmetric_primitives.cpp.

22 {
23#if BOTAN_HAS_DILITHIUM
24 if(mode.is_modern()) {
25 return std::make_unique<Dilithium_Common_Symmetric_Primitives>();
26 }
27#endif
28
29#if BOTAN_HAS_DILITHIUM_AES
30 if(mode.is_aes()) {
31 return std::make_unique<Dilithium_AES_Symmetric_Primitives>();
32 }
33#endif
34
35 throw Not_Implemented("requested Dilithium mode is not enabled in this build");
36}

References Botan::DilithiumMode::is_aes(), and Botan::DilithiumMode::is_modern().

◆ CRH()

secure_vector< uint8_t > Botan::Dilithium_Symmetric_Primitives::CRH ( std::span< const uint8_t > in,
size_t out_len ) const
inline

Definition at line 43 of file dilithium_symmetric_primitives.h.

43 {
44 return SHAKE_256(out_len * 8).process(in.data(), in.size());
45 }

References Botan::Buffered_Computation::process().

◆ ExpandMask()

secure_vector< uint8_t > Botan::Dilithium_Symmetric_Primitives::ExpandMask ( std::span< const uint8_t > seed,
uint16_t nonce,
size_t out_len ) const
inline

Definition at line 48 of file dilithium_symmetric_primitives.h.

48 {
49 return XOF(XofType::k256, seed, nonce)->output(out_len);
50 }
virtual std::unique_ptr< Botan::XOF > XOF(XofType type, std::span< const uint8_t > seed, uint16_t nonce) const =0

References k256, and XOF().

◆ H()

secure_vector< uint8_t > Botan::Dilithium_Symmetric_Primitives::H ( std::span< const uint8_t > seed,
size_t out_len ) const
inline

Definition at line 38 of file dilithium_symmetric_primitives.h.

38 {
39 return SHAKE_256(out_len * 8).process(seed.data(), seed.size());
40 }

References Botan::Buffered_Computation::process().

◆ XOF()

virtual std::unique_ptr< Botan::XOF > Botan::Dilithium_Symmetric_Primitives::XOF ( XofType type,
std::span< const uint8_t > seed,
uint16_t nonce ) const
pure virtual

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