2015-08-11 11:08:27 +01:00
|
|
|
#include <stdio.h>
|
2016-07-11 10:15:16 +01:00
|
|
|
#include <math.h>
|
|
|
|
#include <stdint.h>
|
2015-08-11 11:08:27 +01:00
|
|
|
#include "../wots.h"
|
2017-07-22 15:27:02 +01:00
|
|
|
#include "../hash.h"
|
2015-08-11 11:08:27 +01:00
|
|
|
#include "../randombytes.h"
|
|
|
|
|
|
|
|
static void hexdump(unsigned char *a, size_t len)
|
|
|
|
{
|
|
|
|
size_t i;
|
|
|
|
for (i = 0; i < len; i++)
|
|
|
|
printf("%02x", a[i]);
|
|
|
|
}
|
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
2015-10-28 14:49:46 +00:00
|
|
|
int n = 32;
|
|
|
|
unsigned char seed[n];
|
|
|
|
unsigned char pub_seed[n];
|
|
|
|
wots_params params;
|
2017-07-22 15:27:02 +01:00
|
|
|
wots_set_params(¶ms, n, 16, XMSS_SHA2);
|
2015-08-11 11:08:27 +01:00
|
|
|
|
2015-10-28 14:49:46 +00:00
|
|
|
int sig_len = params.len*params.n;
|
2015-08-11 11:08:27 +01:00
|
|
|
|
2015-10-28 14:49:46 +00:00
|
|
|
unsigned char pk1[sig_len];
|
|
|
|
unsigned char pk2[sig_len];
|
|
|
|
unsigned char sig[sig_len];
|
2016-07-11 10:15:16 +01:00
|
|
|
uint32_t addr[8] = {1,2,3,4};
|
2015-08-11 11:08:27 +01:00
|
|
|
|
2015-10-28 14:49:46 +00:00
|
|
|
unsigned char msg[n];
|
2015-08-11 11:08:27 +01:00
|
|
|
int i;
|
|
|
|
|
2015-10-28 14:49:46 +00:00
|
|
|
randombytes(seed, n);
|
|
|
|
randombytes(pub_seed, n);
|
|
|
|
randombytes(msg, n);
|
2015-08-11 11:08:27 +01:00
|
|
|
//randombytes(addr, 16);
|
|
|
|
|
|
|
|
wots_pkgen(pk1, seed, ¶ms, pub_seed, addr);
|
|
|
|
wots_sign(sig, msg, seed, ¶ms, pub_seed, addr);
|
|
|
|
wots_pkFromSig(pk2, sig, msg, ¶ms, pub_seed, addr);
|
|
|
|
|
2016-02-02 13:06:43 +00:00
|
|
|
for (i = 0; i < sig_len; i++)
|
|
|
|
if (pk1[i] != pk2[i]) {
|
2015-08-12 13:37:49 +01:00
|
|
|
printf("pk1 != pk2 %d\n",i);
|
2015-08-11 11:08:27 +01:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
printf("worked great!\npk1: ");
|
|
|
|
hexdump(pk1, sig_len);
|
|
|
|
printf("\npk2: ");
|
|
|
|
hexdump(pk2, sig_len);
|
|
|
|
printf("\nsig: ");
|
|
|
|
hexdump(sig, sig_len);
|
|
|
|
printf("\n");
|
2016-02-02 13:06:43 +00:00
|
|
|
|
2015-08-11 11:08:27 +01:00
|
|
|
return 0;
|
|
|
|
}
|