diff options
Diffstat (limited to 'xmss_hash_address.c')
-rw-r--r-- | xmss_hash_address.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/xmss_hash_address.c b/xmss_hash_address.c new file mode 100644 index 000000000..223c6f8ab --- /dev/null +++ b/xmss_hash_address.c | |||
@@ -0,0 +1,59 @@ | |||
1 | /* | ||
2 | hash_address.c version 20160722 | ||
3 | Andreas Hülsing | ||
4 | Joost Rijneveld | ||
5 | Public domain. | ||
6 | */ | ||
7 | #include <stdint.h> | ||
8 | #include "xmss_hash_address.h" /* prototypes */ | ||
9 | |||
10 | void setLayerADRS(uint32_t adrs[8], uint32_t layer){ | ||
11 | adrs[0] = layer; | ||
12 | } | ||
13 | |||
14 | void setTreeADRS(uint32_t adrs[8], uint64_t tree){ | ||
15 | adrs[1] = (uint32_t) (tree >> 32); | ||
16 | adrs[2] = (uint32_t) tree; | ||
17 | } | ||
18 | |||
19 | void setType(uint32_t adrs[8], uint32_t type){ | ||
20 | adrs[3] = type; | ||
21 | int i; | ||
22 | for(i = 4; i < 8; i++){ | ||
23 | adrs[i] = 0; | ||
24 | } | ||
25 | } | ||
26 | |||
27 | void setKeyAndMask(uint32_t adrs[8], uint32_t keyAndMask){ | ||
28 | adrs[7] = keyAndMask; | ||
29 | } | ||
30 | |||
31 | // OTS | ||
32 | |||
33 | void setOTSADRS(uint32_t adrs[8], uint32_t ots){ | ||
34 | adrs[4] = ots; | ||
35 | } | ||
36 | |||
37 | void setChainADRS(uint32_t adrs[8], uint32_t chain){ | ||
38 | adrs[5] = chain; | ||
39 | } | ||
40 | |||
41 | void setHashADRS(uint32_t adrs[8], uint32_t hash){ | ||
42 | adrs[6] = hash; | ||
43 | } | ||
44 | |||
45 | // L-tree | ||
46 | |||
47 | void setLtreeADRS(uint32_t adrs[8], uint32_t ltree){ | ||
48 | adrs[4] = ltree; | ||
49 | } | ||
50 | |||
51 | // Hash Tree & L-tree | ||
52 | |||
53 | void setTreeHeight(uint32_t adrs[8], uint32_t treeHeight){ | ||
54 | adrs[5] = treeHeight; | ||
55 | } | ||
56 | |||
57 | void setTreeIndex(uint32_t adrs[8], uint32_t treeIndex){ | ||
58 | adrs[6] = treeIndex; | ||
59 | } | ||