diff options
Diffstat (limited to '')
-rw-r--r-- | include/aesni/all.h | 12 | ||||
-rw-r--r-- | include/aesni/data.h | 41 | ||||
-rw-r--r-- | include/aesni/raw.h | 47 |
3 files changed, 100 insertions, 0 deletions
diff --git a/include/aesni/all.h b/include/aesni/all.h new file mode 100644 index 0000000..f16d2a6 --- /dev/null +++ b/include/aesni/all.h @@ -0,0 +1,12 @@ +/** + * \file + * \author Egor Tensin <Egor.Tensin@gmail.com> + * \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" diff --git a/include/aesni/data.h b/include/aesni/data.h new file mode 100644 index 0000000..029d8c8 --- /dev/null +++ b/include/aesni/data.h @@ -0,0 +1,41 @@ +/** + * \file + * \author Egor Tensin <Egor.Tensin@gmail.com> + * \date 2015 + * \copyright This file is licensed under the terms of the MIT License. + * See LICENSE.txt for details. + */ + +#pragma once + +#include <emmintrin.h> + +typedef __m128i AesBlock; + +AesBlock make_aes_block(int highest, int high, int low, int lowest); + +typedef AesBlock Aes128Key; + +typedef struct +{ + AesBlock hi; + AesBlock lo; +} +Aes192Key; + +typedef struct +{ + AesBlock hi; + AesBlock lo; +} +Aes256Key; + +typedef struct +{ + unsigned char bytes[4][4]; +} +AesState; + +AesState aes_block_to_state(AesBlock); + +void print_aes_block(AesBlock); diff --git a/include/aesni/raw.h b/include/aesni/raw.h new file mode 100644 index 0000000..03ce217 --- /dev/null +++ b/include/aesni/raw.h @@ -0,0 +1,47 @@ +/** + * \file + * \author Egor Tensin <Egor.Tensin@gmail.com> + * \date 2015 + * \copyright This file is licensed under the terms of the MIT License. + * See LICENSE.txt for details. + */ + +#pragma once + +#include "data.h" + +AesBlock __fastcall aes128ecb_encrypt( + AesBlock plain, + AesBlock key); +AesBlock __fastcall aes128ecb_decrypt( + AesBlock cypher, + AesBlock key); + +AesBlock __fastcall aes192ecb_encrypt( + AesBlock plain, + AesBlock key_lo, + AesBlock key_hi); +AesBlock __fastcall aes192ecb_decrypt( + AesBlock cypher, + AesBlock key_lo, + AesBlock key_hi); + +AesBlock __fastcall aes256ecb_encrypt( + AesBlock plain, + AesBlock key_lo, + AesBlock key_hi); +AesBlock __fastcall aes256ecb_decrypt( + AesBlock cypher, + AesBlock key_lo, + AesBlock key_hi); + +AesBlock __fastcall aes256cbc_encrypt( + AesBlock plain, + AesBlock key_lo, + AesBlock key_hi, + AesBlock *iv); +AesBlock __fastcall aes256cbc_decrypt( + AesBlock cypher, + AesBlock key_lo, + AesBlock key_hi, + AesBlock *iv); |