Ver a proveniência

Separate UI and test files

master
Joost Rijneveld há 7 anos
ascendente
cometimento
3c802756aa
Não foi encontrada uma chave conhecida para esta assinatura, na base de dados ID da chave GPG: A4FE39CF49CBC553
8 ficheiros alterados com 52 adições e 149 eliminações
  1. +6
    -6
      .gitignore
  2. +12
    -6
      Makefile
  3. +0
    -30
      test/xmssmt_keypair.c
  4. +0
    -47
      test/xmssmt_open.c
  5. +0
    -52
      test/xmssmt_sign.c
  6. +13
    -3
      ui/keypair.c
  7. +10
    -2
      ui/open.c
  8. +11
    -3
      ui/sign.c

+ 6
- 6
.gitignore Ver ficheiro

@@ -14,9 +14,9 @@ test/test_xmssmt_core_fast_XMSSMT*
test/test_determinism
test/speed
test/gen_testvectors
test/xmss_keypair
test/xmss_open
test/xmss_sign
test/xmssmt_keypair
test/xmssmt_open
test/xmssmt_sign
ui/xmss_keypair
ui/xmss_open
ui/xmss_sign
ui/xmssmt_keypair
ui/xmssmt_open
ui/xmssmt_sign

+ 12
- 6
Makefile Ver ficheiro

@@ -17,12 +17,12 @@ TESTS = test/test_wots \
test/test_xmssmt \
test/test_determinism \

UI = test/xmss_keypair \
test/xmss_sign \
test/xmss_open \
test/xmssmt_keypair \
test/xmssmt_sign \
test/xmssmt_open \
UI = ui/xmss_keypair \
ui/xmss_sign \
ui/xmss_open \
ui/xmssmt_keypair \
ui/xmssmt_sign \
ui/xmssmt_open \

all: $(TESTS) $(UI)

@@ -37,6 +37,12 @@ test/%: test/%.c $(SOURCES) $(OBJS) $(HEADERS)
test/test_wots: params.c hash.c fips202.c hash_address.c randombytes.c wots.c xmss_commons.c test/test_wots.c params.h hash.h fips202.h hash_address.h randombytes.h wots.h xmss_commons.h
$(CC) $(CFLAGS) params.c hash.c fips202.c hash_address.c randombytes.c wots.c xmss_commons.c test/test_wots.c -o $@ -lcrypto

ui/xmss_%: ui/%.c $(SOURCES) $(OBJS) $(HEADERS)
$(CC) $(CFLAGS) -o $@ $(SOURCES) $< $(LDLIBS)

ui/xmssmt_%: ui/%.c $(SOURCES) $(OBJS) $(HEADERS)
$(CC) -DXMSSMT $(CFLAGS) -o $@ $(SOURCES) $< $(LDLIBS)

clean:
-$(RM) $(TESTS)
-$(RM) $(UI)

+ 0
- 30
test/xmssmt_keypair.c Ver ficheiro

@@ -1,30 +0,0 @@
#include "../params.h"
#include "../xmss.h"
#include <stdio.h>
#include <stdint.h>

int main(int argc, char **argv)
{
xmss_params params;
uint32_t oid;

if (argc != 2) {
fprintf(stderr, "Expected parameter string (e.g. 'XMSS-SHA2_10_256')"
" as only parameter.\n"
"The keypair is written to stdout.\n");
return -1;
}

xmssmt_str_to_oid(&oid, argv[1]);
xmssmt_parse_oid(&params, oid);

unsigned char pk[XMSS_OID_LEN + params.pk_bytes];
unsigned char sk[XMSS_OID_LEN + params.sk_bytes];

xmssmt_keypair(pk, sk, oid);

fwrite(pk, 1, XMSS_OID_LEN + params.pk_bytes, stdout);
fwrite(sk, 1, XMSS_OID_LEN + params.sk_bytes, stdout);

fclose(stdout);
}

