11#include <botan/xmss_wots.h>
12#include <botan/internal/xmss_tools.h>
13#include <botan/internal/xmss_address.h>
18XMSS_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);
#define BOTAN_ASSERT(expr, assertion_made)
void set_chain_address(uint32_t value)
const secure_vector< uint8_t > & bytes() const
size_t wots_parameter() const
size_t element_size() const
ots_algorithm_t oid() const
void append_checksum(secure_vector< uint8_t > &data)
secure_vector< uint8_t > base_w(const secure_vector< uint8_t > &msg, size_t out_size) const
XMSS_WOTS_PublicKey generate_public_key(XMSS_Address &adrs)
wots_keysig_t sign(const secure_vector< uint8_t > &msg, XMSS_Address &adrs)
wots_keysig_t at(size_t i, XMSS_Hash &hash)
XMSS_WOTS_Parameters m_wots_params
const secure_vector< uint8_t > & public_seed() const
const XMSS_WOTS_Parameters & wots_parameters() const
secure_vector< uint8_t > m_public_seed
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)
void set_key_data(const wots_keysig_t &key_data)
std::vector< secure_vector< uint8_t > > wots_keysig_t
std::vector< T, secure_allocator< T > > secure_vector