diff options
| author | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2018-11-22 17:21:29 +0100 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2018-11-22 17:21:29 +0100 |
| commit | fc7f6f86fb89adfb12289e69ed1e57f6bfa7e607 (patch) | |
| tree | 6a0ded28bef9cb52278266628f19104ca711d2c3 | |
| parent | af4d06b805a887fe7ce5d6816728269fd362f848 (diff) | |
| download | lilliput-ae-implem-fc7f6f86fb89adfb12289e69ed1e57f6bfa7e607.tar.xz | |
Implémentation du mode ΘCB3 (suite)
| -rw-r--r-- | crypto_aead/lilliputaei128v1/ref/lilliput-ae-i.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/crypto_aead/lilliputaei128v1/ref/lilliput-ae-i.c b/crypto_aead/lilliputaei128v1/ref/lilliput-ae-i.c index a52049e..f67be07 100644 --- a/crypto_aead/lilliputaei128v1/ref/lilliput-ae-i.c +++ b/crypto_aead/lilliputaei128v1/ref/lilliput-ae-i.c @@ -2,15 +2,42 @@ #include <stdint.h> #include <string.h> +#include "cipher.h" #include "lilliput-ae.h" +static void _lilliput_tbc(const uint8_t key[KEY_BYTES], + const uint8_t tweak[TWEAK_BYTES], + const uint8_t message[BLOCK_BYTES], + uint8_t ciphertext[BLOCK_BYTES]) +{ + lilliput_tbc_encrypt(key, tweak, message, ciphertext, NULL); +} + +static void _xor_into(size_t len, uint8_t dest[len], uint8_t src[len]) +{ + for (size_t i=0; i<len; i++) + dest[i] ^= src[i]; +} + static void _process_associated_data( const uint8_t key[KEY_BYTES], size_t auth_data_len, const uint8_t auth_data[auth_data_len], uint8_t auth[BLOCK_BYTES] ) { + size_t l_a = auth_data_len / BLOCK_BYTES; + + memset(auth, 0, BLOCK_BYTES); + + for (size_t i=0; i<l_a; i++) + { + uint8_t tweak[TWEAK_BYTES]; + /* TODO: generate tweak */ + uint8_t Ek_Ai[BLOCK_BYTES]; + _lilliput_tbc(key, tweak, auth_data+i*BLOCK_BYTES, Ek_Ai); + _xor_into(BLOCK_BYTES, auth, Ek_Ai); + } } static void _encrypt_message( |
