src/eric7/EricNetwork/EricSslErrorHandler.py

branch
eric7
changeset 10928
46651e194fbe
parent 10820
7aa26e427d13
child 11090
f5f5f5803935
equal deleted inserted replaced
10927:ce599998be7d 10928:46651e194fbe
12 import platform 12 import platform
13 13
14 from PyQt6.QtCore import QByteArray, QObject 14 from PyQt6.QtCore import QByteArray, QObject
15 from PyQt6.QtNetwork import QSsl, QSslCertificate, QSslConfiguration, QSslError 15 from PyQt6.QtNetwork import QSsl, QSslCertificate, QSslConfiguration, QSslError
16 16
17 from eric7 import EricUtilities, Preferences, Utilities 17 from eric7 import EricUtilities
18 from eric7.EricWidgets import EricMessageBox 18 from eric7.EricWidgets import EricMessageBox
19 from eric7.SystemUtilities import OSUtilities 19 from eric7.SystemUtilities import OSUtilities
20 20
21 21
22 class EricSslErrorState(enum.Enum): 22 class EricSslErrorState(enum.Enum):
35 35
36 It also initializes the default SSL configuration with certificates 36 It also initializes the default SSL configuration with certificates
37 permanently accepted by the user already. 37 permanently accepted by the user already.
38 """ 38 """
39 39
40 def __init__(self, parent=None): 40 def __init__(self, settings, parent=None):
41 """ 41 """
42 Constructor 42 Constructor
43 43
44 @param parent reference to the parent object 44 @param settings reference to the settings object
45 @type QObject 45 @type QSettings
46 @param parent reference to the parent object (defaults to None)
47 @type QObject (optional)
46 """ 48 """
47 super().__init__(parent) 49 super().__init__(parent)
50
51 self.__settings = settings
48 52
49 caList = self.__getSystemCaCertificates() 53 caList = self.__getSystemCaCertificates()
50 certificateDict = EricUtilities.toDict( 54 certificateDict = EricUtilities.toDict(
51 Preferences.getSettings().value("Ssl/CaCertificatesDict") 55 self.__settings.value("Ssl/CaCertificatesDict")
52 ) 56 )
53 for server in certificateDict: 57 for server in certificateDict:
54 for cert in QSslCertificate.fromData(certificateDict[server]): 58 for cert in QSslCertificate.fromData(certificateDict[server]):
55 if cert not in caList: 59 if cert not in caList:
56 caList.append(cert) 60 caList.append(cert)
115 change of the default SSL configuration 119 change of the default SSL configuration
116 @rtype tuple of (EricSslErrorState, bool) 120 @rtype tuple of (EricSslErrorState, bool)
117 """ 121 """
118 caMerge = {} 122 caMerge = {}
119 certificateDict = EricUtilities.toDict( 123 certificateDict = EricUtilities.toDict(
120 Preferences.getSettings().value("Ssl/CaCertificatesDict") 124 self.__settings.value("Ssl/CaCertificatesDict")
121 ) 125 )
122 for caServer in certificateDict: 126 for caServer in certificateDict:
123 caMerge[caServer] = QSslCertificate.fromData(certificateDict[caServer]) 127 caMerge[caServer] = QSslCertificate.fromData(certificateDict[caServer])
124 caNew = [] 128 caNew = []
125 129
192 for server in caMerge: 196 for server in caMerge:
193 pems = QByteArray() 197 pems = QByteArray()
194 for cert in caMerge[server]: 198 for cert in caMerge[server]:
195 pems.append(cert.toPem() + b"\n") 199 pems.append(cert.toPem() + b"\n")
196 certificateDict[server] = pems 200 certificateDict[server] = pems
197 Preferences.getSettings().setValue( 201 self.__settings.setValue("Ssl/CaCertificatesDict", certificateDict)
198 "Ssl/CaCertificatesDict", certificateDict
199 )
200 202
201 return EricSslErrorState.USER_IGNORED, caRet 203 return EricSslErrorState.USER_IGNORED, caRet
202 204
203 else: 205 else:
204 return EricSslErrorState.NOT_IGNORED, False 206 return EricSslErrorState.NOT_IGNORED, False
213 @rtype str 215 @rtype str
214 """ 216 """
215 result = "<p>" 217 result = "<p>"
216 218
217 result += self.tr("Name: {0}").format( 219 result += self.tr("Name: {0}").format(
218 Utilities.html_encode( 220 EricUtilities.html_encode(
219 Utilities.decodeString( 221 EricUtilities.decodeString(
220 ", ".join(cert.subjectInfo(QSslCertificate.SubjectInfo.CommonName)) 222 ", ".join(cert.subjectInfo(QSslCertificate.SubjectInfo.CommonName))
221 ) 223 )
222 ) 224 )
223 ) 225 )
224 226
225 result += self.tr("<br/>Organization: {0}").format( 227 result += self.tr("<br/>Organization: {0}").format(
226 Utilities.html_encode( 228 EricUtilities.html_encode(
227 Utilities.decodeString( 229 EricUtilities.decodeString(
228 ", ".join( 230 ", ".join(
229 cert.subjectInfo(QSslCertificate.SubjectInfo.Organization) 231 cert.subjectInfo(QSslCertificate.SubjectInfo.Organization)
230 ) 232 )
231 ) 233 )
232 ) 234 )
233 ) 235 )
234 236
235 result += self.tr("<br/>Issuer: {0}").format( 237 result += self.tr("<br/>Issuer: {0}").format(
236 Utilities.html_encode( 238 EricUtilities.html_encode(
237 Utilities.decodeString( 239 EricUtilities.decodeString(
238 ", ".join(cert.issuerInfo(QSslCertificate.SubjectInfo.CommonName)) 240 ", ".join(cert.issuerInfo(QSslCertificate.SubjectInfo.CommonName))
239 ) 241 )
240 ) 242 )
241 ) 243 )
242 result += self.tr("<br/>Not valid before: {0}<br/>Valid Until: {1}").format( 244 result += self.tr("<br/>Not valid before: {0}<br/>Valid Until: {1}").format(
243 Utilities.html_encode(cert.effectiveDate().toString("yyyy-MM-dd")), 245 EricUtilities.html_encode(cert.effectiveDate().toString("yyyy-MM-dd")),
244 Utilities.html_encode(cert.expiryDate().toString("yyyy-MM-dd")), 246 EricUtilities.html_encode(cert.expiryDate().toString("yyyy-MM-dd")),
245 ) 247 )
246 248
247 result += "</p>" 249 result += "</p>"
248 250
249 return result 251 return result
254 256
255 @return list of system certificates 257 @return list of system certificates
256 @rtype list of QSslCertificate 258 @rtype list of QSslCertificate
257 """ 259 """
258 caList = QSslCertificate.fromData( 260 caList = QSslCertificate.fromData(
259 EricUtilities.toByteArray( 261 EricUtilities.toByteArray(self.__settings.value("Ssl/SystemCertificates"))
260 Preferences.getSettings().value("Ssl/SystemCertificates")
261 )
262 ) 262 )
263 if not caList: 263 if not caList:
264 caList = QSslConfiguration.systemCaCertificates() 264 caList = QSslConfiguration.systemCaCertificates()
265 return caList 265 return caList

eric ide

mercurial