1 #include <stdint.h> 2 3 #include "address.h" 4 #include "params.h" 5 #include "utils.h" 6 7 void PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_addr_to_bytes( 8 unsigned char *bytes, const uint32_t addr[8]) { 9 int i; 10 11 for (i = 0; i < 8; i++) { 12 PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_ull_to_bytes( 13 bytes + i * 4, 4, addr[i]); 14 } 15 } 16 17 void PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_set_layer_addr( 18 uint32_t addr[8], uint32_t layer) { 19 addr[0] = layer; 20 } 21 22 void PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_set_tree_addr( 23 uint32_t addr[8], uint64_t tree) { 24 addr[1] = 0; 25 addr[2] = (uint32_t) (tree >> 32); 26 addr[3] = (uint32_t) tree; 27 } 28 29 void PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_set_type( 30 uint32_t addr[8], uint32_t type) { 31 addr[4] = type; 32 } 33 34 void PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_copy_subtree_addr( RecordPrefixRecordPrefix35 uint32_t out[8], const uint32_t in[8]) { 36 out[0] = in[0]; 37 out[1] = in[1]; 38 out[2] = in[2]; 39 out[3] = in[3]; 40 } 41 42 /* These functions are used for OTS addresses. */ 43 44 void PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_set_keypair_addr( 45 uint32_t addr[8], uint32_t keypair) { consume(BinaryStreamReader & Reader)46 addr[5] = keypair; 47 } 48 49 void PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_copy_keypair_addr( 50 uint32_t out[8], const uint32_t in[8]) { 51 out[0] = in[0]; 52 out[1] = in[1]; 53 out[2] = in[2]; 54 out[3] = in[3]; 55 out[5] = in[5]; 56 } 57 58 void PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_set_chain_addr( 59 uint32_t addr[8], uint32_t chain) { 60 addr[6] = chain; 61 } 62 63 void PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_set_hash_addr( 64 uint32_t addr[8], uint32_t hash) { 65 addr[7] = hash; 66 } 67 68 /* These functions are used for all hash tree addresses (including FORS). */ consume(BinaryStreamReader & Reader,T * & Item)69 70 void PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_set_tree_height( 71 uint32_t addr[8], uint32_t tree_height) { 72 addr[6] = tree_height; 73 } serialize_conditional_implserialize_conditional_impl74 75 void PQCLEAN_SPHINCSSHA256256SSIMPLE_CLEAN_set_tree_index( 76 uint32_t addr[8], uint32_t tree_index) { 77 addr[7] = tree_index; 78 } 79