diff options
Diffstat (limited to 'Swift/QtUI/QtCertificateViewerDialog.cpp')
-rw-r--r-- | Swift/QtUI/QtCertificateViewerDialog.cpp | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/Swift/QtUI/QtCertificateViewerDialog.cpp b/Swift/QtUI/QtCertificateViewerDialog.cpp index 15a52ba..8108978 100644 --- a/Swift/QtUI/QtCertificateViewerDialog.cpp +++ b/Swift/QtUI/QtCertificateViewerDialog.cpp @@ -1,20 +1,28 @@ /* * Copyright (c) 2012 Tobias Markmann * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ +/* + * Copyright (c) 2015 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ + #include "QtCertificateViewerDialog.h" #include "ui_QtCertificateViewerDialog.h" #include <Swiften/Base/foreach.h> -#include <QTreeWidgetItem> -#include <QLabel> #include <QDateTime> +#include <QLabel> +#include <QString> +#include <QStringList> +#include <QTreeWidgetItem> namespace Swift { QtCertificateViewerDialog::QtCertificateViewerDialog(QWidget* parent) : QDialog(parent), ui(new Ui::QtCertificateViewerDialog) { ui->setupUi(this); connect(ui->certChainTreeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), SLOT(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*))); @@ -45,13 +53,13 @@ void QtCertificateViewerDialog::setCertificateChain(const std::vector<Certificat root->setData(0, Qt::UserRole, QVariant(0)); root->setExpanded(true); ui->certChainTreeWidget->addTopLevelItem(root); if (currentChain.size() > 1) { QTreeWidgetItem* parent = root; for (int n = 1; n < currentChain.size(); n++) { - QTreeWidgetItem* link = new QTreeWidgetItem(parent, QStringList(QString("↳ ") + currentChain.at(n).subjectInfo(QSslCertificate::CommonName))); + QTreeWidgetItem* link = new QTreeWidgetItem(parent, QStringList(QString("↳ ") + (QStringList(currentChain.at(n).subjectInfo(QSslCertificate::CommonName)).join(", ")))); link->setExpanded(true); link->setData(0, Qt::UserRole, QVariant(n)); parent = link; } ui->certChainTreeWidget->setCurrentItem(parent); } else { @@ -71,13 +79,14 @@ void QtCertificateViewerDialog::currentItemChanged(QTreeWidgetItem* current, QTr #define ADD_SECTION( TITLE ) \ ui->certGridLayout->addWidget(new QLabel("<strong>" + TITLE + "</strong>"), rowCount++, 0, 1, 2); #define ADD_FIELD( TITLE, VALUE) \ ui->certGridLayout->addWidget(new QLabel(TITLE), rowCount, 0, 1, 1, Qt::AlignRight); \ - valueLabel = new QLabel(VALUE); \ + valueLabel = new QLabel(); \ + valueLabel->setText(QStringList(VALUE).join(", ")); \ valueLabel->setTextFormat(Qt::PlainText); \ valueLabel->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard); \ ui->certGridLayout->addWidget(valueLabel, rowCount++, 1, 1, 1, Qt::AlignLeft); void QtCertificateViewerDialog::setCertificateDetails(const QSslCertificate& cert) { QLayoutItem* item; @@ -103,16 +112,22 @@ void QtCertificateViewerDialog::setCertificateDetails(const QSslCertificate& cer ADD_FIELD(tr("Common Name"), cert.subjectInfo(QSslCertificate::CommonName)); ADD_FIELD(tr("Locality"), cert.subjectInfo(QSslCertificate::LocalityName)); ADD_FIELD(tr("Organizational Unit"), cert.subjectInfo(QSslCertificate::OrganizationalUnitName)); ADD_FIELD(tr("Country"), cert.subjectInfo(QSslCertificate::CountryName)); ADD_FIELD(tr("State"), cert.subjectInfo(QSslCertificate::StateOrProvinceName)); - if (!cert.alternateSubjectNames().empty()) { +#if QT_VERSION < 0x050000 + QMultiMap<QSsl::AlternateNameEntryType, QString> altNames = cert.alternateSubjectNames(); +#define SANTYPE QSsl::AlternateNameEntryType +#else + QMultiMap<QSsl::AlternativeNameEntryType, QString> altNames = cert.subjectAlternativeNames(); +#define SANTYPE QSsl::AlternativeNameEntryType +#endif + if (!altNames.empty()) { ADD_SECTION(tr("Alternate Subject Names")); - QMultiMap<QSsl::AlternateNameEntryType, QString> altNames = cert.alternateSubjectNames(); - foreach (const QSsl::AlternateNameEntryType &type, altNames.uniqueKeys()) { + foreach (const SANTYPE &type, altNames.uniqueKeys()) { foreach (QString name, altNames.values(type)) { if (type == QSsl::EmailEntry) { ADD_FIELD(tr("E-mail Address"), name); } else { ADD_FIELD(tr("DNS Name"), name); } |