11 #include <botan/internal/xmss_verification_operation.h>
18 m_pub_key(public_key),
24 XMSS_Verification_Operation::root_from_signature(
const XMSS_Signature& sig,
41 std::array<secure_vector<uint8_t>, 2> node;
74 XMSS_Verification_Operation::verify(
const XMSS_Signature& sig,
75 const secure_vector<uint8_t>& msg,
76 const XMSS_PublicKey& public_key)
79 secure_vector<uint8_t> index_bytes;
81 sig.unused_leaf_index(),
83 secure_vector<uint8_t> msg_digest =
89 secure_vector<uint8_t> node = root_from_signature(sig,
92 public_key.public_seed());
94 return (node == public_key.root());
106 std::copy(msg, msg + msg_len, std::back_inserter(m_msg_buf));
116 bool result = verify(signature, m_msg_buf, m_pub_key);
size_t element_size() const
void create_l_tree(secure_vector< uint8_t > &result, wots_keysig_t pk, XMSS_Address &adrs, const secure_vector< uint8_t > &seed)
size_t unused_leaf_index() const
void set_ots_address(uint32_t value)
void set_tree_height(uint32_t value)
size_t tree_height() const
void set_ltree_address(uint32_t value)
virtual bool is_valid_signature(const uint8_t sig[], size_t sig_len) override
secure_vector< uint8_t > h_msg(const secure_vector< uint8_t > &randomness, const secure_vector< uint8_t > &root, const secure_vector< uint8_t > &index_bytes, const secure_vector< uint8_t > &data)
const XMSS_Parameters & xmss_parameters() const
xmss_algorithm_t oid() const
void update(const uint8_t msg[], size_t msg_len) override
std::vector< T, secure_allocator< T >> secure_vector
const wots_keysig_t & ots_signature() const
XMSS_Parameters m_xmss_params
void randomize_tree_hash(secure_vector< uint8_t > &result, const secure_vector< uint8_t > &left, const secure_vector< uint8_t > &right, XMSS_Address &adrs, const secure_vector< uint8_t > &seed)
XMSS_Verification_Operation(const XMSS_PublicKey &public_key)
const XMSS_WOTS_Parameters & wots_parameters() const
const XMSS_WOTS_PublicKey::TreeSignature & tree() const
uint32_t get_tree_index() const
void set_tree_index(uint32_t value)
ots_algorithm_t oid() const
const wots_keysig_t & authentication_path() const