summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md54
1 files changed, 54 insertions, 0 deletions
diff --git a/README.md b/README.md
index 4623c02..dcafdf6 100644
--- a/README.md
+++ b/README.md
@@ -30,3 +30,57 @@ Also contains some support files:
- `debug.h`: helper functions to ease debugging and dump intermediate
values
+`crypto_aead`
+-------------
+
+Contains parameter-dependent code. There is one subfolder per member
+of the Lilliput-AE family, named according to NIST's requirements:
+
+> The second-level directory name is a lowercase version of the name
+> of the algorithm, including the version number and a family member
+> identifier (if multiple family members in submission). […] Dashes,
+> dots, slashes, and other punctuation marks are omitted; the
+> directory name consists solely of digits (0123456789) and lowercase
+> ASCII letters (acbdefghijklmnopqrstuvwxyz).
+
+
+The subfolders are thus named `lilliputae${mode}${keybits}v1`:
+
+- mode is either i (for ΘCB3) or ii (for SCT-2)
+- keybits is either 128, 192 or 256.
+
+Each subfolders contains:
+
+- a `ref` directory, containing parameter-dependent code for the
+ reference implementation and tests for these specific parameters
+- other directories with additional implementations, named `add_*`
+
+TODO: the tests for a given family member should be moved up alongside
+`ref` and `add_*` folders since they should apply to all
+implementations. Also, the "parameter-dependent" code has been reduced
+to a header with three constants; maybe the whole `crypto_aead` folder
+could be removed.
+
+`nist`
+------
+
+Contains code to
+
+- generate the directory structure required by NIST
+- compile each member of the Lilliput-AE family against NIST's
+ `genkat_aead.c`
+- generate test vectors
+- package code and test vectors together into `results/crypto_aead`
+
+The code can be run with `make nist`.
+
+`traces`
+--------
+
+Contains patches to add print statements for inputs, outputs and
+intermediate values. `make traces` will
+
+- apply the patches
+- run the trace programs
+- collect traces
+- revert the patches