StormByte C++ Library: Crypto module 0.0.9999
StormByte-Crypto is a StormByte library module for handling cryptographic operations
Loading...
Searching...
No Matches
chachapoly.hxx
1#pragma once
2
3#include <StormByte/crypto/crypter/symmetric/generic.hxx>
4
9namespace StormByte::Crypto::Crypter {
14 class STORMBYTE_CRYPTO_PUBLIC ChaChaPoly final: public Symmetric {
15 public:
20 inline ChaChaPoly(const std::string& password):
21 Symmetric(Type::ChaChaPoly, password) {}
22
27 ChaChaPoly(const ChaChaPoly& other) = default;
28
33 ChaChaPoly(ChaChaPoly&& other) noexcept = default;
34
38 virtual ~ChaChaPoly() noexcept = default;
39
45 ChaChaPoly& operator=(const ChaChaPoly& other) = default;
46
52 ChaChaPoly& operator=(ChaChaPoly&& other) noexcept = default;
53
58 inline PointerType Clone() const noexcept override {
59 return std::make_shared<ChaChaPoly>(*this);
60 }
61
66 inline PointerType Move() noexcept override {
67 return std::make_shared<ChaChaPoly>(std::move(*this));
68 }
69
70 private:
77 bool DoEncrypt(std::span<const std::byte> input, Buffer::WriteOnly& output) const noexcept override;
78
85 Buffer::Consumer DoEncrypt(Buffer::Consumer consumer, ReadMode mode) const noexcept override;
86
93 bool DoDecrypt(std::span<const std::byte> input, Buffer::WriteOnly& output) const noexcept override;
94
101 Buffer::Consumer DoDecrypt(Buffer::Consumer consumer, ReadMode mode) const noexcept override;
102 };
103}
A symmetric crypter class.
Definition chachapoly.hxx:14
ChaChaPoly(ChaChaPoly &&other) noexcept=default
Move constructor.
ChaChaPoly(const ChaChaPoly &other)=default
Copy constructor.
PointerType Move() noexcept override
Move the ChaChaPoly crypter.
Definition chachapoly.hxx:66
ChaChaPoly(const std::string &password)
Constructor.
Definition chachapoly.hxx:20
virtual ~ChaChaPoly() noexcept=default
Virtual destructor.
A generic symmetric crypter class.
Definition generic.hxx:16