Commit Graph

23 Commits

Author SHA1 Message Date
Robert Adam
d100ff1467 MAINT: Update copyright to 2022 2022-01-04 20:17:33 +01:00
Robert
56db3410c5 MAINT: Update copyright notice to 2021 (Part II)
Apparently the first commit (59ae429972)
did not include all files.

Furthermore the used script tended to produce funny results in certain
cases. This has been fixed and as a result thereof a few more changes
were made in this second run.
2021-04-09 15:41:49 +02:00
Robert Adam
59ae429972 MAINT: Update copyright notice to 2021
This was done by running scripts/updateLicenseHeaders.py and then
manually editing the LICENSE file.
2021-03-02 10:15:01 +01:00
Robert
af7dac72f4 FORMAT: Run clang-format 10 on all C/CXX source-files 2020-09-11 18:29:33 +02:00
Davide Beatrici
4e67a2fafb Auto-update LICENSE.header in source files 2020-01-07 03:09:22 +01:00
Davide Beatrici
b427333257 Auto-update LICENSE.header in source files 2019-01-25 04:56:19 +01:00
Mikkel Krautz
f6ba3a52bf Auto-update LICENSE.header in source files. 2018-01-01 23:05:37 +01:00
Mikkel Krautz
f041bdbde1 SSL: add destroy() function to the SSL module.
This is in preparation for adding proper OpenSSL multithreaded locking
for when we use our own copy of OpenSSL instead of Qt's.
2017-07-17 09:49:40 +02:00
Mikkel Krautz
f544524d4c SSL: remove qsslSanityCheck.
Many distros are now shipping OpenSSL 1.1.

However, Qt 5 only supports OpenSSL 1.0 at present.
A Qt Project changeset implementing OpenSSL 1.1 support
is currently slated for Qt 5.10.

This leaves us in a situation where we're inevitably going
to be in situation where Mumble and Qt will be forced to use
different versions of OpenSSL on most Linux systems.

The previous commit in this PR has added proper initialization
to Mumble's copy of OpenSSL, instead of relying on Qt's only
initialization, which only works if Mumble and Qt are using the same
copy. This should fix the crashes people have reported when trying to
use Mumble/Murmur in a configuration where Mumble and Qt each use
their own copy of OpenSSL.

I'm still wary of allowing this, but it seems like the cleanest
approach.

An alternative would be to have Mumble/Murmur to try and
dynamically look up the symbols they need to run. However, we don't
really have the proper infrastructure to suport runtime-loaded
dependencies on Unix-like systems. Nor is it something we've done
in the past. Also, using OpenSSL 1.1 headers against OpenSSL 1.0
might also prove problematic anyway.
2017-06-01 00:23:35 +02:00
Mikkel Krautz
91ebb8b0b5 Update tree copyrights to 2017. 2017-01-08 21:05:57 +01:00
Mikkel Krautz
4aa902ded3 MumbleSSL: add a sanity check for QSsl loading a different version of OpenSSL than we're linked against. 2016-05-22 01:52:40 +02:00
Mikkel Krautz
395c084b7a src: update to use LICENSE.header. 2016-05-10 22:42:02 +02:00
Mikkel Krautz
0840dd4578 Fix OpenSSL intialization.
Add a MumbleSSL::initialize() method and call it
in Mumble's and Murmur's main functions, just before
construction of QApplication.

This ensures OpenSSL is initialized before we use it.

Our new cipher suite selection support apparently broke
Mumble and Murmur on Linux, at least for some systems.

This commit remedies that by ensuring that we initialize
OpenSSL early.

For Debian's patch, see
http://sources.debian.net/patches/patch/mumble/1.2.12-1/43-initialize-SSL.diff/

Fixes https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=804363
Fixes mumble-voip/mumble#1876
2016-02-17 01:22:47 +01:00
Stefan Hacker
e8027bd664 Output more control channel encryption parameters
As mentioned in #1811 we previously only output the
encryption algorithm as well as the width of the key
in the server information dialog.

This patch adds the encryption protocol, authentication
method and key-exchange method to the dialog. The
wording is similar to what Chrome uses to make it easier
to google.

