Преглед на файлове

Unify keypair and seed_keypair

master
Joost Rijneveld преди 4 години
родител
ревизия
feed976315
No known key found for this signature in database GPG ключ ID: A4FE39CF49CBC553
променени са 3 файла, в които са добавени 10 реда и са изтрити 27 реда
  1. +1
    -1
      test/vectors.c
  2. +6
    -23
      xmss_core.c
  3. +3
    -3
      xmss_core.h

+ 1
- 1
test/vectors.c Целия файл

@@ -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));



+ 6
- 23
xmss_core.c Целия файл

@@ -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);

/* 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);
unsigned char seed[3 * 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;
}


+ 3
- 3
xmss_core.h Целия файл

@@ -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


Зареждане…
Отказ
Запис