diff options
Diffstat (limited to 'src/gpg/function')
-rw-r--r-- | src/gpg/function/GpgFileOpera.cpp | 16 | ||||
-rw-r--r-- | src/gpg/function/GpgFileOpera.h | 4 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/gpg/function/GpgFileOpera.cpp b/src/gpg/function/GpgFileOpera.cpp index b5c907a2..8babfa6d 100644 --- a/src/gpg/function/GpgFileOpera.cpp +++ b/src/gpg/function/GpgFileOpera.cpp @@ -134,3 +134,19 @@ gpg_error_t GpgFrontend::GpgFileOpera::DecryptVerifyFile( return err; } +unsigned int GpgFrontend::GpgFileOpera::EncryptFileSymmetric( + const std::string& in_path, const std::string& out_path, + GpgFrontend::GpgEncrResult& result, int _channel) { + std::string in_buffer = read_all_data_in_file(in_path); + std::unique_ptr<std::string> out_buffer; + + auto err = BasicOperator::GetInstance(_channel).EncryptSymmetric( + in_buffer, out_buffer, result); + + if (check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR) + if (!write_buffer_to_file(out_path, *out_buffer)) { + throw std::runtime_error("write_buffer_to_file error"); + }; + + return err; +} diff --git a/src/gpg/function/GpgFileOpera.h b/src/gpg/function/GpgFileOpera.h index 6447e43b..f4508f42 100644 --- a/src/gpg/function/GpgFileOpera.h +++ b/src/gpg/function/GpgFileOpera.h @@ -42,6 +42,10 @@ class GpgFileOpera : public SingletonFunctionObject<GpgFileOpera> { GpgEncrResult& result, int _channel = GPGFRONTEND_DEFAULT_CHANNEL); + static unsigned int EncryptFileSymmetric( + const std::string& in_path, const std::string& out_path, + GpgEncrResult& result, int _channel = GPGFRONTEND_DEFAULT_CHANNEL); + static GpgError DecryptFile(const std::string& in_path, const std::string& out_path, GpgDecrResult& result); |