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

README.md (1844B)


      1 Reference implementation
      2 ========================
      3 
      4 This folder contains the reference implementation for Lilliput-AE.
      5 
      6 It is organized as follows:
      7 
      8 `src`
      9 -----
     10 
     11 Contains two kinds of subfolders:
     12 
     13 - implementations: parameter-independent code
     14     - `ref`: the reference implementation
     15     - `add_*`: additional implementations
     16 
     17 - parameters: one folder for each variant of the Lilliput-AE family,
     18   named `${mode}-${keybits}`:
     19     - mode is either i (for ΘCB3) or ii (for SCT-2)
     20     - keybits is either 128, 192 or 256
     21 
     22 Each implementation folder contains:
     23 
     24 - `lilliput-ae.h`: main API
     25 - `lilliput-ae-utils.h`: helper functions used by both AE schemes
     26 - `lilliput-i.c`: implementation of Lilliput-Ⅰ (ΘCB3-based)
     27 - `lilliput-ii.c`: implementation of Lilliput-Ⅱ (SCT-2-based)
     28 - `tweakey.*`: implementation of Lilliput-TBC's tweakey schedule
     29 - `cipher.*`: implementation of the tweakable block-cipher
     30   Lilliput-TBC
     31 - `constants.h`: byte sizes for inputs and outputs (depends on
     32   parameter-dependent `parameters.h` files)
     33 
     34 `test`
     35 ------
     36 
     37 Contains test vectors. There is one subfolder per member of the
     38 Lilliput-AE family, as well as:
     39 
     40 - `common.mk`: makefile recipes for test programs
     41 - `debug.h`: helper functions to dump intermediate values, used in
     42   the trace-generating patches
     43 - `test-helpers.h`: helper functions for test code
     44 
     45 `nist`
     46 ------
     47 
     48 Contains code to
     49 
     50 - generate the directory structure required by NIST
     51 - compile each member of the Lilliput-AE family against NIST's
     52   `genkat_aead.c`
     53 - generate test vectors
     54 - package code and test vectors together into `results/crypto_aead`
     55 
     56 The code can be run with `make nist`.
     57 
     58 `traces`
     59 --------
     60 
     61 Contains patches to add print statements for inputs, outputs and
     62 intermediate values. `make traces` will
     63 
     64 - apply the patches
     65 - run the trace programs
     66 - collect traces
     67 - revert the patches