31 #include <QStringList> 33 #include <QTreeWidgetItem> 42 const auto item =
new QTreeWidgetItem { {
"Error:", error.errorString () } };
44 const auto& cer = error.certificate ();
50 { QObject::tr (
"Certificate"), QObject::tr (
"(No certificate available for this error)") }
59 QObject::tr (
"Valid:"),
60 !cer.isBlacklisted () ? QObject::tr (
"yes") : QObject::tr (
"no")
63 new QTreeWidgetItem { item, { QObject::tr (
"Effective date:"), cer.effectiveDate ().toString () } };
64 new QTreeWidgetItem { item, { QObject::tr (
"Expiry date:"), cer.expiryDate ().toString () } };
65 new QTreeWidgetItem { item, { QObject::tr (
"Version:"), cer.version () } };
66 new QTreeWidgetItem { item, { QObject::tr (
"Serial number:"), cer.serialNumber () } };
67 new QTreeWidgetItem { item, { QObject::tr (
"MD5 digest:"), cer.digest ().toHex () } };
68 new QTreeWidgetItem { item, { QObject::tr (
"SHA1 digest:"), cer.digest (QCryptographicHash::Sha1).toHex () } };
71 auto cvt = [] (
const QStringList& list) {
return list.join (
"; "); };
73 const auto issuer =
new QTreeWidgetItem { item, { QObject::tr (
"Issuer info") } };
74 auto mkIssuerItem = [&cvt, &cer, issuer] (
const QString& name,
75 QSslCertificate::SubjectInfo field)
77 const auto& value = cvt (cer.issuerInfo (field));
78 if (!value.isEmpty ())
79 new QTreeWidgetItem { issuer, { name, value } };
82 mkIssuerItem (QObject::tr (
"Organization:"), QSslCertificate::Organization);
83 mkIssuerItem (QObject::tr (
"Common name:"), QSslCertificate::CommonName);
84 mkIssuerItem (QObject::tr (
"Locality:"), QSslCertificate::LocalityName);
85 mkIssuerItem (QObject::tr (
"Organizational unit name:"), QSslCertificate::OrganizationalUnitName);
86 mkIssuerItem (QObject::tr (
"Country name:"), QSslCertificate::CountryName);
87 mkIssuerItem (QObject::tr (
"State or province name:"), QSslCertificate::StateOrProvinceName);
89 const auto subject =
new QTreeWidgetItem { item, { QObject::tr (
"Subject info") } };
90 auto mkSubjectItem = [&cvt, &cer, subject] (
const QString& name,
91 QSslCertificate::SubjectInfo field)
93 const auto& value = cvt (cer.subjectInfo (field));
94 if (!value.isEmpty ())
95 new QTreeWidgetItem { subject, { name, value } };
98 mkSubjectItem (QObject::tr (
"Organization:"), QSslCertificate::Organization);
99 mkSubjectItem (QObject::tr (
"Common name:"), QSslCertificate::CommonName);
100 mkSubjectItem (QObject::tr (
"Locality:"), QSslCertificate::LocalityName);
101 mkSubjectItem (QObject::tr (
"Organizational unit name:"), QSslCertificate::OrganizationalUnitName);
102 mkSubjectItem (QObject::tr (
"Country name:"), QSslCertificate::CountryName);
103 mkSubjectItem (QObject::tr (
"State or province name:"), QSslCertificate::StateOrProvinceName);
QTreeWidgetItem * SslError2TreeItem(const QSslError &error)
Builds a tree widget representation of the given SSL error.