src/eric7/EricNetwork/EricSslCertificatesInfoWidget.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
--- a/src/eric7/EricNetwork/EricSslCertificatesInfoWidget.py	Wed Jul 13 11:16:20 2022 +0200
+++ b/src/eric7/EricNetwork/EricSslCertificatesInfoWidget.py	Wed Jul 13 14:55:47 2022 +0200
@@ -9,6 +9,7 @@
 
 from PyQt6.QtCore import pyqtSlot, QCryptographicHash, QDateTime
 from PyQt6.QtWidgets import QWidget
+
 try:
     from PyQt6.QtNetwork import QSslCertificate
 except ImportError:
@@ -23,21 +24,22 @@
     """
     Class implementing a widget to show SSL certificate infos.
     """
+
     def __init__(self, parent=None):
         """
         Constructor
-        
+
         @param parent reference to the parent widget (QWidget)
         """
         super().__init__(parent)
         self.setupUi(self)
-        
+
         self.__chain = []
-    
+
     def showCertificateChain(self, certificateChain):
         """
         Public method to show the SSL certificates of a certificate chain.
-        
+
         @param certificateChain list od SSL certificates
             (list of QSslCertificate)
         """
@@ -45,158 +47,198 @@
             self.chainLabel.show()
             self.chainComboBox.show()
             self.chainComboBox.clear()
-            
+
             self.__chain = certificateChain[:]
-            
+
             for cert in self.__chain:
-                name = ", ".join(cert.subjectInfo(
-                    QSslCertificate.SubjectInfo.CommonName))
+                name = ", ".join(
+                    cert.subjectInfo(QSslCertificate.SubjectInfo.CommonName)
+                )
                 if not name:
                     name = ", ".join(
-                        cert.subjectInfo(
-                            QSslCertificate.SubjectInfo.Organization))
+                        cert.subjectInfo(QSslCertificate.SubjectInfo.Organization)
+                    )
                 if not name:
                     name = cert.serialNumber()
                 self.chainComboBox.addItem(name)
-            
+
             self.on_chainComboBox_activated(0)
-    
+
     def showCertificate(self, certificate):
         """
         Public method to show the SSL certificate information.
-        
+
         @param certificate reference to the SSL certificate (QSslCertificate)
         """
         self.chainLabel.hide()
         self.chainComboBox.hide()
         self.chainComboBox.clear()
-        
+
         self.__chain = []
-        
+
         if QSslCertificate:
             self.__showCertificate(certificate)
