#ifndef CHAOS_CIPHER_BLOCK_BLOCKCIPHER_HPP #define CHAOS_CIPHER_BLOCK_BLOCKCIPHER_HPP #include #include #include "BlockKey.hpp" #include "Encryptor.hpp" #include "Decryptor.hpp" namespace Chaos::Cipher::Block { template concept BlockCipher = requires { typename T::Block; typename T::Key; typename T::Encryptor; typename T::Decryptor; requires std::unsigned_integral>; typename std::integral_constant; requires std::unsigned_integral>; typename std::integral_constant; requires BlockKey; requires Encryptor; requires Decryptor; }; } // namespace Chaos::Cipher::Block #endif // CHAOS_CIPHER_BLOCK_BLOCKCIPHER_HPP