aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/CMakeLists.txt5
-rw-r--r--src/ui/settings/GlobalSettingStation.cpp13
-rw-r--r--src/ui/settings/GlobalSettingStation.h22
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