X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsslserver.cpp;h=4080f8141348aeb79d46d5eefcdafafa9d430de5;hp=aa5be2c23f3f84500f4272bde3e1216d42bab6fc;hb=a5455d1ea8785e864ce4b513e63283ed156d4872;hpb=cd37744f0a2cd8ffe027892ddce5c7d6f4848ab0 diff --git a/src/core/sslserver.cpp b/src/core/sslserver.cpp index aa5be2c2..4080f814 100644 --- a/src/core/sslserver.cpp +++ b/src/core/sslserver.cpp @@ -60,6 +60,7 @@ void SslServer::incomingConnection(int socketDescriptor) { if(isCertValid()) { serverSocket->setLocalCertificate(_cert); serverSocket->setPrivateKey(_key); + serverSocket->addCaCertificates(_ca); } _pendingConnections << serverSocket; emit newConnection(); @@ -86,7 +87,19 @@ bool SslServer::setCertificate(const QString &path) { << "error:" << certFile.error(); return false; } - _cert = QSslCertificate(&certFile); + + QList certList = QSslCertificate::fromDevice(&certFile); + + if (certList.isEmpty()) { + quWarning() << "SslServer: Certificate file doesn't contain a certificate"; + return false; + } + + _cert = certList[0]; + certList.removeFirst(); // remove server cert + + // store CA and intermediates certs + _ca = certList; if(!certFile.reset()) { quWarning() << "SslServer: IO error reading certificate file";