1 #ifndef PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_ADDRESS_H 2 #define PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_ADDRESS_H 3 4 #include <stdint.h> 5 6 #define PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_ADDR_TYPE_WOTS 0 7 #define PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_ADDR_TYPE_WOTSPK 1 8 #define PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_ADDR_TYPE_HASHTREE 2 9 #define PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_ADDR_TYPE_FORSTREE 3 10 #define PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_ADDR_TYPE_FORSPK 4 11 12 void PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_addr_to_bytes( 13 unsigned char *bytes, const uint32_t addr[8]); 14 15 void PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_set_layer_addr( 16 uint32_t addr[8], uint32_t layer); 17 18 void PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_set_tree_addr( 19 uint32_t addr[8], uint64_t tree); 20 21 void PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_set_type( 22 uint32_t addr[8], uint32_t type); 23 24 /* Copies the layer and tree part of one address into the other */ 25 void PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_copy_subtree_addr( 26 uint32_t out[8], const uint32_t in[8]); 27 28 /* These functions are used for WOTS and FORS addresses. */ 29 30 void PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_set_keypair_addr( 31 uint32_t addr[8], uint32_t keypair); 32 33 void PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_set_chain_addr( 34 uint32_t addr[8], uint32_t chain); 35 36 void PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_set_hash_addr( 37 uint32_t addr[8], uint32_t hash); 38 39 void PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_copy_keypair_addr( 40 uint32_t out[8], const uint32_t in[8]); 41 42 /* These functions are used for all hash tree addresses (including FORS). */ 43 44 void PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_set_tree_height( 45 uint32_t addr[8], uint32_t tree_height); 46 47 void PQCLEAN_SPHINCSHARAKA192SROBUST_CLEAN_set_tree_index( 48 uint32_t addr[8], uint32_t tree_index); 49 50 #endif 51