Botan
2.1.0
Crypto and TLS for C++11
|
#include <xmss_address.h>
Public Types | |
enum | Key_Mask : uint8_t { Key_Mask::Key_Mode = 0, Key_Mask::Mask_Mode = 1, Key_Mask::Mask_MSB_Mode = 1, Key_Mask::Mask_LSB_Mode = 2 } |
enum | Type : uint8_t { Type::None = 255, Type::OTS_Hash_Address = 0, Type::LTree_Address = 1, Type::Hash_Tree_Address = 2 } |
Public Member Functions | |
const secure_vector< uint8_t > & | bytes () const |
secure_vector< uint8_t > & | bytes () |
uint32_t | get_chain_address () const |
uint32_t | get_hash_address () const |
Key_Mask | get_key_mask_mode () const |
uint8_t | get_layer_addr () const |
uint32_t | get_ltree_address () const |
uint32_t | get_ots_address () const |
uint64_t | get_tree_addr () const |
uint32_t | get_tree_height () const |
uint32_t | get_tree_index () const |
Type | get_type () const |
void | set_chain_address (uint32_t value) |
void | set_hash_address (uint32_t value) |
void | set_key_mask_mode (Key_Mask value) |
void | set_layer_addr () |
void | set_ltree_address (uint32_t value) |
void | set_ots_address (uint32_t value) |
void | set_tree_addr () |
void | set_tree_height (uint32_t value) |
void | set_tree_index (uint32_t value) |
void | set_type (Type type) |
size_t | size () const |
XMSS_Address () | |
XMSS_Address (Type type) | |
XMSS_Address (const secure_vector< uint8_t > &data) | |
XMSS_Address (secure_vector< uint8_t > &&data) | |
Protected Attributes | |
secure_vector< uint8_t > | m_data |
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().
Definition at line 23 of file xmss_address.h.
|
strong |
The available modes for an XMSS Address:
Enumerator | |
---|---|
Key_Mode | |
Mask_Mode | |
Mask_MSB_Mode | |
Mask_LSB_Mode |
Definition at line 47 of file xmss_address.h.
|
strong |
Distinct types an XMSS_Address can represent. The available types are specified in [1] - 2.5 Hash Function Address Scheme.
Enumerator | |
---|---|
None | |
OTS_Hash_Address | |
LTree_Address | |
Hash_Tree_Address |
Definition at line 30 of file xmss_address.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 326 of file xmss_address.h.
References m_data.
Referenced by Botan::XMSS_WOTS_Common_Ops::chain(), Botan::XMSS_WOTS_PublicKey::chain(), Botan::XMSS_WOTS_PrivateKey::operator[](), and Botan::XMSS_Common_Ops::randomize_tree_hash().
|
inline |
|
inline |
Retrieve the chain address. A call to this method is only valid, if the address type is set to Type::OTS_Hash_Address.
Definition at line 210 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), and OTS_Hash_Address.
|
inline |
Retrieves the address of the hash function call within the chain. A call to this method is only valid, if the address type is set to Type::OTS_Hash_Address.
Definition at line 271 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), and OTS_Hash_Address.
|
inline |
Retrieves the mode the address os currently set to. (See XMSS_Address::Key_Mask for details.)
Definition at line 125 of file xmss_address.h.
References m_data.
|
inline |
Layer Address for XMSS is constantly zero and can not be changed this property is only of relevance to XMSS_MT.
Definition at line 61 of file xmss_address.h.
|
inline |
Retrieves the index of the leaf computed with this LTree. A call to this method is only valid, if the address type is set to Type::LTree_Address.
Definition at line 181 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), and LTree_Address.
|
inline |
Retrieve the index of the OTS key pair within the tree. A call to this method is only valid, if the address type is set to Type::OTS_Hash_Address.
Definition at line 151 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), and OTS_Hash_Address.
|
inline |
Tree Address for XMSS is constantly zero and can not be changed this property is only of relevance to XMSS_MT.
Definition at line 79 of file xmss_address.h.
|
inline |
Retrieves the height of the tree node to be computed within the tree. A call to this method is only valid, if the address type is set to Type::LTree_Address or Type::Hash_Tree_Address.
Definition at line 239 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), Hash_Tree_Address, and LTree_Address.
Referenced by Botan::XMSS_Common_Ops::create_l_tree(), and Botan::XMSS_PrivateKey::tree_hash().
|
inline |
Retrieves the index of the tree node at current tree height in the tree. A call to this method is only valid, if the address type is set to Type::LTree_Address or Type::Hash_Tree_Address.
Definition at line 301 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), Hash_Tree_Address, and LTree_Address.
Referenced by Botan::XMSS_PrivateKey::tree_hash().
|
inline |
retrieves the logical type currently assigned to the XMSS Address instance.
Definition at line 98 of file xmss_address.h.
References m_data.
Referenced by get_chain_address(), get_hash_address(), get_ltree_address(), get_ots_address(), get_tree_height(), get_tree_index(), set_chain_address(), set_hash_address(), set_key_mask_mode(), set_ltree_address(), set_ots_address(), set_tree_height(), and set_tree_index().
|
inline |
Set the chain address. A call to this method is only valid, if the address type is set to Type::OTS_Hash_Address.
Definition at line 224 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), and OTS_Hash_Address.
Referenced by Botan::XMSS_WOTS_PrivateKey::generate_public_key(), and Botan::XMSS_WOTS_PrivateKey::sign().
|
inline |
Sets the address of the hash function call within the chain. A call to this method is only valid, if the address type is set to Type::OTS_Hash_Address.
value | address of the hash function call within chain. |
Definition at line 286 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), and OTS_Hash_Address.
Referenced by Botan::XMSS_WOTS_Common_Ops::chain(), and Botan::XMSS_WOTS_PublicKey::chain().
|
inline |
Changes the mode the address currently used address mode. (XMSS_Address::Key_Mask for details.)
value | Target mode. |
Definition at line 136 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), m_data, Mask_LSB_Mode, and OTS_Hash_Address.
Referenced by Botan::XMSS_WOTS_Common_Ops::chain(), Botan::XMSS_WOTS_PublicKey::chain(), and Botan::XMSS_Common_Ops::randomize_tree_hash().
|
inline |
Layer Address for XMSS is constantly zero and can not be changed this property is only of relevance to XMSS_MT. Calling this method for XMSS will result in an error.
Definition at line 68 of file xmss_address.h.
References BOTAN_ASSERT.
|
inline |
Sets the index of the leaf computed with this LTree. A call to this method is only valid, if the address type is set to Type::LTree_Address.
value | index of the leaf. |
Definition at line 196 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), and LTree_Address.
Referenced by Botan::XMSS_PrivateKey::tree_hash().
|
inline |
Sets the index of the OTS key pair within the tree. A call to this method is only valid, if the address type is set to Type::OTS_Hash_Address.
value | index of OTS key pair. |
Definition at line 166 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), and OTS_Hash_Address.
Referenced by Botan::XMSS_PrivateKey::tree_hash().
|
inline |
Tree Address for XMSS is constantly zero and can not be changed this property is only of relevance to XMSS_MT. Calling this method for XMSS will result in an error.
Definition at line 86 of file xmss_address.h.
References BOTAN_ASSERT.
|
inline |
Sets the height of the tree node to be computed within the tree. A call to this method is only valid, if the address type is set to Type::LTree_Address or Type::Hash_Tree_Address.
value | height of the tree node. |
Definition at line 255 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), Hash_Tree_Address, and LTree_Address.
Referenced by Botan::XMSS_Common_Ops::create_l_tree(), and Botan::XMSS_PrivateKey::tree_hash().
|
inline |
Sets the index of the tree node at current tree height in the tree. A call to this method is only valid, if the address type is set to Type::LTree_Address or Type::Hash_Tree_Address.
value | index of the tree node at current height. |
Definition at line 317 of file xmss_address.h.
References BOTAN_ASSERT, get_type(), Hash_Tree_Address, and LTree_Address.
Referenced by Botan::XMSS_Common_Ops::create_l_tree(), and Botan::XMSS_PrivateKey::tree_hash().
|
inline |
Changes the logical type currently assigned to the XMSS Address instance. Please note that changing the type will automatically reset the 128 LSBs of the Address to zero. This affects the key_mask_mode property as well as all properties identified by XMSS_Address::Property.
type | Type that shall be assigned to the address (OTS_Hash_Address, LTree_Address or Hash_Tree_Address) |
Definition at line 113 of file xmss_address.h.
Referenced by Botan::XMSS_PrivateKey::tree_hash(), and XMSS_Address().
|
inline |
Definition at line 339 of file xmss_address.h.
References m_data.
|
protected |
Definition at line 369 of file xmss_address.h.
Referenced by bytes(), get_key_mask_mode(), get_type(), set_key_mask_mode(), set_type(), size(), and XMSS_Address().