diff --git a/params.c b/params.c index f947e70..4e0f484 100644 --- a/params.c +++ b/params.c @@ -456,7 +456,8 @@ int xmssmt_parse_oid(xmss_params *params, const uint32_t oid) params->wots_len2 = 3; params->wots_len = params->wots_len1 + params->wots_len2; params->wots_keysize = params->wots_len * params->n; - params->index_len = 4; + /* Round index_len up to nearest byte. */ + params->index_len = (params->full_height + 7) / 8; params->bytes = (params->index_len + params->n + params->d*params->wots_keysize + params->full_height *params->n); params->publickey_bytes = 2*params->n; diff --git a/xmss_core.c b/xmss_core.c index d996233..2410d57 100644 --- a/xmss_core.c +++ b/xmss_core.c @@ -176,7 +176,7 @@ int xmssmt_core_keypair(const xmss_params *params, /* Initialize index to 0. */ memset(sk, 0, params->index_len); - sk += 4; + sk += params->index_len; /* Initialize SK_SEED, SK_PRF and PUB_SEED. */ randombytes(sk, 3 * params->n);