+ 0
- 47
test/xmssmt_open.c Ver ficheiro

@@ -1,47 +0,0 @@
#include "../params.h"
#include "../xmss_core.h"
#include <stdio.h>

#define MLEN 32

int main(int argc, char **argv) {
FILE *keypair;
xmss_params params;
uint32_t oid;
int ret;

if (argc != 2) {
fprintf(stderr, "Expected keypair filename as only parameter, "
"and the signature + message via stdin.\n"
"Keypair file needs only to contain the public key.\n"
"The return code 0 indicates verification success.\n");
return -1;
}

keypair = fopen(argv[1], "rb");
if (keypair == NULL) {
return -1;
}

fread(&oid, 1, XMSS_OID_LEN, keypair);
xmssmt_parse_oid(&params, oid);

unsigned char pk[params.pk_bytes];
unsigned char sm[params.sig_bytes + MLEN];
unsigned char m[params.sig_bytes + MLEN];
unsigned long long mlen;

fread(pk, 1, params.pk_bytes, keypair);
fread(sm, 1, params.sig_bytes + MLEN, stdin);

ret = xmssmt_core_sign_open(&params, m, &mlen, sm, params.sig_bytes + MLEN, pk);

if (ret) {
printf("Verification failed!\n");
}
else {
printf("Verification succeeded.\n");
}

return ret;
}

+ 0
- 52
test/xmssmt_sign.c Ver ficheiro

@@ -1,52 +0,0 @@
#include "../params.h"
#include "../xmss_core.h"
#include <stdio.h>

#define MLEN 32

int main(int argc, char **argv) {
FILE *keypair;
xmss_params params;
uint32_t oid_pk;
uint32_t oid_sk;

if (argc != 2) {
fprintf(stderr, "Expected keypair filename as only parameter, "
"and the message via stdin.\n"
"The keypair is updated with the changed state, "
"and the message + signature is output via stdout.\n");
return -1;
}

keypair = fopen(argv[1], "r+b");
if (keypair == NULL) {
fprintf(stderr, "Could not open keypair file.\n");
return -1;
}

/* Read the OID from the public key, as we need its length to seek past it. */
fread(&oid_pk, 1, XMSS_OID_LEN, keypair);
xmssmt_parse_oid(&params, oid_pk);

/* fseek past the public key. */
fseek(keypair, params.pk_bytes, SEEK_CUR);
/* This is the OID we're actually going to use. Likely the same, but still.. */
fread(&oid_sk, 1, XMSS_OID_LEN, keypair);
xmssmt_parse_oid(&params, oid_sk);

unsigned char sk[params.sk_bytes];
unsigned char m[MLEN];
unsigned char sm[params.sig_bytes + MLEN];
unsigned long long smlen;

fread(sk, 1, params.sk_bytes, keypair);
fread(m, 1, MLEN, stdin);
xmssmt_core_sign(&params, sk, sm, &smlen, m, MLEN);

fseek(keypair, -((long int)params.sk_bytes), SEEK_CUR);
fwrite(sk, 1, params.sk_bytes, keypair);
fwrite(sm, 1, params.sig_bytes + MLEN, stdout);

fclose(keypair);
fclose(stdout);
}

test/xmss_keypair.c → ui/keypair.c Ver ficheiro

@@ -3,6 +3,16 @@
#include <stdio.h>
#include <stdint.h>

#ifdef XMSSMT
#define XMSS_STR_TO_OID xmssmt_str_to_oid
#define XMSS_PARSE_OID xmssmt_parse_oid
#define XMSS_KEYPAIR xmssmt_keypair
#else
#define XMSS_STR_TO_OID xmss_str_to_oid
#define XMSS_PARSE_OID xmss_parse_oid
#define XMSS_KEYPAIR xmss_keypair
#endif

int main(int argc, char **argv)
{
xmss_params params;
@@ -15,13 +25,13 @@ int main(int argc, char **argv)
return -1;
}

