Unify keypair and seed_keypair

This commit is contained in:
Joost Rijneveld 2020-05-25 13:04:02 +02:00
부모 27f2f6eb45
커밋 feed976315
No known key found for this signature in database
GPG 키 ID: A4FE39CF49CBC553
3개의 변경된 파일10개의 추가작업 그리고 27개의 파일을 삭제

파일 보기

@ -45,7 +45,7 @@ int vectors_xmss(uint32_t oid, int mt) {
seed[i] = i;
}
xmssmt_core_keypair2(&params, pk, sk, seed);
xmssmt_core_seed_keypair(&params, pk, sk, seed);
ull_to_bytes(sk, params.index_bytes, 1 << (params.full_height - 1));

파일 보기

@ -131,9 +131,9 @@ int xmss_core_sign(const xmss_params *params,
* Format sk: [(ceil(h/8) bit) index || SK_SEED || SK_PRF || root || PUB_SEED]
* Format pk: [root || PUB_SEED] omitting algorithm OID.
*/
int xmssmt_core_keypair2(const xmss_params *params,
unsigned char *pk, unsigned char *sk,
unsigned char *seed)
int xmssmt_core_seed_keypair(const xmss_params *params,
unsigned char *pk, unsigned char *sk,
unsigned char *seed)
{
/* We do not need the auth path in key generation, but it simplifies the
code to have just one treehash routine that computes both root and path
@ -168,27 +168,10 @@ int xmssmt_core_keypair2(const xmss_params *params,
int xmssmt_core_keypair(const xmss_params *params,
unsigned char *pk, unsigned char *sk)
{
/* We do not need the auth path in key generation, but it simplifies the
code to have just one treehash routine that computes both root and path
in one function. */
unsigned char auth_path[params->tree_height * params->n];
uint32_t top_tree_addr[8] = {0};
set_layer_addr(top_tree_addr, params->d - 1);
unsigned char seed[3 * params->n];
/* Initialize index to 0. */
memset(sk, 0, params->index_bytes);
sk += params->index_bytes;
/* Initialize SK_SEED and SK_PRF. */
randombytes(sk, 2 * params->n);
/* Initialize PUB_SEED. */
randombytes(sk + 3 * params->n, params->n);
memcpy(pk + params->n, sk + 3*params->n, params->n);
/* Compute root node of the top-most subtree. */
treehash(params, pk, auth_path, sk, pk + params->n, 0, top_tree_addr);
memcpy(sk + 2*params->n, pk, params->n);
randombytes(seed, 3 * params->n);
xmssmt_core_seed_keypair(params, pk, sk, seed);
return 0;
}

파일 보기

@ -52,9 +52,9 @@ int xmssmt_core_keypair(const xmss_params *params,
* Format sk: [(ceil(h/8) bit) index || SK_SEED || SK_PRF || root || PUB_SEED]
* Format pk: [root || PUB_SEED] omitting algorithm OID.
*/
int xmssmt_core_keypair2(const xmss_params *params,
unsigned char *pk, unsigned char *sk,
unsigned char *seed);
int xmssmt_core_seed_keypair(const xmss_params *params,
unsigned char *pk, unsigned char *sk,
unsigned char *seed);
/**
* Signs a message. Returns an array containing the signature followed by the