Use virtual destructors
This commit is contained in:
parent
fb4519eea5
commit
aa6f287a19
@ -11,7 +11,7 @@ namespace horcrux {
|
|||||||
enum class Mode { kEncrypt, kDecrypt };
|
enum class Mode { kEncrypt, kDecrypt };
|
||||||
|
|
||||||
class Cipher {
|
class Cipher {
|
||||||
protected:
|
public:
|
||||||
Cipher() = delete;
|
Cipher() = delete;
|
||||||
explicit Cipher(Mode m) : mode(m) { }
|
explicit Cipher(Mode m) : mode(m) { }
|
||||||
Cipher(Mode m, const std::vector<unsigned char>& key) :
|
Cipher(Mode m, const std::vector<unsigned char>& key) :
|
||||||
@ -20,6 +20,9 @@ protected:
|
|||||||
Cipher(Mode m, std::vector<unsigned char>&& key) :
|
Cipher(Mode m, std::vector<unsigned char>&& key) :
|
||||||
mode(m), encryption_key(key) {}
|
mode(m), encryption_key(key) {}
|
||||||
|
|
||||||
|
virtual ~Cipher() = default;
|
||||||
|
|
||||||
|
protected:
|
||||||
std::vector<unsigned char> encryption_key;
|
std::vector<unsigned char> encryption_key;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -58,6 +61,8 @@ public:
|
|||||||
throw std::invalid_argument("Invalid key size");
|
throw std::invalid_argument("Invalid key size");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual ~AES256_CBC() = default;
|
||||||
|
|
||||||
std::vector<unsigned char> process(
|
std::vector<unsigned char> process(
|
||||||
const std::vector<unsigned char>& inputdata) override;
|
const std::vector<unsigned char>& inputdata) override;
|
||||||
std::vector<unsigned char> encrypt(
|
std::vector<unsigned char> encrypt(
|
||||||
|
10
src/io.h
10
src/io.h
@ -10,16 +10,14 @@ namespace horcrux {
|
|||||||
|
|
||||||
class Input {
|
class Input {
|
||||||
public:
|
public:
|
||||||
|
virtual ~Input() = default;
|
||||||
virtual std::vector<unsigned char> read() = 0;
|
virtual std::vector<unsigned char> read() = 0;
|
||||||
};
|
};
|
||||||
class Output {
|
class Output {
|
||||||
public:
|
public:
|
||||||
|
virtual ~Output() = default;
|
||||||
virtual size_t write(const std::vector<unsigned char>& data) = 0;
|
virtual size_t write(const std::vector<unsigned char>& data) = 0;
|
||||||
};
|
};
|
||||||
class PlainInput : public Input {};
|
|
||||||
class CryptoInput : public Input {};
|
|
||||||
class PlainOutput : public Output {};
|
|
||||||
class CryptoOutput : public Output {};
|
|
||||||
|
|
||||||
class FsPlainInput : public Input {
|
class FsPlainInput : public Input {
|
||||||
std::filesystem::path file_path;
|
std::filesystem::path file_path;
|
||||||
@ -29,6 +27,7 @@ class FsPlainInput : public Input {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit FsPlainInput(const std::string& path);
|
explicit FsPlainInput(const std::string& path);
|
||||||
|
virtual ~FsPlainInput() = default;
|
||||||
std::vector<unsigned char> read() override;
|
std::vector<unsigned char> read() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -39,6 +38,7 @@ class FsCryptoInput : public Input{
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit FsCryptoInput(const std::vector<std::string>& filenames);
|
explicit FsCryptoInput(const std::vector<std::string>& filenames);
|
||||||
|
virtual ~FsCryptoInput() = default;
|
||||||
std::vector<unsigned char> read() override;
|
std::vector<unsigned char> read() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -48,6 +48,7 @@ class FsPlainOutput : public Output {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit FsPlainOutput(const std::string& filename);
|
explicit FsPlainOutput(const std::string& filename);
|
||||||
|
virtual ~FsPlainOutput() = default;
|
||||||
size_t write(const std::vector<unsigned char>& to_write) override;
|
size_t write(const std::vector<unsigned char>& to_write) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -64,6 +65,7 @@ public:
|
|||||||
FsCryptoOutput(const std::string& folder, const int horcrux_num,
|
FsCryptoOutput(const std::string& folder, const int horcrux_num,
|
||||||
const std::string& filename = "horcrux",
|
const std::string& filename = "horcrux",
|
||||||
const size_t horcrux_size = 0);
|
const size_t horcrux_size = 0);
|
||||||
|
virtual ~FsCryptoOutput() = default;
|
||||||
size_t write(const std::vector<unsigned char>& to_write) override;
|
size_t write(const std::vector<unsigned char>& to_write) override;
|
||||||
};
|
};
|
||||||
}; // namespace horcrux
|
}; // namespace horcrux
|
||||||
|
Loading…
Reference in New Issue
Block a user