LeechCraft 0.6.70-17335-ge406ffdcaf
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
sslerror2treeitem.cpp
Go to the documentation of this file.
1/**********************************************************************
2 * LeechCraft - modular cross-platform feature rich internet client.
3 * Copyright (C) 2006-2014 Georg Rudoy
4 *
5 * Distributed under the Boost Software License, Version 1.0.
6 * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7 **********************************************************************/
8
9#include "sslerror2treeitem.h"
10#include <QStringList>
11#include <QDateTime>
12#include <QTreeWidgetItem>
13#include <QSslError>
14#include <util/sll/qtutil.h>
15
16namespace LC::Util
17{
18 QTreeWidgetItem* SslError2TreeItem (const QSslError& error)
19 {
20 const auto item = new QTreeWidgetItem { { "Error:", error.errorString () } };
21
22 const auto& cer = error.certificate ();
23 if (cer.isNull ())
24 {
25 new QTreeWidgetItem
26 {
27 item,
28 { QObject::tr ("Certificate"), QObject::tr ("(No certificate available for this error)") }
29 };
30 return item;
31 }
32
33 new QTreeWidgetItem
34 {
35 item,
36 {
37 QObject::tr ("Valid:"),
38 !cer.isBlacklisted () ? QObject::tr ("yes") : QObject::tr ("no")
39 }
40 };
41 new QTreeWidgetItem { item, { QObject::tr ("Effective date:"), cer.effectiveDate ().toString () } };
42 new QTreeWidgetItem { item, { QObject::tr ("Expiry date:"), cer.expiryDate ().toString () } };
43 new QTreeWidgetItem { item, { QObject::tr ("Version:"), cer.version () } };
44 new QTreeWidgetItem { item, { QObject::tr ("Serial number:"), cer.serialNumber () } };
45 new QTreeWidgetItem { item, { QObject::tr ("MD5 digest:"), cer.digest ().toHex () } };
46 new QTreeWidgetItem { item, { QObject::tr ("SHA1 digest:"), cer.digest (QCryptographicHash::Sha1).toHex () } };
47
48 auto cvt = [] (const QStringList& list) { return list.join ("; "_ql); };
49
50 const auto issuer = new QTreeWidgetItem { item, { QObject::tr ("Issuer info") } };
51 auto mkIssuerItem = [&cvt, &cer, issuer] (const QString& name,
52 QSslCertificate::SubjectInfo field)
53 {
54 const auto& value = cvt (cer.issuerInfo (field));
55 if (!value.isEmpty ())
56 new QTreeWidgetItem { issuer, { name, value } };
57 };
58
59 mkIssuerItem (QObject::tr ("Organization:"), QSslCertificate::Organization);
60 mkIssuerItem (QObject::tr ("Common name:"), QSslCertificate::CommonName);
61 mkIssuerItem (QObject::tr ("Locality:"), QSslCertificate::LocalityName);
62 mkIssuerItem (QObject::tr ("Organizational unit name:"), QSslCertificate::OrganizationalUnitName);
63 mkIssuerItem (QObject::tr ("Country name:"), QSslCertificate::CountryName);
64 mkIssuerItem (QObject::tr ("State or province name:"), QSslCertificate::StateOrProvinceName);
65
66 const auto subject = new QTreeWidgetItem { item, { QObject::tr ("Subject info") } };
67 auto mkSubjectItem = [&cvt, &cer, subject] (const QString& name,
68 QSslCertificate::SubjectInfo field)
69 {
70 const auto& value = cvt (cer.subjectInfo (field));
71 if (!value.isEmpty ())
72 new QTreeWidgetItem { subject, { name, value } };
73 };
74
75 mkSubjectItem (QObject::tr ("Organization:"), QSslCertificate::Organization);
76 mkSubjectItem (QObject::tr ("Common name:"), QSslCertificate::CommonName);
77 mkSubjectItem (QObject::tr ("Locality:"), QSslCertificate::LocalityName);
78 mkSubjectItem (QObject::tr ("Organizational unit name:"), QSslCertificate::OrganizationalUnitName);
79 mkSubjectItem (QObject::tr ("Country name:"), QSslCertificate::CountryName);
80 mkSubjectItem (QObject::tr ("State or province name:"), QSslCertificate::StateOrProvinceName);
81
82 return item;
83 }
84}
QTreeWidgetItem * SslError2TreeItem(const QSslError &error)
Builds a tree widget representation of the given SSL error.