11 #include <botan/xmss_wots.h>
12 #include <botan/internal/xmss_tools.h>
13 #include <botan/internal/xmss_address.h>
18 XMSS_WOTS_PrivateKey::generate(
const secure_vector<uint8_t>& priv_seed,
22 secure_vector<uint8_t>(0));
26 XMSS_Tools::concat<size_t>(priv_key[i], i, 32);
27 hash.prf(priv_key[i], priv_seed, priv_key[i]);
50 "Conflicting public key data.");
87 hash.
prf(result, m_private_seed, adrs.
bytes());
88 return generate(result, hash);
95 hash.
h(idx_bytes, m_private_seed, idx_bytes);
96 return generate(idx_bytes, hash);
void h(secure_vector< uint8_t > &result, const secure_vector< uint8_t > &key, const secure_vector< uint8_t > &data)
wots_keysig_t sign(const secure_vector< uint8_t > &msg, XMSS_Address &adrs)
secure_vector< uint8_t > m_public_seed
wots_keysig_t at(size_t i, XMSS_Hash &hash)
size_t element_size() const
const secure_vector< uint8_t > & public_seed() const
void chain(secure_vector< uint8_t > &x, size_t start_idx, size_t steps, XMSS_Address &adrs, const secure_vector< uint8_t > &public_seed, XMSS_Hash &hash)
#define BOTAN_ASSERT(expr, assertion_made)
secure_vector< uint8_t > base_w(const secure_vector< uint8_t > &msg, size_t out_size) const
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)
size_t wots_parameter() const
XMSS_WOTS_PublicKey generate_public_key(XMSS_Address &adrs)
void set_chain_address(uint32_t value)
std::vector< secure_vector< uint8_t > > wots_keysig_t
void set_key_data(const wots_keysig_t &key_data)
const XMSS_WOTS_Parameters & wots_parameters() const
void append_checksum(secure_vector< uint8_t > &data)
const secure_vector< uint8_t > & bytes() const
ots_algorithm_t oid() const
XMSS_WOTS_Parameters m_wots_params