This document summarizes the modifications brought by each version. Some modifications are tagged as follows: - [spec] when the modification is brought by a new revision of the specification, - [break] when the modification changes the implementation's output. A modification that has no tag corresponds to stylistic and/or structural changes that have no impact on test vectors. v1.1 ==== ref --- - Introduce helper function copy_block_index() to make tweak-building functions more legible. (lilliput-ae-utils.h, lilliput-i.c, lilliput-ii.c) - Initialize ΘCB3 tweak with nonce instead of copying the latter into the latter repeatedly. (lilliput-i.c) - Re-write _nonlinear_layer() and _linear_layer() functions to better resemble the specification. (cipher.c) - Extract tweakey multiplications into their own header file, so that other implementations can make more targeted changes. (constants.h, multiplications.h, tweakey.c) - Use size_t to iterate on arrays in lilliput_tbc_encrypt() and lilliput_tbc_decrypt(). (cipher.c) [spec][break] - Change alpha coefficients in tweakey schedule to ensure lane 0 is updated between each round: - lane 0: Id => M - lane 1: M => M^2 - lane 2: M^2 => M^3 - lane 3: M^3 => M^4 - lane 4: M_R (unchanged) - lane 5: M_R^2 (unchanged) - lane 6: M_R^3 (unchanged) (multiplications.h, tweakey.c) add_threshold ------------- See reference implementation. Further changes: - Add constant macros KEY_LANES_NB and TWEAK_LANES_NB to make tweakey schedule code more legible. (tweakey.c) add_tweakeyloop --------------- See reference implementation. add_python ---------- See [spec] and [break] changes in reference implementation. Further changes: - Re-write tweakey multiplications to better resemble the specification. (multiplications.py) add_vhdl -------- TODO v1.0 ==== Initial release to round 1 of the LWC standardization process.