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()16KSslErrorUiData::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)24KSslErrorUiData::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)42KSslErrorUiData::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)57KSslErrorUiData::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)70KSslErrorUiData::KSslErrorUiData(const KSslErrorUiData &other) 71 : d(new Private(*other.d)) 72 { 73 } 74 ~KSslErrorUiData()75KSslErrorUiData::~KSslErrorUiData() 76 { 77 delete d; 78 } 79 operator =(const KSslErrorUiData & other)80KSslErrorUiData &KSslErrorUiData::operator=(const KSslErrorUiData &other) 81 { 82 *d = *other.d; 83 return *this; 84 } 85