#ifndef SPX_ADDRESS_H #define SPX_ADDRESS_H #include #include "params.h" /* The hash types that are passed to set_type */ #define SPX_ADDR_TYPE_WOTS 0 #define SPX_ADDR_TYPE_WOTSPK 1 #define SPX_ADDR_TYPE_HASHTREE 2 #define SPX_ADDR_TYPE_FORSTREE 3 #define SPX_ADDR_TYPE_FORSPK 4 #define SPX_ADDR_TYPE_WOTSPRF 5 #define SPX_ADDR_TYPE_FORSPRF 6 #define set_layer_addr SPX_NAMESPACE(set_layer_addr) void set_layer_addr(uint32_t addr[8], uint32_t layer); #define set_tree_addr SPX_NAMESPACE(set_tree_addr) void set_tree_addr(uint32_t addr[8], uint64_t tree); #define set_type SPX_NAMESPACE(set_type) void set_type(uint32_t addr[8], uint32_t type); /* Copies the layer and tree part of one address into the other */ #define copy_subtree_addr SPX_NAMESPACE(copy_subtree_addr) void copy_subtree_addr(uint32_t out[8], const uint32_t in[8]); /* These functions are used for WOTS and FORS addresses. */ #define set_keypair_addr SPX_NAMESPACE(set_keypair_addr) void set_keypair_addr(uint32_t addr[8], uint32_t keypair); #define set_chain_addr SPX_NAMESPACE(set_chain_addr) void set_chain_addr(uint32_t addr[8], uint32_t chain); #define set_hash_addr SPX_NAMESPACE(set_hash_addr) void set_hash_addr(uint32_t addr[8], uint32_t hash); #define copy_keypair_addr SPX_NAMESPACE(copy_keypair_addr) void copy_keypair_addr(uint32_t out[8], const uint32_t in[8]); /* These functions are used for all hash tree addresses (including FORS). */ #define set_tree_height SPX_NAMESPACE(set_tree_height) void set_tree_height(uint32_t addr[8], uint32_t tree_height); #define set_tree_index SPX_NAMESPACE(set_tree_index) void set_tree_index(uint32_t addr[8], uint32_t tree_index); #endif