Skip to content

Commit 5212d87

Browse files
authored
Use libxml2/xmsec1 for XAdES signature parsing and validation (#1280)
IB-7948 Signed-off-by: Raul Metsma <[email protected]>
1 parent a857685 commit 5212d87

File tree

4 files changed

+31
-62
lines changed

4 files changed

+31
-62
lines changed

client/CMakeLists.txt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,9 @@ if( APPLE )
173173
COMMAND rm $<TARGET_BUNDLE_CONTENT_DIR:${PROJECT_NAME}>/Frameworks/digidocpp.framework/Resources/digidoc-tool
174174
COMMAND find $<TARGET_BUNDLE_CONTENT_DIR:${PROJECT_NAME}>/Frameworks -name Headers | xargs rm -rf
175175
COMMAND install_name_tool -delete_rpath /Library/Frameworks $<TARGET_FILE:${PROJECT_NAME}>
176-
COMMAND ln -sf digidocpp.framework/Libraries/libcrypto.dylib
176+
COMMAND ln -sf digidocpp.framework/Libraries/libcrypto.3.dylib
177177
$<TARGET_BUNDLE_CONTENT_DIR:${PROJECT_NAME}>/Frameworks/libcrypto.3.dylib
178-
COMMAND ln -sf digidocpp.framework/Libraries/libssl.dylib
178+
COMMAND ln -sf digidocpp.framework/Libraries/libssl.3.dylib
179179
$<TARGET_BUNDLE_CONTENT_DIR:${PROJECT_NAME}>/Frameworks/libssl.3.dylib
180180
)
181181

@@ -267,10 +267,6 @@ elseif(WIN32)
267267
COMMAND ${CMAKE_COMMAND} -E copy ${LIBS_PATH}/libcrypto-3${OPENSSL_SUFFIX}.dll appx
268268
COMMAND ${CMAKE_COMMAND} -E copy ${LIBS_PATH}/libssl-3${OPENSSL_SUFFIX}.dll appx
269269
COMMAND ${CMAKE_COMMAND} -E copy ${LIBS_PATH}/zlib1.dll appx
270-
COMMAND ${CMAKE_COMMAND} -E copy ${LIBS_PATH}/xerces-c_3_2.dll appx
271-
COMMAND ${CMAKE_COMMAND} -E copy ${LIBS_PATH}/XalanMessages_1_12.dll appx
272-
COMMAND ${CMAKE_COMMAND} -E copy ${LIBS_PATH}/Xalan-C_1_12.dll appx
273-
COMMAND ${CMAKE_COMMAND} -E copy ${LIBS_PATH}/xsec_2_0.dll appx
274270
COMMAND ${CMAKE_COMMAND} -E copy ${LIBS_PATH}/libxml2.dll appx
275271
COMMAND ${CMAKE_COMMAND} -E copy ${LIBS_PATH}/libxmlsec1.dll appx
276272
COMMAND ${CMAKE_COMMAND} -E copy ${LIBS_PATH}/libxmlsec1-openssl.dll appx

client/Diagnostics_unix.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@
2828
#include <QtNetwork/QSslSocket>
2929

3030
#include <sys/utsname.h>
31-
#ifdef Q_OS_MAC
31+
#ifdef Q_OS_DARWIN
3232
#include <CoreFoundation/CFBundle.h>
3333
#endif
3434

