8 #ifndef BOTAN_XMSS_PUBLICKEY_H_ 9 #define BOTAN_XMSS_PUBLICKEY_H_ 15 #include <botan/alg_id.h> 16 #include <botan/asn1_oid.h> 17 #include <botan/der_enc.h> 18 #include <botan/exceptn.h> 19 #include <botan/rng.h> 20 #include <botan/types.h> 21 #include <botan/pk_keys.h> 22 #include <botan/xmss_parameters.h> 23 #include <botan/xmss_wots_parameters.h> 24 #include <botan/pk_ops.h> 28 class XMSS_Verification_Operation;
55 : m_xmss_params(xmss_oid), m_wots_params(m_xmss_params.ots_oid()),
56 m_root(m_xmss_params.element_size()),
57 m_public_seed(rng.random_vec(m_xmss_params.element_size())) {}
76 : m_xmss_params(xmss_oid), m_wots_params(m_xmss_params.ots_oid()),
77 m_root(root), m_public_seed(public_seed) {}
90 : m_xmss_params(xmss_oid), m_wots_params(m_xmss_params.ots_oid()),
91 m_root(
std::move(root)), m_public_seed(
std::move(public_seed)) {}
100 return m_xmss_params.oid();
120 return m_xmss_params;
131 return m_wots_params.oid();
142 return m_wots_params;
157 m_root = std::move(root);
167 return m_public_seed;
172 m_public_seed = public_seed;
177 m_public_seed = std::move(public_seed);
182 return m_public_seed;
200 std::unique_ptr<PK_Ops::Verification>
201 create_verification_op(
const std::string&,
202 const std::string& provider)
const override;
206 return m_xmss_params.estimated_strength();
211 return m_xmss_params.estimated_strength();
222 return raw_public_key();
233 return sizeof(uint32_t) + 2 * m_xmss_params.element_size();
243 virtual std::vector<uint8_t> raw_public_key()
const;
253 const std::vector<uint8_t>& raw_key);
secure_vector< uint8_t > m_public_seed
XMSS_PublicKey(XMSS_Parameters::xmss_algorithm_t xmss_oid, const secure_vector< uint8_t > &root, const secure_vector< uint8_t > &public_seed)
virtual void set_public_seed(const secure_vector< uint8_t > &public_seed)
secure_vector< uint8_t > m_root
#define BOTAN_PUBLIC_API(maj, min)
void set_root(const secure_vector< uint8_t > &root)
const secure_vector< uint8_t > & root() const
XMSS_Parameters::xmss_algorithm_t xmss_oid() const
void set_root(secure_vector< uint8_t > &&root)
virtual size_t size() const
virtual void set_public_seed(secure_vector< uint8_t > &&public_seed)
const XMSS_WOTS_Parameters & wots_parameters() const
void set_xmss_oid(XMSS_Parameters::xmss_algorithm_t xmss_oid)
const XMSS_Parameters & xmss_parameters() const
virtual const secure_vector< uint8_t > & public_seed() const
secure_vector< uint8_t > & root()
size_t key_length() const override
XMSS_WOTS_Parameters::ots_algorithm_t wots_oid() const
XMSS_PublicKey(XMSS_Parameters::xmss_algorithm_t xmss_oid, secure_vector< uint8_t > &&root, secure_vector< uint8_t > &&public_seed)
std::vector< uint8_t > public_key_bits() const override
AlgorithmIdentifier algorithm_identifier() const override
std::string algo_name() const override
size_t estimated_strength() const override
XMSS_PublicKey(XMSS_Parameters::xmss_algorithm_t xmss_oid, RandomNumberGenerator &rng)
XMSS_WOTS_Parameters m_wots_params
std::vector< T, secure_allocator< T > > secure_vector
virtual secure_vector< uint8_t > & public_seed()
XMSS_Parameters m_xmss_params
bool check_key(RandomNumberGenerator &, bool) const override