diff options
author | Richard Moore <rich@kde.org> | 2013-02-11 17:14:25 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-19 21:37:14 +0100 |
commit | 4a07519877b4b3aad45d1a727487d9e87630973b (patch) | |
tree | 8bbd4df14107917fca40b35dd145547376f7508d /src/network/ssl/qsslconfiguration.cpp | |
parent | 5dbd42a62ee56297b3b3b1881644efa5e0b5b594 (diff) |
Store the local certificate in a QList.
Instead of storing a single QSslCertificate for a the local cert, store
a list of them. This will allow us to handle server sockets that use a
certificate that is not issued directly from the CA root in future.
Change-Id: I9a36b9a99daa9c0bdd17f61b4ce1a7da746f2e96
Reviewed-by: Peter Hartmann <phartmann@rim.com>
Diffstat (limited to 'src/network/ssl/qsslconfiguration.cpp')
-rw-r--r-- | src/network/ssl/qsslconfiguration.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/network/ssl/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp index 145cd7be5d..3d466b85ca 100644 --- a/src/network/ssl/qsslconfiguration.cpp +++ b/src/network/ssl/qsslconfiguration.cpp @@ -173,7 +173,7 @@ bool QSslConfiguration::operator==(const QSslConfiguration &other) const return true; return d->peerCertificate == other.d->peerCertificate && d->peerCertificateChain == other.d->peerCertificateChain && - d->localCertificate == other.d->localCertificate && + d->localCertificateChain == other.d->localCertificateChain && d->privateKey == other.d->privateKey && d->sessionCipher == other.d->sessionCipher && d->ciphers == other.d->ciphers && @@ -212,7 +212,7 @@ bool QSslConfiguration::isNull() const d->allowRootCertOnDemandLoading == true && d->caCertificates.count() == 0 && d->ciphers.count() == 0 && - d->localCertificate.isNull() && + d->localCertificateChain.isEmpty() && d->privateKey.isNull() && d->peerCertificate.isNull() && d->peerCertificateChain.count() == 0 && @@ -313,6 +313,18 @@ void QSslConfiguration::setPeerVerifyDepth(int depth) } /*! + Returns the certificate chain to be presented to the peer during + the SSL handshake process. + + \sa localCertificate() + \since 5.1 +*/ +QList<QSslCertificate> QSslConfiguration::localCertificateChain() const +{ + return d->localCertificateChain; +} + +/*! Returns the certificate to be presented to the peer during the SSL handshake process. @@ -320,7 +332,9 @@ void QSslConfiguration::setPeerVerifyDepth(int depth) */ QSslCertificate QSslConfiguration::localCertificate() const { - return d->localCertificate; + if (d->localCertificateChain.isEmpty()) + return QSslCertificate(); + return d->localCertificateChain[0]; } /*! @@ -341,7 +355,8 @@ QSslCertificate QSslConfiguration::localCertificate() const */ void QSslConfiguration::setLocalCertificate(const QSslCertificate &certificate) { - d->localCertificate = certificate; + d->localCertificateChain = QList<QSslCertificate>(); + d->localCertificateChain += certificate; } /*! |