xmss-KAT-generator/hash_address.c
Joost Rijneveld d9a9723125
Combine auth path and keygen root functions
This greatly reduces the memory comsumption of the auth path
computation, since it now also uses treehash. It prevents
duplicate code by re-using the treehash function.

A downside is that it does also pick out the authentication path
during key generation (while it is not used), but this cost is
negligible.
2017-10-24 11:53:45 +02:00

71 行
1.2 KiB
C

#include <stdint.h>
void set_layer_addr(uint32_t addr[8], uint32_t layer)
{
addr[0] = layer;
}
void set_tree_addr(uint32_t addr[8], uint64_t tree)
{
addr[1] = (uint32_t) (tree >> 32);
addr[2] = (uint32_t) tree;
}
void set_type(uint32_t addr[8], uint32_t type)
{
int i;
addr[3] = type;
for (i = 4; i < 8; i++) {
addr[i] = 0;
}
}
void set_key_and_mask(uint32_t addr[8], uint32_t key_and_mask)
{
addr[7] = key_and_mask;
}
void copy_subtree_addr(uint32_t out[8], const uint32_t in[8])
{
out[0] = in[0];
out[1] = in[1];
out[2] = in[2];
}
/* These functions are used for OTS addresses. */
void set_ots_addr(uint32_t addr[8], uint32_t ots)
{
addr[4] = ots;
}
void set_chain_addr(uint32_t addr[8], uint32_t chain)
{
addr[5] = chain;
}
void set_hash_addr(uint32_t addr[8], uint32_t hash)
{
addr[6] = hash;
}
/* This function is used for L-tree addresses. */
void set_ltree_addr(uint32_t addr[8], uint32_t ltree)
{
addr[4] = ltree;
}
/* These functions are used for hash tree addresses. */
void set_tree_height(uint32_t addr[8], uint32_t treeHeight)
{
addr[5] = treeHeight;
}
void set_tree_index(uint32_t addr[8], uint32_t treeIndex)
{
addr[6] = treeIndex;
}