File indexing completed on 2023-09-24 04:08:39
0001 /* 0002 This file is part of the KDE libraries 0003 SPDX-FileCopyrightText: 2007, 2008 Andreas Hartmetz <ahartmetz@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "ksslerroruidata.h" 0009 #include "ksslerroruidata_p.h" 0010 #include "ktcpsocket.h" 0011 0012 #include <QHostAddress> 0013 #include <QNetworkReply> 0014 #include <QSslCipher> 0015 0016 KSslErrorUiData::KSslErrorUiData() 0017 : d(new Private()) 0018 { 0019 d->usedBits = 0; 0020 d->bits = 0; 0021 } 0022 0023 #if KIOCORE_BUILD_DEPRECATED_SINCE(5, 65) 0024 KSslErrorUiData::KSslErrorUiData(const KTcpSocket *socket) 0025 : d(new Private()) 0026 { 0027 d->certificateChain = socket->peerCertificateChain(); 0028 const auto ksslErrors = socket->sslErrors(); 0029 d->sslErrors.reserve(ksslErrors.size()); 0030 for (const auto &error : ksslErrors) { 0031 d->sslErrors.push_back(error.sslError()); 0032 } 0033 d->ip = socket->peerAddress().toString(); 0034 d->host = socket->peerName(); 0035 d->sslProtocol = socket->negotiatedSslVersionName(); 0036 d->cipher = socket->sessionCipher().name(); 0037 d->usedBits = socket->sessionCipher().usedBits(); 0038 d->bits = socket->sessionCipher().supportedBits(); 0039 } 0040 #endif 0041 0042 KSslErrorUiData::KSslErrorUiData(const QSslSocket *socket) 0043 : d(new Private()) 0044 { 0045 d->certificateChain = socket->peerCertificateChain(); 0046 d->sslErrors = socket->sslHandshakeErrors(); 0047 d->ip = socket->peerAddress().toString(); 0048 d->host = socket->peerName(); 0049 if (socket->isEncrypted()) { 0050 d->sslProtocol = socket->sessionCipher().protocolString(); 0051 } 0052 d->cipher = socket->sessionCipher().name(); 0053 d->usedBits = socket->sessionCipher().usedBits(); 0054 d->bits = socket->sessionCipher().supportedBits(); 0055 } 0056 0057 KSslErrorUiData::KSslErrorUiData(const QNetworkReply *reply, const QList<QSslError> &sslErrors) 0058 : d(new Private()) 0059 { 0060 const auto sslConfig = reply->sslConfiguration(); 0061 d->certificateChain = sslConfig.peerCertificateChain(); 0062 d->sslErrors = sslErrors; 0063 d->host = reply->request().url().host(); 0064 d->sslProtocol = sslConfig.sessionCipher().protocolString(); 0065 d->cipher = sslConfig.sessionCipher().name(); 0066 d->usedBits = sslConfig.sessionCipher().usedBits(); 0067 d->bits = sslConfig.sessionCipher().supportedBits(); 0068 } 0069 0070 KSslErrorUiData::KSslErrorUiData(const KSslErrorUiData &other) 0071 : d(new Private(*other.d)) 0072 { 0073 } 0074 0075 KSslErrorUiData::~KSslErrorUiData() = default; 0076 0077 KSslErrorUiData &KSslErrorUiData::operator=(const KSslErrorUiData &other) 0078 { 0079 *d = *other.d; 0080 return *this; 0081 }