1 # -*- coding: utf-8 -*- |
1 # -*- coding: utf-8 -*- |
2 |
2 |
3 # Copyright (c) 2013 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> |
3 # Copyright (c) 2013 - 2019 Detlev Offenbach <detlev@die-offenbachs.de> |
4 # |
4 # |
5 |
5 |
6 """ |
6 """ |
7 Module implementing a SSL error handler. |
7 Module implementing a SSL error handler. |
8 """ |
8 """ |
9 |
9 |
10 from __future__ import unicode_literals |
10 from __future__ import unicode_literals |
|
11 |
|
12 import platform |
11 |
13 |
12 from PyQt5.QtCore import QObject, QByteArray |
14 from PyQt5.QtCore import QObject, QByteArray |
13 from PyQt5.QtNetwork import QSslCertificate, QSslConfiguration, QSslSocket, \ |
15 from PyQt5.QtNetwork import QSslCertificate, QSslConfiguration, QSslSocket, \ |
14 QSslError, QSsl |
16 QSslError, QSsl |
15 |
17 |
55 for cert in QSslCertificate.fromData(certificateDict[server]): |
57 for cert in QSslCertificate.fromData(certificateDict[server]): |
56 if cert not in caList: |
58 if cert not in caList: |
57 caList.append(cert) |
59 caList.append(cert) |
58 sslCfg = QSslConfiguration.defaultConfiguration() |
60 sslCfg = QSslConfiguration.defaultConfiguration() |
59 sslCfg.setCaCertificates(caList) |
61 sslCfg.setCaCertificates(caList) |
60 sslCfg.setProtocol(QSsl.AnyProtocol) |
62 try: |
|
63 sslProtocol = QSsl.TlsV1_1OrLater |
|
64 if Globals.isWindowsPlatform() and platform.win32_ver()[0] == '7': |
|
65 sslProtocol = QSsl.SecureProtocols |
|
66 except AttributeError: |
|
67 sslProtocol = QSsl.SecureProtocols |
|
68 sslCfg.setProtocol(sslProtocol) |
61 try: |
69 try: |
62 sslCfg.setSslOption(QSsl.SslOptionDisableCompression, True) |
70 sslCfg.setSslOption(QSsl.SslOptionDisableCompression, True) |
63 except AttributeError: |
71 except AttributeError: |
64 pass |
72 pass |
65 QSslConfiguration.setDefaultConfiguration(sslCfg) |
73 QSslConfiguration.setDefaultConfiguration(sslCfg) |
164 sslCfg = QSslConfiguration.defaultConfiguration() |
172 sslCfg = QSslConfiguration.defaultConfiguration() |
165 caList = sslCfg.caCertificates() |
173 caList = sslCfg.caCertificates() |
166 for cert in caNew: |
174 for cert in caNew: |
167 caList.append(cert) |
175 caList.append(cert) |
168 sslCfg.setCaCertificates(caList) |
176 sslCfg.setCaCertificates(caList) |
169 sslCfg.setProtocol(QSsl.AnyProtocol) |
177 try: |
|
178 sslCfg.setProtocol(QSsl.TlsV1_1OrLater) |
|
179 except AttributeError: |
|
180 sslCfg.setProtocol(QSsl.SecureProtocols) |
|
181 try: |
|
182 sslCfg.setSslOption(QSsl.SslOptionDisableCompression, |
|
183 True) |
|
184 except AttributeError: |
|
185 pass |
170 QSslConfiguration.setDefaultConfiguration(sslCfg) |
186 QSslConfiguration.setDefaultConfiguration(sslCfg) |
171 |
187 |
172 certificateDict = {} |
188 certificateDict = {} |
173 for server in caMerge: |
189 for server in caMerge: |
174 pems = QByteArray() |
190 pems = QByteArray() |