summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/felics/Makefile4
-rw-r--r--test/felics/make-vector.c41
-rwxr-xr-xtest/felics/make-vectors.sh20
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