9#ifndef BOTAN_SP_HASH_SHAKE_H_
10#define BOTAN_SP_HASH_SHAKE_H_
12#include <botan/internal/sp_hash.h>
14#include <botan/internal/shake.h>
33 m_h_msg_hash.update(r);
35 m_h_msg_hash.update(
root);
36 m_h_msg_hash.update(message.
prefix);
37 m_h_msg_hash.update(message.
message);
39 return m_h_msg_hash.final_stdvec();
45 m_seeded_hash(sphincs_params.n() * 8),
46 m_hash(sphincs_params.n() * 8),
47 m_h_msg_hash(8 * sphincs_params.h_msg_digest_bytes()) {
55 m_hash.update(sk_prf);
56 m_hash.update(opt_rand);
std::array< uint8_t, 32 > to_bytes() const
Sphincs_Hash_Functions_Shake(const Sphincs_Parameters &sphincs_params, const SphincsPublicSeed &pub_seed)
std::string msg_hash_function_name() const override
void PRF_msg(StrongSpan< SphincsMessageRandomness > out, StrongSpan< const SphincsSecretPRF > sk_prf, StrongSpan< const SphincsOptionalRandomness > opt_rand, const SphincsMessageInternal &msg) override
const SphincsPublicSeed & m_pub_seed
Sphincs_Hash_Functions(const Sphincs_Parameters &sphincs_params, const SphincsPublicSeed &pub_seed)
Gf448Elem root(const Gf448Elem &elem)
Compute the root of elem in the field.
Strong< std::vector< uint8_t >, struct SphincsTreeNode_ > SphincsTreeNode
Either an XMSS or FORS tree node or leaf.
Strong< std::vector< uint8_t >, struct SphincsPublicSeed_ > SphincsPublicSeed
M' representation of FIPS 205 (the input to slh_sign_internal and slh_verify_internal)
SphincsInputMessage message
SphincsMessagePrefix prefix