#ifndef CHAOS_CIPHER_BLOCK_ENCRYPTOR_HPP #define CHAOS_CIPHER_BLOCK_ENCRYPTOR_HPP #include #include #include namespace Chaos::Cipher::Block { template concept Encryptor = requires(T encryptor, typename T::Block block, uint8_t * outBegin, uint8_t * outEnd, uint8_t * inBegin, uint8_t * inEnd) { typename T::Block; typename T::Key; requires std::constructible_from; requires std::unsigned_integral>; requires std::unsigned_integral>; encryptor.EncryptBlock(outBegin, outEnd, inBegin, inEnd); { encryptor.EncryptBlock(block) } -> std::same_as; { encryptor.GetBlockSize() } -> std::unsigned_integral; }; } // namespace Chaos::Cipher::Block #endif // CHAOS_CIPHER_BLOCK_ENCRYPTOR_HPP