xmss_str_to_oid(&oid, argv[1]);
xmss_parse_oid(&params, oid);
XMSS_STR_TO_OID(&oid, argv[1]);
XMSS_PARSE_OID(&params, oid);

unsigned char pk[XMSS_OID_LEN + params.pk_bytes];
unsigned char sk[XMSS_OID_LEN + params.sk_bytes];

xmss_keypair(pk, sk, oid);
XMSS_KEYPAIR(pk, sk, oid);

fwrite(pk, 1, XMSS_OID_LEN + params.pk_bytes, stdout);
fwrite(sk, 1, XMSS_OID_LEN + params.sk_bytes, stdout);

test/xmss_open.c → ui/open.c Ver ficheiro

@@ -4,6 +4,14 @@

#define MLEN 32

#ifdef XMSSMT
#define XMSS_PARSE_OID xmssmt_parse_oid
#define XMSS_CORE_SIGN_OPEN xmssmt_core_sign_open
#else
#define XMSS_PARSE_OID xmss_parse_oid
#define XMSS_CORE_SIGN_OPEN xmss_core_sign_open
#endif

int main(int argc, char **argv) {
FILE *keypair;
xmss_params params;
@@ -24,7 +32,7 @@ int main(int argc, char **argv) {
}

fread(&oid, 1, XMSS_OID_LEN, keypair);
xmss_parse_oid(&params, oid);
XMSS_PARSE_OID(&params, oid);

unsigned char pk[params.pk_bytes];
unsigned char sm[params.sig_bytes + MLEN];
@@ -34,7 +42,7 @@ int main(int argc, char **argv) {
fread(pk, 1, params.pk_bytes, keypair);
fread(sm, 1, params.sig_bytes + MLEN, stdin);

ret = xmss_core_sign_open(&params, m, &mlen, sm, params.sig_bytes + MLEN, pk);
ret = XMSS_CORE_SIGN_OPEN(&params, m, &mlen, sm, params.sig_bytes + MLEN, pk);

if (ret) {
printf("Verification failed!\n");

test/xmss_sign.c → ui/sign.c Ver ficheiro

@@ -4,6 +4,14 @@

#define MLEN 32

#ifdef XMSSMT
#define XMSS_PARSE_OID xmssmt_parse_oid
#define XMSS_CORE_SIGN xmssmt_core_sign
#else
#define XMSS_PARSE_OID xmss_parse_oid
#define XMSS_CORE_SIGN xmss_core_sign
#endif

int main(int argc, char **argv) {
FILE *keypair;
xmss_params params;
@@ -26,13 +34,13 @@ int main(int argc, char **argv) {

/* Read the OID from the public key, as we need its length to seek past it */
fread(&oid_pk, 1, XMSS_OID_LEN, keypair);
xmss_parse_oid(&params, oid_pk);
XMSS_PARSE_OID(&params, oid_pk);

/* fseek past the public key */
fseek(keypair, params.pk_bytes, SEEK_CUR);
/* This is the OID we're actually going to use. Likely the same, but still. */
fread(&oid_sk, 1, XMSS_OID_LEN, keypair);
xmss_parse_oid(&params, oid_sk);
XMSS_PARSE_OID(&params, oid_sk);

unsigned char sk[params.sk_bytes];
unsigned char m[MLEN];
@@ -41,7 +49,7 @@ int main(int argc, char **argv) {

fread(sk, 1, params.sk_bytes, keypair);
fread(m, 1, MLEN, stdin);
xmss_core_sign(&params, sk, sm, &smlen, m, MLEN);
XMSS_CORE_SIGN(&params, sk, sm, &smlen, m, MLEN);

fseek(keypair, -((long int)params.sk_bytes), SEEK_CUR);
fwrite(sk, 1, params.sk_bytes, keypair);

Carregando…
Cancelar
Guardar