9 #include <botan/xmss_common_ops.h>
31 bitmask_r.size() == right.size(),
32 "Bitmask size doesn't match node size.");
35 for(
size_t i = 0; i < left.size(); i++)
37 concat_xor[i] = left[i] ^ bitmask_l[i];
38 concat_xor[i + left.size()] = right[i] ^ bitmask_r[i];
41 hash.
h(result, key, concat_xor);
57 for(
size_t i = 0; i < l >> 1; i++)
64 pk[l >> 1] = pk[l - 1];
66 l = (l >> 1) + (l & 0x01);
size_t element_size() const
void h(secure_vector< uint8_t > &result, const secure_vector< uint8_t > &key, const secure_vector< uint8_t > &data)
void set_tree_height(uint32_t value)
void create_l_tree(secure_vector< uint8_t > &result, wots_keysig_t pk, XMSS_Address &adrs, const secure_vector< uint8_t > &seed, XMSS_Hash &hash)
#define BOTAN_ASSERT(expr, assertion_made)
std::vector< T, secure_allocator< T >> secure_vector
void prf(secure_vector< uint8_t > &result, const secure_vector< uint8_t > &key, const secure_vector< uint8_t > &data)
XMSS_Parameters m_xmss_params
std::vector< secure_vector< uint8_t > > wots_keysig_t
void set_key_mask_mode(Key_Mask value)
const secure_vector< uint8_t > & bytes() const
void randomize_tree_hash(secure_vector< uint8_t > &result, const secure_vector< uint8_t > &left, const secure_vector< uint8_t > &right, XMSS_Address &adrs, const secure_vector< uint8_t > &seed, XMSS_Hash &hash)
void set_tree_index(uint32_t value)
uint32_t get_tree_height() const