31 #include <QSslCertificate>
33 #include <QVBoxLayout>
35 #include <QDialogButtonBox>
36 #include "ui_sslcertificateinfowidget.h"
44 , Ui_ { std::make_shared<Ui::SslCertificateInfoWidget> () }
51 QByteArray FormatHash (QByteArray hash)
53 hash = hash.toUpper ();
54 for (
int i = 2; i < hash.size (); i += 3)
62 auto setSubjectInfo = [&cert] (QLabel *label, QSslCertificate::SubjectInfo key)
64 #if QT_VERSION < 0x050000
65 label->setText (cert.subjectInfo (key));
67 label->setText (cert.subjectInfo (key).join (
"; "));
70 auto setIssuerInfo = [&cert] (QLabel *label, QSslCertificate::SubjectInfo key)
72 #if QT_VERSION < 0x050000
73 label->setText (cert.issuerInfo (key));
75 label->setText (cert.issuerInfo (key).join (
"; "));
79 setSubjectInfo (Ui_->SubjectCommonName_, QSslCertificate::CommonName);
80 setSubjectInfo (Ui_->SubjectOrganization_, QSslCertificate::Organization);
81 setSubjectInfo (Ui_->SubjectUnit_, QSslCertificate::OrganizationalUnitName);
82 setSubjectInfo (Ui_->SubjectCountry_, QSslCertificate::CountryName);
83 setSubjectInfo (Ui_->SubjectState_, QSslCertificate::StateOrProvinceName);
84 setSubjectInfo (Ui_->SubjectCity_, QSslCertificate::LocalityName);
85 setIssuerInfo (Ui_->IssuerCommonName_, QSslCertificate::CommonName);
86 setIssuerInfo (Ui_->IssuerOrganization_, QSslCertificate::Organization);
87 setIssuerInfo (Ui_->IssuerUnit_, QSslCertificate::OrganizationalUnitName);
88 setIssuerInfo (Ui_->IssuerCountry_, QSslCertificate::CountryName);
89 setIssuerInfo (Ui_->IssuerState_, QSslCertificate::StateOrProvinceName);
90 setIssuerInfo (Ui_->IssuerCity_, QSslCertificate::LocalityName);
92 Ui_->SerialNumber_->setText (cert.serialNumber ());
93 Ui_->Md5_->setText (cert.digest (QCryptographicHash::Md5).toHex ());
94 Ui_->Sha1_->setText (FormatHash (cert.digest (QCryptographicHash::Sha1).toHex ()));
95 #if QT_VERSION >= 0x050000
96 Ui_->Sha256_->setText (FormatHash (cert.digest (QCryptographicHash::Sha256).toHex ()));
97 Ui_->Sha512_->setText (FormatHash (cert.digest (QCryptographicHash::Sha512).toHex ()));
100 Ui_->StartDate_->setText (QLocale {}.toString (cert.effectiveDate ()));
101 Ui_->EndDate_->setText (QLocale {}.toString (cert.expiryDate ()));
106 auto dia =
new QDialog { parent };
107 dia->setLayout (
new QVBoxLayout);
110 dia->layout ()->addWidget (certWidget);
113 QObject::connect (buttons,
114 SIGNAL (accepted ()),
117 QObject::connect (buttons,
118 SIGNAL (rejected ()),
121 dia->layout ()->addWidget (buttons);
123 certWidget->SetCertificate (cert);
QDialog * MakeCertificateViewerDialog(const QSslCertificate &cert, QWidget *parent)