diff options
| author | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2019-03-15 17:25:56 +0100 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2019-03-15 17:25:56 +0100 |
| commit | e744e3907713a073100cfe96769fe235b1bf50b8 (patch) | |
| tree | a5a3269f03aa834f76e31de12d7694a203484082 /test/felics | |
| parent | a28cc2d84f3a0411a9e6cd6c786bd114e9aa2b06 (diff) | |
| download | lilliput-ae-implem-e744e3907713a073100cfe96769fe235b1bf50b8.tar.xz | |
[felics] Automatisation de la mise à jour des vecteurs FELICS
Diffstat (limited to 'test/felics')
| -rw-r--r-- | test/felics/Makefile | 4 | ||||
| -rw-r--r-- | test/felics/make-vector.c | 41 | ||||
| -rwxr-xr-x | test/felics/make-vectors.sh | 20 |
3 files changed, 50 insertions, 15 deletions
diff --git a/test/felics/Makefile b/test/felics/Makefile index e6a2e91..71728f2 100644 --- a/test/felics/Makefile +++ b/test/felics/Makefile @@ -1,5 +1,5 @@ define usage -$(error usage: make vector mode=[i|ii] keylen=[128|192|256]) +$(error usage: make vector mode=[i|ii] keylen=[128|192|256] [output=OUTPUT]) endef ifndef mode @@ -15,7 +15,7 @@ include ../common.mk vector: $(results_dir)/felics-make-vector | $(results_dir) - $(results_dir)/felics-make-vector 16 16 + $(results_dir)/felics-make-vector 16 16 $(output) $(results_dir)/felics-make-vector: $(results_dir)/felics-make-vector.o \ diff --git a/test/felics/make-vector.c b/test/felics/make-vector.c index 1abe088..b222f90 100644 --- a/test/felics/make-vector.c +++ b/test/felics/make-vector.c @@ -6,10 +6,21 @@ #include "lilliput-ae.h" -void parse_arguments(char const* const* argv, size_t* plaintext_len, size_t* auth_len) +void parse_arguments( + size_t argc, + char const* const* argv, + size_t* plaintext_len, + size_t* auth_len, + FILE** output +) { sscanf(argv[1], "%zu", plaintext_len); sscanf(argv[2], "%zu", auth_len); + + if (argc > 3) + *output = fopen(argv[3], "w"); + else + *output = stdout; } void init_buffer(size_t len, uint8_t buf[len]) @@ -18,25 +29,26 @@ void init_buffer(size_t len, uint8_t buf[len]) buf[i] = i; } -void dump_buffer(const char* header, size_t len, const uint8_t buf[len]) +void dump_buffer(FILE* output, const char* header, size_t len, const uint8_t buf[len]) { - printf("%s = { ", header); + fprintf(output, "%s = { ", header); for (const uint8_t* b=buf; b<buf+len-1; b++) - printf("0x%02x, ", *b); - printf("0x%02x };\n", buf[len-1]); + fprintf(output, "0x%02x, ", *b); + fprintf(output, "0x%02x };\n", buf[len-1]); } int main(int argc, char const* const* argv) { - if (argc != 3) + if (argc < 3) { - fprintf(stderr, "usage: %s PLAINTEXT-LEN AUTHDATA-LEN\n", argv[0]); + fprintf(stderr, "usage: %s PLAINTEXT-LEN AUTHDATA-LEN [OUTPUT]\n", argv[0]); return 1; } size_t plaintext_len; size_t auth_len; - parse_arguments(argv, &plaintext_len, &auth_len); + FILE* output; + parse_arguments(argc, argv, &plaintext_len, &auth_len, &output); uint8_t plaintext[plaintext_len]; uint8_t auth[auth_len]; @@ -55,8 +67,13 @@ int main(int argc, char const* const* argv) key, nonce, ciphertext, ciphertext+plaintext_len ); - dump_buffer("const uint8_t expectedPlaintext[MAXTEST_BYTES_M]", plaintext_len, plaintext); - dump_buffer("const uint8_t expectedAssociated[MAXTEST_BYTES_AD]", auth_len, auth); - dump_buffer("const uint8_t expectedKey[KEY_SIZE]", KEY_BYTES, key); - dump_buffer("const uint8_t expectedCiphertext[MAXTEST_BYTES_M+CRYPTO_ABYTES]", plaintext_len+TAG_BYTES, ciphertext); + fprintf(output, "#include <stdint.h>\n"); + fprintf(output, "#include \"test_vectors.h\"\n"); + + dump_buffer(output, "const uint8_t expectedPlaintext[MAXTEST_BYTES_M]", plaintext_len, plaintext); + dump_buffer(output, "const uint8_t expectedAssociated[MAXTEST_BYTES_AD]", auth_len, auth); + dump_buffer(output, "const uint8_t expectedKey[KEY_SIZE]", KEY_BYTES, key); + dump_buffer(output, "const uint8_t expectedCiphertext[MAXTEST_BYTES_M+CRYPTO_ABYTES]", plaintext_len+TAG_BYTES, ciphertext); + + fclose(output); } diff --git a/test/felics/make-vectors.sh b/test/felics/make-vectors.sh index 2ddbc77..d6050e8 100755 --- a/test/felics/make-vectors.sh +++ b/test/felics/make-vectors.sh @@ -1,9 +1,27 @@ #!/bin/bash +set -eu + + +FELICS_CIPHERS_DIR=$1 +LILLIPUT_VERSION=$2 + + +output-filename () +{ + local mode=$1 + local keylen=$2 + local lilliput_dir=Lilliput-${mode^^}-${keylen}_v${LILLIPUT_VERSION} + + echo "${FELICS_CIPHERS_DIR}"/${lilliput_dir}/source/test_vectors.c +} + + for mode in i ii do for keylen in 128 192 256 do - make vector mode=${mode} keylen=${keylen} + output=$(output-filename ${mode} ${keylen}) + make vector mode=${mode} keylen=${keylen} output=${output} done done |
