summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorOliver Wolff <oliver.wolff@digia.com>2014-08-12 20:04:05 +0300
committerAndrew Knight <andrew.knight@digia.com>2014-08-13 21:09:48 +0200
commitcec893e4f0d6480a9b3e38af38c7b887a29f206d (patch)
treecd16cb218299e45c47a5b7763c7f96e04e3d1aca /src/network
parent2be0bf0765aae2d8c7ec794241733b170d61c981 (diff)
Introduce secure transport backend for Windows Runtime
The change creates a stub implementation for WinRT, adding the needed files and classes to build SSL support on that platform. Task-number: QTBUG-37497 Change-Id: Idc3e8aa91c5eb8a938705f2385d1074fe6c1d83e Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Diffstat (limited to 'src/network')
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h2
-rw-r--r--src/network/ssl/qsslcertificate.cpp3
-rw-r--r--src/network/ssl/qsslcertificate_winrt.cpp191
-rw-r--r--src/network/ssl/qsslkey_winrt.cpp82
-rw-r--r--src/network/ssl/qsslsocket.cpp3
-rw-r--r--src/network/ssl/qsslsocket.h2
-rw-r--r--src/network/ssl/qsslsocket_p.h16
-rw-r--r--src/network/ssl/qsslsocket_winrt.cpp204
-rw-r--r--src/network/ssl/qsslsocket_winrt_p.h101
-rw-r--r--src/network/ssl/ssl.pri30
10 files changed, 616 insertions, 18 deletions
diff --git a/src/network/access/qhttpnetworkconnection_p.h b/src/network/access/qhttpnetworkconnection_p.h
index a96f67485f..379ed5acae 100644
--- a/src/network/access/qhttpnetworkconnection_p.h
+++ b/src/network/access/qhttpnetworkconnection_p.h
@@ -73,7 +73,9 @@
#ifndef QT_NO_HTTP
#ifndef QT_NO_SSL
+#ifndef QT_NO_OPENSSL
# include <private/qsslcontext_openssl_p.h>
+#endif
# include <private/qsslsocket_p.h>
# include <QtNetwork/qsslsocket.h>
# include <QtNetwork/qsslerror.h>
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index d5d568e45d..47ea3343ea 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -116,6 +116,9 @@
#ifndef QT_NO_OPENSSL
#include "qsslsocket_openssl_symbols_p.h"
#endif
+#ifdef Q_OS_WINRT
+#include "qsslsocket_winrt_p.h"
+#endif
#include "qsslcertificate.h"
#include "qsslcertificate_p.h"
diff --git a/src/network/ssl/qsslcertificate_winrt.cpp b/src/network/ssl/qsslcertificate_winrt.cpp
new file mode 100644
index 0000000000..9c857a6787
--- /dev/null
+++ b/src/network/ssl/qsslcertificate_winrt.cpp
@@ -0,0 +1,191 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtNetwork module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+
+#include "qsslcertificate.h"
+#include "qsslcertificate_p.h"
+
+QT_BEGIN_NAMESPACE
+
+bool QSslCertificate::operator==(const QSslCertificate &other) const
+{
+ if (d == other.d)
+ return true;
+ return false;
+}
+
+bool QSslCertificate::isNull() const
+{
+ Q_UNIMPLEMENTED();
+ return true;
+}
+
+bool QSslCertificate::isSelfSigned() const
+{
+ Q_UNIMPLEMENTED();
+ return true;
+}
+
+QByteArray QSslCertificate::version() const
+{
+ Q_UNIMPLEMENTED();
+ return QByteArray();
+}
+
+QByteArray QSslCertificate::serialNumber() const
+{
+ Q_UNIMPLEMENTED();
+ return QByteArray();
+}
+
+QStringList QSslCertificate::issuerInfo(SubjectInfo info) const
+{
+ Q_UNIMPLEMENTED();
+ return QStringList();
+}
+
+QStringList QSslCertificate::issuerInfo(const QByteArray &attribute) const
+{
+ Q_UNIMPLEMENTED();
+ return QStringList();
+}
+
+QStringList QSslCertificate::subjectInfo(SubjectInfo info) const
+{
+ Q_UNIMPLEMENTED();
+ return QStringList();
+}
+
+QStringList QSslCertificate::subjectInfo(const QByteArray &attribute) const
+{
+ Q_UNIMPLEMENTED();
+ return QStringList();
+}
+
+QList<QByteArray> QSslCertificate::subjectInfoAttributes() const
+{
+ Q_UNIMPLEMENTED();
+ return QList<QByteArray>();
+}
+
+QList<QByteArray> QSslCertificate::issuerInfoAttributes() const
+{
+ Q_UNIMPLEMENTED();
+ return QList<QByteArray>();
+}
+
+QMultiMap<QSsl::AlternativeNameEntryType, QString> QSslCertificate::subjectAlternativeNames() const
+{
+ Q_UNIMPLEMENTED();
+ return QMultiMap<QSsl::AlternativeNameEntryType, QString>();
+}
+
+QDateTime QSslCertificate::effectiveDate() const
+{
+ Q_UNIMPLEMENTED();
+ return QDateTime();
+}
+
+QDateTime QSslCertificate::expiryDate() const
+{
+ Q_UNIMPLEMENTED();
+ return QDateTime();
+}
+
+Qt::HANDLE QSslCertificate::handle() const
+{
+ Q_UNIMPLEMENTED();
+ return 0;
+}
+
+QSslKey QSslCertificate::publicKey() const
+{
+ Q_UNIMPLEMENTED();
+ return QSslKey();
+}
+
+QList<QSslCertificateExtension> QSslCertificate::extensions() const
+{
+ Q_UNIMPLEMENTED();
+ return QList<QSslCertificateExtension>();
+}
+
+QByteArray QSslCertificate::toPem() const
+{
+ Q_UNIMPLEMENTED();
+ return QByteArray();
+}
+
+QByteArray QSslCertificate::toDer() const
+{
+ Q_UNIMPLEMENTED();
+ return QByteArray();
+}
+
+QString QSslCertificate::toText() const
+{
+ Q_UNIMPLEMENTED();
+ return QString();
+}
+
+void QSslCertificatePrivate::init(const QByteArray &data, QSsl::EncodingFormat format)
+{
+ Q_UNIMPLEMENTED();
+}
+
+QList<QSslCertificate> QSslCertificatePrivate::certificatesFromPem(const QByteArray &pem, int count)
+{
+ Q_UNIMPLEMENTED();
+ Q_UNUSED(pem)
+ Q_UNUSED(count)
+ return QList<QSslCertificate>();
+}
+
+QList<QSslCertificate> QSslCertificatePrivate::certificatesFromDer(const QByteArray &der, int count)
+{
+ Q_UNIMPLEMENTED();
+ Q_UNUSED(der)
+ Q_UNUSED(count)
+ return QList<QSslCertificate>();
+}
+
+QT_END_NAMESPACE
diff --git a/src/network/ssl/qsslkey_winrt.cpp b/src/network/ssl/qsslkey_winrt.cpp
new file mode 100644
index 0000000000..1e416a8c09
--- /dev/null
+++ b/src/network/ssl/qsslkey_winrt.cpp
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtNetwork module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qsslkey.h"
+#include "qsslkey_p.h"
+
+QT_BEGIN_NAMESPACE
+
+void QSslKeyPrivate::clear(bool deep)
+{
+ Q_UNIMPLEMENTED();
+}
+
+void QSslKeyPrivate::decodeDer(const QByteArray &der, const QByteArray &passPhrase,
+ bool deepClear)
+{
+ Q_UNIMPLEMENTED();
+}
+
+void QSslKeyPrivate::decodePem(const QByteArray &pem, const QByteArray &passPhrase,
+ bool deepClear)
+{
+ Q_UNIMPLEMENTED();
+}
+
+int QSslKeyPrivate::length() const
+{
+ Q_UNIMPLEMENTED();
+ return -1;
+}
+
+QByteArray QSslKeyPrivate::toPem(const QByteArray &passPhrase) const
+{
+ Q_UNIMPLEMENTED();
+ return QByteArray();
+}
+
+Qt::HANDLE QSslKeyPrivate::handle() const
+{
+ Q_UNIMPLEMENTED();
+ return 0;
+}
+
+QT_END_NAMESPACE
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp
index 5020c8dc0c..5df550b1c8 100644
--- a/src/network/ssl/qsslsocket.cpp
+++ b/src/network/ssl/qsslsocket.cpp
@@ -294,6 +294,9 @@
#ifndef QT_NO_OPENSSL
#include "qsslsocket_openssl_p.h"
#endif
+#ifdef Q_OS_WINRT
+#include "qsslsocket_winrt_p.h"
+#endif
#include "qsslconfiguration_p.h"
#include <QtCore/qdebug.h>
diff --git a/src/network/ssl/qsslsocket.h b/src/network/ssl/qsslsocket.h
index 9cc5e02de3..312ddb9850 100644
--- a/src/network/ssl/qsslsocket.h
+++ b/src/network/ssl/qsslsocket.h
@@ -217,7 +217,7 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_flushWriteBuffer())
Q_PRIVATE_SLOT(d_func(), void _q_flushReadBuffer())
Q_PRIVATE_SLOT(d_func(), void _q_resumeImplementation())
-#ifdef Q_OS_WIN
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
Q_PRIVATE_SLOT(d_func(), void _q_caRootLoaded(QSslCertificate,QSslCertificate))
#endif
friend class QSslSocketBackendPrivate;
diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h
index a86fac8f94..06e12297a4 100644
--- a/src/network/ssl/qsslsocket_p.h
+++ b/src/network/ssl/qsslsocket_p.h
@@ -72,11 +72,13 @@
#include <CoreFoundation/CFArray.h>
#elif defined(Q_OS_WIN)
#include <QtCore/qt_windows.h>
+#ifndef Q_OS_WINRT
#include <wincrypt.h>
+#endif // !Q_OS_WINRT
#ifndef HCRYPTPROV_LEGACY
#define HCRYPTPROV_LEGACY HCRYPTPROV
-#endif
-#endif
+#endif // !HCRYPTPROV_LEGACY
+#endif // Q_OS_WIN
QT_BEGIN_NAMESPACE
@@ -86,7 +88,7 @@ QT_BEGIN_NAMESPACE
typedef OSStatus (*PtrSecTrustCopyAnchorCertificates)(CFArrayRef*);
#endif
-#if defined(Q_OS_WIN)
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
#if defined(Q_OS_WINCE)
typedef HCERTSTORE (WINAPI *PtrCertOpenSystemStoreW)(LPCSTR, DWORD, HCRYPTPROV_LEGACY, DWORD, const void*);
#else
@@ -94,7 +96,7 @@ QT_BEGIN_NAMESPACE
#endif
typedef PCCERT_CONTEXT (WINAPI *PtrCertFindCertificateInStore)(HCERTSTORE, DWORD, DWORD, DWORD, const void*, PCCERT_CONTEXT);
typedef BOOL (WINAPI *PtrCertCloseStore)(HCERTSTORE, DWORD);
-#endif
+#endif // Q_OS_WIN && !Q_OS_WINRT
@@ -153,11 +155,11 @@ public:
static PtrSecCertificateCopyData ptrSecCertificateCopyData;
static PtrSecTrustSettingsCopyCertificates ptrSecTrustSettingsCopyCertificates;
static PtrSecTrustCopyAnchorCertificates ptrSecTrustCopyAnchorCertificates;
-#elif defined(Q_OS_WIN)
+#elif defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
static PtrCertOpenSystemStoreW ptrCertOpenSystemStoreW;
static PtrCertFindCertificateInStore ptrCertFindCertificateInStore;
static PtrCertCloseStore ptrCertCloseStore;
-#endif
+#endif // Q_OS_WIN && !Q_OS_WINRT
// The socket itself, including private slots.
QTcpSocket *plainSocket;
@@ -178,7 +180,7 @@ public:
void _q_flushWriteBuffer();
void _q_flushReadBuffer();
void _q_resumeImplementation();
-#ifdef Q_OS_WIN
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
virtual void _q_caRootLoaded(QSslCertificate,QSslCertificate) = 0;
#endif
diff --git a/src/network/ssl/qsslsocket_winrt.cpp b/src/network/ssl/qsslsocket_winrt.cpp
new file mode 100644
index 0000000000..da4cf91f49
--- /dev/null
+++ b/src/network/ssl/qsslsocket_winrt.cpp
@@ -0,0 +1,204 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtNetwork module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/****************************************************************************
+**
+** In addition, as a special exception, the copyright holders listed above give
+** permission to link the code of its release of Qt with the OpenSSL project's
+** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the
+** same license as the original version), and distribute the linked executables.
+**
+** You must comply with the GNU General Public License version 2 in all
+** respects for all of the code used other than the "OpenSSL" code. If you
+** modify this file, you may extend this exception to your version of the file,
+** but you are not obligated to do so. If you do not wish to do so, delete
+** this exception statement from your version of this file.
+**
+****************************************************************************/
+
+//#define QSSLSOCKET_DEBUG
+//#define QT_DECRYPT_SSL_TRAFFIC
+
+#include "qsslsocket_winrt_p.h"
+#include "qsslsocket.h"
+#include "qsslcertificate_p.h"
+
+QT_BEGIN_NAMESPACE
+
+bool QSslSocketPrivate::s_loadRootCertsOnDemand = false;
+
+QSslSocketBackendPrivate::QSslSocketBackendPrivate()
+{
+ ensureInitialized();
+}
+
+QSslSocketBackendPrivate::~QSslSocketBackendPrivate()
+{
+}
+
+void QSslSocketPrivate::deinitialize()
+{
+ Q_UNIMPLEMENTED();
+}
+
+bool QSslSocketPrivate::supportsSsl()
+{
+ return true;
+}
+
+bool QSslSocketPrivate::ensureLibraryLoaded()
+{
+ return true;
+}
+
+void QSslSocketPrivate::ensureCiphersAndCertsLoaded()
+{
+ Q_UNIMPLEMENTED();
+}
+
+void QSslSocketPrivate::ensureInitialized()
+{
+}
+
+long QSslSocketPrivate::sslLibraryVersionNumber()
+{
+ Q_UNIMPLEMENTED();
+ return 0;
+}
+
+
+QString QSslSocketPrivate::sslLibraryVersionString()
+{
+ Q_UNIMPLEMENTED();
+ return QString::number(sslLibraryVersionNumber());
+}
+
+long QSslSocketPrivate::sslLibraryBuildVersionNumber()
+{
+ Q_UNIMPLEMENTED();
+ return 0;
+}
+
+QString QSslSocketPrivate::sslLibraryBuildVersionString()
+{
+ Q_UNIMPLEMENTED();
+ return QString::number(sslLibraryBuildVersionNumber());
+}
+
+void QSslSocketPrivate::resetDefaultCiphers()
+{
+ Q_UNIMPLEMENTED();
+}
+
+QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
+{
+ Q_UNIMPLEMENTED();
+ ensureInitialized();
+ QList<QSslCertificate> systemCerts;
+ return systemCerts;
+}
+
+void QSslSocketBackendPrivate::startClientEncryption()
+{
+ Q_UNIMPLEMENTED();
+}
+
+void QSslSocketBackendPrivate::startServerEncryption()
+{
+ Q_UNIMPLEMENTED();
+}
+
+void QSslSocketBackendPrivate::transmit()
+{
+ Q_UNIMPLEMENTED();
+}
+
+void QSslSocketBackendPrivate::disconnectFromHost()
+{
+ Q_UNIMPLEMENTED();
+}
+
+void QSslSocketBackendPrivate::disconnected()
+{
+ Q_UNIMPLEMENTED();
+}
+
+QSslCipher QSslSocketBackendPrivate::sessionCipher() const
+{
+ Q_UNIMPLEMENTED();
+ return QSslCipher();
+}
+
+QSsl::SslProtocol QSslSocketBackendPrivate::sessionProtocol() const
+{
+ Q_UNIMPLEMENTED();
+ return QSsl::UnknownProtocol;
+}
+void QSslSocketBackendPrivate::continueHandshake()
+{
+ Q_UNIMPLEMENTED();
+}
+
+QList<QSslError> QSslSocketBackendPrivate::verify(QList<QSslCertificate> certificateChain, const QString &hostName)
+{
+ Q_UNIMPLEMENTED();
+ Q_UNUSED(certificateChain)
+ Q_UNUSED(hostName)
+ QList<QSslError> errors;
+
+ return errors;
+}
+
+bool QSslSocketBackendPrivate::importPKCS12(QIODevice *device,
+ QSslKey *key, QSslCertificate *cert,
+ QList<QSslCertificate> *caCertificates,
+ const QByteArray &passPhrase)
+{
+ Q_UNIMPLEMENTED();
+ Q_UNUSED(device)
+ Q_UNUSED(key)
+ Q_UNUSED(cert)
+ Q_UNUSED(caCertificates)
+ Q_UNUSED(passPhrase)
+ return false;
+}
+
+QT_END_NAMESPACE
diff --git a/src/network/ssl/qsslsocket_winrt_p.h b/src/network/ssl/qsslsocket_winrt_p.h
new file mode 100644
index 0000000000..791330a6fd
--- /dev/null
+++ b/src/network/ssl/qsslsocket_winrt_p.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtNetwork module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/****************************************************************************
+**
+** In addition, as a special exception, the copyright holders listed above give
+** permission to link the code of its release of Qt with the OpenSSL project's
+** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the
+** same license as the original version), and distribute the linked executables.
+**
+** You must comply with the GNU General Public License version 2 in all
+** respects for all of the code used other than the "OpenSSL" code. If you
+** modify this file, you may extend this exception to your version of the file,
+** but you are not obligated to do so. If you do not wish to do so, delete
+** this exception statement from your version of this file.
+**
+****************************************************************************/
+
+#ifndef QSSLSOCKET_OPENSSL_P_H
+#define QSSLSOCKET_OPENSSL_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of the QLibrary class. This header file may change from
+// version to version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qsslsocket_p.h"
+
+QT_BEGIN_NAMESPACE
+
+class QSslSocketBackendPrivate : public QSslSocketPrivate
+{
+ Q_DECLARE_PUBLIC(QSslSocket)
+public:
+ QSslSocketBackendPrivate();
+ ~QSslSocketBackendPrivate();
+
+ // Platform specific functions
+ void startClientEncryption() Q_DECL_OVERRIDE;
+ void startServerEncryption() Q_DECL_OVERRIDE;
+ void transmit() Q_DECL_OVERRIDE;
+ void disconnectFromHost() Q_DECL_OVERRIDE;
+ void disconnected() Q_DECL_OVERRIDE;
+ QSslCipher sessionCipher() const Q_DECL_OVERRIDE;
+ QSsl::SslProtocol sessionProtocol() const Q_DECL_OVERRIDE;
+ void continueHandshake() Q_DECL_OVERRIDE;
+
+ static QList<QSslError> verify(QList<QSslCertificate> certificateChain, const QString &hostName);
+ static bool importPKCS12(QIODevice *device,
+ QSslKey *key, QSslCertificate *cert,
+ QList<QSslCertificate> *caCertificates,
+ const QByteArray &passPhrase);
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/network/ssl/ssl.pri b/src/network/ssl/ssl.pri
index d7891b292a..0fbeb1d369 100644
--- a/src/network/ssl/ssl.pri
+++ b/src/network/ssl/ssl.pri
@@ -1,5 +1,5 @@
# OpenSSL support; compile in QSslSocket.
-contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) {
+contains(QT_CONFIG, ssl) | contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) {
HEADERS += ssl/qssl.h \
ssl/qsslcertificate.h \
ssl/qsslcertificate_p.h \
@@ -11,25 +11,35 @@ contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) {
ssl/qsslkey.h \
ssl/qsslkey_p.h \
ssl/qsslsocket.h \
- ssl/qsslsocket_openssl_p.h \
- ssl/qsslsocket_openssl_symbols_p.h \
ssl/qsslsocket_p.h \
ssl/qsslcertificateextension.h \
- ssl/qsslcertificateextension_p.h \
- ssl/qsslcontext_openssl_p.h
+ ssl/qsslcertificateextension_p.h
SOURCES += ssl/qssl.cpp \
ssl/qsslcertificate.cpp \
- ssl/qsslcertificate_openssl.cpp \
ssl/qsslconfiguration.cpp \
ssl/qsslcipher.cpp \
ssl/qsslkey_p.cpp \
ssl/qsslerror.cpp \
- ssl/qsslkey_openssl.cpp \
ssl/qsslsocket.cpp \
+ ssl/qsslcertificateextension.cpp
+
+ winrt {
+ HEADERS += ssl/qsslsocket_winrt_p.h
+ SOURCES += ssl/qsslcertificate_winrt.cpp \
+ ssl/qsslkey_winrt.cpp \
+ ssl/qsslsocket_winrt.cpp
+ }
+}
+
+contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) {
+ HEADERS += ssl/qsslcontext_openssl_p.h \
+ ssl/qsslsocket_openssl_p.h \
+ ssl/qsslsocket_openssl_symbols_p.h
+ SOURCES += ssl/qsslcertificate_openssl.cpp \
+ ssl/qsslcontext_openssl.cpp \
+ ssl/qsslkey_openssl.cpp \
ssl/qsslsocket_openssl.cpp \
- ssl/qsslsocket_openssl_symbols.cpp \
- ssl/qsslcertificateextension.cpp \
- ssl/qsslcontext_openssl.cpp
+ ssl/qsslsocket_openssl_symbols.cpp
android:!android-no-sdk: SOURCES += ssl/qsslsocket_openssl_android.cpp