-    
+
     def __showCertificate(self, certificate):
         """
         Private method to show the  SSL certificate information.
-        
+
         @param certificate reference to the SSL certificate (QSslCertificate)
         """
         if QSslCertificate:
             self.blacklistedLabel.setVisible(False)
             self.blacklistedLabel.setStyleSheet(
-                "QLabel { color : white; background-color : red; }")
+                "QLabel { color : white; background-color : red; }"
+            )
             self.expiredLabel.setVisible(False)
             self.expiredLabel.setStyleSheet(
-                "QLabel { color : white; background-color : red; }")
-            
-            self.subjectCommonNameLabel.setText(self.__certificateString(
-                ", ".join(certificate.subjectInfo(
-                    QSslCertificate.SubjectInfo.CommonName))))
-            self.subjectOrganizationLabel.setText(self.__certificateString(
-                ", ".join(certificate.subjectInfo(
-                    QSslCertificate.SubjectInfo.Organization))))
+                "QLabel { color : white; background-color : red; }"
+            )
+
+            self.subjectCommonNameLabel.setText(
+                self.__certificateString(
+                    ", ".join(
+                        certificate.subjectInfo(QSslCertificate.SubjectInfo.CommonName)
+                    )
+                )
+            )
+            self.subjectOrganizationLabel.setText(
+                self.__certificateString(
+                    ", ".join(
+                        certificate.subjectInfo(
+                            QSslCertificate.SubjectInfo.Organization
+                        )
+                    )
+                )
+            )
             self.subjectOrganizationalUnitLabel.setText(
-                self.__certificateString(", ".join(
-                    certificate.subjectInfo(
-                        QSslCertificate.SubjectInfo.OrganizationalUnitName))))
-            self.issuerCommonNameLabel.setText(self.__certificateString(
-                ", ".join(certificate.issuerInfo(
-                    QSslCertificate.SubjectInfo.CommonName))))
-            self.issuerOrganizationLabel.setText(self.__certificateString(
-                ", ".join(certificate.issuerInfo(
-                    QSslCertificate.SubjectInfo.Organization))))
+                self.__certificateString(
+                    ", ".join(
+                        certificate.subjectInfo(
+                            QSslCertificate.SubjectInfo.OrganizationalUnitName
+                        )
+                    )
+                )
+            )
+            self.issuerCommonNameLabel.setText(
+                self.__certificateString(
+                    ", ".join(
+                        certificate.issuerInfo(QSslCertificate.SubjectInfo.CommonName)
+                    )
+                )
+            )
+            self.issuerOrganizationLabel.setText(
+                self.__certificateString(
+                    ", ".join(
+                        certificate.issuerInfo(QSslCertificate.SubjectInfo.Organization)
+                    )
+                )
+            )
             self.issuerOrganizationalUnitLabel.setText(
-                self.__certificateString(", ".join(
-                    certificate.issuerInfo(
-                        QSslCertificate.SubjectInfo.OrganizationalUnitName))))
+                self.__certificateString(
+                    ", ".join(
+                        certificate.issuerInfo(
+                            QSslCertificate.SubjectInfo.OrganizationalUnitName
+                        )
+                    )
+                )
+            )
             self.serialNumberLabel.setText(self.__serialNumber(certificate))
             self.effectiveLabel.setText(
-                certificate.effectiveDate().toString("yyyy-MM-dd"))
-            self.expiresLabel.setText(
-                certificate.expiryDate().toString("yyyy-MM-dd"))
-            self.sha1Label.setText(self.__formatHexString(
-                str(certificate.digest(
-                    QCryptographicHash.Algorithm.Sha1).toHex(),
-                    encoding="ascii")))
-            self.md5Label.setText(self.__formatHexString(
-                str(certificate.digest(
-                    QCryptographicHash.Algorithm.Md5).toHex(),
-                    encoding="ascii")))
-            
+                certificate.effectiveDate().toString("yyyy-MM-dd")
+            )
+            self.expiresLabel.setText(certificate.expiryDate().toString("yyyy-MM-dd"))
+            self.sha1Label.setText(
+                self.__formatHexString(
+                    str(
+                        certificate.digest(QCryptographicHash.Algorithm.Sha1).toHex(),
+                        encoding="ascii",
+                    )
+                )
+            )
+            self.md5Label.setText(
+                self.__formatHexString(
+                    str(
+                        certificate.digest(QCryptographicHash.Algorithm.Md5).toHex(),
+                        encoding="ascii",
+                    )
+                )
+            )
+
             if certificate.isBlacklisted():
                 # something is wrong; indicate it to the user
-                if self.__hasExpired(certificate.effectiveDate(),
-                                     certificate.expiryDate()):
+                if self.__hasExpired(
+                    certificate.effectiveDate(), certificate.expiryDate()
+                ):
                     self.expiredLabel.setVisible(True)
                 else:
                     self.blacklistedLabel.setVisible(True)
-    
+
     def __certificateString(self, txt):
         """
         Private method to prepare some text for display.
-        
+
         @param txt text to be displayed (string)
         @return prepared text (string)
         """
         if txt is None or txt == "":
             return self.tr("<not part of the certificate>")
-        
+
         return Utilities.decodeString(txt)
-    
+
     def __serialNumber(self, cert):
         """
         Private slot to format the certificate serial number.
-        
+
         @param cert reference to the SSL certificate (QSslCertificate)
         @return formated serial number (string)
         """
         serial = cert.serialNumber()
         if serial == "":
             return self.tr("<not part of the certificate>")
-        
-        if b':' in serial:
+
+        if b":" in serial:
             return str(serial, encoding="ascii").upper()
         else:
             hexString = hex(int(serial))[2:]
             return self.__formatHexString(hexString)
-    
+
     def __formatHexString(self, hexString):
         """
         Private method to format a hex string for display.
-        
+
         @param hexString hex string to be formatted (string)
         @return formatted string (string)
         """
         hexString = hexString.upper()
-        
+
         if len(hexString) % 2 == 1:
-            hexString = '0' + hexString
-        
+            hexString = "0" + hexString
+
         hexList = []
         while hexString:
             hexList.append(hexString[:2])
             hexString = hexString[2:]
-        
-        return ':'.join(hexList)
-    
+
+        return ":".join(hexList)
+
     def __hasExpired(self, effectiveDate, expiryDate):
         """
         Private method to check for a certificate expiration.
-        
+
         @param effectiveDate date the certificate becomes effective (QDateTime)
         @param expiryDate date the certificate expires (QDateTime)
         @return flag indicating the expiration status (boolean)
         """
         now = QDateTime.currentDateTime()
-        
+
         return now < effectiveDate or now >= expiryDate
-    
+
     @pyqtSlot(int)
     def on_chainComboBox_activated(self, index):
         """
         Private slot to show the certificate info for the selected entry.
-        
+
         @param index number of the certificate in the certificate chain
             (integer)
         """

eric ide

mercurial