8 #ifndef BOTAN_XMSS_WOTS_PRIVATEKEY_H_
9 #define BOTAN_XMSS_WOTS_PRIVATEKEY_H_
13 #include <botan/alg_id.h>
14 #include <botan/exceptn.h>
15 #include <botan/pk_keys.h>
16 #include <botan/rng.h>
17 #include <botan/xmss_wots_parameters.h>
18 #include <botan/xmss_address.h>
19 #include <botan/xmss_wots_publickey.h>
105 m_private_seed(private_seed)
128 hash.
h(idx_bytes, m_private_seed, idx_bytes);
129 return generate(idx_bytes, hash);
162 hash.
prf(result, m_private_seed, adrs.
bytes());
163 return generate(result, hash);
270 return m_private_seed;
298 throw Not_Implemented(
"No AlgorithmIdentifier available for XMSS-WOTS.");
326 return generate(private_seed,
m_hash);
329 secure_vector<uint8_t> m_private_seed;
XMSS_WOTS_PrivateKey(XMSS_WOTS_Parameters::ots_algorithm_t oid, RandomNumberGenerator &rng)
void h(secure_vector< uint8_t > &result, const secure_vector< uint8_t > &key, const secure_vector< uint8_t > &data)
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 sign(const secure_vector< uint8_t > &msg, XMSS_Address &adrs)
wots_keysig_t operator[](const XMSS_Address &adrs)
int(* final)(unsigned char *, CTX *)
XMSS_WOTS_PrivateKey(XMSS_WOTS_Parameters::ots_algorithm_t oid, const secure_vector< uint8_t > &public_seed)
wots_keysig_t at(size_t i, XMSS_Hash &hash)
void generate_public_key(XMSS_WOTS_PublicKey &pub_key, wots_keysig_t &&in_key_data, XMSS_Address &adrs)
AlgorithmIdentifier pkcs8_algorithm_identifier() const override
size_t element_size() const
const secure_vector< uint8_t > & public_seed() const
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)
wots_keysig_t generate_private_key(const secure_vector< uint8_t > &priv_seed)
void prf(secure_vector< uint8_t > &result, const secure_vector< uint8_t > &key, const secure_vector< uint8_t > &data)
XMSS_WOTS_PrivateKey(XMSS_WOTS_Parameters::ots_algorithm_t oid)
void set_private_seed(secure_vector< uint8_t > &&private_seed)
XMSS_WOTS_PublicKey generate_public_key(XMSS_Address &adrs)
std::vector< secure_vector< uint8_t > > wots_keysig_t
wots_keysig_t operator[](size_t i)
void set_key_data(const wots_keysig_t &key_data)
const secure_vector< uint8_t > & bytes() const
secure_vector< uint8_t > private_key_bits() const override
void set_private_seed(const secure_vector< uint8_t > &private_seed)
wots_keysig_t at(const XMSS_Address &adrs, XMSS_Hash &hash)
XMSS_WOTS_Parameters m_wots_params