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 #if QT_VERSION < 0x050000 61 cer.isValid () ? QObject::tr (
"yes") : QObject::tr (
"no")
63 !cer.isBlacklisted () ? QObject::tr (
"yes") : QObject::tr (
"no")
67 new QTreeWidgetItem { item, { QObject::tr (
"Effective date:"), cer.effectiveDate ().toString () } };
68 new QTreeWidgetItem { item, { QObject::tr (
"Expiry date:"), cer.expiryDate ().toString () } };
69 new QTreeWidgetItem { item, { QObject::tr (
"Version:"), cer.version () } };
70 new QTreeWidgetItem { item, { QObject::tr (
"Serial number:"), cer.serialNumber () } };
71 new QTreeWidgetItem { item, { QObject::tr (
"MD5 digest:"), cer.digest ().toHex () } };
72 new QTreeWidgetItem { item, { QObject::tr (
"SHA1 digest:"), cer.digest (QCryptographicHash::Sha1).toHex () } };
75 #if QT_VERSION >= 0x050000 76 auto cvt = [] (
const QStringList& list) {
return list.join (
"; "); };
78 auto cvt = [] (
const QString& str) {
return str; };
81 const auto issuer =
new QTreeWidgetItem { item, { QObject::tr (
"Issuer info") } };
82 auto mkIssuerItem = [&cvt, &cer, issuer] (
const QString& name,
83 QSslCertificate::SubjectInfo field)
85 const auto& value = cvt (cer.issuerInfo (field));
86 if (!value.isEmpty ())
87 new QTreeWidgetItem { issuer, { name, value } };
90 mkIssuerItem (QObject::tr (
"Organization:"), QSslCertificate::Organization);
91 mkIssuerItem (QObject::tr (
"Common name:"), QSslCertificate::CommonName);
92 mkIssuerItem (QObject::tr (
"Locality:"), QSslCertificate::LocalityName);
93 mkIssuerItem (QObject::tr (
"Organizational unit name:"), QSslCertificate::OrganizationalUnitName);
94 mkIssuerItem (QObject::tr (
"Country name:"), QSslCertificate::CountryName);
95 mkIssuerItem (QObject::tr (
"State or province name:"), QSslCertificate::StateOrProvinceName);
97 const auto subject =
new QTreeWidgetItem { item, { QObject::tr (
"Subject info") } };
98 auto mkSubjectItem = [&cvt, &cer, subject] (
const QString& name,
99 QSslCertificate::SubjectInfo field)
101 const auto& value = cvt (cer.subjectInfo (field));
102 if (!value.isEmpty ())
103 new QTreeWidgetItem { subject, { name, value } };
106 mkSubjectItem (QObject::tr (
"Organization:"), QSslCertificate::Organization);
107 mkSubjectItem (QObject::tr (
"Common name:"), QSslCertificate::CommonName);
108 mkSubjectItem (QObject::tr (
"Locality:"), QSslCertificate::LocalityName);
109 mkSubjectItem (QObject::tr (
"Organizational unit name:"), QSslCertificate::OrganizationalUnitName);
110 mkSubjectItem (QObject::tr (
"Country name:"), QSslCertificate::CountryName);
111 mkSubjectItem (QObject::tr (
"State or province name:"), QSslCertificate::StateOrProvinceName);
QTreeWidgetItem * SslError2TreeItem(const QSslError &error)
Builds a tree widget representation of the given SSL error.