#ifndef CHAOS_CIPHER_BLOCK_DECRYPTOR_HPP #define CHAOS_CIPHER_BLOCK_DECRYPTOR_HPP #include #include #include namespace Chaos::Cipher::Block { template concept Decryptor = requires(T decryptor, 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>; decryptor.DecryptBlock(outBegin, outEnd, inBegin, inEnd); { decryptor.DecryptBlock(block) } -> std::same_as; { decryptor.GetBlockSize() } -> std::unsigned_integral; }; } // namespace Chaos::Cipher::Block #endif // CHAOS_CIPHER_BLOCK_DECRYPTOR_HPP