diff --git a/build/WinStd-10.0.vcxproj.filters b/build/WinStd-10.0.vcxproj.filters
index 8e79e359..cbf838d0 100644
--- a/build/WinStd-10.0.vcxproj.filters
+++ b/build/WinStd-10.0.vcxproj.filters
@@ -32,6 +32,9 @@
Source Files
+
+ Source Files
+
Source Files
@@ -46,6 +49,9 @@
Header Files
+
+ Header Files
+
Header Files
diff --git a/build/WinStd-15.0.vcxproj.filters b/build/WinStd-15.0.vcxproj.filters
index 8e79e359..cbf838d0 100644
--- a/build/WinStd-15.0.vcxproj.filters
+++ b/build/WinStd-15.0.vcxproj.filters
@@ -32,6 +32,9 @@
Source Files
+
+ Source Files
+
Source Files
@@ -46,6 +49,9 @@
Header Files
+
+ Header Files
+
Header Files
diff --git a/build/WinStd.props b/build/WinStd.props
index d65987cd..65fbe029 100644
--- a/build/WinStd.props
+++ b/build/WinStd.props
@@ -31,6 +31,7 @@
Create
+
@@ -46,6 +47,7 @@
+
diff --git a/include/WinStd/WinTrust.h b/include/WinStd/WinTrust.h
new file mode 100644
index 00000000..9f8a6b06
--- /dev/null
+++ b/include/WinStd/WinTrust.h
@@ -0,0 +1,76 @@
+/*
+ Copyright 1991-2018 Amebis
+ Copyright 2016 GÉANT
+
+ This file is part of WinStd.
+
+ Setup is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Setup is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Setup. If not, see .
+*/
+
+#pragma once
+
+///
+/// \defgroup WinTrustAPI WinTrust API
+/// Integrates WinStd classes with Microsoft WinTrust API
+///
+
+#include "Common.h"
+
+namespace winstd
+{
+ class WINSTD_API wintrust;
+}
+
+#pragma once
+
+#include
+
+
+namespace winstd
+{
+ /// \addtogroup WinTrustAPI
+ /// @{
+
+ ///
+ /// WinTrust engine wrapper class
+ ///
+ class WINSTD_API wintrust
+ {
+ public:
+ ///
+ /// Initializes a new class instance.
+ ///
+ inline wintrust(_In_opt_ HWND hwnd, _In_ const GUID &action, _Inout_ WINTRUST_DATA &wtd) :
+ m_hwnd(hwnd),
+ m_action(action),
+ m_wtd(wtd)
+ {
+ LONG lResult = WinVerifyTrust(m_hwnd, &m_action, &m_wtd);
+ if (lResult != ERROR_SUCCESS)
+ throw win_runtime_error(lResult, "WinVerifyTrust failed.");
+ }
+
+ ///
+ /// Destroys the WinTrust context.
+ ///
+ virtual ~wintrust();
+
+ protected:
+ HWND m_hwnd;
+ GUID m_action;
+ WINTRUST_DATA &m_wtd;
+ };
+
+ /// @}
+}
diff --git a/src/WinTrust.cpp b/src/WinTrust.cpp
new file mode 100644
index 00000000..ca74c56b
--- /dev/null
+++ b/src/WinTrust.cpp
@@ -0,0 +1,34 @@
+/*
+ Copyright 1991-2018 Amebis
+ Copyright 2016 GÉANT
+
+ This file is part of WinStd.
+
+ Setup is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Setup is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Setup. If not, see .
+*/
+
+#include "StdAfx.h"
+
+#pragma comment(lib, "Wintrust.lib")
+
+
+//////////////////////////////////////////////////////////////////////
+// winstd::wintrust
+//////////////////////////////////////////////////////////////////////
+
+winstd::wintrust::~wintrust()
+{
+ m_wtd.dwStateAction = WTD_STATEACTION_CLOSE;
+ WinVerifyTrust(m_hwnd, (GUID*)&m_action, &m_wtd);
+}