1 /* $NetBSD: xmss_hash_address.c,v 1.2 2018/04/06 18:59:00 christos Exp $ */
2 /* $OpenBSD: xmss_hash_address.c,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */
3 /*
4 hash_address.c version 20160722
5 Andreas Hülsing
6 Joost Rijneveld
7 Public domain.
8 */
9 #include "includes.h"
10 __RCSID("$NetBSD: xmss_hash_address.c,v 1.2 2018/04/06 18:59:00 christos Exp $");
11 #include <stdint.h>
12 #include "xmss_hash_address.h" /* prototypes */
13
setLayerADRS(uint32_t adrs[8],uint32_t layer)14 void setLayerADRS(uint32_t adrs[8], uint32_t layer){
15 adrs[0] = layer;
16 }
17
setTreeADRS(uint32_t adrs[8],uint64_t tree)18 void setTreeADRS(uint32_t adrs[8], uint64_t tree){
19 adrs[1] = (uint32_t) (tree >> 32);
20 adrs[2] = (uint32_t) tree;
21 }
22
setType(uint32_t adrs[8],uint32_t type)23 void setType(uint32_t adrs[8], uint32_t type){
24 adrs[3] = type;
25 int i;
26 for(i = 4; i < 8; i++){
27 adrs[i] = 0;
28 }
29 }
30
setKeyAndMask(uint32_t adrs[8],uint32_t keyAndMask)31 void setKeyAndMask(uint32_t adrs[8], uint32_t keyAndMask){
32 adrs[7] = keyAndMask;
33 }
34
35 // OTS
36
setOTSADRS(uint32_t adrs[8],uint32_t ots)37 void setOTSADRS(uint32_t adrs[8], uint32_t ots){
38 adrs[4] = ots;
39 }
40
setChainADRS(uint32_t adrs[8],uint32_t chain)41 void setChainADRS(uint32_t adrs[8], uint32_t chain){
42 adrs[5] = chain;
43 }
44
setHashADRS(uint32_t adrs[8],uint32_t hash)45 void setHashADRS(uint32_t adrs[8], uint32_t hash){
46 adrs[6] = hash;
47 }
48
49 // L-tree
50
setLtreeADRS(uint32_t adrs[8],uint32_t ltree)51 void setLtreeADRS(uint32_t adrs[8], uint32_t ltree){
52 adrs[4] = ltree;
53 }
54
55 // Hash Tree & L-tree
56
setTreeHeight(uint32_t adrs[8],uint32_t treeHeight)57 void setTreeHeight(uint32_t adrs[8], uint32_t treeHeight){
58 adrs[5] = treeHeight;
59 }
60
setTreeIndex(uint32_t adrs[8],uint32_t treeIndex)61 void setTreeIndex(uint32_t adrs[8], uint32_t treeIndex){
62 adrs[6] = treeIndex;
63 }
64