X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsslserver.cpp;h=5a5be5ce4a2638bb47486a938b930c168a18b324;hp=1daa77064333b851ee27c9102a611e7341d0dd8b;hb=add9e1afd5a4ec7eb104a7cd111429037740a0a0;hpb=2f5ea29cc7ea1951dbfa59a8ea81a58a0d577650 diff --git a/src/core/sslserver.cpp b/src/core/sslserver.cpp index 1daa7706..5a5be5ce 100644 --- a/src/core/sslserver.cpp +++ b/src/core/sslserver.cpp @@ -25,7 +25,6 @@ #endif #include -#include #include "logger.h" #include "quassel.h" @@ -182,10 +181,10 @@ bool SslServer::setCertificate(const QString &path, const QString &keyPath) return false; } - untestedKey = QSslKey(&keyFile, QSsl::Rsa); + untestedKey = loadKey(&keyFile); keyFile.close(); } else { - untestedKey = QSslKey(&certFile, QSsl::Rsa); + untestedKey = loadKey(&certFile); } certFile.close(); @@ -227,4 +226,21 @@ bool SslServer::setCertificate(const QString &path, const QString &keyPath) } +QSslKey SslServer::loadKey(QFile *keyFile) +{ + QSslKey key; + key = QSslKey(keyFile, QSsl::Rsa); +#if QT_VERSION >= 0x050500 + if (key.isNull()) { + if (!keyFile->reset()) { + quWarning() << "SslServer: IO error reading key file"; + return key; + } + key = QSslKey(keyFile, QSsl::Ec); + } +#endif + return key; +} + + #endif // HAVE_SSL