Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikkel Krautz <mikkel@krautz.dk>2015-09-26 23:19:20 +0300
committerMikkel Krautz <mikkel@krautz.dk>2015-09-26 23:33:49 +0300
commit8bd3f76a8ea3d8751c0305cfcaaa3592d2ffa9b2 (patch)
treeae2b78600bb8e09f5f9c25a6804f41ff5aff7e75 /src/murmur/Server.h
parentb6276544a1f46f186bf929f4b27b616245b013ce (diff)
Murmur: add support for EDH cipher suites, and for specifying Diffie-Hellman parmeters.
This change allows server admins to specify Diffie-Hellman parameters for Murmur to use. This is done using the sslDHParams option in the config file. Diffie-Hellman parameters can also be set on a per-server basis using the sslDHParams option. Note: the functionality implemented in this change requires the QSslDiffieHellmanParameters class in Qt, which has not yet landed upstream in the Qt 5 'dev' branch. This means that the functionality discussed in this change will, for now, only work in binaries provided by the Mumble project, or binaries that are built using our build environments, and not binaries that link against any released versions of Qt at present. This change modifies the default TLS cipher suite string to add EDH+aRSA+AESGCM, DHE-RSA-AES256-SHA and DHE-RSA-AES128-SHA. This yields the following ciphers, in TLS/RFC notation: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 TLS_DHE_RSA_WITH_AES_256_CBC_SHA TLS_DHE_RSA_WITH_AES_128_CBC_SHA This change also allows Murmur servers to provide forward secrecy to older clients, such as our own pre-built binaries before 1.2.9. It also provides forward secrecy for users that use Mumble 1.2.x versions on Linux distros, and other Unix-like systems. This is because Mumble 1.2.x on Unix-like systems builds against Qt 4, which limits the connection to TLS 1.0. Before this change, Murmur was not able to negotiate an ephemeral Diffie-Hellman key exchange for those clients. This is now possible.
Diffstat (limited to 'src/murmur/Server.h')
-rw-r--r--src/murmur/Server.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/murmur/Server.h b/src/murmur/Server.h
index 19e26706e..d437d68e1 100644
--- a/src/murmur/Server.h
+++ b/src/murmur/Server.h
@@ -49,6 +49,9 @@
#include <QtNetwork/QSslKey>
#include <QtNetwork/QSslSocket>
#include <QtNetwork/QTcpServer>
+#if defined(USE_QSSLDIFFIEHELLMANPARAMETERS)
+# include <QtNetwork/QSslDiffieHellmanParameters>
+#endif
#ifdef Q_OS_WIN
#include <windows.h>
#endif
@@ -168,6 +171,9 @@ class Server : public QThread {
QList<QSslCertificate> qlCA;
QSslCertificate qscCert;
QSslKey qskKey;
+#if defined(USE_QSSLDIFFIEHELLMANPARAMETERS)
+ QSslDiffieHellmanParameters qsdhpDHParams;
+#endif
Timer tUptime;