SslInfoDlg::SslInfoDlg(const QSslSocket *socket, QWidget *parent) : QDialog(parent), _socket(socket) { ui.setupUi(this); QSslCipher cipher = socket->sessionCipher(); ui.hostname->setText(socket->peerName()); ui.address->setText(socket->peerAddress().toString()); ui.encryption->setText(cipher.name()); ui.protocol->setText(cipher.protocolString()); connect(ui.certificateChain, SIGNAL(currentIndexChanged(int)), SLOT(setCurrentCert(int))); foreach(const QSslCertificate &cert, socket->peerCertificateChain()) { ui.certificateChain->addItem(subjectInfo(cert, QSslCertificate::CommonName)); } }
void SslInfoDlg::setCurrentCert(int index) { QSslCertificate cert = socket()->peerCertificateChain().at(index); ui.subjectCommonName->setText(subjectInfo(cert, QSslCertificate::CommonName)); ui.subjectOrganization->setText(subjectInfo(cert, QSslCertificate::Organization)); ui.subjectOrganizationalUnit->setText(subjectInfo(cert, QSslCertificate::OrganizationalUnitName)); ui.subjectCountry->setText(subjectInfo(cert, QSslCertificate::CountryName)); ui.subjectState->setText(subjectInfo(cert, QSslCertificate::StateOrProvinceName)); ui.subjectCity->setText(subjectInfo(cert, QSslCertificate::LocalityName)); ui.issuerCommonName->setText(issuerInfo(cert, QSslCertificate::CommonName)); ui.issuerOrganization->setText(issuerInfo(cert, QSslCertificate::Organization)); ui.issuerOrganizationalUnit->setText(issuerInfo(cert, QSslCertificate::OrganizationalUnitName)); ui.issuerCountry->setText(issuerInfo(cert, QSslCertificate::CountryName)); ui.issuerState->setText(issuerInfo(cert, QSslCertificate::StateOrProvinceName)); ui.issuerCity->setText(issuerInfo(cert, QSslCertificate::LocalityName)); if (socket()->sslErrors().isEmpty()) ui.trusted->setText(tr("Yes")); else { QString errorString = tr("No, for the following reasons:<ul>"); foreach(const QSslError &error, socket()->sslErrors()) errorString += "<li>" + error.errorString() + "</li>"; errorString += "</ul>"; ui.trusted->setText(errorString); } ui.validity->setText(tr("%1 to %2").arg(cert.effectiveDate().date().toString(Qt::ISODate), cert.expiryDate().date().toString(Qt::ISODate))); ui.md5Digest->setText(prettyDigest(cert.digest(QCryptographicHash::Md5))); ui.sha1Digest->setText(prettyDigest(cert.digest(QCryptographicHash::Sha1))); #if QT_VERSION < 0x050000 // Qt 4 doesn't include SHA-2 hashes, so hide the row ui.sha256Label->hide(); ui.sha256Digest->hide(); #else ui.sha256Digest->setText(prettyDigest(cert.digest(QCryptographicHash::Sha256))); #endif }
QStringList QSslCertificate::subjectInfo(SubjectInfo info) const { return subjectInfo(QSslCertificatePrivate::subjectInfoToString(info)); }