aboutsummaryrefslogtreecommitdiffstats
path: root/src/gpg/function
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2021-09-12 13:56:18 +0000
committerSaturneric <[email protected]>2021-09-12 13:56:18 +0000
commit5874147d9ec0f94a5058241a06c69f586b766a3b (patch)
tree9da52dd2d97af42952e17e570a630ee6e4aa008e /src/gpg/function
parentAdd clang-related branch coverage options. (diff)
downloadGpgFrontend-5874147d9ec0f94a5058241a06c69f586b766a3b.tar.gz
GpgFrontend-5874147d9ec0f94a5058241a06c69f586b766a3b.zip
Continue to write core test code.
Diffstat (limited to 'src/gpg/function')
-rw-r--r--src/gpg/function/GpgCommandExecutor.cpp7
-rw-r--r--src/gpg/function/GpgFileOpera.cpp104
-rw-r--r--src/gpg/function/GpgKeyGetter.cpp27
3 files changed, 42 insertions, 96 deletions
diff --git a/src/gpg/function/GpgCommandExecutor.cpp b/src/gpg/function/GpgCommandExecutor.cpp
index b5e6ccae..efe1446f 100644
--- a/src/gpg/function/GpgCommandExecutor.cpp
+++ b/src/gpg/function/GpgCommandExecutor.cpp
@@ -29,8 +29,7 @@ using boost::process::async_pipe;
void GpgFrontend::GpgCommandExecutor::Execute(
StringArgsRef arguments,
- const std::function<void(async_pipe &in, async_pipe &out)> &interact_func) {
-
+ const std::function<void(async_pipe& in, async_pipe& out)>& interact_func) {
using namespace boost::process;
boost::asio::io_service ios;
@@ -40,12 +39,12 @@ void GpgFrontend::GpgCommandExecutor::Execute(
async_pipe in_pipe_stream(ios);
async_pipe out_pipe_stream(ios);
- child child_process(ctx.GetInfo().appPath.c_str(), arguments,
+ child child_process(ctx.GetInfo().AppPath.c_str(), arguments,
std_out > in_pipe_stream, std_in < out_pipe_stream);
boost::asio::async_read(
in_pipe_stream, boost::asio::buffer(buf),
- [&](const boost::system::error_code &ec, std::size_t size) {
+ [&](const boost::system::error_code& ec, std::size_t size) {
interact_func(in_pipe_stream, out_pipe_stream);
});
diff --git a/src/gpg/function/GpgFileOpera.cpp b/src/gpg/function/GpgFileOpera.cpp
index 71e60f76..79214d2d 100644
--- a/src/gpg/function/GpgFileOpera.cpp
+++ b/src/gpg/function/GpgFileOpera.cpp
@@ -26,42 +26,15 @@
#include "gpg/function/BasicOperator.h"
#include <boost/process/detail/config.hpp>
-#include <filesystem>
+
#include <iterator>
#include <memory>
#include <string>
-std::string read_all_data_in_file(const std::string &path) {
- using namespace std::filesystem;
- class path file_info(path.c_str());
-
- if (!exists(file_info) || !is_regular_file(path))
- throw std::runtime_error("no permission");
-
- std::ifstream in_file;
- in_file.open(path, std::ios::in);
- if (!in_file.good())
- throw std::runtime_error("cannot open file");
- std::istreambuf_iterator<char> begin(in_file);
- std::istreambuf_iterator<char> end;
- std::string in_buffer(begin, end);
- in_file.close();
- return in_buffer;
-}
-
-void write_buufer_to_file(const std::string &path,
- const std::string &out_buffer) {
- std::ofstream out_file(path);
- out_file.open(path.c_str(), std::ios::out);
- if (!out_file.good())
- throw std::runtime_error("cannot open file");
- out_file.write(out_buffer.c_str(), out_buffer.size());
- out_file.close();
-}
-
GpgFrontend::GpgError GpgFrontend::GpgFileOpera::EncryptFile(
- KeyArgsList &keys, const std::string &path, GpgEncrResult &result) {
-
+ KeyArgsList& keys,
+ const std::string& path,
+ GpgEncrResult& result) {
std::string in_buffer = read_all_data_in_file(path);
std::unique_ptr<std::string> out_buffer;
@@ -70,38 +43,13 @@ GpgFrontend::GpgError GpgFrontend::GpgFileOpera::EncryptFile(
assert(check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR);
- write_buufer_to_file(path + ".asc", *out_buffer);
+ write_buffer_to_file(path + ".asc", *out_buffer);
return err;
}
-std::string get_file_extension(const std::string &path) {
- // Create a Path object from given string
- std::filesystem::path path_obj(path);
- // Check if file name in the path object has extension
- if (path_obj.has_extension()) {
- // Fetch the extension from path object and return
- return path_obj.extension().string();
- }
- // In case of no extension return empty string
- return std::string();
-}
-
-std::string get_file_name_with_path(const std::string &path) {
- // Create a Path object from given string
- std::filesystem::path path_obj(path);
- // Check if file name in the path object has extension
- if (path_obj.has_filename()) {
- // Fetch the extension from path object and return
- return path_obj.parent_path() / path_obj.filename();
- }
- // In case of no extension return empty string
- throw std::runtime_error("invalid file path");
-}
-
-GpgFrontend::GpgError
-GpgFrontend::GpgFileOpera::DecryptFile(const std::string &path,
- GpgDecrResult &result) {
-
+GpgFrontend::GpgError GpgFrontend::GpgFileOpera::DecryptFile(
+ const std::string& path,
+ GpgDecrResult& result) {
std::string in_buffer = read_all_data_in_file(path);
std::unique_ptr<std::string> out_buffer;
@@ -116,15 +64,14 @@ GpgFrontend::GpgFileOpera::DecryptFile(const std::string &path,
if (!(file_extension == ".asc" || file_extension == ".gpg"))
out_file_name += ".out";
- write_buufer_to_file(out_file_name, *out_buffer);
+ write_buffer_to_file(out_file_name, *out_buffer);
return err;
}
-gpgme_error_t GpgFrontend::GpgFileOpera::SignFile(KeyArgsList &keys,
- const std::string &path,
- GpgSignResult &result) {
-
+gpgme_error_t GpgFrontend::GpgFileOpera::SignFile(KeyArgsList& keys,
+ const std::string& path,
+ GpgSignResult& result) {
auto in_buffer = read_all_data_in_file(path);
std::unique_ptr<std::string> out_buffer;
@@ -133,14 +80,13 @@ gpgme_error_t GpgFrontend::GpgFileOpera::SignFile(KeyArgsList &keys,
assert(check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR);
- write_buufer_to_file(path + ".sig", *out_buffer);
+ write_buffer_to_file(path + ".sig", *out_buffer);
return err;
}
-gpgme_error_t GpgFrontend::GpgFileOpera::VerifyFile(const std::string &path,
- GpgVerifyResult &result) {
-
+gpgme_error_t GpgFrontend::GpgFileOpera::VerifyFile(const std::string& path,
+ GpgVerifyResult& result) {
auto in_buffer = read_all_data_in_file(path);
std::unique_ptr<std::string> sign_buffer = nullptr;
@@ -162,9 +108,10 @@ gpgme_error_t GpgFrontend::GpgFileOpera::VerifyFile(const std::string &path,
// TODO
gpg_error_t GpgFrontend::GpgFileOpera::EncryptSignFile(
- KeyArgsList &keys, const std::string &path, GpgEncrResult &encr_res,
- GpgSignResult &sign_res) {
-
+ KeyArgsList& keys,
+ const std::string& path,
+ GpgEncrResult& encr_res,
+ GpgSignResult& sign_res) {
auto in_buffer = read_all_data_in_file(path);
std::unique_ptr<std::string> out_buffer = nullptr;
@@ -177,16 +124,15 @@ gpg_error_t GpgFrontend::GpgFileOpera::EncryptSignFile(
assert(check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR);
- write_buufer_to_file(path + ".gpg", *out_buffer);
+ write_buffer_to_file(path + ".gpg", *out_buffer);
return err;
}
-gpg_error_t
-GpgFrontend::GpgFileOpera::DecryptVerifyFile(const std::string &path,
- GpgDecrResult &decr_res,
- GpgVerifyResult &verify_res) {
-
+gpg_error_t GpgFrontend::GpgFileOpera::DecryptVerifyFile(
+ const std::string& path,
+ GpgDecrResult& decr_res,
+ GpgVerifyResult& verify_res) {
auto in_buffer = read_all_data_in_file(path);
std::unique_ptr<std::string> out_buffer = nullptr;
@@ -200,7 +146,7 @@ GpgFrontend::GpgFileOpera::DecryptVerifyFile(const std::string &path,
if (!(file_extension == ".asc" || file_extension == ".gpg"))
out_file_name = path + ".out";
- write_buufer_to_file(out_file_name, *out_buffer);
+ write_buffer_to_file(out_file_name, *out_buffer);
return err;
}
diff --git a/src/gpg/function/GpgKeyGetter.cpp b/src/gpg/function/GpgKeyGetter.cpp
index 88f80fbf..6d80088a 100644
--- a/src/gpg/function/GpgKeyGetter.cpp
+++ b/src/gpg/function/GpgKeyGetter.cpp
@@ -23,49 +23,50 @@
*/
#include "gpg/function/GpgKeyGetter.h"
+#include <gpg-error.h>
+#include "GpgConstants.h"
-GpgFrontend::GpgKey GpgFrontend::GpgKeyGetter::GetKey(const std::string &fpr) {
- LOG(INFO) << "GpgKeyGetter GetKey Fpr " << fpr;
+GpgFrontend::GpgKey GpgFrontend::GpgKeyGetter::GetKey(const std::string& fpr) {
+ DLOG(INFO) << "GpgKeyGetter GetKey Fpr " << fpr;
gpgme_key_t _p_key;
gpgme_get_key(ctx, fpr.c_str(), &_p_key, 1);
if (_p_key == nullptr)
- LOG(WARNING) << "GpgKeyGetter GetKey _p_key Null";
+ DLOG(WARNING) << "GpgKeyGetter GetKey _p_key Null";
return GpgKey(std::move(_p_key));
}
-GpgFrontend::GpgKey
-GpgFrontend::GpgKeyGetter::GetPubkey(const std::string &fpr) {
+GpgFrontend::GpgKey GpgFrontend::GpgKeyGetter::GetPubkey(
+ const std::string& fpr) {
gpgme_key_t _p_key;
gpgme_get_key(ctx, fpr.c_str(), &_p_key, 0);
return GpgKey(std::move(_p_key));
}
GpgFrontend::KeyListPtr GpgFrontend::GpgKeyGetter::FetchKey() {
-
gpgme_error_t err;
- LOG(INFO) << "Clear List and Map";
+ DLOG(INFO) << "Clear List and Map";
KeyListPtr keys_list = std::make_unique<std::vector<GpgKey>>();
- LOG(INFO) << "Operate KeyList Start";
+ DLOG(INFO) << "Operate KeyList Start";
err = gpgme_op_keylist_start(ctx, nullptr, 0);
- assert(gpg_err_code(err) != GPG_ERR_NO_ERROR);
+ assert(check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR);
- LOG(INFO) << "Start Loop";
+ DLOG(INFO) << "Start Loop";
gpgme_key_t key;
while ((err = gpgme_op_keylist_next(ctx, &key)) == GPG_ERR_NO_ERROR) {
keys_list->push_back(GpgKey(std::move(key)));
- LOG(INFO) << "Append Key" << keys_list->back().id().c_str();
+ DLOG(INFO) << "Append Key" << keys_list->back().id().c_str();
}
- assert(gpg_err_code(err) != GPG_ERR_NO_ERROR);
+ assert(check_gpg_error_2_err_code(err, GPG_ERR_EOF) == GPG_ERR_EOF);
err = gpgme_op_keylist_end(ctx);
- LOG(INFO) << "Operate KeyList End";
+ DLOG(INFO) << "Operate KeyList End";
return keys_list;
}