10 #include <QSslCertificate>
11 #include <QVBoxLayout>
13 #include <QDialogButtonBox>
15 #include "ui_sslcertificateinfowidget.h"
21 , Ui_ { std::make_shared<Ui::SslCertificateInfoWidget> () }
28 QByteArray FormatHash (QByteArray hash)
30 hash = hash.toUpper ();
31 for (
int i = 2; i < hash.size (); i += 3)
39 auto setSubjectInfo = [&cert] (QLabel *label, QSslCertificate::SubjectInfo key)
41 label->setText (cert.subjectInfo (key).join (
"; "_ql));
43 auto setIssuerInfo = [&cert] (QLabel *label, QSslCertificate::SubjectInfo key)
45 label->setText (cert.issuerInfo (key).join (
"; "_ql));
48 setSubjectInfo (Ui_->SubjectCommonName_, QSslCertificate::CommonName);
49 setSubjectInfo (Ui_->SubjectOrganization_, QSslCertificate::Organization);
50 setSubjectInfo (Ui_->SubjectUnit_, QSslCertificate::OrganizationalUnitName);
51 setSubjectInfo (Ui_->SubjectCountry_, QSslCertificate::CountryName);
52 setSubjectInfo (Ui_->SubjectState_, QSslCertificate::StateOrProvinceName);
53 setSubjectInfo (Ui_->SubjectCity_, QSslCertificate::LocalityName);
54 setIssuerInfo (Ui_->IssuerCommonName_, QSslCertificate::CommonName);
55 setIssuerInfo (Ui_->IssuerOrganization_, QSslCertificate::Organization);
56 setIssuerInfo (Ui_->IssuerUnit_, QSslCertificate::OrganizationalUnitName);
57 setIssuerInfo (Ui_->IssuerCountry_, QSslCertificate::CountryName);
58 setIssuerInfo (Ui_->IssuerState_, QSslCertificate::StateOrProvinceName);
59 setIssuerInfo (Ui_->IssuerCity_, QSslCertificate::LocalityName);
61 Ui_->SerialNumber_->setText (cert.serialNumber ());
62 Ui_->Md5_->setText (cert.digest (QCryptographicHash::Md5).toHex ());
63 Ui_->Sha1_->setText (FormatHash (cert.digest (QCryptographicHash::Sha1).toHex ()));
64 Ui_->Sha256_->setText (FormatHash (cert.digest (QCryptographicHash::Sha256).toHex ()));
65 Ui_->Sha512_->setText (FormatHash (cert.digest (QCryptographicHash::Sha512).toHex ()));
67 Ui_->StartDate_->setText (QLocale {}.toString (cert.effectiveDate ()));
68 Ui_->EndDate_->setText (QLocale {}.toString (cert.expiryDate ()));
73 const auto dia =
new QDialog { parent };
74 dia->setLayout (
new QVBoxLayout);
76 const auto certWidget =
new Util::SslCertificateInfoWidget;
77 dia->layout ()->addWidget (certWidget);
80 QObject::connect (buttons,
81 &QDialogButtonBox::accepted,
84 QObject::connect (buttons,
85 &QDialogButtonBox::rejected,
88 dia->layout ()->addWidget (buttons);
90 certWidget->SetCertificate (cert);