summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/felics/Makefile16
-rw-r--r--test/felics/make-vector.c62
-rwxr-xr-xtest/felics/make-vectors.sh9
3 files changed, 87 insertions, 0 deletions
diff --git a/test/felics/Makefile b/test/felics/Makefile
new file mode 100644
index 0000000..96a876b
--- /dev/null
+++ b/test/felics/Makefile
@@ -0,0 +1,16 @@
+all: vector
+
+include ../common.mk
+
+
+vector: $(results_dir)/felics-make-vector | $(results_dir)
+ $(results_dir)/felics-make-vector 16 16
+
+
+$(results_dir)/felics-make-vector: $(results_dir)/felics-make-vector.o \
+$(results_dir)/src/lilliput-ae-$(mode).o $(results_dir)/src/cipher.o \
+$(results_dir)/src/tweakey.o | $(results_dir)
+
+$(results_dir)/felics-make-vector.o: $(test_dir)/felics/make-vector.c | $(results_dir)
+ @ echo "CC $@"
+ $(Q) gcc -c $< $(CFLAGS) -o $@
diff --git a/test/felics/make-vector.c b/test/felics/make-vector.c
new file mode 100644
index 0000000..1abe088
--- /dev/null
+++ b/test/felics/make-vector.c
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <inttypes.h>
+
+#include "lilliput-ae.h"
+
+
+void parse_arguments(char const* const* argv, size_t* plaintext_len, size_t* auth_len)
+{
+ sscanf(argv[1], "%zu", plaintext_len);
+ sscanf(argv[2], "%zu", auth_len);
+}
+
+void init_buffer(size_t len, uint8_t buf[len])
+{
+ for (size_t i=0; i<len; i++)
+ buf[i] = i;
+}
+
+void dump_buffer(const char* header, size_t len, const uint8_t buf[len])
+{
+ printf("%s = { ", header);
+ for (const uint8_t* b=buf; b<buf+len-1; b++)
+ printf("0x%02x, ", *b);
+ printf("0x%02x };\n", buf[len-1]);
+}
+
+int main(int argc, char const* const* argv)
+{
+ if (argc != 3)
+ {
+ fprintf(stderr, "usage: %s PLAINTEXT-LEN AUTHDATA-LEN\n", argv[0]);
+ return 1;
+ }
+
+ size_t plaintext_len;
+ size_t auth_len;
+ parse_arguments(argv, &plaintext_len, &auth_len);
+
+ uint8_t plaintext[plaintext_len];
+ uint8_t auth[auth_len];
+ uint8_t key[KEY_BYTES];
+ uint8_t nonce[NONCE_BYTES];
+
+ memset(nonce, 0, NONCE_BYTES);
+ init_buffer(plaintext_len, plaintext);
+ init_buffer(auth_len, auth);
+ init_buffer(KEY_BYTES, key);
+
+ uint8_t ciphertext[plaintext_len+TAG_BYTES];
+
+ lilliput_ae_encrypt(
+ plaintext_len, plaintext, auth_len, auth,
+ 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);
+}
diff --git a/test/felics/make-vectors.sh b/test/felics/make-vectors.sh
new file mode 100755
index 0000000..2ddbc77
--- /dev/null
+++ b/test/felics/make-vectors.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+for mode in i ii
+do
+ for keylen in 128 192 256
+ do
+ make vector mode=${mode} keylen=${keylen}
+ done
+done