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