[Pkg-owncloud-commits] [owncloud-client] 18/33: SSLButton: Fix certificate display

Sandro Knauß hefee-guest at moszumanska.debian.org
Thu Feb 27 19:44:25 UTC 2014


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch upstream
in repository owncloud-client.

commit 995e8938ad4cf898cde82856f14e8650fcb5e730
Author: Daniel Molkentin <danimo at owncloud.com>
Date:   Fri Feb 21 23:31:29 2014 +0100

    SSLButton: Fix certificate display
---
 src/mirall/sslbutton.cpp | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/src/mirall/sslbutton.cpp b/src/mirall/sslbutton.cpp
index 0062605..088e2d6 100644
--- a/src/mirall/sslbutton.cpp
+++ b/src/mirall/sslbutton.cpp
@@ -69,7 +69,6 @@ static bool isSelfSigned(const QSslCertificate &certificate)
            certificate.issuerInfo(QSslCertificate::OrganizationalUnitName) == certificate.subjectInfo(QSslCertificate::OrganizationalUnitName);
 }
 
-
 QMenu* SslButton::buildCertMenu(QMenu *parent, const QSslCertificate& cert,
                                 const QList<QSslCertificate>& userApproved, int pos)
 {
@@ -79,6 +78,8 @@ QMenu* SslButton::buildCertMenu(QMenu *parent, const QSslCertificate& cert,
     QString country = QStringList(cert.subjectInfo(QSslCertificate::CountryName)).join(QChar(';'));
     QString state = QStringList(cert.subjectInfo(QSslCertificate::StateOrProvinceName)).join(QChar(';'));
     QString issuer = QStringList(cert.issuerInfo(QSslCertificate::CommonName)).join(QChar(';'));
+    if (issuer.isEmpty())
+        issuer = QStringList(cert.issuerInfo(QSslCertificate::OrganizationalUnitName)).join(QChar(';'));
     QString md5 = Utility::formatFingerprint(cert.digest(QCryptographicHash::Md5).toHex());
     QString sha1 = Utility::formatFingerprint(cert.digest(QCryptographicHash::Sha1).toHex());
     QString serial = QString::fromUtf8(cert.serialNumber(), true);
@@ -136,8 +137,8 @@ QMenu* SslButton::buildCertMenu(QMenu *parent, const QSslCertificate& cert,
 
     QString certId = cn.isEmpty() ? ou : cn;
 
-    if (QSslSocket::systemCaCertificates().contains(cert) && pos == 0) {
-        txt += tr("%1 (in Root CA store)").arg(certId);
+    if (QSslSocket::systemCaCertificates().contains(cert)) {
+        txt += certId;
     } else {
         if (isSelfSigned(cert)) {
             txt += tr("%1 (self-signed)").arg(certId);
@@ -178,15 +179,19 @@ void SslButton::updateAccountInfo(Account *account)
         QList<QSslCertificate> chain = account->sslConfiguration().peerCertificateChain();
         menu->addAction(tr("Certificate information:"))->setEnabled(false);
 
-        QListIterator<QSslCertificate> caIt(QSslSocket::systemCaCertificates());
-        caIt.toBack();
+        QList<QSslCertificate> tmpChain;
+        foreach(QSslCertificate cert, chain) {
+            tmpChain << cert;
+            if (QSslSocket::systemCaCertificates().contains(cert))
+                break;
+        }
+        chain = tmpChain;
+
         // find trust anchor (informational only, verification is done by QSslSocket!)
-        while (caIt.hasPrevious()) {
-            QSslCertificate rootCA = caIt.previous();
+        foreach(QSslCertificate rootCA, QSslSocket::systemCaCertificates()) {
             if (rootCA.issuerInfo(QSslCertificate::CommonName) == chain.last().issuerInfo(QSslCertificate::CommonName) &&
-                    rootCA.issuerInfo(QSslCertificate::Organization) == chain.last().issuerInfo(QSslCertificate::Organization)
-                    && !isSelfSigned(rootCA)) {
-                chain << rootCA;
+                    rootCA.issuerInfo(QSslCertificate::Organization) == chain.last().issuerInfo(QSslCertificate::Organization)) {
+                chain.append(rootCA);
                 break;
             }
         }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list