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 label->setText (cert.subjectInfo (key).join (
"; "));
66 auto setIssuerInfo = [&cert] (QLabel *label, QSslCertificate::SubjectInfo key)
68 label->setText (cert.issuerInfo (key).join (
"; "));
71 setSubjectInfo (Ui_->SubjectCommonName_, QSslCertificate::CommonName);
72 setSubjectInfo (Ui_->SubjectOrganization_, QSslCertificate::Organization);
73 setSubjectInfo (Ui_->SubjectUnit_, QSslCertificate::OrganizationalUnitName);
74 setSubjectInfo (Ui_->SubjectCountry_, QSslCertificate::CountryName);
75 setSubjectInfo (Ui_->SubjectState_, QSslCertificate::StateOrProvinceName);
76 setSubjectInfo (Ui_->SubjectCity_, QSslCertificate::LocalityName);
77 setIssuerInfo (Ui_->IssuerCommonName_, QSslCertificate::CommonName);
78 setIssuerInfo (Ui_->IssuerOrganization_, QSslCertificate::Organization);
79 setIssuerInfo (Ui_->IssuerUnit_, QSslCertificate::OrganizationalUnitName);
80 setIssuerInfo (Ui_->IssuerCountry_, QSslCertificate::CountryName);
81 setIssuerInfo (Ui_->IssuerState_, QSslCertificate::StateOrProvinceName);
82 setIssuerInfo (Ui_->IssuerCity_, QSslCertificate::LocalityName);
84 Ui_->SerialNumber_->setText (cert.serialNumber ());
85 Ui_->Md5_->setText (cert.digest (QCryptographicHash::Md5).toHex ());
86 Ui_->Sha1_->setText (FormatHash (cert.digest (QCryptographicHash::Sha1).toHex ()));
87 Ui_->Sha256_->setText (FormatHash (cert.digest (QCryptographicHash::Sha256).toHex ()));
88 Ui_->Sha512_->setText (FormatHash (cert.digest (QCryptographicHash::Sha512).toHex ()));
90 Ui_->StartDate_->setText (QLocale {}.toString (cert.effectiveDate ()));
91 Ui_->EndDate_->setText (QLocale {}.toString (cert.expiryDate ()));
96 auto dia =
new QDialog { parent };
97 dia->setLayout (
new QVBoxLayout);
100 dia->layout ()->addWidget (certWidget);
103 QObject::connect (buttons,
104 SIGNAL (accepted ()),
107 QObject::connect (buttons,
108 SIGNAL (rejected ()),
111 dia->layout ()->addWidget (buttons);
113 certWidget->SetCertificate (cert);
QDialog * MakeCertificateViewerDialog(const QSslCertificate &cert, QWidget *parent)