summaryrefslogtreecommitdiff
path: root/test/felics/make-vector.c
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@airbus.com>2019-03-15 17:25:56 +0100
committerKévin Le Gouguec <kevin.legouguec@airbus.com>2019-03-15 17:25:56 +0100
commite744e3907713a073100cfe96769fe235b1bf50b8 (patch)
treea5a3269f03aa834f76e31de12d7694a203484082 /test/felics/make-vector.c
parenta28cc2d84f3a0411a9e6cd6c786bd114e9aa2b06 (diff)
downloadlilliput-ae-implem-e744e3907713a073100cfe96769fe235b1bf50b8.tar.xz
[felics] Automatisation de la mise à jour des vecteurs FELICS
Diffstat (limited to 'test/felics/make-vector.c')
-rw-r--r--test/felics/make-vector.c41
1 files changed, 29 insertions, 12 deletions
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);
}