11#ifndef BOTAN_SP_WOTS_H_
12#define BOTAN_SP_WOTS_H_
14#include <botan/internal/sp_types.h>
20class Sphincs_Hash_Functions;
21class Sphincs_Parameters;
32 StrongSpan<SphincsTreeNode> leaf_out,
35 std::optional<TreeNodeIndex> sign_leaf_idx,
36 const std::vector<WotsHashIndex>& wots_steps,
37 Sphincs_Address& leaf_addr,
38 Sphincs_Address& pk_addr,
39 const Sphincs_Parameters& params,
40 Sphincs_Hash_Functions& hashes);
50 StrongSpan<const WotsSignature> signature,
51 Sphincs_Address& address,
52 const Sphincs_Parameters& params,
53 Sphincs_Hash_Functions& hashes);
Strong< std::vector< uint8_t >, struct SphincsTreeNode_ > SphincsTreeNode
Either an XMSS or FORS tree node or leaf.
WotsPublicKey wots_public_key_from_signature(const SphincsTreeNode &hashed_message, StrongSpan< const WotsSignature > signature, Sphincs_Address &address, const Sphincs_Parameters ¶ms, Sphincs_Hash_Functions &hashes)
FIPS 205, Algorithm 8: wots_pkFromSig.
void wots_sign_and_pkgen(StrongSpan< WotsSignature > sig_out, StrongSpan< SphincsTreeNode > leaf_out, const SphincsSecretSeed &secret_seed, TreeNodeIndex leaf_idx, std::optional< TreeNodeIndex > sign_leaf_idx, const std::vector< WotsHashIndex > &wots_steps, Sphincs_Address &leaf_addr, Sphincs_Address &pk_addr, const Sphincs_Parameters ¶ms, Sphincs_Hash_Functions &hashes)
FIPS 205, Algorithm 6 and 7: wots_pkGen and wots_sign.
Strong< std::vector< uint8_t >, struct WotsPublicKey_ > WotsPublicKey
Strong< secure_vector< uint8_t >, struct SphincsSecretSeed_ > SphincsSecretSeed
Strong< uint32_t, struct TreeNodeIndex_, EnableArithmeticWithPlainNumber > TreeNodeIndex
Index of an individual node inside an XMSS or FORS tree.
std::vector< WotsHashIndex > chain_lengths(const SphincsTreeNode &msg, const Sphincs_Parameters ¶ms)