1 #include <stdint.h>
2
3 #include "address.h"
4 #include "params.h"
5 #include "utils.h"
6
PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_addr_to_bytes(unsigned char * bytes,const uint32_t addr[8])7 void PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_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_SPHINCSSHA256128FROBUST_AVX2_ull_to_bytes(
13 bytes + i * 4, 4, addr[i]);
14 }
15 }
16
PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_layer_addr(uint32_t addr[8],uint32_t layer)17 void PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_layer_addr(
18 uint32_t addr[8], uint32_t layer) {
19 addr[0] = layer;
20 }
21
PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_tree_addr(uint32_t addr[8],uint64_t tree)22 void PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_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
PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_type(uint32_t addr[8],uint32_t type)29 void PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_type(
30 uint32_t addr[8], uint32_t type) {
31 addr[4] = type;
32 }
33
PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_copy_subtree_addr(uint32_t out[8],const uint32_t in[8])34 void PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_copy_subtree_addr(
35 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
PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_keypair_addr(uint32_t addr[8],uint32_t keypair)44 void PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_keypair_addr(
45 uint32_t addr[8], uint32_t keypair) {
46 addr[5] = keypair;
47 }
48
PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_copy_keypair_addr(uint32_t out[8],const uint32_t in[8])49 void PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_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
PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_chain_addr(uint32_t addr[8],uint32_t chain)58 void PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_chain_addr(
59 uint32_t addr[8], uint32_t chain) {
60 addr[6] = chain;
61 }
62
PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_hash_addr(uint32_t addr[8],uint32_t hash)63 void PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_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). */
69
PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_tree_height(uint32_t addr[8],uint32_t tree_height)70 void PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_tree_height(
71 uint32_t addr[8], uint32_t tree_height) {
72 addr[6] = tree_height;
73 }
74
PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_tree_index(uint32_t addr[8],uint32_t tree_index)75 void PQCLEAN_SPHINCSSHA256128FROBUST_AVX2_set_tree_index(
76 uint32_t addr[8], uint32_t tree_index) {
77 addr[7] = tree_index;
78 }
79