8 #ifndef BOTAN_XMSS_WOTS_PRIVATEKEY_H__
9 #define BOTAN_XMSS_WOTS_PRIVATEKEY_H__
13 #include <botan/alg_id.h>
14 #include <botan/assert.h>
15 #include <botan/exceptn.h>
16 #include <botan/pk_keys.h>
17 #include <botan/types.h>
18 #include <botan/xmss_wots_parameters.h>
19 #include <botan/xmss_address.h>
20 #include <botan/xmss_wots_publickey.h>
50 m_private_seed(rng.random_vec(m_wots_params.element_size()))
52 set_key_data(generate(m_private_seed));
71 m_private_seed(rng.random_vec(m_wots_params.element_size()))
73 set_key_data(generate(m_private_seed));
106 m_private_seed(private_seed)
108 set_key_data(generate(private_seed));
123 m_hash.h(idx_bytes, m_private_seed, idx_bytes);
124 return generate(idx_bytes);
139 return generate(result);
193 return m_private_seed;
204 m_private_seed = private_seed;
215 m_private_seed = std::move(private_seed);
221 throw Not_Implemented(
"No AlgorithmIdentifier available for XMSS-WOTS.");
224 virtual std::unique_ptr<PK_Ops::Signature>
227 const std::string& provider)
const override;
XMSS_WOTS_PrivateKey(XMSS_WOTS_Parameters::ots_algorithm_t oid, RandomNumberGenerator &rng)
XMSS_WOTS_PrivateKey(XMSS_WOTS_Parameters::ots_algorithm_t oid, const secure_vector< uint8_t > &public_seed, const secure_vector< uint8_t > &private_seed)
const secure_vector< uint8_t > & private_seed() const
wots_keysig_t operator[](const XMSS_Address &adrs)
XMSS_WOTS_PrivateKey(XMSS_WOTS_Parameters::ots_algorithm_t oid, const secure_vector< uint8_t > &public_seed)
virtual AlgorithmIdentifier pkcs8_algorithm_identifier() const override
std::vector< T, secure_allocator< T >> secure_vector
XMSS_WOTS_PrivateKey(XMSS_WOTS_Parameters::ots_algorithm_t oid, const secure_vector< uint8_t > &public_seed, RandomNumberGenerator &rng)
XMSS_WOTS_PrivateKey(XMSS_WOTS_Parameters::ots_algorithm_t oid)
void set_private_seed(secure_vector< uint8_t > &&private_seed)
std::vector< secure_vector< uint8_t > > wots_keysig_t
wots_keysig_t operator[](size_t i)
const secure_vector< uint8_t > & bytes() const
virtual secure_vector< uint8_t > private_key_bits() const override
void set_private_seed(const secure_vector< uint8_t > &private_seed)
std::unique_ptr< HashFunction > m_hash