E5Network/E5SslErrorHandler.py

branch
maintenance
changeset 6646
51eefa621de4
parent 6645
ad476851d7e0
equal deleted inserted replaced
6603:77189681b787 6646:51eefa621de4
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()

eric ide

mercurial