diff options
author | Rohan McGovern <rohan.mcgovern@nokia.com> | 2010-10-04 04:21:32 (GMT) |
---|---|---|
committer | Rohan McGovern <rohan.mcgovern@nokia.com> | 2010-10-04 04:21:32 (GMT) |
commit | 5171bb1613ecc537f3f0d0962532e3ee059b8870 (patch) | |
tree | 02d0e565d8fc397573a2d35845c11ba74b912c8d /src/network/ssl/qsslsocket_openssl.cpp | |
parent | c372896c5293633d75674a320a9b715a0501a42d (diff) | |
parent | 33b76a659b2f44fa7038e375bbfb4cfd449ae617 (diff) | |
download | Qt-5171bb1613ecc537f3f0d0962532e3ee059b8870.zip Qt-5171bb1613ecc537f3f0d0962532e3ee059b8870.tar.gz Qt-5171bb1613ecc537f3f0d0962532e3ee059b8870.tar.bz2 |
Merge remote branch 'origin/4.7' into master-from-4.7
Conflicts:
doc/src/snippets/code/doc_src_qmake-manual.qdoc
src/corelib/arch/symbian/arch.pri
src/declarative/graphicsitems/qdeclarativeflickable.cpp
src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
tests/auto/qfontmetrics/tst_qfontmetrics.cpp
Diffstat (limited to 'src/network/ssl/qsslsocket_openssl.cpp')
-rw-r--r-- | src/network/ssl/qsslsocket_openssl.cpp | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 5033393..cd224df 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -772,14 +772,35 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates() } } #elif defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/var/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // AIX - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/local/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Solaris - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/opt/openssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // HP-UX - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/etc/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // (K)ubuntu, OpenSUSE, Mandriva, ... - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/etc/pki/tls/certs/ca-bundle.crt"), QSsl::Pem)); // Fedora - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/lib/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Gentoo, Mandrake - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/share/ssl/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Centos, Redhat, SuSE - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/local/ssl/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Normal OpenSSL Tarball + QSet<QString> certFiles; + QList<QByteArray> directories; + directories << "/etc/ssl/certs/"; // (K)ubuntu, OpenSUSE, Mandriva, MeeGo ... + directories << "/usr/lib/ssl/certs/"; // Gentoo, Mandrake + directories << "/usr/share/ssl/"; // Centos, Redhat, SuSE + directories << "/usr/local/ssl/"; // Normal OpenSSL Tarball + directories << "/var/ssl/certs/"; // AIX + directories << "/usr/local/ssl/certs/"; // Solaris + directories << "/opt/openssl/certs/"; // HP-UX + + QDir currentDir; + QStringList nameFilters; + nameFilters << QLatin1String("*.pem") << QLatin1String("*.crt"); + currentDir.setNameFilters(nameFilters); + for (int a = 0; a < directories.count(); a++) { + currentDir.setPath(QLatin1String(directories.at(a))); + QDirIterator it(currentDir); + while(it.hasNext()) { + it.next(); + // use canonical path here to not load the same certificate twice if symlinked + certFiles.insert(it.fileInfo().canonicalFilePath()); + } + } + QSetIterator<QString> it(certFiles); + while(it.hasNext()) { + systemCerts.append(QSslCertificate::fromPath(it.next())); + } + systemCerts.append(QSslCertificate::fromPath(QLatin1String("/etc/pki/tls/certs/ca-bundle.crt"), QSsl::Pem)); // Fedora, Mandriva + #elif defined(Q_OS_SYMBIAN) QList<QByteArray> certs; QScopedPointer<CSymbianCertificateRetriever> retriever(CSymbianCertificateRetriever::NewL()); |