diff options
Diffstat (limited to '')
-rw-r--r-- | include/aesni/block.h | 408 |
1 files changed, 204 insertions, 204 deletions
diff --git a/include/aesni/block.h b/include/aesni/block.h index 6de2632..7f8be7b 100644 --- a/include/aesni/block.h +++ b/include/aesni/block.h @@ -16,358 +16,358 @@ extern "C" { #endif -static __inline void __fastcall aes128_expand_key_schedule( - AesBlock128 key, - Aes128KeySchedule* key_schedule) +static __inline void __fastcall aesni_expand_key_schedule128( + AesNI_Block128 key, + AesNI_KeySchedule128* key_schedule) { - raw_aes128_expand_key_schedule(key, key_schedule); + aesni_raw_expand_key_schedule128(key, key_schedule); } -static __inline void __fastcall aes128_invert_key_schedule( - Aes128KeySchedule* key_schedule, - Aes128KeySchedule* inverted_schedule) +static __inline void __fastcall aesni_invert_key_schedule128( + AesNI_KeySchedule128* key_schedule, + AesNI_KeySchedule128* inverted_schedule) { - raw_aes128_invert_key_schedule(key_schedule, inverted_schedule); + aesni_raw_invert_key_schedule128(key_schedule, inverted_schedule); } -static __inline AesBlock128 __fastcall aes128ecb_encrypt_block( - AesBlock128 plain, - Aes128KeySchedule* key_schedule) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_ecb128( + AesNI_Block128 plain, + AesNI_KeySchedule128* key_schedule) { - return raw_aes128_encrypt_block(plain, key_schedule); + return aesni_raw_encrypt_block128(plain, key_schedule); } -static __inline AesBlock128 __fastcall aes128ecb_decrypt_block( - AesBlock128 cipher, - Aes128KeySchedule* inverted_schedule) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_ecb128( + AesNI_Block128 cipher, + AesNI_KeySchedule128* inverted_schedule) { - return raw_aes128_decrypt_block(cipher, inverted_schedule); + return aesni_raw_decrypt_block128(cipher, inverted_schedule); } -static __inline AesBlock128 __fastcall aes128cbc_encrypt_block( - AesBlock128 plain, - Aes128KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_cbc128( + AesNI_Block128 plain, + AesNI_KeySchedule128* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 cipher = raw_aes128_encrypt_block(_mm_xor_si128(plain, init_vector), key_schedule); + AesNI_Block128 cipher = aesni_raw_encrypt_block128(_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) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_cbc128( + AesNI_Block128 cipher, + AesNI_KeySchedule128* inverted_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 plain = _mm_xor_si128(raw_aes128_decrypt_block(cipher, inverted_schedule), init_vector); + AesNI_Block128 plain = _mm_xor_si128(aesni_raw_decrypt_block128(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) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_cfb128( + AesNI_Block128 plain, + AesNI_KeySchedule128* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 cipher = _mm_xor_si128(raw_aes128_encrypt_block(init_vector, key_schedule), plain); + AesNI_Block128 cipher = _mm_xor_si128(aesni_raw_encrypt_block128(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) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_cfb128( + AesNI_Block128 cipher, + AesNI_KeySchedule128* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 plain = _mm_xor_si128(raw_aes128_encrypt_block(init_vector, key_schedule), cipher); + AesNI_Block128 plain = _mm_xor_si128(aesni_raw_encrypt_block128(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) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_ofb128( + AesNI_Block128 plain, + AesNI_KeySchedule128* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 tmp = raw_aes128_encrypt_block(init_vector, key_schedule); + AesNI_Block128 tmp = aesni_raw_encrypt_block128(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) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_ofb128( + AesNI_Block128 cipher, + AesNI_KeySchedule128* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 tmp = raw_aes128_encrypt_block(init_vector, key_schedule); + AesNI_Block128 tmp = aesni_raw_encrypt_block128(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, +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_ctr128( + AesNI_Block128 plain, + AesNI_KeySchedule128* key_schedule, + AesNI_Block128 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)); + init_vector = aesni_le2be128(init_vector); + init_vector = _mm_add_epi32(init_vector, aesni_make_block128(0, 0, 0, counter)); + init_vector = aesni_be2le128(init_vector); + return _mm_xor_si128(plain, aesni_raw_encrypt_block128(init_vector, key_schedule)); } -static __inline AesBlock128 __fastcall aes128ctr_decrypt_block( - AesBlock128 cipher, - Aes128KeySchedule* key_schedule, - AesBlock128 init_vector, +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_ctr128( + AesNI_Block128 cipher, + AesNI_KeySchedule128* key_schedule, + AesNI_Block128 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)); + init_vector = aesni_le2be128(init_vector); + init_vector = _mm_add_epi32(init_vector, aesni_make_block128(0, 0, 0, counter)); + init_vector = aesni_be2le128(init_vector); + return _mm_xor_si128(cipher, aesni_raw_encrypt_block128(init_vector, key_schedule)); } -static __inline void __fastcall aes192_expand_key_schedule( - AesBlock192* key, - Aes192KeySchedule* key_schedule) +static __inline void __fastcall aesni_expand_key_schedule192( + AesNI_Block192* key, + AesNI_KeySchedule192* key_schedule) { - raw_aes192_expand_key_schedule(key->lo, key->hi, key_schedule); + aesni_raw_expand_key_schedule192(key->lo, key->hi, key_schedule); } -static __inline void __fastcall aes192_invert_key_schedule( - Aes192KeySchedule* key_schedule, - Aes192KeySchedule* inverted_schedule) +static __inline void __fastcall aesni_invert_key_schedule192( + AesNI_KeySchedule192* key_schedule, + AesNI_KeySchedule192* inverted_schedule) { - raw_aes192_invert_key_schedule(key_schedule, inverted_schedule); + aesni_raw_invert_key_schedule192(key_schedule, inverted_schedule); } -static __inline AesBlock128 __fastcall aes192ecb_encrypt_block( - AesBlock128 plain, - Aes192KeySchedule* key_schedule) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_ecb192( + AesNI_Block128 plain, + AesNI_KeySchedule192* key_schedule) { - return raw_aes192_encrypt_block(plain, key_schedule); + return aesni_raw_encrypt_block192(plain, key_schedule); } -static __inline AesBlock128 __fastcall aes192ecb_decrypt_block( - AesBlock128 cipher, - Aes192KeySchedule* inverted_schedule) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_ecb192( + AesNI_Block128 cipher, + AesNI_KeySchedule192* inverted_schedule) { - return raw_aes192_decrypt_block(cipher, inverted_schedule); + return aesni_raw_decrypt_block192(cipher, inverted_schedule); } -static __inline AesBlock128 __fastcall aes192cbc_encrypt_block( - AesBlock128 plain, - Aes192KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_cbc192( + AesNI_Block128 plain, + AesNI_KeySchedule192* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 cipher = raw_aes192_encrypt_block(_mm_xor_si128(plain, init_vector), key_schedule); + AesNI_Block128 cipher = aesni_raw_encrypt_block192(_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) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_cbc192( + AesNI_Block128 cipher, + AesNI_KeySchedule192* inverted_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 plain = _mm_xor_si128(raw_aes192_decrypt_block(cipher, inverted_schedule), init_vector); + AesNI_Block128 plain = _mm_xor_si128(aesni_raw_decrypt_block192(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) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_cfb192( + AesNI_Block128 plain, + AesNI_KeySchedule192* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 cipher = _mm_xor_si128(raw_aes192_encrypt_block(init_vector, key_schedule), plain); + AesNI_Block128 cipher = _mm_xor_si128(aesni_raw_encrypt_block192(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) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_cfb192( + AesNI_Block128 cipher, + AesNI_KeySchedule192* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 plain = _mm_xor_si128(raw_aes192_encrypt_block(init_vector, key_schedule), cipher); + AesNI_Block128 plain = _mm_xor_si128(aesni_raw_encrypt_block192(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) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_ofb192( + AesNI_Block128 plain, + AesNI_KeySchedule192* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 tmp = raw_aes192_encrypt_block(init_vector, key_schedule); + AesNI_Block128 tmp = aesni_raw_encrypt_block192(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) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_ofb192( + AesNI_Block128 cipher, + AesNI_KeySchedule192* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 tmp = raw_aes192_encrypt_block(init_vector, key_schedule); + AesNI_Block128 tmp = aesni_raw_encrypt_block192(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, +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_ctr192( + AesNI_Block128 plain, + AesNI_KeySchedule192* key_schedule, + AesNI_Block128 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)); + init_vector = aesni_le2be128(init_vector); + init_vector = _mm_add_epi32(init_vector, aesni_make_block128(0, 0, 0, counter)); + init_vector = aesni_be2le128(init_vector); + return _mm_xor_si128(plain, aesni_raw_encrypt_block192(init_vector, key_schedule)); } -static __inline AesBlock128 __fastcall aes192ctr_decrypt_block( - AesBlock128 cipher, - Aes192KeySchedule* key_schedule, - AesBlock128 init_vector, +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_ctr192( + AesNI_Block128 cipher, + AesNI_KeySchedule192* key_schedule, + AesNI_Block128 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)); + init_vector = aesni_le2be128(init_vector); + init_vector = _mm_add_epi32(init_vector, aesni_make_block128(0, 0, 0, counter)); + init_vector = aesni_be2le128(init_vector); + return _mm_xor_si128(cipher, aesni_raw_encrypt_block192(init_vector, key_schedule)); } -static __inline void __fastcall aes256_expand_key_schedule( - AesBlock256* key, - Aes256KeySchedule* key_schedule) +static __inline void __fastcall aesni_expand_key_schedule256( + AesNI_Block256* key, + AesNI_KeySchedule256* key_schedule) { - raw_aes256_expand_key_schedule(key->lo, key->hi, key_schedule); + aesni_raw_expand_key_schedule256(key->lo, key->hi, key_schedule); } -static __inline void __fastcall aes256_invert_key_schedule( - Aes256KeySchedule* key_schedule, - Aes256KeySchedule* inverted_schedule) +static __inline void __fastcall aesni_invert_key_schedule256( + AesNI_KeySchedule256* key_schedule, + AesNI_KeySchedule256* inverted_schedule) { - raw_aes256_invert_key_schedule(key_schedule, inverted_schedule); + aesni_raw_invert_key_schedule256(key_schedule, inverted_schedule); } -static __inline AesBlock128 __fastcall aes256ecb_encrypt_block( - AesBlock128 plain, - Aes256KeySchedule* key_schedule) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_ecb256( + AesNI_Block128 plain, + AesNI_KeySchedule256* key_schedule) { - return raw_aes256_encrypt_block(plain, key_schedule); + return aesni_raw_encrypt_block256(plain, key_schedule); } -static __inline AesBlock128 __fastcall aes256ecb_decrypt_block( - AesBlock128 cipher, - Aes256KeySchedule* inverted_schedule) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_ecb256( + AesNI_Block128 cipher, + AesNI_KeySchedule256* inverted_schedule) { - return raw_aes256_decrypt_block(cipher, inverted_schedule); + return aesni_raw_decrypt_block256(cipher, inverted_schedule); } -static __inline AesBlock128 __fastcall aes256cbc_encrypt_block( - AesBlock128 plain, - Aes256KeySchedule* key_schedule, - AesBlock128 init_vector, - AesBlock128* next_init_vector) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_cbc256( + AesNI_Block128 plain, + AesNI_KeySchedule256* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 cipher = raw_aes256_encrypt_block(_mm_xor_si128(plain, init_vector), key_schedule); + AesNI_Block128 cipher = aesni_raw_encrypt_block256(_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) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_cbc256( + AesNI_Block128 cipher, + AesNI_KeySchedule256* inverted_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 plain = _mm_xor_si128(raw_aes256_decrypt_block(cipher, inverted_schedule), init_vector); + AesNI_Block128 plain = _mm_xor_si128(aesni_raw_decrypt_block256(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) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_cfb256( + AesNI_Block128 plain, + AesNI_KeySchedule256* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 cipher = _mm_xor_si128(raw_aes256_encrypt_block(init_vector, key_schedule), plain); + AesNI_Block128 cipher = _mm_xor_si128(aesni_raw_encrypt_block256(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) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_cfb256( + AesNI_Block128 cipher, + AesNI_KeySchedule256* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 plain = _mm_xor_si128(raw_aes256_encrypt_block(init_vector, key_schedule), cipher); + AesNI_Block128 plain = _mm_xor_si128(aesni_raw_encrypt_block256(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) +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_ofb256( + AesNI_Block128 plain, + AesNI_KeySchedule256* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 tmp = raw_aes256_encrypt_block(init_vector, key_schedule); + AesNI_Block128 tmp = aesni_raw_encrypt_block256(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) +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_ofb256( + AesNI_Block128 cipher, + AesNI_KeySchedule256* key_schedule, + AesNI_Block128 init_vector, + AesNI_Block128* next_init_vector) { - AesBlock128 tmp = raw_aes256_encrypt_block(init_vector, key_schedule); + AesNI_Block128 tmp = aesni_raw_encrypt_block256(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, +static __inline AesNI_Block128 __fastcall aesni_encrypt_block_ctr256( + AesNI_Block128 plain, + AesNI_KeySchedule256* key_schedule, + AesNI_Block128 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)); + init_vector = aesni_le2be128(init_vector); + init_vector = _mm_add_epi32(init_vector, aesni_make_block128(0, 0, 0, counter)); + init_vector = aesni_be2le128(init_vector); + return _mm_xor_si128(plain, aesni_raw_encrypt_block256(init_vector, key_schedule)); } -static __inline AesBlock128 __fastcall aes256ctr_decrypt_block( - AesBlock128 cipher, - Aes256KeySchedule* key_schedule, - AesBlock128 init_vector, +static __inline AesNI_Block128 __fastcall aesni_decrypt_block_ctr256( + AesNI_Block128 cipher, + AesNI_KeySchedule256* key_schedule, + AesNI_Block128 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)); + init_vector = aesni_le2be128(init_vector); + init_vector = _mm_add_epi32(init_vector, aesni_make_block128(0, 0, 0, counter)); + init_vector = aesni_be2le128(init_vector); + return _mm_xor_si128(cipher, aesni_raw_encrypt_block256(init_vector, key_schedule)); } #ifdef __cplusplus |