1 /*
2     This file is part of the KDE libraries
3     SPDX-FileCopyrightText: 2007, 2008 Andreas Hartmetz <ahartmetz@gmail.com>
4 
5     SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7 
8 #include "ksslerroruidata.h"
9 #include "ksslerroruidata_p.h"
10 #include "ktcpsocket.h"
11 
12 #include <QHostAddress>
13 #include <QNetworkReply>
14 #include <QSslCipher>
15 
KSslErrorUiData()16 KSslErrorUiData::KSslErrorUiData()
17     : d(new Private())
18 {
19     d->usedBits = 0;
20     d->bits = 0;
21 }
22 
23 #if KIOCORE_BUILD_DEPRECATED_SINCE(5, 65)
KSslErrorUiData(const KTcpSocket * socket)24 KSslErrorUiData::KSslErrorUiData(const KTcpSocket *socket)
25     : d(new Private())
26 {
27     d->certificateChain = socket->peerCertificateChain();
28     const auto ksslErrors = socket->sslErrors();
29     d->sslErrors.reserve(ksslErrors.size());
30     for (const auto &error : ksslErrors) {
31         d->sslErrors.push_back(error.sslError());
32     }
33     d->ip = socket->peerAddress().toString();
34     d->host = socket->peerName();
35     d->sslProtocol = socket->negotiatedSslVersionName();
36     d->cipher = socket->sessionCipher().name();
37     d->usedBits = socket->sessionCipher().usedBits();
38     d->bits = socket->sessionCipher().supportedBits();
39 }
40 #endif
41 
KSslErrorUiData(const QSslSocket * socket)42 KSslErrorUiData::KSslErrorUiData(const QSslSocket *socket)
43     : d(new Private())
44 {
45     d->certificateChain = socket->peerCertificateChain();
46     d->sslErrors = socket->sslHandshakeErrors();
47     d->ip = socket->peerAddress().toString();
48     d->host = socket->peerName();
49     if (socket->isEncrypted()) {
50         d->sslProtocol = socket->sessionCipher().protocolString();
51     }
52     d->cipher = socket->sessionCipher().name();
53     d->usedBits = socket->sessionCipher().usedBits();
54     d->bits = socket->sessionCipher().supportedBits();
55 }
56 
KSslErrorUiData(const QNetworkReply * reply,const QList<QSslError> & sslErrors)57 KSslErrorUiData::KSslErrorUiData(const QNetworkReply *reply, const QList<QSslError> &sslErrors)
58     : d(new Private())
59 {
60     const auto sslConfig = reply->sslConfiguration();
61     d->certificateChain = sslConfig.peerCertificateChain();
62     d->sslErrors = sslErrors;
63     d->host = reply->request().url().host();
64     d->sslProtocol = sslConfig.sessionCipher().protocolString();
65     d->cipher = sslConfig.sessionCipher().name();
66     d->usedBits = sslConfig.sessionCipher().usedBits();
67     d->bits = sslConfig.sessionCipher().supportedBits();
68 }
69 
KSslErrorUiData(const KSslErrorUiData & other)70 KSslErrorUiData::KSslErrorUiData(const KSslErrorUiData &other)
71     : d(new Private(*other.d))
72 {
73 }
74 
~KSslErrorUiData()75 KSslErrorUiData::~KSslErrorUiData()
76 {
77     delete d;
78 }
79 
operator =(const KSslErrorUiData & other)80 KSslErrorUiData &KSslErrorUiData::operator=(const KSslErrorUiData &other)
81 {
82     *d = *other.d;
83     return *this;
84 }
85