3535
QStringList Diagnostics::packages(const QStringList &names, bool withName)
3636
{
3737
QStringList packages;
38-
#ifdef Q_OS_MAC
38+
#ifdef Q_OS_DARWIN
3939
Q_UNUSED(withName);
4040
for (const QString &name: names) {
4141
CFStringRef id = QStringLiteral("ee.ria.%1").arg(name).toCFString();
@@ -88,7 +88,7 @@ void Diagnostics::run()
8888
emit update( info );
8989
info.clear();
9090

91-
#ifndef Q_OS_MAC
91+
#ifndef Q_OS_DARWIN
9292
QStringList package = packages({"open-eid"}, false);
9393
if( !package.isEmpty() )
9494
s << "<b>" << tr("Base version:") << "</b> " << package.first() << "<br />";
@@ -98,7 +98,7 @@ void Diagnostics::run()
9898
info.clear();
9999

100100
s << "<b>" << tr("OS:") << "</b> " << Common::applicationOs() << "<br />";
101-
#ifndef Q_OS_MAC
101+
#ifndef Q_OS_DARWIN
102102
s << "<b>" << tr("CPU:") << "</b> ";
103103
QFile f( "/proc/cpuinfo" );
104104
if( f.open( QFile::ReadOnly ) )
@@ -124,12 +124,11 @@ void Diagnostics::run()
124124
<< "OpenSSL build (" << QSslSocket::sslLibraryBuildVersionString() << ")<br />"
125125
<< "OpenSSL current (" << QSslSocket::sslLibraryVersionString() << ")<br />"
126126
<< packages({
127-
#ifdef Q_OS_MAC
127+
#ifdef Q_OS_DARWIN
128128
"digidocpp"
129129
#else
130130
"libdigidocpp1", "qdigidoc4", "firefox-pkcs11-loader", "chrome-token-signing", "web-eid",
131-
"libxerces-c3.2", "libxml-security-c20", "libxalan-c111", "libxalan-c112",
132-
"openssl", "libpcsclite1", "pcsc-lite", "opensc", "awp"
131+
"libxml2", "libxmlsec1", "libpcsclite1", "pcsc-lite", "opensc"
133132
#endif
134133
}).join(QStringLiteral("<br />")) << "<br /><br />";
135134
emit update( info );
@@ -139,7 +138,7 @@ void Diagnostics::run()
139138
emit update( info );
140139
info.clear();
141140

142-
#ifndef Q_OS_MAC
141+
#ifndef Q_OS_DARWIN
143142
QStringList browsers = packages({"chromium-browser", "firefox", "MozillaFirefox", "google-chrome-stable"});
144143
if( !browsers.isEmpty() )
145144
s << "<br /><br /><b>" << tr("Browsers:") << "</b><br />" << browsers.join(QStringLiteral("<br />")) << "<br /><br />";

client/Diagnostics_win.cpp

Lines changed: 22 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030

3131
#include <qt_windows.h>
3232

33+
using namespace Qt::StringLiterals;
34+
3335
static QString getUserRights()
3436
{
3537
HANDLE hToken {};
@@ -76,25 +78,24 @@ static QString getUserRights()
7678
QStringList Diagnostics::packages(const QStringList &names, bool withName)
7779
{
7880
QStringList packages;
79-
for(const QString &group: {QStringLiteral("HKEY_LOCAL_MACHINE"), QStringLiteral("HKEY_CURRENT_USER")})
81+
for(const QString &group: {u"HKEY_LOCAL_MACHINE"_s, u"HKEY_CURRENT_USER"_s})
8082
{
81-
QString path = QStringLiteral("%1\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall").arg(group);
8283
static const QVector<QSettings::Format> formats = []() -> QVector<QSettings::Format> {
83-
if(QSysInfo::currentCpuArchitecture().contains(QStringLiteral("64")))
84+
if(QSysInfo::currentCpuArchitecture().contains("64"_L1))
8485
return {QSettings::Registry32Format, QSettings::Registry64Format};
8586
return {QSettings::Registry32Format};
8687
}();
8788
for(QSettings::Format format: formats)
8889
{
89-
QSettings s(path, format);
90+
QSettings s(u"%1\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"_s.arg(group), format);
9091
for(const QString &key: s.childGroups())
9192
{
9293
s.beginGroup(key);
93-
QString name = s.value(QStringLiteral("/DisplayName")).toString();
94-
QString version = s.value(QStringLiteral("/DisplayVersion")).toString();
95-
QString type = s.value(QStringLiteral("/ReleaseType")).toString();
96-
if(!type.contains(QStringLiteral("Update"), Qt::CaseInsensitive) &&
97-
!name.contains(QStringLiteral("Update"), Qt::CaseInsensitive) &&
94+
QString name = s.value("/DisplayName"_L1).toString();
95+
QString version = s.value("/DisplayVersion"_L1).toString();
96+
QString type = s.value("/ReleaseType"_L1).toString();
97+
if(!type.contains("Update"_L1, Qt::CaseInsensitive) &&
98+
!name.contains("Update"_L1, Qt::CaseInsensitive) &&
9899
name.contains(QRegularExpression(names.join('|').prepend('^'), QRegularExpression::CaseInsensitiveOption)))
99100
packages.append(packageName(name, version, withName));
100101
s.endGroup();
@@ -142,19 +143,14 @@ void Diagnostics::run()
142143
QByteArray path = qgetenv("PATH");
143144
qputenv("PATH", path
144145
+ ";C:\\Program Files\\Open-EID"
145-
+ ";C:\\Program Files\\TeRa Client"
146146
+ ";C:\\Program Files\\EstIDMinidriver Minidriver"
147147
+ ";C:\\Program Files (x86)\\Open-EID"
148-
+ ";C:\\Program Files (x86)\\TeRa Client"
149148
+ ";C:\\Program Files (x86)\\EstIDMinidriver Minidriver");
150149
SetDllDirectory(LPCWSTR(qApp->applicationDirPath().utf16()));
151150
static const QStringList dlls{
152-
"digidoc", "digidocpp", "qdigidoc4.exe", "qdigidocclient.exe", "qesteidutil.exe", "id-updater.exe", "qdigidoc_tera_gui.exe",
153-
"esteidcm", "esteidcm64", "EstIDMinidriver", "EstIDMinidriver64", "onepin-opensc-pkcs11", "EsteidShellExtension",
154-
"esteid-plugin-ie", "esteid-plugin-ie64", "chrome-token-signing.exe", "web-eid.exe",
155-
"libcrypto-3", "libssl-3", "libcrypto-3-x64", "libssl-3-x64", "libcrypto-1_1", "libssl-1_1", "libcrypto-1_1-x64", "libssl-1_1-x64",
156-
"zlib1", "xerces-c_3_1", "xerces-c_3_2", "xalan-c_1_12", "xalanmessages_1_12", "xsec_1_7", "xsec_2_0", "libxml2",
157-
"advapi32", "crypt32", "winscard"};
151+
"digidocpp", "qdigidoc4.exe", "EsteidShellExtension", "id-updater.exe",
152+
"EstIDMinidriver", "EstIDMinidriver64", "web-eid.exe",
153+
"zlib1", "libxml2", "libxmlsec1", "libxmlsec1-openssl"};
158154
for(const QString &lib: dlls)
159155
{
160156
DWORD infoHandle {};
@@ -168,7 +164,7 @@ void Diagnostics::run()
168164
UINT len {};
169165
if( !VerQueryValueW( data.constData(), L"\\", (LPVOID*)&info, &len ) )
170166
continue;
171-
s << QStringLiteral("%1 (%2.%3.%4.%5)").arg(lib)
167+
s << u"%1 (%2.%3.%4.%5)"_s.arg(lib)
172168
.arg( HIWORD(info->dwFileVersionMS) )
173169
.arg( LOWORD(info->dwFileVersionMS) )
174170
.arg( HIWORD(info->dwFileVersionLS) )
@@ -181,53 +177,35 @@ void Diagnostics::run()
181177
emit update( info );
182178
info.clear();
183179

184-
enum {
185-
Running,
186-
Stopped,
187-
NotFound
188-
} atrfiltr = NotFound, certprop = NotFound;
180+
QString atrfiltr = tr("Not found");
181+
QString certprop = tr("Not found");
189182
if(SC_HANDLE h = OpenSCManager(nullptr, nullptr, SC_MANAGER_CONNECT))
190183
{
191184
if( SC_HANDLE s = OpenService( h, L"atrfiltr", SERVICE_QUERY_STATUS ) )
192185
{
193186
SERVICE_STATUS status {};
194187
QueryServiceStatus( s, &status );
195-
atrfiltr = (status.dwCurrentState == SERVICE_RUNNING) ? Running : Stopped;
188+
atrfiltr = status.dwCurrentState == SERVICE_RUNNING ? tr("Running") : tr("Not running");
196189
CloseServiceHandle( s );
197190
}
198191
if( SC_HANDLE s = OpenService( h, L"CertPropSvc", SERVICE_QUERY_STATUS ))
199192
{
200193
SERVICE_STATUS status {};
201194
QueryServiceStatus( s, &status );
202-
certprop = (status.dwCurrentState == SERVICE_RUNNING) ? Running : Stopped;
195+
certprop = status.dwCurrentState == SERVICE_RUNNING ? tr("Running") : tr("Not running");
203196
CloseServiceHandle( s );
204197
}
205198
CloseServiceHandle( h );
206199
}
207-
s << "<br /><b>" << tr("ATRfiltr service status: ") << "</b>" << " ";
208-
switch( atrfiltr )
209-
{
210-
case NotFound: s << tr("Not found"); break;
211-
case Stopped: s << tr("Not running"); break;
212-
case Running: s << tr("Running"); break;
213-
}
214-
s << "<br /><b>" << tr("Certificate Propagation service status: ") << "</b>" << " ";
215-
switch( certprop )
216-
{
217-
case NotFound: s << tr("Not found"); break;
218-
case Stopped: s << tr("Not running"); break;
219-
case Running: s << tr("Running"); break;
220-
}
221-
s << "<br />";
200+
s << "<br /><b>" << tr("ATRfiltr service status: ") << "</b " << atrfiltr
201+
<< "<br /><b>" << tr("Certificate Propagation service status: ") << "</b> " << certprop << "<br />";
222202

223203
generalInfo( s );
224204
emit update( info );
225205
info.clear();
226206

227-
QStringList browsers = packages({"Mozilla Firefox", "Google Chrome", "Microsoft EDGE"});
228-
QSettings reg(QStringLiteral("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Internet Explorer"), QSettings::NativeFormat);
229-
browsers << QStringLiteral("Internet Explorer (%1)").arg(reg.value("svcVersion", reg.value("Version")).toString());
230-
s << "<br /><br /><b>" << tr("Browsers:") << "</b><br />" << browsers.join(QStringLiteral("<br />")) << "<br /><br />";
207+
s << "<br /><br /><b>" << tr("Browsers:") << "</b><br />"
208+
<< packages({"Mozilla Firefox", "Google Chrome", "Microsoft EDGE"}).join("<br />"_L1) << "<br /><br />";
231209
emit update( info );
232210
info.clear();
233211
}

qdigidoc4.wxs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,6 @@
9696
</ProgId>
9797
</Component>
9898
<File Name="zlib$(var.qt_suffix)1.dll" />
99-
<File Name="xerces-c_3_2$(var.qt_suffix).dll" />
100-
<File Name="XalanMessages_1_12$(var.qt_suffix).dll" />
101-
<File Name="Xalan-C_1_12$(var.qt_suffix).dll" />
102-
<File Name="xsec_2_0$(var.qt_suffix).dll" />
10399
<File Name="libxml2.dll" />
104100
<File Name="libxmlsec1.dll" />
105101
<File Name="libxmlsec1-openssl.dll" />

0 commit comments

Comments
 (0)