Fri, 31 May 2013 16:55:50 +0200
Changed the name of the cache directory of the web browser to reflect the Qt and Webkit version number in order to avoid cahe trouble.
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
2302
f29e9405c851
Updated copyright for 2013.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2080
diff
changeset
|
3 | # Copyright (c) 2010 - 2013 Detlev Offenbach <detlev@die-offenbachs.de> |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a dialog to show and edit all certificates. |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
2078
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
10 | from PyQt4.QtCore import pyqtSlot, Qt, QByteArray, QFile, QFileInfo, QIODevice, \ |
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
11 | qVersion |
882
34b86be88bf0
Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
880
diff
changeset
|
12 | from PyQt4.QtGui import QDialog, QTreeWidgetItem |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | try: |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
14 | from PyQt4.QtNetwork import QSslCertificate, QSslSocket, QSslConfiguration, QSsl |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | except ImportError: |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | pass |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
882
34b86be88bf0
Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
880
diff
changeset
|
18 | from E5Gui import E5MessageBox, E5FileDialog |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
19 | |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | from .Ui_SslCertificatesDialog import Ui_SslCertificatesDialog |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | |
923
e224bdbf88ad
Fixed an issue related to the non-availability of SSL.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
882
diff
changeset
|
22 | try: |
e224bdbf88ad
Fixed an issue related to the non-availability of SSL.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
882
diff
changeset
|
23 | from .SslInfoDialog import SslInfoDialog |
e224bdbf88ad
Fixed an issue related to the non-availability of SSL.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
882
diff
changeset
|
24 | except ImportError: |
e224bdbf88ad
Fixed an issue related to the non-availability of SSL.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
882
diff
changeset
|
25 | pass |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | import Preferences |
753
e19a516f0a97
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
752
diff
changeset
|
28 | import Utilities |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
923
diff
changeset
|
30 | |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | class SslCertificatesDialog(QDialog, Ui_SslCertificatesDialog): |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | """ |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | Class implementing a dialog to show and edit all certificates. |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | """ |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | CertRole = Qt.UserRole + 1 |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
923
diff
changeset
|
37 | def __init__(self, parent=None): |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | """ |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | Constructor |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | @param parent reference to the parent widget (QWidget) |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | """ |
1131
7781e396c903
Changed the code to use super() to access the superclass.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
43 | super().__init__(parent) |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | self.setupUi(self) |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | self.__populateServerCertificatesTree() |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
47 | self.__populateCaCertificatesTree() |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | def __populateServerCertificatesTree(self): |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | """ |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | Private slot to populate the server certificates tree. |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | """ |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | certificateDict = Preferences.toDict( |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | Preferences.Prefs.settings.value("Help/CaCertificatesDict")) |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | for server in certificateDict: |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | for cert in QSslCertificate.fromData(certificateDict[server]): |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
57 | self.__createServerCertificateEntry(server, cert) |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | self.serversCertificatesTree.expandAll() |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | for i in range(self.serversCertificatesTree.columnCount()): |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | self.serversCertificatesTree.resizeColumnToContents(i) |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
63 | def __createServerCertificateEntry(self, server, cert): |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | """ |
752
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
65 | Private method to create a server certificate entry. |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | @param server server name of the certificate (string) |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | @param cert certificate to insert (QSslCertificate) |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | """ |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | # step 1: extract the info to be shown |
2078
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
71 | if qVersion() >= "5.0.0": |
2356
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
72 | organisation = Utilities.decodeString( |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
73 | ", ".join(cert.subjectInfo(QSslCertificate.Organization))) |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
74 | commonName = Utilities.decodeString( |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
75 | ", ".join(cert.subjectInfo(QSslCertificate.CommonName))) |
2078
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
76 | else: |
2356
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
77 | organisation = Utilities.decodeString( |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
78 | cert.subjectInfo(QSslCertificate.Organization)) |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
79 | commonName = Utilities.decodeString( |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
80 | cert.subjectInfo(QSslCertificate.CommonName)) |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | if organisation is None or organisation == "": |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | organisation = self.trUtf8("(Unknown)") |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | if commonName is None or commonName == "": |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | commonName = self.trUtf8("(Unknown common name)") |
2356
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
85 | expiryDate = cert.expiryDate().toString("yyyy-MM-dd") |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | # step 2: create the entry |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
923
diff
changeset
|
88 | items = self.serversCertificatesTree.findItems(organisation, |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
89 | Qt.MatchFixedString | Qt.MatchCaseSensitive) |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | if len(items) == 0: |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
91 | parent = QTreeWidgetItem(self.serversCertificatesTree, [organisation]) |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | else: |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | parent = items[0] |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | itm = QTreeWidgetItem(parent, [commonName, server, expiryDate]) |
2364
e90e9235f7d9
Introduced a workaround for an issue in Qt5/PyQt4 attaching a QSslCertificate to a QTreeWidgetItem.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2356
diff
changeset
|
96 | itm.setData(0, self.CertRole, cert.toPem()) |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem) |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | def on_serversCertificatesTree_currentItemChanged(self, current, previous): |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | """ |
752
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
101 | Private slot handling a change of the current item in the |
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
102 | server certificates list. |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | @param current new current item (QTreeWidgetItem) |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | @param previous previous current item (QTreeWidgetItem) |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | """ |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | enable = current is not None and current.parent() is not None |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | self.serversViewButton.setEnabled(enable) |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | self.serversDeleteButton.setEnabled(enable) |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
110 | self.serversExportButton.setEnabled(enable) |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | @pyqtSlot() |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | def on_serversViewButton_clicked(self): |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | """ |
752
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
115 | Private slot to show data of the selected server certificate. |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | """ |
2364
e90e9235f7d9
Introduced a workaround for an issue in Qt5/PyQt4 attaching a QSslCertificate to a QTreeWidgetItem.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2356
diff
changeset
|
117 | cert = QSslCertificate.fromData( |
e90e9235f7d9
Introduced a workaround for an issue in Qt5/PyQt4 attaching a QSslCertificate to a QTreeWidgetItem.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2356
diff
changeset
|
118 | self.serversCertificatesTree.currentItem().data(0, self.CertRole))[0] |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | dlg = SslInfoDialog(cert, self) |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | dlg.exec_() |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | @pyqtSlot() |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | def on_serversDeleteButton_clicked(self): |
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | """ |
752
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
125 | Private slot to delete the selected server certificate. |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
126 | """ |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
127 | itm = self.serversCertificatesTree.currentItem() |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
128 | res = E5MessageBox.yesNo(self, |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
129 | self.trUtf8("Delete Server Certificate"), |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
130 | self.trUtf8("""<p>Shall the server certificate really be deleted?</p>""" |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
131 | """<p>{0}</p>""" |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
132 | """<p>If the server certificate is deleted, the normal security""" |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
133 | """ checks will be reinstantiated and the server has to""" |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
134 | """ present a valid certificate.</p>""")\ |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
135 | .format(itm.text(0))) |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
136 | if res: |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
137 | server = itm.text(1) |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
138 | cert = self.serversCertificatesTree.currentItem().data(0, self.CertRole) |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
139 | |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
140 | # delete the selected entry and it's parent entry, if it was the only one |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
141 | parent = itm.parent() |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
142 | parent.takeChild(parent.indexOfChild(itm)) |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
143 | if parent.childCount() == 0: |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
144 | self.serversCertificatesTree.takeTopLevelItem( |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
145 | self.serversCertificatesTree.indexOfTopLevelItem(parent)) |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
146 | |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
147 | # delete the certificate from the user certificate store |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
148 | certificateDict = Preferences.toDict( |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
149 | Preferences.Prefs.settings.value("Help/CaCertificatesDict")) |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
150 | if server in certificateDict: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
151 | certs = QSslCertificate.fromData(certificateDict[server]) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
152 | if cert in certs: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
153 | certs.remove(cert) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
154 | if certs: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
155 | pems = QByteArray() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
156 | for cert in certs: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
157 | pems.append(cert.toPem() + '\n') |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
158 | certificateDict[server] = pems |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
159 | else: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
160 | del certificateDict[server] |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
923
diff
changeset
|
161 | Preferences.Prefs.settings.setValue("Help/CaCertificatesDict", |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
162 | certificateDict) |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
163 | |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
164 | # delete the certificate from the default certificates |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
165 | self.__updateDefaultConfiguration() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
166 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
167 | @pyqtSlot() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
168 | def on_serversImportButton_clicked(self): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
169 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
170 | Private slot to import server certificates. |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
171 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
172 | certs = self.__importCertificate() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
173 | if certs: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
174 | server = "*" |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
175 | certificateDict = Preferences.toDict( |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
176 | Preferences.Prefs.settings.value("Help/CaCertificatesDict")) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
177 | if server in certificateDict: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
178 | sCerts = QSslCertificate.fromData(certificateDict[server]) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
179 | else: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
180 | sCerts = [] |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
181 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
182 | pems = QByteArray() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
183 | for cert in certs: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
184 | if cert in sCerts: |
2078
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
185 | if qVersion() >= "5.0.0": |
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
186 | commonStr = ", ".join( |
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
187 | cert.subjectInfo(QSslCertificate.CommonName)) |
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
188 | else: |
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
189 | commonStr = cert.subjectInfo(QSslCertificate.CommonName) |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
190 | E5MessageBox.warning(self, |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
191 | self.trUtf8("Import Certificate"), |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
192 | self.trUtf8("""<p>The certificate <b>{0}</b> already exists.""" |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
193 | """ Skipping.</p>""") |
2078
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
194 | .format(Utilities.decodeString(commonStr))) |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
195 | else: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
196 | pems.append(cert.toPem() + '\n') |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
197 | if server not in certificateDict: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
198 | certificateDict[server] = QByteArray() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
199 | certificateDict[server].append(pems) |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
923
diff
changeset
|
200 | Preferences.Prefs.settings.setValue("Help/CaCertificatesDict", |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
201 | certificateDict) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
202 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
203 | self.serversCertificatesTree.clear() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
204 | self.__populateServerCertificatesTree() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
205 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
206 | self.__updateDefaultConfiguration() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
207 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
208 | @pyqtSlot() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
209 | def on_serversExportButton_clicked(self): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
210 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
211 | Private slot to export the selected server certificate. |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
212 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
213 | cert = self.serversCertificatesTree.currentItem().data(0, self.CertRole) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
214 | fname = self.serversCertificatesTree.currentItem().text(0)\ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
215 | .replace(" ", "").replace("\t", "") |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
216 | self.__exportCertificate(fname, cert) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
217 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
218 | def __updateDefaultConfiguration(self): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
219 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
220 | Private method to update the default SSL configuration. |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
221 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
222 | caList = self.__getSystemCaCertificates() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
223 | certificateDict = Preferences.toDict( |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
224 | Preferences.Prefs.settings.value("Help/CaCertificatesDict")) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
225 | for server in certificateDict: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
226 | for cert in QSslCertificate.fromData(certificateDict[server]): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
227 | if cert not in caList: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
228 | caList.append(cert) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
229 | sslCfg = QSslConfiguration.defaultConfiguration() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
230 | sslCfg.setCaCertificates(caList) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
231 | QSslConfiguration.setDefaultConfiguration(sslCfg) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
232 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
233 | def __getSystemCaCertificates(self): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
234 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
235 | Private method to get the list of system certificates. |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
236 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
237 | @return list of system certificates (list of QSslCertificate) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
238 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
239 | caList = QSslCertificate.fromData(Preferences.toByteArray( |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
240 | Preferences.Prefs.settings.value("Help/SystemCertificates"))) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
241 | if not caList: |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
242 | caList = QSslSocket.systemCaCertificates() |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
243 | return caList |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
244 | |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
245 | def __populateCaCertificatesTree(self): |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
246 | """ |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
247 | Private slot to populate the CA certificates tree. |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
248 | """ |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
249 | for cert in self.__getSystemCaCertificates(): |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
250 | self.__createCaCertificateEntry(cert) |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
251 | |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
252 | self.caCertificatesTree.expandAll() |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
253 | for i in range(self.caCertificatesTree.columnCount()): |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
254 | self.caCertificatesTree.resizeColumnToContents(i) |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
255 | self.caCertificatesTree.sortItems(0, Qt.AscendingOrder) |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
256 | |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
257 | def __createCaCertificateEntry(self, cert): |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
258 | """ |
752
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
259 | Private method to create a CA certificate entry. |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
260 | |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
261 | @param cert certificate to insert (QSslCertificate) |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
262 | """ |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
263 | # step 1: extract the info to be shown |
2078
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
264 | if qVersion() >= "5.0.0": |
2356
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
265 | organisation = Utilities.decodeString( |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
266 | ", ".join(cert.subjectInfo(QSslCertificate.Organization))) |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
267 | commonName = Utilities.decodeString( |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
268 | ", ".join(cert.subjectInfo(QSslCertificate.CommonName))) |
2078
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
269 | else: |
2356
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
270 | organisation = Utilities.decodeString( |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
271 | cert.subjectInfo(QSslCertificate.Organization)) |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
272 | commonName = Utilities.decodeString( |
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
273 | cert.subjectInfo(QSslCertificate.CommonName)) |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
274 | if organisation is None or organisation == "": |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
275 | organisation = self.trUtf8("(Unknown)") |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
276 | if commonName is None or commonName == "": |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
277 | commonName = self.trUtf8("(Unknown common name)") |
2356
ece6580f36cc
Fixed usage of Utilities.html_encode() in various places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
278 | expiryDate = cert.expiryDate().toString("yyyy-MM-dd") |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
279 | |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
280 | # step 2: create the entry |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
923
diff
changeset
|
281 | items = self.caCertificatesTree.findItems(organisation, |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
282 | Qt.MatchFixedString | Qt.MatchCaseSensitive) |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
283 | if len(items) == 0: |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
284 | parent = QTreeWidgetItem(self.caCertificatesTree, [organisation]) |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
285 | else: |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
286 | parent = items[0] |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
287 | |
752
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
288 | itm = QTreeWidgetItem(parent, [commonName, expiryDate]) |
2364
e90e9235f7d9
Introduced a workaround for an issue in Qt5/PyQt4 attaching a QSslCertificate to a QTreeWidgetItem.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2356
diff
changeset
|
289 | itm.setData(0, self.CertRole, cert.toPem()) |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
290 | |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
291 | @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem) |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
292 | def on_caCertificatesTree_currentItemChanged(self, current, previous): |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
293 | """ |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
923
diff
changeset
|
294 | Private slot handling a change of the current item |
752
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
295 | in the CA certificates list. |
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
296 | |
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
297 | @param current new current item (QTreeWidgetItem) |
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
298 | @param previous previous current item (QTreeWidgetItem) |
750
1b6ac093751c
Started implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | """ |
752
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
300 | enable = current is not None and current.parent() is not None |
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
301 | self.caViewButton.setEnabled(enable) |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
302 | self.caDeleteButton.setEnabled(enable) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
303 | self.caExportButton.setEnabled(enable) |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
304 | |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
305 | @pyqtSlot() |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
306 | def on_caViewButton_clicked(self): |
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
307 | """ |
752
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
308 | Private slot to show data of the selected CA certificate. |
751
619341e9dbb8
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
750
diff
changeset
|
309 | """ |
2364
e90e9235f7d9
Introduced a workaround for an issue in Qt5/PyQt4 attaching a QSslCertificate to a QTreeWidgetItem.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2356
diff
changeset
|
310 | cert = QSslCertificate.fromData( |
e90e9235f7d9
Introduced a workaround for an issue in Qt5/PyQt4 attaching a QSslCertificate to a QTreeWidgetItem.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2356
diff
changeset
|
311 | self.caCertificatesTree.currentItem().data(0, self.CertRole))[0] |
752
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
312 | dlg = SslInfoDialog(cert, self) |
2ec6ec7cd381
Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
751
diff
changeset
|
313 | dlg.exec_() |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
314 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
315 | @pyqtSlot() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
316 | def on_caDeleteButton_clicked(self): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
317 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
318 | Private slot to delete the selected CA certificate. |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
319 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
320 | itm = self.caCertificatesTree.currentItem() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
321 | res = E5MessageBox.yesNo(self, |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
322 | self.trUtf8("Delete CA Certificate"), |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
323 | self.trUtf8("""<p>Shall the CA certificate really be deleted?</p>""" |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
324 | """<p>{0}</p>""" |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
325 | """<p>If the CA certificate is deleted, the browser""" |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
326 | """ will not trust any certificate issued by this CA.</p>""")\ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
327 | .format(itm.text(0))) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
328 | if res: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
329 | cert = self.caCertificatesTree.currentItem().data(0, self.CertRole) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
330 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
331 | # delete the selected entry and it's parent entry, if it was the only one |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
332 | parent = itm.parent() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
333 | parent.takeChild(parent.indexOfChild(itm)) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
334 | if parent.childCount() == 0: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
335 | self.caCertificatesTree.takeTopLevelItem( |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
336 | self.caCertificatesTree.indexOfTopLevelItem(parent)) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
337 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
338 | # delete the certificate from the CA certificate store |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
339 | caCerts = self.__getSystemCaCertificates() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
340 | if cert in caCerts: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
341 | caCerts.remove(cert) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
342 | pems = QByteArray() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
343 | for cert in caCerts: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
344 | pems.append(cert.toPem() + '\n') |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
345 | Preferences.Prefs.settings.setValue("Help/SystemCertificates", pems) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
346 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
347 | # delete the certificate from the default certificates |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
348 | self.__updateDefaultConfiguration() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
349 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
350 | @pyqtSlot() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
351 | def on_caImportButton_clicked(self): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
352 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
353 | Private slot to import server certificates. |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
354 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
355 | certs = self.__importCertificate() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
356 | if certs: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
357 | caCerts = self.__getSystemCaCertificates() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
358 | for cert in certs: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
359 | if cert in caCerts: |
2078
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
360 | if qVersion() >= "5.0.0": |
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
361 | commonStr = ", ".join( |
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
362 | cert.subjectInfo(QSslCertificate.CommonName)) |
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
363 | else: |
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
364 | commonStr = cert.subjectInfo(QSslCertificate.CommonName) |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
365 | E5MessageBox.warning(self, |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
366 | self.trUtf8("Import Certificate"), |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
367 | self.trUtf8("""<p>The certificate <b>{0}</b> already exists.""" |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
368 | """ Skipping.</p>""") |
2078
9f4a45741622
Made the second set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
369 | .format(Utilities.decodeString(commonStr))) |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
370 | else: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
371 | caCerts.append(cert) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
372 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
373 | pems = QByteArray() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
374 | for cert in caCerts: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
375 | pems.append(cert.toPem() + '\n') |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
376 | Preferences.Prefs.settings.setValue("Help/SystemCertificates", pems) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
377 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
378 | self.caCertificatesTree.clear() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
379 | self.__populateCaCertificatesTree() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
380 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
381 | self.__updateDefaultConfiguration() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
382 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
383 | @pyqtSlot() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
384 | def on_caExportButton_clicked(self): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
385 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
386 | Private slot to export the selected CA certificate. |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
387 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
388 | cert = self.caCertificatesTree.currentItem().data(0, self.CertRole) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
389 | fname = self.caCertificatesTree.currentItem().text(0)\ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
390 | .replace(" ", "").replace("\t", "") |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
391 | self.__exportCertificate(fname, cert) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
392 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
393 | def __exportCertificate(self, name, cert): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
394 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
395 | Private slot to export a certificate. |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
396 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
397 | @param name default file name without extension (string) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
398 | @param cert certificate to be exported (QSslCertificate) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
399 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
400 | if cert is not None: |
882
34b86be88bf0
Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
880
diff
changeset
|
401 | fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
402 | self, |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
403 | self.trUtf8("Export Certificate"), |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
404 | name, |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
405 | self.trUtf8("Certificate File (PEM) (*.pem);;" |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
406 | "Certificate File (DER) (*.der)"), |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
407 | None, |
882
34b86be88bf0
Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
880
diff
changeset
|
408 | E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
409 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
410 | if fname: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
411 | ext = QFileInfo(fname).suffix() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
412 | if not ext or ext not in ["pem", "der"]: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
413 | ex = selectedFilter.split("(*")[1].split(")")[0] |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
414 | if ex: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
415 | fname += ex |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
416 | if QFileInfo(fname).exists(): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
417 | res = E5MessageBox.yesNo(self, |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
418 | self.trUtf8("Export Certificate"), |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
419 | self.trUtf8("<p>The file <b>{0}</b> already exists." |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
420 | " Overwrite it?</p>").format(fname), |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
923
diff
changeset
|
421 | icon=E5MessageBox.Warning) |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
422 | if not res: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
423 | return |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
424 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
425 | f = QFile(fname) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
426 | if not f.open(QIODevice.WriteOnly): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
427 | E5MessageBox.critical(self, |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
428 | self.trUtf8("Export Certificate"), |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
429 | self.trUtf8("""<p>The certificate could not be written to file""" |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
430 | """ <b>{0}</b></p><p>Error: {1}</p>""") |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
431 | .format(fname, f.errorString())) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
432 | return |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
433 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
434 | if fname.endswith(".pem"): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
435 | crt = cert.toPem() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
436 | else: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
437 | crt = cert.toDer() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
438 | f.write(crt) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
439 | f.close() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
440 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
441 | def __importCertificate(self): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
442 | """ |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
443 | Private method to read a certificate. |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
444 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
445 | @return certificates read (list of QSslCertificate) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
446 | """ |
882
34b86be88bf0
Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
880
diff
changeset
|
447 | fname = E5FileDialog.getOpenFileName( |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
448 | self, |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
449 | self.trUtf8("Import Certificate"), |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
450 | "", |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
451 | self.trUtf8("Certificate Files (*.pem *.crt *.der *.cer *.ca);;" |
882
34b86be88bf0
Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
880
diff
changeset
|
452 | "All Files (*)")) |
762
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
453 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
454 | if fname: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
455 | f = QFile(fname) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
456 | if not f.open(QIODevice.ReadOnly): |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
457 | E5MessageBox.critical(self, |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
458 | self.trUtf8("Export Certificate"), |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
459 | self.trUtf8("""<p>The certificate could not be read from file""" |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
460 | """ <b>{0}</b></p><p>Error: {1}</p>""") |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
461 | .format(fname, f.errorString())) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
462 | return [] |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
463 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
464 | crt = f.readAll() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
465 | f.close() |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
466 | cert = QSslCertificate.fromData(crt, QSsl.Pem) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
467 | if not cert: |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
468 | cert = QSslCertificate.fromData(crt, QSsl.Der) |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
469 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
470 | return cert |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
471 | |
48190a225699
Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
753
diff
changeset
|
472 | return [] |