From dbae7afbbc13c39f167bad9c2d72d5d670c06c83 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Wed, 13 Feb 2019 14:02:28 +0100 Subject: Renommage des fichiers implémentant les modes AE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pour qu'ils soient plus proches du nom donné dans la spécification. --- src/ref/lilliput-ae-i.c | 212 ----------------------------------------------- src/ref/lilliput-ae-ii.c | 177 --------------------------------------- src/ref/lilliput-ae.h | 2 +- src/ref/lilliput-i.c | 212 +++++++++++++++++++++++++++++++++++++++++++++++ src/ref/lilliput-ii.c | 177 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 390 insertions(+), 390 deletions(-) delete mode 100644 src/ref/lilliput-ae-i.c delete mode 100644 src/ref/lilliput-ae-ii.c create mode 100644 src/ref/lilliput-i.c create mode 100644 src/ref/lilliput-ii.c (limited to 'src/ref') diff --git a/src/ref/lilliput-ae-i.c b/src/ref/lilliput-ae-i.c deleted file mode 100644 index 5e91e4e..0000000 --- a/src/ref/lilliput-ae-i.c +++ /dev/null @@ -1,212 +0,0 @@ -/* -Implementation of the Lilliput-AE tweakable block cipher. - -Author: Kévin Le Gouguec, 2019. - -For more information, feedback or questions, refer to our website: -https://paclido.fr/lilliput-ae - -To the extent possible under law, the implementer has waived all copyright -and related or neighboring rights to the source code in this file. -http://creativecommons.org/publicdomain/zero/1.0/ - ---- - -This file implements Lilliput-AE's nonce-respecting mode based on ΘCB3. -*/ - -#include -#include -#include - -#include "cipher.h" -#include "lilliput-ae.h" -#include "lilliput-ae-utils.h" - - -static const uint8_t _0n[BLOCK_BYTES] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - - -static void _fill_msg_tweak( - uint8_t prefix, - const uint8_t N[NONCE_BYTES], - uint64_t block_nb, - uint8_t tweak[TWEAK_BYTES] -) -{ - /* The 192-bit tweak is filled as follows: - * - * - bits 1- 68: block number - * 1- 64: actual 64-bit block number - * 64- 68: 0-padding - * - bits 67-188: nonce - * - bits 189-192: constant 4-bit prefix - */ - - for (size_t i=0; i> 8*i; - - tweak[i] = b; - } - - tweak[sizeof(block_nb)] = lower_nibble(N[0]) << 4; - - for (size_t i=1; i -#include -#include - -#include "cipher.h" -#include "lilliput-ae.h" -#include "lilliput-ae-utils.h" - - -static void _init_msg_tweak(const uint8_t tag[TAG_BYTES], uint8_t tweak[TWEAK_BYTES]) -{ - /* The t-bit tweak is filled as follows: - * - * - bits [ 1, t-1]: tag + block index - * [ 1, 64]: tag[ 1.. 64] XOR block index - * [ 65, t-1]: tag[65..t-1] - * - bit t: 1 - */ - - memcpy(tweak+sizeof(uint64_t), tag+sizeof(uint64_t), TAG_BYTES-sizeof(uint64_t)); - tweak[TWEAK_BYTES-1] |= 0x80; -} - -static void _fill_msg_tweak(const uint8_t tag[TAG_BYTES], uint64_t block_index, uint8_t tweak[TWEAK_BYTES]) -{ - /* Assume bits 65 to t-1 are set. */ - for (size_t i=0; i> i*8 & 0xff; - tweak[i] = tag[i] ^ index_i; - } -} - -static void _fill_tag_tweak(const uint8_t N[NONCE_BYTES], uint8_t tweak[TWEAK_BYTES]) -{ - /* The t-bit tweak is filled as follows: - * - * - bits [ 1, t-7]: N - * - bits [t-7, t]: 0001||0^4 - */ - - memcpy(tweak, N, TWEAK_BYTES-1); - tweak[TWEAK_BYTES-1] = 0x10; -} - -static void _generate_tag( - const uint8_t key[KEY_BYTES], - size_t M_len, - const uint8_t M[M_len], - const uint8_t N[NONCE_BYTES], - const uint8_t Auth[BLOCK_BYTES], - uint8_t tag[TAG_BYTES] -) -{ - uint8_t Ek_Mj[BLOCK_BYTES]; - uint8_t tag_tmp[TAG_BYTES]; - uint8_t tweak[TWEAK_BYTES]; - - memset(tweak, 0, TWEAK_BYTES); - memcpy(tag_tmp, Auth, TAG_BYTES); - - size_t l = M_len / BLOCK_BYTES; - size_t rest = M_len % BLOCK_BYTES; - - for (size_t j=0; j +#include +#include + +#include "cipher.h" +#include "lilliput-ae.h" +#include "lilliput-ae-utils.h" + + +static const uint8_t _0n[BLOCK_BYTES] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + +static void _fill_msg_tweak( + uint8_t prefix, + const uint8_t N[NONCE_BYTES], + uint64_t block_nb, + uint8_t tweak[TWEAK_BYTES] +) +{ + /* The 192-bit tweak is filled as follows: + * + * - bits 1- 68: block number + * 1- 64: actual 64-bit block number + * 64- 68: 0-padding + * - bits 67-188: nonce + * - bits 189-192: constant 4-bit prefix + */ + + for (size_t i=0; i> 8*i; + + tweak[i] = b; + } + + tweak[sizeof(block_nb)] = lower_nibble(N[0]) << 4; + + for (size_t i=1; i +#include +#include + +#include "cipher.h" +#include "lilliput-ae.h" +#include "lilliput-ae-utils.h" + + +static void _init_msg_tweak(const uint8_t tag[TAG_BYTES], uint8_t tweak[TWEAK_BYTES]) +{ + /* The t-bit tweak is filled as follows: + * + * - bits [ 1, t-1]: tag + block index + * [ 1, 64]: tag[ 1.. 64] XOR block index + * [ 65, t-1]: tag[65..t-1] + * - bit t: 1 + */ + + memcpy(tweak+sizeof(uint64_t), tag+sizeof(uint64_t), TAG_BYTES-sizeof(uint64_t)); + tweak[TWEAK_BYTES-1] |= 0x80; +} + +static void _fill_msg_tweak(const uint8_t tag[TAG_BYTES], uint64_t block_index, uint8_t tweak[TWEAK_BYTES]) +{ + /* Assume bits 65 to t-1 are set. */ + for (size_t i=0; i> i*8 & 0xff; + tweak[i] = tag[i] ^ index_i; + } +} + +static void _fill_tag_tweak(const uint8_t N[NONCE_BYTES], uint8_t tweak[TWEAK_BYTES]) +{ + /* The t-bit tweak is filled as follows: + * + * - bits [ 1, t-7]: N + * - bits [t-7, t]: 0001||0^4 + */ + + memcpy(tweak, N, TWEAK_BYTES-1); + tweak[TWEAK_BYTES-1] = 0x10; +} + +static void _generate_tag( + const uint8_t key[KEY_BYTES], + size_t M_len, + const uint8_t M[M_len], + const uint8_t N[NONCE_BYTES], + const uint8_t Auth[BLOCK_BYTES], + uint8_t tag[TAG_BYTES] +) +{ + uint8_t Ek_Mj[BLOCK_BYTES]; + uint8_t tag_tmp[TAG_BYTES]; + uint8_t tweak[TWEAK_BYTES]; + + memset(tweak, 0, TWEAK_BYTES); + memcpy(tag_tmp, Auth, TAG_BYTES); + + size_t l = M_len / BLOCK_BYTES; + size_t rest = M_len % BLOCK_BYTES; + + for (size_t j=0; j