diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2019-12-21 13:33:50 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2019-12-21 13:33:50 +0300 |
commit | 351c5188013fff041c7217aed64478cfc7643480 (patch) | |
tree | c918b5093ac45394439f3dff30da37b809173603 /cxx/include/aesxx/mode.hpp | |
parent | cmake: install libraries & their headers (diff) | |
download | aes-tools-351c5188013fff041c7217aed64478cfc7643480.tar.gz aes-tools-351c5188013fff041c7217aed64478cfc7643480.zip |
restructure the project
Diffstat (limited to 'cxx/include/aesxx/mode.hpp')
-rw-r--r-- | cxx/include/aesxx/mode.hpp | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/cxx/include/aesxx/mode.hpp b/cxx/include/aesxx/mode.hpp deleted file mode 100644 index 1c6c4cf..0000000 --- a/cxx/include/aesxx/mode.hpp +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) 2015 Egor Tensin <Egor.Tensin@gmail.com> -// This file is part of the "AES tools" project. -// For details, see https://github.com/egor-tensin/aes-tools. -// Distributed under the MIT License. - -#pragma once - -#include <aes/all.h> - -#include <type_traits> - -namespace aes -{ - typedef AES_Mode Mode; - - template <Mode mode> - struct ModeRequiresInitVector : public std::true_type - { }; - - template <> - struct ModeRequiresInitVector<AES_ECB> : public std::false_type - { }; - - template <Mode mode> - struct ModeUsesEncryptionKeysOnly : public std::true_type - { }; - - inline bool mode_requires_init_vector(Mode mode) - { - return mode != AES_ECB; - } - - template <> - struct ModeUsesEncryptionKeysOnly<AES_ECB> : public std::false_type - { }; - - template <> - struct ModeUsesEncryptionKeysOnly<AES_CBC> : public std::false_type - { }; - - inline bool mode_uses_encryption_keys_only(Mode mode) - { - return mode != AES_ECB && mode != AES_CBC; - } - -#define AESXX_ENCRYPT_BLOCK_ECB(prefix) \ - template <> \ - inline void encrypt_block<AES_## prefix, AES_ECB>( \ - const typename Types<AES_## prefix>::Block& plaintext, \ - const typename Types<AES_## prefix>::RoundKeys& encryption_keys, \ - typename Types<AES_## prefix>::Block& ciphertext) \ - { \ - ciphertext = aes_## prefix ##_encrypt_block_ECB(plaintext, &encryption_keys); \ - } - -#define AESXX_DECRYPT_BLOCK_ECB(prefix) \ - template <> \ - inline void decrypt_block<AES_## prefix, AES_ECB>( \ - const typename Types<AES_## prefix>::Block& ciphertext, \ - const typename Types<AES_## prefix>::RoundKeys& decryption_keys, \ - typename Types<AES_## prefix>::Block& plaintext) \ - { \ - plaintext = aes_## prefix ##_decrypt_block_ECB(ciphertext, &decryption_keys); \ - } - -#define AESXX_ENCRYPT_BLOCK_CBC(prefix) \ - template <> \ - inline void encrypt_block<AES_## prefix, AES_CBC>( \ - const typename Types<AES_## prefix>::Block& plaintext, \ - const typename Types<AES_## prefix>::RoundKeys& encryption_keys, \ - typename Types<AES_## prefix>::Block& iv, \ - typename Types<AES_## prefix>::Block& ciphertext) \ - { \ - ciphertext = aes_## prefix ##_encrypt_block_CBC(plaintext, &encryption_keys, iv, &iv); \ - } - -#define AESXX_DECRYPT_BLOCK_CBC(prefix) \ - template <> \ - inline void decrypt_block<AES_## prefix, AES_CBC>( \ - const typename Types<AES_## prefix>::Block& ciphertext, \ - const typename Types<AES_## prefix>::RoundKeys& decryption_keys, \ - typename Types<AES_## prefix>::Block& iv, \ - typename Types<AES_## prefix>::Block& plaintext) \ - { \ - plaintext = aes_## prefix ##_decrypt_block_CBC(ciphertext, &decryption_keys, iv, &iv); \ - } - -#define AESXX_ENCRYPT_BLOCK_CFB(prefix) \ - template <> \ - inline void encrypt_block<AES_## prefix, AES_CFB>( \ - const typename Types<AES_## prefix>::Block& plaintext, \ - const typename Types<AES_## prefix>::RoundKeys& encryption_keys, \ - typename Types<AES_## prefix>::Block& iv, \ - typename Types<AES_## prefix>::Block& ciphertext) \ - { \ - ciphertext = aes_## prefix ##_encrypt_block_CFB(plaintext, &encryption_keys, iv, &iv); \ - } - -#define AESXX_DECRYPT_BLOCK_CFB(prefix) \ - template <> \ - inline void decrypt_block<AES_## prefix, AES_CFB>( \ - const typename Types<AES_## prefix>::Block& ciphertext, \ - const typename Types<AES_## prefix>::RoundKeys& encryption_keys, \ - typename Types<AES_## prefix>::Block& iv, \ - typename Types<AES_## prefix>::Block& plaintext) \ - { \ - plaintext = aes_## prefix ##_decrypt_block_CFB(ciphertext, &encryption_keys, iv, &iv); \ - } - -#define AESXX_ENCRYPT_BLOCK_OFB(prefix) \ - template <> \ - inline void encrypt_block<AES_## prefix, AES_OFB>( \ - const typename Types<AES_## prefix>::Block& plaintext, \ - const typename Types<AES_## prefix>::RoundKeys& encryption_keys, \ - typename Types<AES_## prefix>::Block& iv, \ - typename Types<AES_## prefix>::Block& ciphertext) \ - { \ - ciphertext = aes_## prefix ##_encrypt_block_OFB(plaintext, &encryption_keys, iv, &iv); \ - } - -#define AESXX_DECRYPT_BLOCK_OFB(prefix) \ - template <> \ - inline void decrypt_block<AES_## prefix, AES_OFB>( \ - const typename Types<AES_## prefix>::Block& ciphertext, \ - const typename Types<AES_## prefix>::RoundKeys& encryption_keys, \ - typename Types<AES_## prefix>::Block& iv, \ - typename Types<AES_## prefix>::Block& plaintext) \ - { \ - plaintext = aes_## prefix ##_decrypt_block_OFB(ciphertext, &encryption_keys, iv, &iv); \ - } - -#define AESXX_ENCRYPT_BLOCK_CTR(prefix) \ - template <> \ - inline void encrypt_block<AES_## prefix, AES_CTR>( \ - const typename Types<AES_## prefix>::Block& plaintext, \ - const typename Types<AES_## prefix>::RoundKeys& encryption_keys, \ - typename Types<AES_## prefix>::Block& iv, \ - typename Types<AES_## prefix>::Block& ciphertext) \ - { \ - ciphertext = aes_## prefix ##_encrypt_block_CTR(plaintext, &encryption_keys, iv, &iv); \ - } - -#define AESXX_DECRYPT_BLOCK_CTR(prefix) \ - template <> \ - inline void decrypt_block<AES_## prefix, AES_CTR>( \ - const typename Types<AES_## prefix>::Block& ciphertext, \ - const typename Types<AES_## prefix>::RoundKeys& encryption_keys, \ - typename Types<AES_## prefix>::Block& iv, \ - typename Types<AES_## prefix>::Block& plaintext) \ - { \ - plaintext = aes_## prefix ##_decrypt_block_CTR(ciphertext, &encryption_keys, iv, &iv); \ - } -} |