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