Botan 3.12.0
Crypto and TLS for C&
Botan::XMSS_WOTS_Parameters Class Referencefinal

#include <xmss_parameters.h>

Public Types

enum  ots_algorithm_t : uint32_t {
  WOTSP_SHA2_256 = 0x00000001 , WOTSP_SHA2_512 = 0x00000002 , WOTSP_SHAKE_256 = 0x00000003 , WOTSP_SHAKE_512 = 0x00000004 ,
  WOTSP_SHA2_192 = 0x00000005 , WOTSP_SHAKE_256_256 = 0x00000006 , WOTSP_SHAKE_256_192 = 0x00000007
}

Public Member Functions

size_t element_size () const
size_t estimated_strength () const
size_t len () const
size_t len_1 () const
size_t len_2 () const
size_t lg_w () const
ots_algorithm_t oid () const
XMSS_WOTS_Parametersoperator= (const XMSS_WOTS_Parameters &other)=default
XMSS_WOTS_Parametersoperator= (XMSS_WOTS_Parameters &&other) noexcept=default
bool operator== (const XMSS_WOTS_Parameters &p) const
size_t wots_parameter () const
 XMSS_WOTS_Parameters (const XMSS_WOTS_Parameters &other)=default
 XMSS_WOTS_Parameters (XMSS_WOTS_Parameters &&other) noexcept=default
 ~XMSS_WOTS_Parameters ()=default

Static Public Member Functions

static XMSS_WOTS_Parameters from_id (ots_algorithm_t id)

Detailed Description

Describes 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

Definition at line 35 of file xmss_parameters.h.

Member Enumeration Documentation

◆ ots_algorithm_t

Enumerator
WOTSP_SHA2_256 
WOTSP_SHA2_512 
WOTSP_SHAKE_256 
WOTSP_SHAKE_512 
WOTSP_SHA2_192 
WOTSP_SHAKE_256_256 
WOTSP_SHAKE_256_192 

Definition at line 37 of file xmss_parameters.h.

37 : uint32_t /* NOLINT(*-enum-size,*-use-enum-class) */ {
38 // from RFC 8391
39 WOTSP_SHA2_256 = 0x00000001,
40
41 // from RFC 8391 but not approved by NIST SP.800-208
42 // (see footnote on page 16)
43 WOTSP_SHA2_512 = 0x00000002,
44 WOTSP_SHAKE_256 = 0x00000003,
45 WOTSP_SHAKE_512 = 0x00000004,
46
47 // from NIST SP.800-208
48 WOTSP_SHA2_192 = 0x00000005,
49 WOTSP_SHAKE_256_256 = 0x00000006,
50 WOTSP_SHAKE_256_192 = 0x00000007,
51 };

Constructor & Destructor Documentation

◆ XMSS_WOTS_Parameters() [1/2]

Botan::XMSS_WOTS_Parameters::XMSS_WOTS_Parameters ( const XMSS_WOTS_Parameters & other)
default

◆ XMSS_WOTS_Parameters() [2/2]

Botan::XMSS_WOTS_Parameters::XMSS_WOTS_Parameters ( XMSS_WOTS_Parameters && other)
defaultnoexcept

◆ ~XMSS_WOTS_Parameters()

Botan::XMSS_WOTS_Parameters::~XMSS_WOTS_Parameters ( )
default

Member Function Documentation

◆ element_size()

size_t Botan::XMSS_WOTS_Parameters::element_size ( ) const
inline

Retrieves the uniform length of a message, and the size of each node. This correlates to XMSS parameter "n" defined in [1].

Returns
element length in bytes.

Definition at line 68 of file xmss_parameters.h.

68{ return m_element_size; }

◆ estimated_strength()

size_t Botan::XMSS_WOTS_Parameters::estimated_strength ( ) const
inline

Definition at line 93 of file xmss_parameters.h.

93{ return 8 * m_element_size; }

◆ from_id()

XMSS_WOTS_Parameters Botan::XMSS_WOTS_Parameters::from_id ( ots_algorithm_t id)
static

Definition at line 32 of file xmss_wots_parameters.cpp.

32 {
33 switch(id) {
34 case WOTSP_SHA2_256:
35 return XMSS_WOTS_Parameters::from_hash_len(WOTSP_SHA2_256, 32);
36
37 case WOTSP_SHA2_512:
38 return XMSS_WOTS_Parameters::from_hash_len(WOTSP_SHA2_512, 64);
39
40 case WOTSP_SHAKE_256:
41 return XMSS_WOTS_Parameters::from_hash_len(WOTSP_SHAKE_256, 32);
42
43 case WOTSP_SHAKE_512:
44 return XMSS_WOTS_Parameters::from_hash_len(WOTSP_SHAKE_512, 64);
45
46 case WOTSP_SHA2_192:
47 return XMSS_WOTS_Parameters::from_hash_len(WOTSP_SHA2_192, 24);
48
50 return XMSS_WOTS_Parameters::from_hash_len(WOTSP_SHAKE_256_256, 32);
51
53 return XMSS_WOTS_Parameters::from_hash_len(WOTSP_SHAKE_256_192, 24);
54
55 default:
56 throw Not_Implemented("Algorithm id does not match any known XMSS WOTS algorithm id.");
57 }
58}

References WOTSP_SHA2_192, WOTSP_SHA2_256, WOTSP_SHA2_512, WOTSP_SHAKE_256, WOTSP_SHAKE_256_192, WOTSP_SHAKE_256_256, WOTSP_SHAKE_512, and XMSS_WOTS_Parameters().

Referenced by Botan::XMSS_Parameters::wots_parameters().

◆ len()

size_t Botan::XMSS_WOTS_Parameters::len ( ) const
inline

Definition at line 84 of file xmss_parameters.h.

84{ return m_len; }

◆ len_1()

size_t Botan::XMSS_WOTS_Parameters::len_1 ( ) const
inline

Definition at line 86 of file xmss_parameters.h.

86{ return m_len_1; }

◆ len_2()

size_t Botan::XMSS_WOTS_Parameters::len_2 ( ) const
inline

Definition at line 88 of file xmss_parameters.h.

88{ return m_len_2; }

◆ lg_w()

size_t Botan::XMSS_WOTS_Parameters::lg_w ( ) const
inline

The log2 of wots_parameter

Definition at line 82 of file xmss_parameters.h.

82{ return 4; }

◆ oid()

ots_algorithm_t Botan::XMSS_WOTS_Parameters::oid ( ) const
inline

Definition at line 90 of file xmss_parameters.h.

90{ return m_id; }

◆ operator=() [1/2]

XMSS_WOTS_Parameters & Botan::XMSS_WOTS_Parameters::operator= ( const XMSS_WOTS_Parameters & other)
default

◆ operator=() [2/2]

XMSS_WOTS_Parameters & Botan::XMSS_WOTS_Parameters::operator= ( XMSS_WOTS_Parameters && other)
defaultnoexcept

◆ operator==()

bool Botan::XMSS_WOTS_Parameters::operator== ( const XMSS_WOTS_Parameters & p) const
inline

Definition at line 95 of file xmss_parameters.h.

95{ return m_id == p.m_id; }

References XMSS_WOTS_Parameters().

◆ wots_parameter()

size_t Botan::XMSS_WOTS_Parameters::wots_parameter ( ) const
inline

The Winternitz parameter.

Returns
numeric base used for internal representation of data.

Fixed at 16 for this implementation.

Definition at line 77 of file xmss_parameters.h.

77{ return 16; }

The documentation for this class was generated from the following files: