diff options
Diffstat (limited to 'src/core/function')
29 files changed, 169 insertions, 200 deletions
diff --git a/src/core/function/ArchiveFileOperator.h b/src/core/function/ArchiveFileOperator.h index 324d9d53..28d1ad65 100644 --- a/src/core/function/ArchiveFileOperator.h +++ b/src/core/function/ArchiveFileOperator.h @@ -42,7 +42,7 @@ struct ArchiveStruct { std::string name; }; -class ArchiveFileOperator { +class GPGFRONTEND_CORE_EXPORT ArchiveFileOperator { public: static void ListArchive(const std::filesystem::path &archive_path); diff --git a/src/core/function/DataObjectOperator.cpp b/src/core/function/DataObjectOperator.cpp index 1e216dd6..d5b746d6 100644 --- a/src/core/function/DataObjectOperator.cpp +++ b/src/core/function/DataObjectOperator.cpp @@ -29,6 +29,7 @@ #include "DataObjectOperator.h" #include <qt-aes/qaesencryption.h> +#include <boost/date_time.hpp> #include "core/function/FileOperator.h" #include "core/function/PassphraseGenerator.h" @@ -65,7 +66,6 @@ GpgFrontend::DataObjectOperator::DataObjectOperator(int channel) std::string GpgFrontend::DataObjectOperator::SaveDataObj( const std::string& _key, const nlohmann::json& value) { - std::string _hash_obj_key = {}; if (_key.empty()) { _hash_obj_key = @@ -92,7 +92,8 @@ std::string GpgFrontend::DataObjectOperator::SaveDataObj( auto encoded = encryption.encode(QByteArray::fromStdString(to_string(value)), hash_key_); - LOG(INFO) << _("Saving data object") << _hash_obj_key << "to" << obj_path << encoded.size() << "bytes"; + LOG(INFO) << _("Saving data object") << _hash_obj_key << "to" << obj_path + << encoded.size() << "bytes"; FileOperator::WriteFileStd(obj_path.u8string(), encoded.toStdString()); @@ -128,7 +129,8 @@ std::optional<nlohmann::json> GpgFrontend::DataObjectOperator::GetDataObject( QAESEncryption encryption(QAESEncryption::AES_256, QAESEncryption::ECB, QAESEncryption::Padding::ISO); - LOG(INFO) << _("Decrypting data object") << encoded.size() << hash_key_.size(); + LOG(INFO) << _("Decrypting data object") << encoded.size() + << hash_key_.size(); auto decoded = encryption.removePadding(encryption.decode(encoded, hash_key_)); diff --git a/src/core/function/DataObjectOperator.h b/src/core/function/DataObjectOperator.h index 0ce4e313..1b52ec32 100644 --- a/src/core/function/DataObjectOperator.h +++ b/src/core/function/DataObjectOperator.h @@ -37,7 +37,8 @@ namespace GpgFrontend { -class DataObjectOperator : public SingletonFunctionObject<DataObjectOperator> { +class GPGFRONTEND_CORE_EXPORT DataObjectOperator + : public SingletonFunctionObject<DataObjectOperator> { public: /** * @brief DataObjectOperator constructor diff --git a/src/core/function/FileOperator.h b/src/core/function/FileOperator.h index aa2c3b73..a727b1de 100644 --- a/src/core/function/FileOperator.h +++ b/src/core/function/FileOperator.h @@ -37,7 +37,7 @@ namespace GpgFrontend { * @brief provides file operations * */ -class FileOperator { +class GPGFRONTEND_CORE_EXPORT FileOperator { public: /** * @brief read file content using std struct diff --git a/src/core/function/GlobalSettingStation.cpp b/src/core/function/GlobalSettingStation.cpp index 8850cbe4..e20188f2 100644 --- a/src/core/function/GlobalSettingStation.cpp +++ b/src/core/function/GlobalSettingStation.cpp @@ -28,10 +28,6 @@ #include "GlobalSettingStation.h" -#include <openssl/bio.h> -#include <openssl/pem.h> - -#include <vmime/security/cert/openssl/X509Certificate_OpenSSL.hpp> #include <vmime/vmime.hpp> #include "core/function/FileOperator.h" @@ -95,47 +91,6 @@ GpgFrontend::GlobalSettingStation::GlobalSettingStation(int channel) noexcept } } -void GpgFrontend::GlobalSettingStation::AddRootCert( - const std::filesystem::path &path) { - std::string out_buffer; - if (!FileOperator::ReadFileStd(path, out_buffer)) { - LOG(ERROR) << _("Failed to read root certificate file") << path; - return; - } - - auto mem_bio = std::shared_ptr<BIO>( - BIO_new_mem_buf(out_buffer.data(), static_cast<int>(out_buffer.size())), - [](BIO *_p) { BIO_free(_p); }); - - auto x509 = std::shared_ptr<X509>( - PEM_read_bio_X509(mem_bio.get(), nullptr, nullptr, nullptr), - [](X509 *_p) { X509_free(_p); }); - - if (!x509) return; - - root_certs_.push_back(x509); -} - -vmime::shared_ptr<vmime::security::cert::defaultCertificateVerifier> -GpgFrontend::GlobalSettingStation::GetCertVerifier() const { - auto p_cv = - vmime::make_shared<vmime::security::cert::defaultCertificateVerifier>(); - - std::vector<vmime::shared_ptr<vmime::security::cert::X509Certificate>> - _root_certs; - for (const auto &cert : root_certs_) { - _root_certs.push_back( - std::make_shared<vmime::security::cert::X509Certificate_OpenSSL>( - cert.get())); - } - return p_cv; -} - -const std::vector<std::shared_ptr<X509>> - &GpgFrontend::GlobalSettingStation::GetRootCerts() { - return root_certs_; -} - void GpgFrontend::GlobalSettingStation::init_app_secure_key() {} GpgFrontend::GlobalSettingStation::~GlobalSettingStation() noexcept = default; diff --git a/src/core/function/GlobalSettingStation.h b/src/core/function/GlobalSettingStation.h index d6521c8a..0df6bd21 100644 --- a/src/core/function/GlobalSettingStation.h +++ b/src/core/function/GlobalSettingStation.h @@ -38,18 +38,13 @@ #include "core/GpgFrontendCore.h" #include "core/GpgFunctionObject.h" -namespace vmime::security::cert { -class defaultCertificateVerifier; -class X509Certificate; -} // namespace vmime::security::cert - namespace GpgFrontend { /** * @brief * */ -class GlobalSettingStation +class GPGFRONTEND_CORE_EXPORT GlobalSettingStation : public SingletonFunctionObject<GlobalSettingStation> { public: /** @@ -146,36 +141,6 @@ class GlobalSettingStation } /** - * @brief Get the Cert Verifier object - * - * @return std::shared_ptr< - * vmime::security::cert::defaultCertificateVerifier> - */ - [[nodiscard]] std::shared_ptr< - vmime::security::cert::defaultCertificateVerifier> - GetCertVerifier() const; - - /** - * @brief - * - * @param path - */ - void AddRootCert(const std::filesystem::path &path); - - /** - * @brief Get the Root Certs object - * - * @return const std::vector<std::shared_ptr<X509>>& - */ - const std::vector<std::shared_ptr<X509>> &GetRootCerts(); - - /** - * @brief - * - */ - void ResetRootCerts() { root_certs_.clear(); } - - /** * @brief sync the settings to the file * */ @@ -218,8 +183,7 @@ class GlobalSettingStation std::filesystem::path ui_config_path_ = ui_config_dir_path_ / "ui.cfg"; ///< UI Configure File Location - libconfig::Config ui_cfg_; ///< - std::vector<std::shared_ptr<X509>> root_certs_; ///< + libconfig::Config ui_cfg_; ///< UI Configure File /** * @brief diff --git a/src/core/function/KeyPackageOperator.h b/src/core/function/KeyPackageOperator.h index cd344688..00b0dbaa 100644 --- a/src/core/function/KeyPackageOperator.h +++ b/src/core/function/KeyPackageOperator.h @@ -38,7 +38,7 @@ namespace GpgFrontend { * @brief give the possibility to import or export a key package * */ -class KeyPackageOperator { +class GPGFRONTEND_CORE_EXPORT KeyPackageOperator { public: /** * @brief generate passphrase for key package and save it to file diff --git a/src/core/function/PassphraseGenerator.h b/src/core/function/PassphraseGenerator.h index d1cc7607..a61356fe 100644 --- a/src/core/function/PassphraseGenerator.h +++ b/src/core/function/PassphraseGenerator.h @@ -39,7 +39,7 @@ namespace GpgFrontend { * * This class is used to generate a passphrase. */ -class PassphraseGenerator +class GPGFRONTEND_CORE_EXPORT PassphraseGenerator : public SingletonFunctionObject<PassphraseGenerator> { public: /** diff --git a/src/core/function/gpg/GpgBasicOperator.cpp b/src/core/function/gpg/GpgBasicOperator.cpp index b92404a9..97399b4e 100644 --- a/src/core/function/gpg/GpgBasicOperator.cpp +++ b/src/core/function/gpg/GpgBasicOperator.cpp @@ -32,6 +32,9 @@ #include "GpgKeyGetter.h" +GpgFrontend::GpgBasicOperator::GpgBasicOperator(int channel) + : SingletonFunctionObject<GpgBasicOperator>(channel) {} + GpgFrontend::GpgError GpgFrontend::GpgBasicOperator::Encrypt( KeyListPtr keys, GpgFrontend::BypeArrayRef in_buffer, GpgFrontend::ByteArrayPtr& out_buffer, GpgFrontend::GpgEncrResult& result) { @@ -95,11 +98,9 @@ GpgFrontend::GpgError GpgFrontend::GpgBasicOperator::Verify( return err; } -GpgFrontend::GpgError GpgFrontend::GpgBasicOperator::Sign(KeyListPtr signers, - BypeArrayRef in_buffer, - ByteArrayPtr& out_buffer, - gpgme_sig_mode_t mode, - GpgSignResult& result) { +GpgFrontend::GpgError GpgFrontend::GpgBasicOperator::Sign( + KeyListPtr signers, BypeArrayRef in_buffer, ByteArrayPtr& out_buffer, + gpgme_sig_mode_t mode, GpgSignResult& result) { gpgme_error_t err; // Set Singers of this opera diff --git a/src/core/function/gpg/GpgBasicOperator.h b/src/core/function/gpg/GpgBasicOperator.h index 9b9d9f63..696ac9dc 100644 --- a/src/core/function/gpg/GpgBasicOperator.h +++ b/src/core/function/gpg/GpgBasicOperator.h @@ -40,7 +40,8 @@ namespace GpgFrontend { * @brief Basic operation collection * */ -class GpgBasicOperator : public SingletonFunctionObject<GpgBasicOperator> { +class GPGFRONTEND_CORE_EXPORT GpgBasicOperator + : public SingletonFunctionObject<GpgBasicOperator> { public: /** * @brief Construct a new Basic Operator object @@ -48,8 +49,7 @@ class GpgBasicOperator : public SingletonFunctionObject<GpgBasicOperator> { * @param channel Channel corresponding to the context */ explicit GpgBasicOperator( - int channel = SingletonFunctionObject::GetDefaultChannel()) - : SingletonFunctionObject<GpgBasicOperator>(channel) {} + int channel = SingletonFunctionObject::GetDefaultChannel()); /** * @brief Call the interface provided by gpgme for encryption operation diff --git a/src/core/function/gpg/GpgCommandExecutor.cpp b/src/core/function/gpg/GpgCommandExecutor.cpp index a6a67d08..2292ed0e 100644 --- a/src/core/function/gpg/GpgCommandExecutor.cpp +++ b/src/core/function/gpg/GpgCommandExecutor.cpp @@ -26,6 +26,10 @@ * */ #include "GpgCommandExecutor.h" + +GpgFrontend::GpgCommandExecutor::GpgCommandExecutor(int channel) + : SingletonFunctionObject<GpgCommandExecutor>(channel) {} + #ifndef WINDOWS #include <boost/asio.hpp> #endif diff --git a/src/core/function/gpg/GpgCommandExecutor.h b/src/core/function/gpg/GpgCommandExecutor.h index 49baf406..00d9b43d 100644 --- a/src/core/function/gpg/GpgCommandExecutor.h +++ b/src/core/function/gpg/GpgCommandExecutor.h @@ -42,7 +42,7 @@ namespace GpgFrontend { * @brief Extra commands related to GPG * */ -class GpgCommandExecutor : public SingletonFunctionObject<GpgCommandExecutor> { +class GPGFRONTEND_CORE_EXPORT GpgCommandExecutor : public SingletonFunctionObject<GpgCommandExecutor> { public: /** * @brief Construct a new Gpg Command Executor object @@ -50,8 +50,7 @@ class GpgCommandExecutor : public SingletonFunctionObject<GpgCommandExecutor> { * @param channel Corresponding context */ explicit GpgCommandExecutor( - int channel = SingletonFunctionObject::GetDefaultChannel()) - : SingletonFunctionObject<GpgCommandExecutor>(channel) {} + int channel = SingletonFunctionObject::GetDefaultChannel()); #ifndef WINDOWS diff --git a/src/core/function/gpg/GpgFileOpera.cpp b/src/core/function/gpg/GpgFileOpera.cpp index 25357288..30678cf0 100644 --- a/src/core/function/gpg/GpgFileOpera.cpp +++ b/src/core/function/gpg/GpgFileOpera.cpp @@ -30,24 +30,28 @@ #include <memory> #include <string> -#include "GpgConstants.h" #include "GpgBasicOperator.h" +#include "GpgConstants.h" #include "function/FileOperator.h" +GpgFrontend::GpgFileOpera::GpgFileOpera(int channel) + : SingletonFunctionObject<GpgFileOpera>(channel) {} + GpgFrontend::GpgError GpgFrontend::GpgFileOpera::EncryptFile( KeyListPtr keys, const std::string& in_path, const std::string& out_path, GpgEncrResult& result, int _channel) { - #ifdef WINDOWS - auto in_path_std = std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); - auto out_path_std = std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); + auto in_path_std = + std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); + auto out_path_std = + std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); #else - auto in_path_std = std::filesystem::path(in_path); - auto out_path_std = std::filesystem::path(out_path); + auto in_path_std = std::filesystem::path(in_path); + auto out_path_std = std::filesystem::path(out_path); #endif std::string in_buffer; - if(!FileOperator::ReadFileStd(in_path_std, in_buffer)) { + if (!FileOperator::ReadFileStd(in_path_std, in_buffer)) { throw std::runtime_error("read file error"); } @@ -67,17 +71,18 @@ GpgFrontend::GpgError GpgFrontend::GpgFileOpera::EncryptFile( GpgFrontend::GpgError GpgFrontend::GpgFileOpera::DecryptFile( const std::string& in_path, const std::string& out_path, GpgDecrResult& result) { - #ifdef WINDOWS - auto in_path_std = std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); - auto out_path_std = std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); + auto in_path_std = + std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); + auto out_path_std = + std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); #else auto in_path_std = std::filesystem::path(in_path); auto out_path_std = std::filesystem::path(out_path); #endif std::string in_buffer; - if(!FileOperator::ReadFileStd(in_path_std, in_buffer)) { + if (!FileOperator::ReadFileStd(in_path_std, in_buffer)) { throw std::runtime_error("read file error"); } std::unique_ptr<std::string> out_buffer; @@ -100,17 +105,18 @@ gpgme_error_t GpgFrontend::GpgFileOpera::SignFile(KeyListPtr keys, const std::string& out_path, GpgSignResult& result, int _channel) { - #ifdef WINDOWS - auto in_path_std = std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); - auto out_path_std = std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); + auto in_path_std = + std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); + auto out_path_std = + std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); #else auto in_path_std = std::filesystem::path(in_path); auto out_path_std = std::filesystem::path(out_path); #endif std::string in_buffer; - if(!FileOperator::ReadFileStd(in_path_std, in_buffer)) { + if (!FileOperator::ReadFileStd(in_path_std, in_buffer)) { throw std::runtime_error("read file error"); } std::unique_ptr<std::string> out_buffer; @@ -129,17 +135,18 @@ gpgme_error_t GpgFrontend::GpgFileOpera::SignFile(KeyListPtr keys, gpgme_error_t GpgFrontend::GpgFileOpera::VerifyFile( const std::string& data_path, const std::string& sign_path, GpgVerifyResult& result, int _channel) { - #ifdef WINDOWS - auto data_path_std = std::filesystem::path(QString::fromStdString(data_path).toStdU16String()); - auto sign_path_std = std::filesystem::path(QString::fromStdString(sign_path).toStdU16String()); + auto data_path_std = + std::filesystem::path(QString::fromStdString(data_path).toStdU16String()); + auto sign_path_std = + std::filesystem::path(QString::fromStdString(sign_path).toStdU16String()); #else auto data_path_std = std::filesystem::path(data_path); auto sign_path_std = std::filesystem::path(sign_path); #endif std::string in_buffer; - if(!FileOperator::ReadFileStd(data_path_std, in_buffer)) { + if (!FileOperator::ReadFileStd(data_path_std, in_buffer)) { throw std::runtime_error("read file error"); } std::unique_ptr<std::string> sign_buffer = nullptr; @@ -148,11 +155,10 @@ gpgme_error_t GpgFrontend::GpgFileOpera::VerifyFile( if (!FileOperator::ReadFileStd(sign_path_std, sign_buffer_str)) { throw std::runtime_error("read file error"); } - sign_buffer = - std::make_unique<std::string>(sign_buffer_str); + sign_buffer = std::make_unique<std::string>(sign_buffer_str); } - auto err = GpgBasicOperator::GetInstance(_channel).Verify(in_buffer, sign_buffer, - result); + auto err = GpgBasicOperator::GetInstance(_channel).Verify( + in_buffer, sign_buffer, result); return err; } @@ -160,17 +166,18 @@ gpg_error_t GpgFrontend::GpgFileOpera::EncryptSignFile( KeyListPtr keys, KeyListPtr signer_keys, const std::string& in_path, const std::string& out_path, GpgEncrResult& encr_res, GpgSignResult& sign_res, int _channel) { - #ifdef WINDOWS - auto in_path_std = std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); - auto out_path_std = std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); + auto in_path_std = + std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); + auto out_path_std = + std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); #else auto in_path_std = std::filesystem::path(in_path); auto out_path_std = std::filesystem::path(out_path); #endif std::string in_buffer; - if(!FileOperator::ReadFileStd(in_path_std, in_buffer)) { + if (!FileOperator::ReadFileStd(in_path_std, in_buffer)) { throw std::runtime_error("read file error"); } std::unique_ptr<std::string> out_buffer = nullptr; @@ -190,23 +197,24 @@ gpg_error_t GpgFrontend::GpgFileOpera::EncryptSignFile( gpg_error_t GpgFrontend::GpgFileOpera::DecryptVerifyFile( const std::string& in_path, const std::string& out_path, GpgDecrResult& decr_res, GpgVerifyResult& verify_res) { - #ifdef WINDOWS - auto in_path_std = std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); - auto out_path_std = std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); + auto in_path_std = + std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); + auto out_path_std = + std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); #else auto in_path_std = std::filesystem::path(in_path); auto out_path_std = std::filesystem::path(out_path); #endif std::string in_buffer; - if(!FileOperator::ReadFileStd(in_path_std, in_buffer)) { + if (!FileOperator::ReadFileStd(in_path_std, in_buffer)) { throw std::runtime_error("read file error"); } std::unique_ptr<std::string> out_buffer = nullptr; - auto err = GpgBasicOperator::GetInstance().DecryptVerify(in_buffer, out_buffer, - decr_res, verify_res); + auto err = GpgBasicOperator::GetInstance().DecryptVerify( + in_buffer, out_buffer, decr_res, verify_res); if (check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR) if (!FileOperator::WriteFileStd(out_path_std, *out_buffer)) { @@ -218,17 +226,18 @@ gpg_error_t GpgFrontend::GpgFileOpera::DecryptVerifyFile( unsigned int GpgFrontend::GpgFileOpera::EncryptFileSymmetric( const std::string& in_path, const std::string& out_path, GpgFrontend::GpgEncrResult& result, int _channel) { - #ifdef WINDOWS - auto in_path_std = std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); - auto out_path_std = std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); + auto in_path_std = + std::filesystem::path(QString::fromStdString(in_path).toStdU16String()); + auto out_path_std = + std::filesystem::path(QString::fromStdString(out_path).toStdU16String()); #else auto in_path_std = std::filesystem::path(in_path); auto out_path_std = std::filesystem::path(out_path); #endif std::string in_buffer; - if(!FileOperator::ReadFileStd(in_path_std, in_buffer)) { + if (!FileOperator::ReadFileStd(in_path_std, in_buffer)) { throw std::runtime_error("read file error"); } diff --git a/src/core/function/gpg/GpgFileOpera.h b/src/core/function/gpg/GpgFileOpera.h index f21bf04c..3f223535 100644 --- a/src/core/function/gpg/GpgFileOpera.h +++ b/src/core/function/gpg/GpgFileOpera.h @@ -40,11 +40,12 @@ namespace GpgFrontend { * GpgBasicOperator * @class class: GpgBasicOperator */ -class GpgFileOpera : public SingletonFunctionObject<GpgFileOpera> { +class GPGFRONTEND_CORE_EXPORT GpgFileOpera + : public SingletonFunctionObject<GpgFileOpera> { public: + explicit GpgFileOpera( - int channel = SingletonFunctionObject::GetDefaultChannel()) - : SingletonFunctionObject<GpgFileOpera>(channel) {} + int channel = SingletonFunctionObject::GetDefaultChannel()); /** * @brief Encrypted file diff --git a/src/core/function/gpg/GpgKeyGetter.cpp b/src/core/function/gpg/GpgKeyGetter.cpp index 1a4715e7..cbd40efc 100644 --- a/src/core/function/gpg/GpgKeyGetter.cpp +++ b/src/core/function/gpg/GpgKeyGetter.cpp @@ -32,6 +32,9 @@ #include "GpgConstants.h" +GpgFrontend::GpgKeyGetter::GpgKeyGetter(int channel) + : SingletonFunctionObject<GpgKeyGetter>(channel) {} + GpgFrontend::GpgKey GpgFrontend::GpgKeyGetter::GetKey(const std::string& fpr) { gpgme_key_t _p_key = nullptr; gpgme_get_key(ctx_, fpr.c_str(), &_p_key, 1); @@ -57,6 +60,9 @@ GpgFrontend::KeyLinkListPtr GpgFrontend::GpgKeyGetter::FetchKey() { auto keys_list = std::make_unique<GpgKeyLinkList>(); + LOG(INFO) << "GpgKeyGetter FetchKey" + << "ctx address" << ctx_; + err = gpgme_op_keylist_start(ctx_, nullptr, 0); assert(check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR); diff --git a/src/core/function/gpg/GpgKeyGetter.h b/src/core/function/gpg/GpgKeyGetter.h index cde027a0..d63238f5 100644 --- a/src/core/function/gpg/GpgKeyGetter.h +++ b/src/core/function/gpg/GpgKeyGetter.h @@ -39,7 +39,8 @@ namespace GpgFrontend { * @brief * */ -class GpgKeyGetter : public SingletonFunctionObject<GpgKeyGetter> { +class GPGFRONTEND_CORE_EXPORT GpgKeyGetter + : public SingletonFunctionObject<GpgKeyGetter> { public: /** * @brief Construct a new Gpg Key Getter object @@ -47,8 +48,7 @@ class GpgKeyGetter : public SingletonFunctionObject<GpgKeyGetter> { * @param channel */ explicit GpgKeyGetter( - int channel = SingletonFunctionObject::GetDefaultChannel()) - : SingletonFunctionObject<GpgKeyGetter>(channel) {} + int channel = SingletonFunctionObject::GetDefaultChannel()); /** * @brief Get the Key object diff --git a/src/core/function/gpg/GpgKeyImportExporter.cpp b/src/core/function/gpg/GpgKeyImportExporter.cpp index 0f1ebfa2..206282ae 100644 --- a/src/core/function/gpg/GpgKeyImportExporter.cpp +++ b/src/core/function/gpg/GpgKeyImportExporter.cpp @@ -31,6 +31,9 @@ #include "GpgConstants.h" #include "GpgKeyGetter.h" +GpgFrontend::GpgKeyImportExporter::GpgKeyImportExporter(int channel) + : SingletonFunctionObject<GpgKeyImportExporter>(channel) {} + /** * Import key pair * @param inBuffer input byte array @@ -176,3 +179,23 @@ bool GpgFrontend::GpgKeyImportExporter::ExportSecretKeyShortest( std::swap(out_buffer, temp_out_buffer); return check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR; } + +GpgFrontend::GpgImportInformation::GpgImportInformation() = default; + +GpgFrontend::GpgImportInformation::GpgImportInformation( + gpgme_import_result_t result) { + if (result->unchanged) unchanged = result->unchanged; + if (result->considered) considered = result->considered; + if (result->no_user_id) no_user_id = result->no_user_id; + if (result->imported) imported = result->imported; + if (result->imported_rsa) imported_rsa = result->imported_rsa; + if (result->unchanged) unchanged = result->unchanged; + if (result->new_user_ids) new_user_ids = result->new_user_ids; + if (result->new_sub_keys) new_sub_keys = result->new_sub_keys; + if (result->new_signatures) new_signatures = result->new_signatures; + if (result->new_revocations) new_revocations = result->new_revocations; + if (result->secret_read) secret_read = result->secret_read; + if (result->secret_imported) secret_imported = result->secret_imported; + if (result->secret_unchanged) secret_unchanged = result->secret_unchanged; + if (result->not_imported) not_imported = result->not_imported; +} diff --git a/src/core/function/gpg/GpgKeyImportExporter.h b/src/core/function/gpg/GpgKeyImportExporter.h index d7e6deae..7603c17d 100644 --- a/src/core/function/gpg/GpgKeyImportExporter.h +++ b/src/core/function/gpg/GpgKeyImportExporter.h @@ -54,45 +54,31 @@ typedef std::list<GpgImportedKey> GpgImportedKeyList; ///< * @brief * */ -class GpgImportInformation { +class GPGFRONTEND_CORE_EXPORT GpgImportInformation { public: - GpgImportInformation() = default; + GpgImportInformation(); /** * @brief Construct a new Gpg Import Information object * * @param result */ - explicit GpgImportInformation(gpgme_import_result_t result) { - if (result->unchanged) unchanged = result->unchanged; - if (result->considered) considered = result->considered; - if (result->no_user_id) no_user_id = result->no_user_id; - if (result->imported) imported = result->imported; - if (result->imported_rsa) imported_rsa = result->imported_rsa; - if (result->unchanged) unchanged = result->unchanged; - if (result->new_user_ids) new_user_ids = result->new_user_ids; - if (result->new_sub_keys) new_sub_keys = result->new_sub_keys; - if (result->new_signatures) new_signatures = result->new_signatures; - if (result->new_revocations) new_revocations = result->new_revocations; - if (result->secret_read) secret_read = result->secret_read; - if (result->secret_imported) secret_imported = result->secret_imported; - if (result->secret_unchanged) secret_unchanged = result->secret_unchanged; - if (result->not_imported) not_imported = result->not_imported; - } - - int considered = 0; ///< - int no_user_id = 0; ///< - int imported = 0; ///< - int imported_rsa = 0; ///< - int unchanged = 0; ///< - int new_user_ids = 0; ///< - int new_sub_keys = 0; ///< - int new_signatures = 0; ///< - int new_revocations = 0; ///< - int secret_read = 0; ///< - int secret_imported = 0; ///< - int secret_unchanged = 0; ///< - int not_imported = 0; ///< + explicit GpgImportInformation(gpgme_import_result_t result); + + int considered = 0; ///< + int no_user_id = 0; ///< + int imported = 0; ///< + int imported_rsa = 0; ///< + int unchanged = 0; ///< + int new_user_ids = 0; ///< + int new_sub_keys = 0; ///< + int new_signatures = 0; ///< + int new_revocations = 0; ///< + int secret_read = 0; ///< + int secret_imported = 0; ///< + int secret_unchanged = 0; ///< + int not_imported = 0; ///< + GpgImportedKeyList importedKeys; ///< }; @@ -100,7 +86,7 @@ class GpgImportInformation { * @brief * */ -class GpgKeyImportExporter +class GPGFRONTEND_CORE_EXPORT GpgKeyImportExporter : public SingletonFunctionObject<GpgKeyImportExporter> { public: /** @@ -109,8 +95,7 @@ class GpgKeyImportExporter * @param channel */ explicit GpgKeyImportExporter( - int channel = SingletonFunctionObject::GetDefaultChannel()) - : SingletonFunctionObject<GpgKeyImportExporter>(channel) {} + int channel = SingletonFunctionObject::GetDefaultChannel()); /** * @brief diff --git a/src/core/function/gpg/GpgKeyManager.cpp b/src/core/function/gpg/GpgKeyManager.cpp index c17df49e..050a8238 100644 --- a/src/core/function/gpg/GpgKeyManager.cpp +++ b/src/core/function/gpg/GpgKeyManager.cpp @@ -34,6 +34,9 @@ #include "GpgBasicOperator.h" #include "GpgKeyGetter.h" +GpgFrontend::GpgKeyManager::GpgKeyManager(int channel) + : SingletonFunctionObject<GpgKeyManager>(channel) {} + bool GpgFrontend::GpgKeyManager::SignKey( const GpgFrontend::GpgKey& target, GpgFrontend::KeyArgsList& keys, const std::string& uid, diff --git a/src/core/function/gpg/GpgKeyManager.h b/src/core/function/gpg/GpgKeyManager.h index 5bcac545..22738594 100644 --- a/src/core/function/gpg/GpgKeyManager.h +++ b/src/core/function/gpg/GpgKeyManager.h @@ -39,7 +39,8 @@ namespace GpgFrontend { * @brief * */ -class GpgKeyManager : public SingletonFunctionObject<GpgKeyManager> { +class GPGFRONTEND_CORE_EXPORT GpgKeyManager + : public SingletonFunctionObject<GpgKeyManager> { public: /** * @brief Construct a new Gpg Key Manager object @@ -47,8 +48,7 @@ class GpgKeyManager : public SingletonFunctionObject<GpgKeyManager> { * @param channel */ explicit GpgKeyManager( - int channel = SingletonFunctionObject::GetDefaultChannel()) - : SingletonFunctionObject<GpgKeyManager>(channel) {} + int channel = SingletonFunctionObject::GetDefaultChannel()); /** * @brief Sign a key pair(actually a certain uid) diff --git a/src/core/function/gpg/GpgKeyOpera.cpp b/src/core/function/gpg/GpgKeyOpera.cpp index 23dcae9f..e36edfd9 100644 --- a/src/core/function/gpg/GpgKeyOpera.cpp +++ b/src/core/function/gpg/GpgKeyOpera.cpp @@ -41,6 +41,10 @@ #include "GpgCommandExecutor.h" #include "GpgKeyGetter.h" +GpgFrontend::GpgKeyOpera::GpgKeyOpera( + int channel) + : SingletonFunctionObject<GpgKeyOpera>(channel) {} + /** * Delete keys * @param uidList key ids @@ -178,6 +182,8 @@ GpgFrontend::GpgError GpgFrontend::GpgKeyOpera::GenerateKey( GpgError err; + LOG(INFO) << "ctx version" << ctx_.GetInfo().GnupgVersion; + if (ctx_.GetInfo().GnupgVersion >= "2.1.0") { unsigned int flags = 0; diff --git a/src/core/function/gpg/GpgKeyOpera.h b/src/core/function/gpg/GpgKeyOpera.h index 04571c10..703eb824 100644 --- a/src/core/function/gpg/GpgKeyOpera.h +++ b/src/core/function/gpg/GpgKeyOpera.h @@ -44,7 +44,8 @@ class GenKeyInfo; * @brief * */ -class GpgKeyOpera : public SingletonFunctionObject<GpgKeyOpera> { +class GPGFRONTEND_CORE_EXPORT GpgKeyOpera + : public SingletonFunctionObject<GpgKeyOpera> { public: /** * @brief Construct a new Gpg Key Opera object @@ -52,8 +53,7 @@ class GpgKeyOpera : public SingletonFunctionObject<GpgKeyOpera> { * @param channel */ explicit GpgKeyOpera( - int channel = SingletonFunctionObject::GetDefaultChannel()) - : SingletonFunctionObject<GpgKeyOpera>(channel) {} + int channel = SingletonFunctionObject::GetDefaultChannel()); /** * @brief diff --git a/src/core/function/gpg/GpgUIDOperator.cpp b/src/core/function/gpg/GpgUIDOperator.cpp index dd0c43f6..33c29fa4 100644 --- a/src/core/function/gpg/GpgUIDOperator.cpp +++ b/src/core/function/gpg/GpgUIDOperator.cpp @@ -30,8 +30,11 @@ #include "boost/format.hpp" +GpgFrontend::GpgUIDOperator::GpgUIDOperator(int channel) + : SingletonFunctionObject<GpgUIDOperator>(channel) {} + bool GpgFrontend::GpgUIDOperator::AddUID(const GpgFrontend::GpgKey& key, - const std::string& uid) { + const std::string& uid) { auto err = gpgme_op_adduid(ctx_, gpgme_key_t(key), uid.c_str(), 0); if (check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR) return true; @@ -40,7 +43,7 @@ bool GpgFrontend::GpgUIDOperator::AddUID(const GpgFrontend::GpgKey& key, } bool GpgFrontend::GpgUIDOperator::RevUID(const GpgFrontend::GpgKey& key, - const std::string& uid) { + const std::string& uid) { auto err = check_gpg_error(gpgme_op_revuid(ctx_, gpgme_key_t(key), uid.c_str(), 0)); if (check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR) @@ -50,7 +53,7 @@ bool GpgFrontend::GpgUIDOperator::RevUID(const GpgFrontend::GpgKey& key, } bool GpgFrontend::GpgUIDOperator::SetPrimaryUID(const GpgFrontend::GpgKey& key, - const std::string& uid) { + const std::string& uid) { auto err = check_gpg_error(gpgme_op_set_uid_flag( ctx_, gpgme_key_t(key), uid.c_str(), "primary", nullptr)); if (check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR) @@ -59,9 +62,9 @@ bool GpgFrontend::GpgUIDOperator::SetPrimaryUID(const GpgFrontend::GpgKey& key, return false; } bool GpgFrontend::GpgUIDOperator::AddUID(const GpgFrontend::GpgKey& key, - const std::string& name, - const std::string& comment, - const std::string& email) { + const std::string& name, + const std::string& comment, + const std::string& email) { LOG(INFO) << "GpgFrontend::UidOperator::AddUID" << name << comment << email; auto uid = boost::format("%1%(%2%)<%3%>") % name % comment % email; return AddUID(key, uid.str()); diff --git a/src/core/function/gpg/GpgUIDOperator.h b/src/core/function/gpg/GpgUIDOperator.h index 479505e5..c4a7d87b 100644 --- a/src/core/function/gpg/GpgUIDOperator.h +++ b/src/core/function/gpg/GpgUIDOperator.h @@ -37,11 +37,16 @@ namespace GpgFrontend { * @brief * */ -class GpgUIDOperator : public SingletonFunctionObject<GpgUIDOperator> { +class GPGFRONTEND_CORE_EXPORT GpgUIDOperator + : public SingletonFunctionObject<GpgUIDOperator> { public: + /** + * @brief Construct a new Gpg UID Opera object + * + * @param channel + */ explicit GpgUIDOperator( - int channel = SingletonFunctionObject::GetDefaultChannel()) - : SingletonFunctionObject<GpgUIDOperator>(channel) {} + int channel = SingletonFunctionObject::GetDefaultChannel()); /** * create a new uid in certain key pair diff --git a/src/core/function/result_analyse/GpgDecryptResultAnalyse.h b/src/core/function/result_analyse/GpgDecryptResultAnalyse.h index af42f995..1fc08d1f 100644 --- a/src/core/function/result_analyse/GpgDecryptResultAnalyse.h +++ b/src/core/function/result_analyse/GpgDecryptResultAnalyse.h @@ -38,7 +38,8 @@ namespace GpgFrontend { * @brief * */ -class GpgDecryptResultAnalyse : public GpgResultAnalyse { +class GPGFRONTEND_CORE_EXPORT GpgDecryptResultAnalyse + : public GpgResultAnalyse { public: /** * @brief Construct a new Decrypt Result Analyse object diff --git a/src/core/function/result_analyse/GpgEncryptResultAnalyse.h b/src/core/function/result_analyse/GpgEncryptResultAnalyse.h index c5125fdc..6811ef06 100644 --- a/src/core/function/result_analyse/GpgEncryptResultAnalyse.h +++ b/src/core/function/result_analyse/GpgEncryptResultAnalyse.h @@ -37,7 +37,8 @@ namespace GpgFrontend { * @brief * */ -class GpgEncryptResultAnalyse : public GpgResultAnalyse { +class GPGFRONTEND_CORE_EXPORT GpgEncryptResultAnalyse + : public GpgResultAnalyse { public: /** * @brief Construct a new Encrypt Result Analyse object diff --git a/src/core/function/result_analyse/GpgResultAnalyse.h b/src/core/function/result_analyse/GpgResultAnalyse.h index 888c6449..e609505f 100644 --- a/src/core/function/result_analyse/GpgResultAnalyse.h +++ b/src/core/function/result_analyse/GpgResultAnalyse.h @@ -34,7 +34,7 @@ #include "core/GpgConstants.h" namespace GpgFrontend { -class GpgResultAnalyse { +class GPGFRONTEND_CORE_EXPORT GpgResultAnalyse { public: /** * @brief Construct a new Result Analyse object diff --git a/src/core/function/result_analyse/GpgSignResultAnalyse.h b/src/core/function/result_analyse/GpgSignResultAnalyse.h index d593b33d..43a78942 100644 --- a/src/core/function/result_analyse/GpgSignResultAnalyse.h +++ b/src/core/function/result_analyse/GpgSignResultAnalyse.h @@ -37,7 +37,7 @@ namespace GpgFrontend { * @brief * */ -class GpgSignResultAnalyse : public GpgResultAnalyse { +class GPGFRONTEND_CORE_EXPORT GpgSignResultAnalyse : public GpgResultAnalyse { public: /** * @brief Construct a new Sign Result Analyse object diff --git a/src/core/function/result_analyse/GpgVerifyResultAnalyse.h b/src/core/function/result_analyse/GpgVerifyResultAnalyse.h index 12e4b7ff..ce8e03ad 100644 --- a/src/core/function/result_analyse/GpgVerifyResultAnalyse.h +++ b/src/core/function/result_analyse/GpgVerifyResultAnalyse.h @@ -37,7 +37,7 @@ namespace GpgFrontend { * @brief * */ -class GpgVerifyResultAnalyse : public GpgResultAnalyse { +class GPGFRONTEND_CORE_EXPORT GpgVerifyResultAnalyse : public GpgResultAnalyse { public: /** * @brief Construct a new Verify Result Analyse object |