From cff5c22c00a14fb19fac8c935229cc399bcedda8 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Wed, 10 Jun 2015 04:39:11 +0300 Subject: rename header files --- include/aesni/all.h | 4 +- include/aesni/api.h | 366 ------------------------------------------------- include/aesni/block.h | 366 +++++++++++++++++++++++++++++++++++++++++++++++++ include/aesni/buffer.h | 20 +++ include/aesni/file.h | 20 --- 5 files changed, 388 insertions(+), 388 deletions(-) delete mode 100644 include/aesni/api.h create mode 100644 include/aesni/block.h create mode 100644 include/aesni/buffer.h delete mode 100644 include/aesni/file.h diff --git a/include/aesni/all.h b/include/aesni/all.h index a383b87..1360320 100644 --- a/include/aesni/all.h +++ b/include/aesni/all.h @@ -8,7 +8,7 @@ #pragma once -#include "api.h" +#include "block.h" +#include "buffer.h" #include "data.h" -#include "file.h" #include "raw.h" diff --git a/include/aesni/api.h b/include/aesni/api.h deleted file mode 100644 index ea11817..0000000 --- a/include/aesni/api.h +++ /dev/null @@ -1,366 +0,0 @@ -/** - * \file - * \author Egor Tensin - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#pragma once - -#include "data.h" -#include "raw.h" - -static __inline void __fastcall aes128_expand_key_schedule( - AesBlock128 key, - Aes128KeySchedule* key_schedule) -{ - raw_aes128_expand_key_schedule(key, key_schedule); -} - -static __inline void __fastcall aes128_invert_key_schedule( - Aes128KeySchedule* key_schedule, - Aes128KeySchedule* inverted_schedule) -{ - raw_aes128_invert_key_schedule(key_schedule, inverted_schedule); -} - -static __inline AesBlock128 __fastcall aes128ecb_encrypt_block( - AesBlock128 plain, - Aes128KeySchedule* key_schedule) -{ - return raw_aes128_encrypt_block(plain, key_schedule); -} - -static __inline AesBlock128 __fastcall aes128ecb_decrypt_block( - AesBlock128 cipher, - Aes128KeySchedule* inverted_schedule) -{ - return raw_aes128_decrypt_block(cipher, inverted_schedule); -} - -static __inline AesBlock128 __fastcall aes128cbc_encrypt_block( - AesBlock128 plain, - Aes128KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 cipher = raw_aes128_encrypt_block(_mm_xor_si128(plain, init_vector), key_schedule); - *next_init_vector = cipher; - return cipher; -} - -static __inline AesBlock128 __fastcall aes128cbc_decrypt_block( - AesBlock128 cipher, - Aes128KeySchedule* inverted_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 plain = _mm_xor_si128(raw_aes128_decrypt_block(cipher, inverted_schedule), init_vector); - *next_init_vector = cipher; - return plain; -} - -static __inline AesBlock128 __fastcall aes128cfb_encrypt_block( - AesBlock128 plain, - Aes128KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 cipher = _mm_xor_si128(raw_aes128_encrypt_block(init_vector, key_schedule), plain); - *next_init_vector = cipher; - return cipher; -} - -static __inline AesBlock128 __fastcall aes128cfb_decrypt_block( - AesBlock128 cipher, - Aes128KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 plain = _mm_xor_si128(raw_aes128_encrypt_block(init_vector, key_schedule), cipher); - *next_init_vector = cipher; - return plain; -} - -static __inline AesBlock128 __fastcall aes128ofb_encrypt_block( - AesBlock128 plain, - Aes128KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 tmp = raw_aes128_encrypt_block(init_vector, key_schedule); - *next_init_vector = tmp; - return _mm_xor_si128(tmp, plain); -} - -static __inline AesBlock128 __fastcall aes128ofb_decrypt_block( - AesBlock128 cipher, - Aes128KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 tmp = raw_aes128_encrypt_block(init_vector, key_schedule); - *next_init_vector = tmp; - return _mm_xor_si128(tmp, cipher); -} - -static __inline AesBlock128 __fastcall aes128ctr_encrypt_block( - AesBlock128 plain, - Aes128KeySchedule* key_schedule, - AesBlock128 init_vector, - int counter) -{ - init_vector = aes128_le2be(init_vector); - init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); - init_vector = aes128_be2le(init_vector); - return _mm_xor_si128(plain, raw_aes128_encrypt_block(init_vector, key_schedule)); -} - -static __inline AesBlock128 __fastcall aes128ctr_decrypt_block( - AesBlock128 cipher, - Aes128KeySchedule* key_schedule, - AesBlock128 init_vector, - int counter) -{ - init_vector = aes128_le2be(init_vector); - init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); - init_vector = aes128_be2le(init_vector); - return _mm_xor_si128(cipher, raw_aes128_encrypt_block(init_vector, key_schedule)); -} - -static __inline void __fastcall aes192_expand_key_schedule( - AesBlock192* key, - Aes192KeySchedule* key_schedule) -{ - raw_aes192_expand_key_schedule(key->lo, key->hi, key_schedule); -} - -static __inline void __fastcall aes192_invert_key_schedule( - Aes192KeySchedule* key_schedule, - Aes192KeySchedule* inverted_schedule) -{ - raw_aes192_invert_key_schedule(key_schedule, inverted_schedule); -} - -static __inline AesBlock128 __fastcall aes192ecb_encrypt_block( - AesBlock128 plain, - Aes192KeySchedule* key_schedule) -{ - return raw_aes192_encrypt_block(plain, key_schedule); -} - -static __inline AesBlock128 __fastcall aes192ecb_decrypt_block( - AesBlock128 cipher, - Aes192KeySchedule* inverted_schedule) -{ - return raw_aes192_decrypt_block(cipher, inverted_schedule); -} - -static __inline AesBlock128 __fastcall aes192cbc_encrypt_block( - AesBlock128 plain, - Aes192KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 cipher = raw_aes192_encrypt_block(_mm_xor_si128(plain, init_vector), key_schedule); - *next_init_vector = cipher; - return cipher; -} - -static __inline AesBlock128 __fastcall aes192cbc_decrypt_block( - AesBlock128 cipher, - Aes192KeySchedule* inverted_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 plain = _mm_xor_si128(raw_aes192_decrypt_block(cipher, inverted_schedule), init_vector); - *next_init_vector = cipher; - return plain; -} - -static __inline AesBlock128 __fastcall aes192cfb_encrypt_block( - AesBlock128 plain, - Aes192KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 cipher = _mm_xor_si128(raw_aes192_encrypt_block(init_vector, key_schedule), plain); - *next_init_vector = cipher; - return cipher; -} - -static __inline AesBlock128 __fastcall aes192cfb_decrypt_block( - AesBlock128 cipher, - Aes192KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 plain = _mm_xor_si128(raw_aes192_encrypt_block(init_vector, key_schedule), cipher); - *next_init_vector = cipher; - return plain; -} - -static __inline AesBlock128 __fastcall aes192ofb_encrypt_block( - AesBlock128 plain, - Aes192KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 tmp = raw_aes192_encrypt_block(init_vector, key_schedule); - *next_init_vector = tmp; - return _mm_xor_si128(tmp, plain); -} - -static __inline AesBlock128 __fastcall aes192ofb_decrypt_block( - AesBlock128 cipher, - Aes192KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 tmp = raw_aes192_encrypt_block(init_vector, key_schedule); - *next_init_vector = tmp; - return _mm_xor_si128(tmp, cipher); -} - -static __inline AesBlock128 __fastcall aes192ctr_encrypt_block( - AesBlock128 plain, - Aes192KeySchedule* key_schedule, - AesBlock128 init_vector, - int counter) -{ - init_vector = aes128_le2be(init_vector); - init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); - init_vector = aes128_be2le(init_vector); - return _mm_xor_si128(plain, raw_aes192_encrypt_block(init_vector, key_schedule)); -} - -static __inline AesBlock128 __fastcall aes192ctr_decrypt_block( - AesBlock128 cipher, - Aes192KeySchedule* key_schedule, - AesBlock128 init_vector, - int counter) -{ - init_vector = aes128_le2be(init_vector); - init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); - init_vector = aes128_be2le(init_vector); - return _mm_xor_si128(cipher, raw_aes192_encrypt_block(init_vector, key_schedule)); -} - -static __inline void __fastcall aes256_expand_key_schedule( - AesBlock256* key, - Aes256KeySchedule* key_schedule) -{ - raw_aes256_expand_key_schedule(key->lo, key->hi, key_schedule); -} - -static __inline void __fastcall aes256_invert_key_schedule( - Aes256KeySchedule* key_schedule, - Aes256KeySchedule* inverted_schedule) -{ - raw_aes256_invert_key_schedule(key_schedule, inverted_schedule); -} - -static __inline AesBlock128 __fastcall aes256ecb_encrypt_block( - AesBlock128 plain, - Aes256KeySchedule* key_schedule) -{ - return raw_aes256_encrypt_block(plain, key_schedule); -} - -static __inline AesBlock128 __fastcall aes256ecb_decrypt_block( - AesBlock128 cipher, - Aes256KeySchedule* inverted_schedule) -{ - return raw_aes256_decrypt_block(cipher, inverted_schedule); -} - -static __inline AesBlock128 __fastcall aes256cbc_encrypt_block( - AesBlock128 plain, - Aes256KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 cipher = raw_aes256_encrypt_block(_mm_xor_si128(plain, init_vector), key_schedule); - *next_init_vector = cipher; - return cipher; -} - -static __inline AesBlock128 __fastcall aes256cbc_decrypt_block( - AesBlock128 cipher, - Aes256KeySchedule* inverted_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 plain = _mm_xor_si128(raw_aes256_decrypt_block(cipher, inverted_schedule), init_vector); - *next_init_vector = cipher; - return plain; -} - -static __inline AesBlock128 __fastcall aes256cfb_encrypt_block( - AesBlock128 plain, - Aes256KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 cipher = _mm_xor_si128(raw_aes256_encrypt_block(init_vector, key_schedule), plain); - *next_init_vector = cipher; - return cipher; -} - -static __inline AesBlock128 __fastcall aes256cfb_decrypt_block( - AesBlock128 cipher, - Aes256KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 plain = _mm_xor_si128(raw_aes256_encrypt_block(init_vector, key_schedule), cipher); - *next_init_vector = cipher; - return plain; -} - -static __inline AesBlock128 __fastcall aes256ofb_encrypt_block( - AesBlock128 plain, - Aes256KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 tmp = raw_aes256_encrypt_block(init_vector, key_schedule); - *next_init_vector = tmp; - return _mm_xor_si128(tmp, plain); -} - -static __inline AesBlock128 __fastcall aes256ofb_decrypt_block( - AesBlock128 cipher, - Aes256KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) -{ - AesBlock128 tmp = raw_aes256_encrypt_block(init_vector, key_schedule); - *next_init_vector = tmp; - return _mm_xor_si128(tmp, cipher); -} - -static __inline AesBlock128 __fastcall aes256ctr_encrypt_block( - AesBlock128 plain, - Aes256KeySchedule* key_schedule, - AesBlock128 init_vector, - int counter) -{ - init_vector = aes128_le2be(init_vector); - init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); - init_vector = aes128_be2le(init_vector); - return _mm_xor_si128(plain, raw_aes256_encrypt_block(init_vector, key_schedule)); -} - -static __inline AesBlock128 __fastcall aes256ctr_decrypt_block( - AesBlock128 cipher, - Aes256KeySchedule* key_schedule, - AesBlock128 init_vector, - int counter) -{ - init_vector = aes128_le2be(init_vector); - init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); - init_vector = aes128_be2le(init_vector); - return _mm_xor_si128(cipher, raw_aes256_encrypt_block(init_vector, key_schedule)); -} diff --git a/include/aesni/block.h b/include/aesni/block.h new file mode 100644 index 0000000..ea11817 --- /dev/null +++ b/include/aesni/block.h @@ -0,0 +1,366 @@ +/** + * \file + * \author Egor Tensin + * \date 2015 + * \copyright This file is licensed under the terms of the MIT License. + * See LICENSE.txt for details. + */ + +#pragma once + +#include "data.h" +#include "raw.h" + +static __inline void __fastcall aes128_expand_key_schedule( + AesBlock128 key, + Aes128KeySchedule* key_schedule) +{ + raw_aes128_expand_key_schedule(key, key_schedule); +} + +static __inline void __fastcall aes128_invert_key_schedule( + Aes128KeySchedule* key_schedule, + Aes128KeySchedule* inverted_schedule) +{ + raw_aes128_invert_key_schedule(key_schedule, inverted_schedule); +} + +static __inline AesBlock128 __fastcall aes128ecb_encrypt_block( + AesBlock128 plain, + Aes128KeySchedule* key_schedule) +{ + return raw_aes128_encrypt_block(plain, key_schedule); +} + +static __inline AesBlock128 __fastcall aes128ecb_decrypt_block( + AesBlock128 cipher, + Aes128KeySchedule* inverted_schedule) +{ + return raw_aes128_decrypt_block(cipher, inverted_schedule); +} + +static __inline AesBlock128 __fastcall aes128cbc_encrypt_block( + AesBlock128 plain, + Aes128KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 cipher = raw_aes128_encrypt_block(_mm_xor_si128(plain, init_vector), key_schedule); + *next_init_vector = cipher; + return cipher; +} + +static __inline AesBlock128 __fastcall aes128cbc_decrypt_block( + AesBlock128 cipher, + Aes128KeySchedule* inverted_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 plain = _mm_xor_si128(raw_aes128_decrypt_block(cipher, inverted_schedule), init_vector); + *next_init_vector = cipher; + return plain; +} + +static __inline AesBlock128 __fastcall aes128cfb_encrypt_block( + AesBlock128 plain, + Aes128KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 cipher = _mm_xor_si128(raw_aes128_encrypt_block(init_vector, key_schedule), plain); + *next_init_vector = cipher; + return cipher; +} + +static __inline AesBlock128 __fastcall aes128cfb_decrypt_block( + AesBlock128 cipher, + Aes128KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 plain = _mm_xor_si128(raw_aes128_encrypt_block(init_vector, key_schedule), cipher); + *next_init_vector = cipher; + return plain; +} + +static __inline AesBlock128 __fastcall aes128ofb_encrypt_block( + AesBlock128 plain, + Aes128KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 tmp = raw_aes128_encrypt_block(init_vector, key_schedule); + *next_init_vector = tmp; + return _mm_xor_si128(tmp, plain); +} + +static __inline AesBlock128 __fastcall aes128ofb_decrypt_block( + AesBlock128 cipher, + Aes128KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 tmp = raw_aes128_encrypt_block(init_vector, key_schedule); + *next_init_vector = tmp; + return _mm_xor_si128(tmp, cipher); +} + +static __inline AesBlock128 __fastcall aes128ctr_encrypt_block( + AesBlock128 plain, + Aes128KeySchedule* key_schedule, + AesBlock128 init_vector, + int counter) +{ + init_vector = aes128_le2be(init_vector); + init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); + init_vector = aes128_be2le(init_vector); + return _mm_xor_si128(plain, raw_aes128_encrypt_block(init_vector, key_schedule)); +} + +static __inline AesBlock128 __fastcall aes128ctr_decrypt_block( + AesBlock128 cipher, + Aes128KeySchedule* key_schedule, + AesBlock128 init_vector, + int counter) +{ + init_vector = aes128_le2be(init_vector); + init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); + init_vector = aes128_be2le(init_vector); + return _mm_xor_si128(cipher, raw_aes128_encrypt_block(init_vector, key_schedule)); +} + +static __inline void __fastcall aes192_expand_key_schedule( + AesBlock192* key, + Aes192KeySchedule* key_schedule) +{ + raw_aes192_expand_key_schedule(key->lo, key->hi, key_schedule); +} + +static __inline void __fastcall aes192_invert_key_schedule( + Aes192KeySchedule* key_schedule, + Aes192KeySchedule* inverted_schedule) +{ + raw_aes192_invert_key_schedule(key_schedule, inverted_schedule); +} + +static __inline AesBlock128 __fastcall aes192ecb_encrypt_block( + AesBlock128 plain, + Aes192KeySchedule* key_schedule) +{ + return raw_aes192_encrypt_block(plain, key_schedule); +} + +static __inline AesBlock128 __fastcall aes192ecb_decrypt_block( + AesBlock128 cipher, + Aes192KeySchedule* inverted_schedule) +{ + return raw_aes192_decrypt_block(cipher, inverted_schedule); +} + +static __inline AesBlock128 __fastcall aes192cbc_encrypt_block( + AesBlock128 plain, + Aes192KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 cipher = raw_aes192_encrypt_block(_mm_xor_si128(plain, init_vector), key_schedule); + *next_init_vector = cipher; + return cipher; +} + +static __inline AesBlock128 __fastcall aes192cbc_decrypt_block( + AesBlock128 cipher, + Aes192KeySchedule* inverted_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 plain = _mm_xor_si128(raw_aes192_decrypt_block(cipher, inverted_schedule), init_vector); + *next_init_vector = cipher; + return plain; +} + +static __inline AesBlock128 __fastcall aes192cfb_encrypt_block( + AesBlock128 plain, + Aes192KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 cipher = _mm_xor_si128(raw_aes192_encrypt_block(init_vector, key_schedule), plain); + *next_init_vector = cipher; + return cipher; +} + +static __inline AesBlock128 __fastcall aes192cfb_decrypt_block( + AesBlock128 cipher, + Aes192KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 plain = _mm_xor_si128(raw_aes192_encrypt_block(init_vector, key_schedule), cipher); + *next_init_vector = cipher; + return plain; +} + +static __inline AesBlock128 __fastcall aes192ofb_encrypt_block( + AesBlock128 plain, + Aes192KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 tmp = raw_aes192_encrypt_block(init_vector, key_schedule); + *next_init_vector = tmp; + return _mm_xor_si128(tmp, plain); +} + +static __inline AesBlock128 __fastcall aes192ofb_decrypt_block( + AesBlock128 cipher, + Aes192KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 tmp = raw_aes192_encrypt_block(init_vector, key_schedule); + *next_init_vector = tmp; + return _mm_xor_si128(tmp, cipher); +} + +static __inline AesBlock128 __fastcall aes192ctr_encrypt_block( + AesBlock128 plain, + Aes192KeySchedule* key_schedule, + AesBlock128 init_vector, + int counter) +{ + init_vector = aes128_le2be(init_vector); + init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); + init_vector = aes128_be2le(init_vector); + return _mm_xor_si128(plain, raw_aes192_encrypt_block(init_vector, key_schedule)); +} + +static __inline AesBlock128 __fastcall aes192ctr_decrypt_block( + AesBlock128 cipher, + Aes192KeySchedule* key_schedule, + AesBlock128 init_vector, + int counter) +{ + init_vector = aes128_le2be(init_vector); + init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); + init_vector = aes128_be2le(init_vector); + return _mm_xor_si128(cipher, raw_aes192_encrypt_block(init_vector, key_schedule)); +} + +static __inline void __fastcall aes256_expand_key_schedule( + AesBlock256* key, + Aes256KeySchedule* key_schedule) +{ + raw_aes256_expand_key_schedule(key->lo, key->hi, key_schedule); +} + +static __inline void __fastcall aes256_invert_key_schedule( + Aes256KeySchedule* key_schedule, + Aes256KeySchedule* inverted_schedule) +{ + raw_aes256_invert_key_schedule(key_schedule, inverted_schedule); +} + +static __inline AesBlock128 __fastcall aes256ecb_encrypt_block( + AesBlock128 plain, + Aes256KeySchedule* key_schedule) +{ + return raw_aes256_encrypt_block(plain, key_schedule); +} + +static __inline AesBlock128 __fastcall aes256ecb_decrypt_block( + AesBlock128 cipher, + Aes256KeySchedule* inverted_schedule) +{ + return raw_aes256_decrypt_block(cipher, inverted_schedule); +} + +static __inline AesBlock128 __fastcall aes256cbc_encrypt_block( + AesBlock128 plain, + Aes256KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 cipher = raw_aes256_encrypt_block(_mm_xor_si128(plain, init_vector), key_schedule); + *next_init_vector = cipher; + return cipher; +} + +static __inline AesBlock128 __fastcall aes256cbc_decrypt_block( + AesBlock128 cipher, + Aes256KeySchedule* inverted_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 plain = _mm_xor_si128(raw_aes256_decrypt_block(cipher, inverted_schedule), init_vector); + *next_init_vector = cipher; + return plain; +} + +static __inline AesBlock128 __fastcall aes256cfb_encrypt_block( + AesBlock128 plain, + Aes256KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 cipher = _mm_xor_si128(raw_aes256_encrypt_block(init_vector, key_schedule), plain); + *next_init_vector = cipher; + return cipher; +} + +static __inline AesBlock128 __fastcall aes256cfb_decrypt_block( + AesBlock128 cipher, + Aes256KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 plain = _mm_xor_si128(raw_aes256_encrypt_block(init_vector, key_schedule), cipher); + *next_init_vector = cipher; + return plain; +} + +static __inline AesBlock128 __fastcall aes256ofb_encrypt_block( + AesBlock128 plain, + Aes256KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 tmp = raw_aes256_encrypt_block(init_vector, key_schedule); + *next_init_vector = tmp; + return _mm_xor_si128(tmp, plain); +} + +static __inline AesBlock128 __fastcall aes256ofb_decrypt_block( + AesBlock128 cipher, + Aes256KeySchedule* key_schedule, + AesBlock128 init_vector, + AesBlock128* next_init_vector) +{ + AesBlock128 tmp = raw_aes256_encrypt_block(init_vector, key_schedule); + *next_init_vector = tmp; + return _mm_xor_si128(tmp, cipher); +} + +static __inline AesBlock128 __fastcall aes256ctr_encrypt_block( + AesBlock128 plain, + Aes256KeySchedule* key_schedule, + AesBlock128 init_vector, + int counter) +{ + init_vector = aes128_le2be(init_vector); + init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); + init_vector = aes128_be2le(init_vector); + return _mm_xor_si128(plain, raw_aes256_encrypt_block(init_vector, key_schedule)); +} + +static __inline AesBlock128 __fastcall aes256ctr_decrypt_block( + AesBlock128 cipher, + Aes256KeySchedule* key_schedule, + AesBlock128 init_vector, + int counter) +{ + init_vector = aes128_le2be(init_vector); + init_vector = _mm_add_epi32(init_vector, make_aes_block128(0, 0, 0, counter)); + init_vector = aes128_be2le(init_vector); + return _mm_xor_si128(cipher, raw_aes256_encrypt_block(init_vector, key_schedule)); +} diff --git a/include/aesni/buffer.h b/include/aesni/buffer.h new file mode 100644 index 0000000..f3c845d --- /dev/null +++ b/include/aesni/buffer.h @@ -0,0 +1,20 @@ +/** + * \file + * \author Egor Tensin + * \date 2015 + * \copyright This file is licensed under the terms of the MIT License. + * See LICENSE.txt for details. + */ + +#pragma once + +#include + +size_t aes128ecb_encrypt_buffer(const unsigned char* src, + size_t src_size, + unsigned char* dest, + Aes128KeySchedule* key_schedule); +size_t aes128ecb_decrypt_buffer(const unsigned char* src, + size_t src_size, + unsigned char* dest, + Aes128KeySchedule* inverted_schedule); diff --git a/include/aesni/file.h b/include/aesni/file.h deleted file mode 100644 index f3c845d..0000000 --- a/include/aesni/file.h +++ /dev/null @@ -1,20 +0,0 @@ -/** - * \file - * \author Egor Tensin - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#pragma once - -#include - -size_t aes128ecb_encrypt_buffer(const unsigned char* src, - size_t src_size, - unsigned char* dest, - Aes128KeySchedule* key_schedule); -size_t aes128ecb_decrypt_buffer(const unsigned char* src, - size_t src_size, - unsigned char* dest, - Aes128KeySchedule* inverted_schedule); -- cgit v1.2.3