LeviLamina
Loading...
Searching...
No Matches
ISystemInterface.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5namespace Crypto::Symmetric {
6
8public:
9 // virtual functions
10 // NOLINTBEGIN
11 virtual ~ISystemInterface() = default;
12
13 virtual void init(::std::string const& key, ::std::string const& IV) = 0;
14
15#ifdef LL_PLAT_S
16 virtual void encrypt(::std::string const& plaintext, ::std::string& output) = 0;
17#else // LL_PLAT_C
18 virtual void encrypt(::std::string const& plaintext, ::std::string& out) = 0;
19#endif
20
21#ifdef LL_PLAT_S
22 virtual void decrypt(::std::string const& ciphertext, ::std::string& output) = 0;
23#else // LL_PLAT_C
24 virtual void decrypt(::std::string const& ciphertext, ::std::string& out) = 0;
25#endif
26
27 virtual uint64 getKeySize() const = 0;
28
29 virtual uint64 getBlockSize() const = 0;
30
31 virtual uint64 getEncryptionBufferSize(uint64 inputSize) const = 0;
32
33 virtual bool encryptToBuffer(::gsl::span<char const> input, ::gsl::span<char> output, uint64& bytesWritten) = 0;
34
35 virtual uint64 getDecryptionBufferSize(uint64 inputSize) const = 0;
36
37 virtual bool decryptToBuffer(::gsl::span<char const> input, ::gsl::span<char> output, uint64& bytesWritten) = 0;
38 // NOLINTEND
39};
40
41} // namespace Crypto::Symmetric
Definition ISystemInterface.h:7