File indexing completed on 2024-04-21 03:55:10

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 
0011 #include <QHostAddress>
0012 #include <QNetworkReply>
0013 #include <QSslCipher>
0014 
0015 KSslErrorUiData::KSslErrorUiData()
0016     : d(new Private())
0017 {
0018     d->usedBits = 0;
0019     d->bits = 0;
0020 }
0021 
0022 KSslErrorUiData::KSslErrorUiData(const QSslSocket *socket)
0023     : d(new Private())
0024 {
0025     d->certificateChain = socket->peerCertificateChain();
0026     d->sslErrors = socket->sslHandshakeErrors();
0027     d->ip = socket->peerAddress().toString();
0028     d->host = socket->peerName();
0029     if (socket->isEncrypted()) {
0030         d->sslProtocol = socket->sessionCipher().protocolString();
0031     }
0032     d->cipher = socket->sessionCipher().name();
0033     d->usedBits = socket->sessionCipher().usedBits();
0034     d->bits = socket->sessionCipher().supportedBits();
0035 }
0036 
0037 KSslErrorUiData::KSslErrorUiData(const QNetworkReply *reply, const QList<QSslError> &sslErrors)
0038     : d(new Private())
0039 {
0040     const auto sslConfig = reply->sslConfiguration();
0041     d->certificateChain = sslConfig.peerCertificateChain();
0042     d->sslErrors = sslErrors;
0043     d->host = reply->request().url().host();
0044     d->sslProtocol = sslConfig.sessionCipher().protocolString();
0045     d->cipher = sslConfig.sessionCipher().name();
0046     d->usedBits = sslConfig.sessionCipher().usedBits();
0047     d->bits = sslConfig.sessionCipher().supportedBits();
0048 }
0049 
0050 KSslErrorUiData::KSslErrorUiData(const KSslErrorUiData &other)
0051     : d(new Private(*other.d))
0052 {
0053 }
0054 
0055 KSslErrorUiData::~KSslErrorUiData() = default;
0056 
0057 KSslErrorUiData &KSslErrorUiData::operator=(const KSslErrorUiData &other)
0058 {
0059     *d = *other.d;
0060     return *this;
0061 }