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