8 #ifndef BOTAN_XMSS_HASH_H_ 9 #define BOTAN_XMSS_HASH_H_ 11 #include <botan/hash.h> 22 XMSS_Hash(
const std::string& h_func_name);
37 m_hash->update(m_zero_padding);
38 m_hash->update(m_id_prf);
41 m_hash->final(result);
55 m_hash->update(m_zero_padding);
56 m_hash->update(m_id_prf);
59 return m_hash->final();
73 m_hash->update(m_zero_padding);
74 m_hash->update(m_id_f);
77 m_hash->final(result);
145 static const uint8_t m_id_f = 0x00;
146 static const uint8_t m_id_h = 0x01;
147 static const uint8_t m_id_hmsg = 0x02;
148 static const uint8_t m_id_prf = 0x03;
150 std::unique_ptr<HashFunction> m_hash;
151 std::unique_ptr<HashFunction> m_msg_hash;
153 std::vector<uint8_t> m_zero_padding;
154 size_t m_output_length;
155 const std::string m_hash_func_name;
secure_vector< uint8_t > h_msg_final()
XMSS_Hash(const std::string &h_func_name)
void h_msg_update(const secure_vector< uint8_t > &data)
void h(secure_vector< uint8_t > &result, const secure_vector< uint8_t > &key, const secure_vector< uint8_t > &data)
void f(secure_vector< uint8_t > &result, const secure_vector< uint8_t > &key, const secure_vector< uint8_t > &data)
secure_vector< uint8_t > h_msg(const secure_vector< uint8_t > &randomness, const secure_vector< uint8_t > &root, const secure_vector< uint8_t > &index_bytes, const secure_vector< uint8_t > &data)
secure_vector< uint8_t > prf(const secure_vector< uint8_t > &key, const secure_vector< uint8_t > &data)
void prf(secure_vector< uint8_t > &result, const secure_vector< uint8_t > &key, const secure_vector< uint8_t > &data)
void h_msg_init(const secure_vector< uint8_t > &randomness, const secure_vector< uint8_t > &root, const secure_vector< uint8_t > &index_bytes)
std::vector< T, secure_allocator< T > > secure_vector
size_t output_length() const