3#include <StormByte/buffer/consumer.hxx>
4#include <StormByte/clonable.hxx>
5#include <StormByte/crypto/typedefs.hxx>
6#include <StormByte/crypto/visibility.h>
12namespace StormByte::Crypto::Crypter {
32 class STORMBYTE_CRYPTO_PUBLIC
Generic:
public StormByte::Clonable<Generic> {
71 inline
bool Encrypt(std::span<const std::
byte> input, Buffer::WriteOnly& output) const noexcept {
72 return DoEncrypt(input, output);
81 inline bool Encrypt(
const Buffer::ReadOnly& input, Buffer::WriteOnly& output)
const noexcept {
82 return DoEncrypt(
const_cast<Buffer::ReadOnly&
>(input), output, ReadMode::Copy);
91 inline bool Encrypt(Buffer::ReadOnly& input, Buffer::WriteOnly& output)
const noexcept {
92 return DoEncrypt(input, output, ReadMode::Move);
101 inline Buffer::Consumer
Encrypt(Buffer::Consumer consumer, ReadMode mode = ReadMode::Move)
const noexcept {
102 return DoEncrypt(consumer, mode);
111 inline bool Decrypt(std::span<const std::byte> input, Buffer::WriteOnly& output)
const noexcept {
112 return DoDecrypt(input, output);
121 inline bool Decrypt(
const Buffer::ReadOnly& input, Buffer::WriteOnly& output)
const noexcept {
122 return DoDecrypt(
const_cast<Buffer::ReadOnly&
>(input), output, ReadMode::Copy);
131 inline bool Decrypt(Buffer::ReadOnly& input, Buffer::WriteOnly& output)
const noexcept {
132 return DoDecrypt(input, output, ReadMode::Move);
141 inline Buffer::Consumer
Decrypt(Buffer::Consumer consumer, ReadMode mode = ReadMode::Move)
const noexcept {
142 return DoDecrypt(consumer, mode);
149 inline enum Type
Type() const noexcept {
171 bool DoDecrypt(Buffer::ReadOnly& input, Buffer::WriteOnly& output, ReadMode mode)
const noexcept;
180 virtual bool DoEncrypt(std::span<const std::byte> input, Buffer::WriteOnly& output)
const noexcept = 0;
188 virtual Buffer::Consumer DoEncrypt(Buffer::Consumer consumer, ReadMode mode)
const noexcept = 0;
197 bool DoEncrypt(Buffer::ReadOnly& input, Buffer::WriteOnly& output, ReadMode mode)
const noexcept;
206 virtual bool DoDecrypt(std::span<const std::byte> input, Buffer::WriteOnly& output)
const noexcept = 0;
214 virtual Buffer::Consumer DoDecrypt(Buffer::Consumer consumer, ReadMode mode)
const noexcept = 0;
A generic crypter class.
Definition generic.hxx:32
bool Decrypt(std::span< const std::byte > input, Buffer::WriteOnly &output) const noexcept
Decrypt data from input buffer to output buffer.
Definition generic.hxx:111
Buffer::Consumer Encrypt(Buffer::Consumer consumer, ReadMode mode=ReadMode::Move) const noexcept
Encrypt data from a Consumer buffer.
Definition generic.hxx:101
bool Encrypt(const Buffer::ReadOnly &input, Buffer::WriteOnly &output) const noexcept
Encrypt data from input buffer to output buffer.
Definition generic.hxx:81
bool Decrypt(Buffer::ReadOnly &input, Buffer::WriteOnly &output) const noexcept
Decrypt data from input buffer to output buffer, moving the input data.
Definition generic.hxx:131
bool Decrypt(const Buffer::ReadOnly &input, Buffer::WriteOnly &output) const noexcept
Decrypt data from input buffer to output buffer.
Definition generic.hxx:121
bool Encrypt(Buffer::ReadOnly &input, Buffer::WriteOnly &output) const noexcept
Encrypt data from input buffer to output buffer, moving the input data.
Definition generic.hxx:91
Generic(const Generic &other)=default
Copy constructor.
enum Type m_type
The type of crypter.
Definition generic.hxx:154
Generic(Generic &&other) noexcept=default
Move constructor.
enum Type Type() const noexcept
Gets the type of crypter.
Definition generic.hxx:149
Generic(enum Type type)
Constructor.
Definition generic.hxx:160
Buffer::Consumer Decrypt(Buffer::Consumer consumer, ReadMode mode=ReadMode::Move) const noexcept
Decrypt data from a Consumer buffer.
Definition generic.hxx:141
virtual ~Generic() noexcept=default
Virtual destructor.