12#include <botan/internal/dilithium_symmetric_primitives.h>
14#include <botan/internal/fmt.h>
16#if defined(BOTAN_HAS_DILITHIUM)
17 #include <botan/internal/dilithium_round3.h>
20#if defined(BOTAN_HAS_DILITHIUM_AES)
21 #include <botan/internal/dilithium_aes.h>
24#if defined(BOTAN_HAS_ML_DSA)
25 #include <botan/internal/ml_dsa_impl.h>
31 m_tr(std::move(tr)), m_shake(
XOF::create_or_throw(
"SHAKE-256")) {}
40 std::unique_ptr<DilithiumXOF> xof_adapter) :
41 m_commitment_hash_length_bytes(mode.commitment_hash_full_bytes()),
42 m_public_key_hash_bytes(mode.public_key_hash_bytes()),
44 m_xof_adapter(std::move(xof_adapter)) {}
48#if defined(BOTAN_HAS_DILITHIUM)
50 return std::make_unique<Dilithium_Symmetric_Primitives>(mode);
54#if defined(BOTAN_HAS_DILITHIUM_AES)
56 return std::make_unique<Dilithium_AES_Symmetric_Primitives>(mode);
60#if defined(BOTAN_HAS_ML_DSA)
62 return std::make_unique<ML_DSA_Symmetric_Primitives>(mode);
66 throw Not_Implemented(
"requested ML-DSA/Dilithium mode is not implemented in this build");
static constexpr size_t MESSAGE_HASH_BYTES
DilithiumMessageHash(DilithiumHashedPublicKey tr)
virtual ~DilithiumMessageHash()
static std::unique_ptr< Dilithium_Symmetric_Primitives_Base > create(const DilithiumConstants &mode)
Dilithium_Symmetric_Primitives_Base(const DilithiumConstants &mode, std::unique_ptr< DilithiumXOF > xof_adapter)
std::string fmt(std::string_view format, const T &... args)
Strong< std::vector< uint8_t >, struct DilithiumHashedPublicKey_ > DilithiumHashedPublicKey