v1.1 ==== ref --- ### Fixes These modifications change the algorithm's output. - 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) ### Cleanups These modifications are structural and/or stylistic and do not change the algorithm's ouptut. - 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) add_threshold ------------- ### Fixes See reference implementation. ### Cleanups See reference implementation. Further cleanups: - Use size_t to iterate on arrays in lilliput_tbc_encrypt() and lilliput_tbc_decrypt(). (cipher.c) - 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 ---------- ### Fixes See reference implementation. ### Cleanups - 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.