lilliput-ae-reference-implementation

Implementations of Lilliput-AE submitted to the NIST LWC standardization process
git clone https://git.kevinlegouguec.net/lilliput-ae-reference-implementation
Log | Files | Refs | README

commit 51108b6536117c384c907be435189d8c50019e0c
parent 23ed93cfd97ea7f5131805f90e9e7d34bfcaff66
Author: Kévin Le Gouguec <kevin.legouguec@airbus.com>
Date:   Wed, 28 Nov 2018 17:00:18 +0100

Ajout de générateurs de traces pour la partie TBC

Diffstat:
Mcrypto_aead/lilliputaei192v1/ref/Makefile | 3++-
Acrypto_aead/lilliputaei192v1/ref/test/traces-tbc-192-i.c | 62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mcrypto_aead/lilliputaeii192v1/ref/Makefile | 3++-
Acrypto_aead/lilliputaeii192v1/ref/test/traces-tbc-192-ii.c | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 127 insertions(+), 2 deletions(-)

diff --git a/crypto_aead/lilliputaei192v1/ref/Makefile b/crypto_aead/lilliputaei192v1/ref/Makefile @@ -1,11 +1,12 @@ tests = test-ae-roundtrip -traces = traces-ae-192-i +traces = traces-ae-192-i traces-tbc-192-i include src/common.mk results/test-ae-roundtrip: results/src/lilliput-ae-i.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results results/traces-ae-192-i: results/src/lilliput-ae-i.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src +results/traces-tbc-192-i: results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src results/test-ae-roundtrip.o: src/lilliput-ae.h diff --git a/crypto_aead/lilliputaei192v1/ref/test/traces-tbc-192-i.c b/crypto_aead/lilliputaei192v1/ref/test/traces-tbc-192-i.c @@ -0,0 +1,62 @@ +#include <stdio.h> +#include <stdint.h> + +#include "cipher.h" + +#include "debug.h" +#include "test-helpers.h" + + +FILE *DUMP; + + +struct vector +{ + char *name; + uint8_t key[KEY_BYTES]; + uint8_t tweak[TWEAK_BYTES]; + uint8_t message[BLOCK_BYTES]; +}; + +typedef struct vector vector; + + +const vector VECTORS[] = { + { + .name = "order", + .key = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 + }, + .tweak = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 + }, + .message = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f + } + } +}; + + +int main() +{ + for (const vector *v=VECTORS; v<ARRAY_END(VECTORS); v++) + { + debug_open_dump("tbc-192-i", v->name); + debug_dump_buffer("message", BLOCK_BYTES, v->message, 0); + debug_dump_buffer("key", KEY_BYTES, v->key, 0); + debug_dump_buffer("tweak", TWEAK_BYTES, v->tweak, 0); + + uint8_t ciphertext[BLOCK_BYTES]; + + lilliput_tbc_encrypt(v->key, v->tweak, v->message, ciphertext); + + debug_dump_buffer("ciphertext", BLOCK_BYTES, ciphertext, 0); + + fclose(DUMP); + } +} diff --git a/crypto_aead/lilliputaeii192v1/ref/Makefile b/crypto_aead/lilliputaeii192v1/ref/Makefile @@ -1,11 +1,12 @@ tests = test-ae-roundtrip -traces = traces-ae-192-ii +traces = traces-ae-192-ii traces-tbc-192-ii include src/common.mk results/test-ae-roundtrip: results/src/lilliput-ae-ii.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results results/traces-ae-192-ii: results/src/lilliput-ae-ii.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src +results/traces-tbc-192-ii: results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src results/test-ae-roundtrip.o: src/lilliput-ae.h diff --git a/crypto_aead/lilliputaeii192v1/ref/test/traces-tbc-192-ii.c b/crypto_aead/lilliputaeii192v1/ref/test/traces-tbc-192-ii.c @@ -0,0 +1,61 @@ +#include <stdio.h> +#include <stdint.h> + +#include "cipher.h" + +#include "debug.h" +#include "test-helpers.h" + + +FILE *DUMP; + + +struct vector +{ + char *name; + uint8_t key[KEY_BYTES]; + uint8_t tweak[TWEAK_BYTES]; + uint8_t message[BLOCK_BYTES]; +}; + +typedef struct vector vector; + + +const vector VECTORS[] = { + { + .name = "order", + .key = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 + }, + .tweak = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f + }, + .message = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f + } + } +}; + + +int main() +{ + for (const vector *v=VECTORS; v<ARRAY_END(VECTORS); v++) + { + debug_open_dump("tbc-192-ii", v->name); + debug_dump_buffer("message", BLOCK_BYTES, v->message, 0); + debug_dump_buffer("key", KEY_BYTES, v->key, 0); + debug_dump_buffer("tweak", TWEAK_BYTES, v->tweak, 0); + + uint8_t ciphertext[BLOCK_BYTES]; + + lilliput_tbc_encrypt(v->key, v->tweak, v->message, ciphertext); + + debug_dump_buffer("ciphertext", BLOCK_BYTES, ciphertext, 0); + + fclose(DUMP); + } +}