11 #include <botan/internal/xmss_wots_signature_operation.h>
12 #include <botan/xmss_wots_privatekey.h>
17 XMSS_WOTS_PrivateKey::generate(
const secure_vector<uint8_t>& priv_seed)
20 secure_vector<uint8_t>(0));
24 XMSS_Tools::concat<size_t>(priv_key[i], i, 32);
25 m_hash.
prf(priv_key[i], priv_seed, priv_key[i]);
47 "Conflicting public key data.");
81 std::unique_ptr<PK_Ops::Signature>
84 const std::string& provider)
const
86 if(provider ==
"base" || provider.empty())
87 return std::unique_ptr<PK_Ops::Signature>(
wots_keysig_t sign(const secure_vector< uint8_t > &msg, XMSS_Address &adrs)
secure_vector< uint8_t > m_public_seed
const secure_vector< uint8_t > & public_seed() const
#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
virtual std::string algo_name() const override
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)
void chain(secure_vector< uint8_t > &x, size_t start_idx, size_t steps, XMSS_Address &adrs, const secure_vector< uint8_t > &public_seed)
virtual std::unique_ptr< PK_Ops::Signature > create_signature_op(RandomNumberGenerator &, const std::string &, const std::string &provider) const override
ots_algorithm_t oid() const
XMSS_WOTS_Parameters m_wots_params