Helpviewer/SslInfoDialog.py

Tue, 14 Dec 2010 11:35:28 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 14 Dec 2010 11:35:28 +0100
changeset 753
e19a516f0a97
parent 664
3061f8bd826e
child 791
9ec2ac20e54e
permissions
-rw-r--r--

Continued implementing the certificate manager.

659
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2010 Detlev Offenbach <detlev@die-offenbachs.de>
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to show SSL certificate infos.
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from PyQt4.QtCore import QCryptographicHash
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt4.QtGui import QDialog
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt4.QtNetwork import QSslCertificate
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from .Ui_SslInfoDialog import Ui_SslInfoDialog
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
753
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 664
diff changeset
16 import Utilities
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 664
diff changeset
17
659
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 class SslInfoDialog(QDialog, Ui_SslInfoDialog):
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 Class implementing a dialog to show SSL certificate infos.
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 def __init__(self, certificate, parent = None):
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Constructor
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @param certificate reference to the SSL certificate (QSslCertificate)
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 @param parent reference to the parent widget (QWidget)
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 QDialog.__init__(self, parent)
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 self.setupUi(self)
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 self.subjectCommonNameLabel.setText(self.__certificateString(
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 certificate.subjectInfo(QSslCertificate.CommonName)))
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 self.subjectOrganizationLabel.setText(self.__certificateString(
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 certificate.subjectInfo(QSslCertificate.Organization)))
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 self.subjectOrganizationalUnitLabel.setText(self.__certificateString(
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 certificate.subjectInfo(QSslCertificate.OrganizationalUnitName)))
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.serialNumberLabel.setText(self.__serialNumber(certificate))
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 self.issuerCommonNameLabel.setText(self.__certificateString(
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 certificate.issuerInfo(QSslCertificate.CommonName)))
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.issuerOrganizationLabel.setText(self.__certificateString(
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 certificate.issuerInfo(QSslCertificate.Organization)))
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.issuerOrganizationalUnitLabel.setText(self.__certificateString(
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 certificate.issuerInfo(QSslCertificate.OrganizationalUnitName)))
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.effectiveLabel.setText(certificate.effectiveDate().toString("yyyy-MM-dd"))
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 self.expiresLabel.setText(certificate.expiryDate().toString("yyyy-MM-dd"))
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.sha1Label.setText(self.__formatHexString(
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 str(certificate.digest(QCryptographicHash.Sha1).toHex(), encoding = "ascii")))
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.md5Label.setText(self.__formatHexString(
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 str(certificate.digest(QCryptographicHash.Md5).toHex(), encoding = "ascii")))
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 def __certificateString(self, txt):
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 Private method to prepare some text for display.
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @param txt text to be displayed (string)
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 @return prepared text (string)
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 if txt is None or txt == "":
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 return self.trUtf8("<not part of the certificate>")
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
753
e19a516f0a97 Continued implementing the certificate manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 664
diff changeset
62 return Utilities.decodeString(txt)
659
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 def __serialNumber(self, cert):
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 Private slot to format the certificate serial number.
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @param cert reference to the SSL certificate (QSslCertificate)
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @return formated serial number (string)
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 serial = cert.serialNumber()
664
3061f8bd826e Fixed a few issues on Windows systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 659
diff changeset
72 if serial == "":
3061f8bd826e Fixed a few issues on Windows systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 659
diff changeset
73 return self.trUtf8("<not part of the certificate>")
3061f8bd826e Fixed a few issues on Windows systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 659
diff changeset
74
659
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 if ':' in serial:
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 return str(serial, encoding = "ascii").upper()
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 else:
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 hexString = hex(int(serial))[2:]
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 return self.__formatHexString(hexString)
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 def __formatHexString(self, hexString):
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 Private method to format a hex string for display.
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @param hexString hex string to be formatted (string)
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 @return formatted string (string)
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 """
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 hexString = hexString.upper()
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 if len(hexString) % 2 == 1:
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 hexString = '0' + hexString
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 hexList = []
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 while hexString:
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 hexList.append(hexString[:2])
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 hexString = hexString[2:]
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
b53e67ae2021 Added code to show certificate info for https URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 return ':'.join(hexList)

eric ide

mercurial