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 11 void setLayerADRS(uint32_t adrs[8], uint32_t layer){ 12 adrs[0] = layer; 13 } 14 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 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 28 void setKeyAndMask(uint32_t adrs[8], uint32_t keyAndMask){ 29 adrs[7] = keyAndMask; 30 } 31 32 // OTS 33 34 void setOTSADRS(uint32_t adrs[8], uint32_t ots){ 35 adrs[4] = ots; 36 } 37 38 void setChainADRS(uint32_t adrs[8], uint32_t chain){ 39 adrs[5] = chain; 40 } 41 42 void setHashADRS(uint32_t adrs[8], uint32_t hash){ 43 adrs[6] = hash; 44 } 45 46 // L-tree 47 48 void setLtreeADRS(uint32_t adrs[8], uint32_t ltree){ 49 adrs[4] = ltree; 50 } 51 52 // Hash Tree & L-tree 53 54 void setTreeHeight(uint32_t adrs[8], uint32_t treeHeight){ 55 adrs[5] = treeHeight; 56 } 57 58 void setTreeIndex(uint32_t adrs[8], uint32_t treeIndex){ 59 adrs[6] = treeIndex; 60 } 61