void QSslServer::incomingConnection(qintptr socket) { QSslSocket *pSslSocket = new QSslSocket(); if (Q_LIKELY(pSslSocket)) { pSslSocket->setSslConfiguration(m_sslConfiguration); if (Q_LIKELY(pSslSocket->setSocketDescriptor(socket))) { typedef void (QSslSocket::* sslErrorsSignal)(const QList<QSslError> &); #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 2) connect(pSslSocket, &QSslSocket::peerVerifyError, this, &QSslServer::peerVerifyError); connect(pSslSocket, &QSslSocket::encrypted, this, &QSslServer::newEncryptedConnection); #else connect(pSslSocket,SIGNAL(peerVerifyError(QSslError)), this, SIGNAL(peerVerifyError(QSslError))); connect(pSslSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SIGNAL(sslErrors(QList<QSslError>))); connect(pSslSocket, SIGNAL(encrypted()), this, SIGNAL(newEncryptedConnection())); #endif addPendingConnection(pSslSocket); pSslSocket->startServerEncryption(); } else { delete pSslSocket; } } }
void SettingsEditorForm::connectToHost(QString addr, int port) { if(_socket != nullptr) { _socket->close(); _socket->deleteLater(); } _socket = new QSslSocket(this); connect( _socket, SIGNAL(error(QAbstractSocket::SocketError)), this,SLOT(onSocketError(QAbstractSocket::SocketError))); connect( _socket, SIGNAL(peerVerifyError(QSslError)), this, SLOT(onPeerVerifyError(QSslError)) ); connect( _socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(onSslErrors(QList<QSslError>))); connect( _socket, SIGNAL(connected()),this,SLOT(onConnected())); connect( _socket, SIGNAL(readyRead()), this, SLOT(onReadyRead())); _socket->setLocalCertificate( "./certs/manager.crt" ); _socket->setPrivateKey( "./certs/manager.key"); _socket->setProtocol(QSsl::SecureProtocols); _socket->setCaCertificates(QSslCertificate::fromPath("./certs/trusted.pem")); _socket->connectToHostEncrypted( addr, port, "SettingsServer"); if(!_socket->waitForEncrypted(1000)) { LoggerDialog::get()->Error("SettingsEditorForm::connectToHost","Wait for encrypted failed!"); _socket->close(); ui->pushButton_connect->setText("Connect"); } }
SrvCLI::SrvCLI() : connectionIsOnline (false) { QObject::connect (&this->sslSocket, SIGNAL(disconnected()), this, SLOT(connectionClosedByServer())); QObject::connect (&this->sslSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(error())); QObject::connect (&this->sslSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slot_sslErrors(QList<QSslError>))); QObject::connect (&this->sslSocket, SIGNAL(peerVerifyError(QSslError)), this, SLOT(slot_peerVerifyError(QSslError))); QObject::connect (&this->sslSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(slot_stateChanged(QAbstractSocket::SocketState))); }
void TLSFeature::handleEndElement(const QStringRef &name, const QStringRef &uri) { Q_UNUSED(uri); if (name == QLatin1String("proceed")) { DirectConnection *connection = qobject_cast<DirectConnection*>(m_client->connection()); Q_ASSERT(connection); QSslSocket *socket = qobject_cast<QSslSocket*>(connection->socket()); Q_ASSERT(socket); m_socket = socket; socket->setProtocol(QSsl::TlsV1); socket->setPeerVerifyMode(QSslSocket::VerifyNone); connect(socket, SIGNAL(encrypted()), this, SLOT(onHandshaken())); connect(socket, SIGNAL(disconnected()), this, SLOT(onDisconnected())); connect(socket, SIGNAL(peerVerifyError(QSslError)), SLOT(onPeerVerifyError(QSslError))); socket->startClientEncryption(); } }