[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