Name Description Size
atomic.h Simple helper class to expand std::atomic with copy constructor and copy assignment operator, i.e. for use as element in a container like std::vector. The construction of instances of this wrapper is NOT atomic and needs to be properly guarded. 1220
info.txt 458
xmss.h An XMSS: Extended Hash-Based Signature public key. [1] XMSS: Extended Hash-Based Signatures, Request for Comments: 8391 Release: May 2018. https://datatracker.ietf.org/doc/rfc8391/ 11389
xmss_address.h Generic XMSS Address type holding 256 Bits of data. Properties of all three address formats L-Tree-Address, Hash-Tree-Address, OTS-Hash-Address can be called depending on the type currently assigned to the XMSS address using set_type(). 12567
xmss_common_ops.cpp 2502
xmss_common_ops.h Operations shared by XMSS signature generation and verification operations. 3006
xmss_hash.cpp hash IDs are a single uint8_t 1778
xmss_hash.h A collection of pseudorandom hash functions required for XMSS and WOTS computations. 5587
xmss_index_registry.cpp 2164
xmss_index_registry.h A registry for XMSS private keys, keeps track of the leaf index for independend copies of the same key. 3331
xmss_parameters.cpp 10290
xmss_parameters.h Descibes a signature method for XMSS Winternitz One Time Signatures, as defined in: [1] XMSS: Extended Hash-Based Signatures, Request for Comments: 8391 Release: May 2018. https://datatracker.ietf.org/doc/rfc8391/ [2] Recommendation for Stateful Hash-Based Signature Schemes NIST Special Publication 800-208 Release: October 2020. https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-208.pdf 7856
xmss_privatekey.cpp The code requires sizeof(size_t) >= ceil(tree_height / 8) Maximum supported tree height is 20, ceil(20/8) == 3, so 4 byte size_t is sufficient for all defined parameters, or even a (hypothetical) tree height 32, which would be extremely slow to compute. 18768
xmss_publickey.cpp algorithm ID -- already consumed by `deserialize_xmss_oid()` 5570
xmss_signature.cpp 2460
xmss_signature.h Helper class for marshalling an XMSS signature 2945
xmss_signature_operation.cpp rng 3835
xmss_signature_operation.h Signature generation operation for Extended Hash-Based Signatures (XMSS) as defined in: [1] XMSS: Extended Hash-Based Signatures, Request for Comments: 8391 Release: May 2018. https://datatracker.ietf.org/doc/rfc8391/ 2683
xmss_tools.h Helper tools for low level byte operations required for the XMSS implementation. 2795
xmss_verification_operation.cpp 3953
xmss_verification_operation.h Provides signature verification capabilities for Extended Hash-Based Signatures (XMSS). 2193
xmss_wots.cpp Algorithm 2: Chaining Function. Takes an n-byte input string and transforms it into a the function result iterating the cryptographic hash function "F" steps times on the input x using the outputs of the PRNG "G". This overload is used in multithreaded scenarios, where it is required to provide seperate instances of XMSS_Hash to each thread. @param params The WOTS parameters to use @param[out] result An n-byte input string, that will be transformed into the chaining function result. @param start_idx The start index. @param steps A number of steps. @param adrs An OTS Hash Address. @param seed A seed. @param hash Instance of XMSS_Hash, that may only by the thread executing chain. 6249
xmss_wots.h A Winternitz One Time Signature public key for use with Extended Hash-Based Signatures. 6519
xmss_wots_parameters.cpp 4749