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