From 7a2f8ad0f91382c2f7c8d7909f2d59ad0cd3cb45 Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Sun, 12 Jun 2011 09:22:50 +0000 Subject: Fix for : Issue 106: QXmppClient can't override Qt's set of trusted SSL CAs --- src/QXmppConfiguration.cpp | 18 +++++++++++++++++- src/QXmppConfiguration.h | 6 ++++++ src/QXmppOutgoingClient.cpp | 2 ++ 3 files changed, 25 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/QXmppConfiguration.cpp b/src/QXmppConfiguration.cpp index b47b3874..4703d510 100644 --- a/src/QXmppConfiguration.cpp +++ b/src/QXmppConfiguration.cpp @@ -22,6 +22,7 @@ */ +#include #include "QXmppConfiguration.h" #include "QXmppUtils.h" @@ -39,7 +40,8 @@ QXmppConfiguration::QXmppConfiguration() : m_port(5222), m_ignoreSslErrors(true), m_streamSecurityMode(QXmppConfiguration::TLSEnabled), m_nonSASLAuthMechanism(QXmppConfiguration::NonSASLDigest), - m_SASLAuthMechanism(QXmppConfiguration::SASLDigestMD5) + m_SASLAuthMechanism(QXmppConfiguration::SASLDigestMD5), + m_caCertificates(QSslSocket::defaultCaCertificates()) { } @@ -429,6 +431,20 @@ int QXmppConfiguration::keepAliveTimeout() const return m_keepAliveTimeout; } +/// Specifies a list of trusted CA certificates. + +void QXmppConfiguration::setCaCertificates(const QList &caCertificates) +{ + m_caCertificates = caCertificates; +} + +/// Returns the a list of trusted CA certificates. + +QList QXmppConfiguration::caCertificates() const +{ + return m_caCertificates; +} + // obsolete QString QXmppConfiguration::passwd() const diff --git a/src/QXmppConfiguration.h b/src/QXmppConfiguration.h index f99b98f2..faed2fdc 100644 --- a/src/QXmppConfiguration.h +++ b/src/QXmppConfiguration.h @@ -27,6 +27,7 @@ #include #include +#include /// \brief The QXmppConfiguration class holds configuration options. /// @@ -135,6 +136,9 @@ public: int keepAliveTimeout() const; void setKeepAliveTimeout(int secs); + QList caCertificates() const; + void setCaCertificates(const QList &); + /// \cond // deprecated in release 0.3.0 QString Q_DECL_DEPRECATED passwd() const; @@ -193,6 +197,8 @@ private: SASLAuthMechanism m_SASLAuthMechanism; QNetworkProxy m_networkProxy; + + QList m_caCertificates; }; #endif // QXMPPCONFIGURATION_H diff --git a/src/QXmppOutgoingClient.cpp b/src/QXmppOutgoingClient.cpp index fdb3cc8a..8ad57b18 100644 --- a/src/QXmppOutgoingClient.cpp +++ b/src/QXmppOutgoingClient.cpp @@ -151,6 +151,8 @@ void QXmppOutgoingClient::connectToHost() const QString host = configuration().host(); const quint16 port = configuration().port(); + socket()->setCaCertificates(configuration().caCertificates()); + // if an explicit host was provided, connect to it if (!host.isEmpty() && port) { -- cgit v1.2.3