From 1831a975eb276bf88fc2b57013a0f6f2c8ce772e Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Fri, 22 Mar 2013 11:18:16 +0100 Subject: [PATCH] SSLErrorDialog: We cannot use the existing key chain ... use the one returned by the new server instead. --- src/mirall/application.cpp | 3 ++- src/mirall/sslerrordialog.cpp | 6 ++---- src/mirall/sslerrordialog.h | 3 ++- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mirall/application.cpp b/src/mirall/application.cpp index c4dcde9c73..78294559b0 100644 --- a/src/mirall/application.cpp +++ b/src/mirall/application.cpp @@ -392,7 +392,8 @@ void Application::slotSSLFailed( QNetworkReply *reply, QList errors ) } _sslErrorDialog->setCustomConfigHandle( configHandle ); - if( _sslErrorDialog->setErrorList( errors ) ) { + QList certs = reply->sslConfiguration().peerCertificateChain(); + if( _sslErrorDialog->setErrorList( errors, certs) ) { // all ssl certs are known and accepted. We can ignore the problems right away. qDebug() << "Certs are already known and trusted, Warnings are not valid."; reply->ignoreSslErrors(); diff --git a/src/mirall/sslerrordialog.cpp b/src/mirall/sslerrordialog.cpp index ec6fb3a21e..e2255a26b2 100644 --- a/src/mirall/sslerrordialog.cpp +++ b/src/mirall/sslerrordialog.cpp @@ -57,17 +57,15 @@ QString SslErrorDialog::styleSheet() const } #define QL(x) QLatin1String(x) -bool SslErrorDialog::setErrorList( QList errors ) +bool SslErrorDialog::setErrorList( QList errors, QList certs ) { - QList ourCerts = ownCloudInfo::instance()->certificateChain(); - // check if unknown certs caused errors. _unknownCerts.clear(); QStringList errorStrings; for (int i = 0; i < errors.count(); ++i) { - if (ourCerts.contains(errors.at(i).certificate()) || + if (certs.contains(errors.at(i).certificate()) || _unknownCerts.contains(errors.at(i).certificate() )) continue; errorStrings += errors.at(i).errorString(); diff --git a/src/mirall/sslerrordialog.h b/src/mirall/sslerrordialog.h index 28463c010c..2d7e105504 100644 --- a/src/mirall/sslerrordialog.h +++ b/src/mirall/sslerrordialog.h @@ -22,6 +22,7 @@ #include "ui_sslerrordialog.h" class QSslError; +class QSslCertificate; namespace Mirall @@ -33,7 +34,7 @@ class SslErrorDialog : public QDialog, public Ui::sslErrorDialog public: explicit SslErrorDialog(QWidget *parent = 0); - bool setErrorList( QList errors ); + bool setErrorList( QList errors, QList certs ); bool trustConnection();