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