diff options
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/ui/settings/GlobalSettingStation.cpp | 13 | ||||
-rw-r--r-- | src/ui/settings/GlobalSettingStation.h | 22 |
3 files changed, 37 insertions, 3 deletions
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index 3ec2eb3e..e9e88104 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -15,15 +15,16 @@ if (SMTP_SUPPORT) aux_source_directory(./smtp UI_SOURCE) endif () -find_library(libvmime NAMES libvmime.a) + add_library(gpgfrontend_ui STATIC ${UI_SOURCE}) set(GPGFRONTEND_UI_LIB_NAME gpgfrontend_ui) # link Qt target_link_libraries(${GPGFRONTEND_UI_LIB_NAME} Qt5::Network Qt5::PrintSupport Qt5::Widgets Qt5::Test Qt5::Core) # link vmime +find_library(libvmime NAMES libvmime.a) target_link_libraries(${GPGFRONTEND_UI_LIB_NAME} - ${libvmime}) + ${libvmime} anl ssl crypto) target_include_directories(gpgfrontend_ui PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/${GPGFRONTEND_UI_LIB_NAME}_autogen/include) diff --git a/src/ui/settings/GlobalSettingStation.cpp b/src/ui/settings/GlobalSettingStation.cpp index e88de93b..43534926 100644 --- a/src/ui/settings/GlobalSettingStation.cpp +++ b/src/ui/settings/GlobalSettingStation.cpp @@ -24,6 +24,8 @@ #include "GlobalSettingStation.h" +#include <vmime/vmime.hpp> + std::unique_ptr<GpgFrontend::UI::GlobalSettingStation> GpgFrontend::UI::GlobalSettingStation::_instance = nullptr; @@ -48,7 +50,10 @@ void GpgFrontend::UI::GlobalSettingStation::Sync() noexcept { } } -GpgFrontend::UI::GlobalSettingStation::GlobalSettingStation() noexcept { +GpgFrontend::UI::GlobalSettingStation::GlobalSettingStation() noexcept + : default_certs_verifier_( + vmime::make_shared< + vmime::security::cert::defaultCertificateVerifier>()) { using namespace boost::filesystem; using namespace libconfig; @@ -92,3 +97,9 @@ GpgFrontend::UI::GlobalSettingStation::GlobalSettingStation() noexcept { } } } + +void GpgFrontend::UI::GlobalSettingStation::SetRootCerts( + const std::vector< + vmime::shared_ptr<vmime::security::cert::X509Certificate>>& certs) { + default_certs_verifier_->setX509RootCAs(certs); +} diff --git a/src/ui/settings/GlobalSettingStation.h b/src/ui/settings/GlobalSettingStation.h index a89bf32d..0838dfa4 100644 --- a/src/ui/settings/GlobalSettingStation.h +++ b/src/ui/settings/GlobalSettingStation.h @@ -31,6 +31,11 @@ #include "GpgFrontendBuildInstallInfo.h" #include "ui/GpgFrontendUI.h" +namespace vmime::security::cert { +class defaultCertificateVerifier; +class X509Certificate; +} // namespace vmime::security::cert + namespace GpgFrontend::UI { class GlobalSettingStation : public QObject { @@ -68,6 +73,20 @@ class GlobalSettingStation : public QObject { return app_resource_path; } + [[nodiscard]] boost::filesystem::path GetCertsDir() const { + return app_resource_path / "certs"; + } + + [[nodiscard]] std::shared_ptr< + vmime::security::cert::defaultCertificateVerifier> + GetCertVerifier() const { + return default_certs_verifier_; + } + + void SetRootCerts( + const std::vector< + std::shared_ptr<vmime::security::cert::X509Certificate>>& certs); + void Sync() noexcept; private: @@ -113,6 +132,9 @@ class GlobalSettingStation : public QObject { libconfig::Config ui_cfg; + std::shared_ptr<vmime::security::cert::defaultCertificateVerifier> + default_certs_verifier_; + static std::unique_ptr<GlobalSettingStation> _instance; }; } // namespace GpgFrontend::UI |