aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2011-06-12 09:22:50 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2011-06-12 09:22:50 +0000
commit7a2f8ad0f91382c2f7c8d7909f2d59ad0cd3cb45 (patch)
tree7db4fe3508d5cf7af7f1e576741c5b72872d7e72 /src
parentae2decb4e461d01759f0709552ba37c61f75822f (diff)
downloadqxmpp-7a2f8ad0f91382c2f7c8d7909f2d59ad0cd3cb45.tar.gz
Fix for : Issue 106: QXmppClient can't override Qt's set of trusted SSL CAs
Diffstat (limited to 'src')
-rw-r--r--src/QXmppConfiguration.cpp18
-rw-r--r--src/QXmppConfiguration.h6
-rw-r--r--src/QXmppOutgoingClient.cpp2
3 files changed, 25 insertions, 1 deletions
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 <QSslSocket>
#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<QSslCertificate> &caCertificates)
+{
+ m_caCertificates = caCertificates;
+}
+
+/// Returns the a list of trusted CA certificates.
+
+QList<QSslCertificate> 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 <QString>
#include <QNetworkProxy>
+#include <QSslCertificate>
/// \brief The QXmppConfiguration class holds configuration options.
///
@@ -135,6 +136,9 @@ public:
int keepAliveTimeout() const;
void setKeepAliveTimeout(int secs);
+ QList<QSslCertificate> caCertificates() const;
+ void setCaCertificates(const QList<QSslCertificate> &);
+
/// \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<QSslCertificate> 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)
{