From 1dd052e86fa45a215b68152977e0c7888eba9bf4 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Wed, 3 Jun 2015 21:32:49 +0300 Subject: add CFB mode --- include/aesni/api.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'include/aesni/api.h') diff --git a/include/aesni/api.h b/include/aesni/api.h index 72e689b..6e30b65 100644 --- a/include/aesni/api.h +++ b/include/aesni/api.h @@ -55,6 +55,22 @@ static __inline AesBlock128 __fastcall aes128cbc_decrypt( return _mm_xor_si128(raw_aes128ecb_decrypt(cypher, inverted_schedule), init_vector); } +static __inline AesBlock128 __fastcall aes128cfb_encrypt( + AesBlock128 plain, + Aes128KeySchedule* key_schedule, + AesBlock128 init_vector) +{ + return _mm_xor_si128(raw_aes128ecb_encrypt(init_vector, key_schedule), plain); +} + +static __inline AesBlock128 __fastcall aes128cfb_decrypt( + AesBlock128 cypher, + Aes128KeySchedule* key_schedule, + AesBlock128 init_vector) +{ + return _mm_xor_si128(raw_aes128ecb_encrypt(init_vector, key_schedule), cypher); +} + static __inline void __fastcall aes192_expand_key_schedule( AesBlock192* key, Aes192KeySchedule* key_schedule) @@ -99,6 +115,22 @@ static __inline AesBlock128 __fastcall aes192cbc_decrypt( return _mm_xor_si128(raw_aes192ecb_decrypt(cypher, inverted_schedule), init_vector); } +static __inline AesBlock128 __fastcall aes192cfb_encrypt( + AesBlock128 plain, + Aes192KeySchedule* key_schedule, + AesBlock128 init_vector) +{ + return _mm_xor_si128(raw_aes192ecb_encrypt(init_vector, key_schedule), plain); +} + +static __inline AesBlock128 __fastcall aes192cfb_decrypt( + AesBlock128 cypher, + Aes192KeySchedule* key_schedule, + AesBlock128 init_vector) +{ + return _mm_xor_si128(raw_aes192ecb_encrypt(init_vector, key_schedule), cypher); +} + static __inline void __fastcall aes256_expand_key_schedule( AesBlock256* key, Aes256KeySchedule* key_schedule) @@ -142,3 +174,19 @@ static __inline AesBlock128 __fastcall aes256cbc_decrypt( { return _mm_xor_si128(raw_aes256ecb_decrypt(cypher, inverted_schedule), init_vector); } + +static __inline AesBlock128 __fastcall aes256cfb_encrypt( + AesBlock128 plain, + Aes256KeySchedule* key_schedule, + AesBlock128 init_vector) +{ + return _mm_xor_si128(raw_aes256ecb_encrypt(init_vector, key_schedule), plain); +} + +static __inline AesBlock128 __fastcall aes256cfb_decrypt( + AesBlock128 cypher, + Aes256KeySchedule* key_schedule, + AesBlock128 init_vector) +{ + return _mm_xor_si128(raw_aes256ecb_encrypt(init_vector, key_schedule), cypher); +} -- cgit v1.2.3