As the option to retrieve the actual encryption protocol
for the connection was only added in Qt 5.4 we output
"TLS" in clients built with earlier versions as we cannot
know which version we are actually using.

Due to limitations in the information Qt provides us the
current output is far from ideal. To fix that additional
work is requored  which will be done in a followup patch.
2015-10-04 12:29:12 +02:00
Mikkel Krautz
63a6985d0d SSL: remove class name qualifier in SSL.h for new cipher string methods.
MSVC accepted it just fine, but it's obviously not the way it should be.
2015-05-22 20:05:37 +02:00
Mikkel Krautz
49f57d3da5 SSL: add MumbleSSL::defaultOpenSSLCipherString().
This commit adds a new method to MumbleSSL that returns Mumble's
preferred cipher suites represented in the OpenSSL cipher list format.

This commit does not hook up the function to anything. It merely
implements it.

Previously, Mumble relied on OpenSSL's default cipher suites. However,
that decision has increasingly turned out to be unwise. Often, new TLS
vulnerabilities require server admins and users to be able to change the
cipher suites advertised by their software to help mitigate the damage.
This was not previously possible in Mumble.

The other thing that prompted this change is the Logjam TLS vulnerablity
(https://weakdh.org/, CVE-2015-4000). Mumble is not vulnerable to Logjam,
because Mumble has never allowed export grade DH groups. However, one of
the other key takeaways from the Logjam paper, "Imperfect Forward Secrecy:
How Diffie-Hellman Fails in Practice", is that the Internet community
should move towards DH groups bigger than 1024 bits, and preferably use
unique groups on a per-server basis. Unfortunately, neither of these two
solutions are possible with API that Qt provides for TLS.

To remedy this, we instead drop support for non-Elliptic Curve DH
in the default cipher configuration. We don't have any legacy clients
to support that can only use DH, so this is fine.

The OpenSSL cipher list in MumbleSSL::defaultOpenSSLCipherString()
evaluates to the following set of cipher suites, in order of preference:

  ECDHE-RSA-AES256-GCM-SHA384    (TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384)
  ECDHE-ECDSA-AES256-GCM-SHA384  (TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384)
  ECDHE-RSA-AES128-GCM-SHA256    (TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256)
  ECDHE-ECDSA-AES128-GCM-SHA256  (TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)
  AES256-SHA                     (TLS_RSA_WITH_AES_256_CBC_SHA)
  AES128-SHA                     (TLS_RSA_WITH_AES_128_CBC_SHA)

The CBC-mode cipher suites are included for backwards compatibility with
older 1.2.x Mumble clients and other implementations that only use
TLSv1.0.
2015-05-22 18:24:26 +02:00
Mikkel Krautz
1dc6ecc519 SSL: implement OpenSSL cipher list format reader.
This commit implements MumbleSSL::ciphersFromOpenSSLCipherString(),
which reads a string in OpenSSL's cipher list format and returns a list
of QSslCiphers for use with QSsl.

This function will be used for implementing user-configurable cipher
suites in Mumble and Murmur.

This commit also changes our precompiled headers slightly by rearranging
the OpenSSL includes. This is done because the ssl.h header on Windows
requires winsock2.h (and perhaps others). By moving the includes, we
ensure that winsock2.h is included.
2015-05-22 18:24:25 +02:00
Benjamin Jemlich
07737a314c Fix include guards and PCH includes 2011-11-09 00:12:10 +01:00
Thorvald Natvig
f3437a6ba7 Update copyright year ranges of dev team. 2011-03-18 05:52:51 +01:00
Thorvald Natvig
16339bfc91 Update license to 2010 2010-01-05 08:49:22 +01:00
Mikkel Krautz
80e82e356d Fix MumbleSSL for no-pch. 2009-09-01 00:59:13 +02:00
Thorvald Natvig
6296282539 Share a bit more of .pro files, and add win32 ca store 2009-08-07 20:16:02 +02:00
Thorvald Natvig
8159eecdcb Add system-installed CAs 2009-08-07 18:55:56 +02:00