コード例 #1
0
    def __init__(self, url, configuration, parent=None):
        """
        Constructor
        
        @param url URL to show SSL info for (QUrl)
        @param configuration SSL configuration (QSslConfiguration)
        @param parent reference to the parent widget (QWidget)
        """
        super(E5SslInfoWidget, self).__init__(parent)

        self.__url = QUrl(url)
        self.__configuration = QSslConfiguration(configuration)

        self.setMinimumWidth(400)

        certList = self.__configuration.peerCertificateChain()
        if certList:
            cert = certList[0]
        else:
            cert = QSslCertificate()

        layout = QGridLayout(self)
        rows = 0

        ##########################################
        ## Identity Information
        ##########################################
        imageLabel = QLabel(self)
        layout.addWidget(imageLabel, rows, 0, Qt.AlignCenter)

        label = QLabel(self)
        label.setWordWrap(True)
        label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        label.setText(self.tr("Identity"))
        font = label.font()
        font.setBold(True)
        label.setFont(font)
        layout.addWidget(label, rows, 1)
        rows += 1

        label = QLabel(self)
        label.setWordWrap(True)
        if cert.isNull():
            label.setText(
                self.tr("Warning: this site is NOT carrying a certificate."))
            imageLabel.setPixmap(UI.PixmapCache.getPixmap("securityLow32.png"))
        else:
            if qVersion() >= "5.0.0":
                valid = not cert.isBlacklisted()
            else:
                valid = cert.isValid()
            if valid:
                if qVersion() >= "5.0.0":
                    txt = ", ".join(cert.issuerInfo(
                        QSslCertificate.CommonName))
                else:
                    txt = cert.issuerInfo(QSslCertificate.CommonName)
                label.setText(
                    self.tr("The certificate for this site is valid"
                            " and has been verified by:\n{0}").format(
                                Utilities.decodeString(txt)))
                imageLabel.setPixmap(
                    UI.PixmapCache.getPixmap("securityHigh32.png"))
            else:
                label.setText(
                    self.tr("The certificate for this site is NOT valid."))
                imageLabel.setPixmap(
                    UI.PixmapCache.getPixmap("securityLow32.png"))
            layout.addWidget(label, rows, 1)
            rows += 1

            label = QLabel(self)
            label.setWordWrap(True)
            label.setText('<a href="moresslinfos">' +
                          self.tr("Certificate Information") + "</a>")
            label.linkActivated.connect(self.__showCertificateInfos)
            layout.addWidget(label, rows, 1)
            rows += 1

        ##########################################
        ## Identity Information
        ##########################################
        imageLabel = QLabel(self)
        layout.addWidget(imageLabel, rows, 0, Qt.AlignCenter)

        label = QLabel(self)
        label.setWordWrap(True)
        label.setText(self.tr("Encryption"))
        font = label.font()
        font.setBold(True)
        label.setFont(font)
        layout.addWidget(label, rows, 1)
        rows += 1

        cipher = self.__configuration.sessionCipher()
        if cipher.isNull():
            label = QLabel(self)
            label.setWordWrap(True)
            label.setText(
                self.tr('Your connection to "{0}" is NOT encrypted.\n').format(
                    self.__url.host()))
            layout.addWidget(label, rows, 1)
            imageLabel.setPixmap(UI.PixmapCache.getPixmap("securityLow32.png"))
            rows += 1
        else:
            label = QLabel(self)
            label.setWordWrap(True)
            label.setText(
                self.tr('Your connection to "{0}" is encrypted.').format(
                    self.__url.host()))
            layout.addWidget(label, rows, 1)

            proto = cipher.protocol()
            if proto == QSsl.SslV3:
                sslVersion = "SSL 3.0"
                imageLabel.setPixmap(
                    UI.PixmapCache.getPixmap("securityHigh32.png"))
            elif proto == QSsl.TlsV1SslV3:
                sslVersion = "TLS 1.0/SSL 3.0"
                imageLabel.setPixmap(
                    UI.PixmapCache.getPixmap("securityHigh32.png"))
            elif proto == QSsl.SslV2:
                sslVersion = "SSL 2.0"
                imageLabel.setPixmap(
                    UI.PixmapCache.getPixmap("securityLow32.png"))
            else:
                sslVersion = self.tr("unknown")
                imageLabel.setPixmap(
                    UI.PixmapCache.getPixmap("securityLow32.png"))
            if qVersion() >= "5.0.0":
                if proto == QSsl.TlsV1_0:
                    sslVersion = "TLS 1.0"
                    imageLabel.setPixmap(
                        UI.PixmapCache.getPixmap("securityHigh32.png"))
                elif proto == QSsl.TlsV1_1:
                    sslVersion = "TLS 1.1"
                    imageLabel.setPixmap(
                        UI.PixmapCache.getPixmap("securityHigh32.png"))
                elif proto == QSsl.TlsV1_2:
                    sslVersion = "TLS 1.2"
                    imageLabel.setPixmap(
                        UI.PixmapCache.getPixmap("securityHigh32.png"))
            else:
                if proto == QSsl.TlsV1:
                    sslVersion = "TLS 1.0"
                    imageLabel.setPixmap(
                        UI.PixmapCache.getPixmap("securityHigh32.png"))
            rows += 1

            label = QLabel(self)
            label.setWordWrap(True)
            label.setText(self.tr("It uses protocol: {0}").format(sslVersion))
            layout.addWidget(label, rows, 1)
            rows += 1

            label = QLabel(self)
            label.setWordWrap(True)
            label.setText(
                self.tr("It is encrypted using {0} at {1} bits, "
                        "with {2} for message authentication and "
                        "{3} as key exchange mechanism.\n\n").format(
                            cipher.encryptionMethod(), cipher.usedBits(),
                            cipher.authenticationMethod(),
                            cipher.keyExchangeMethod()))
            layout.addWidget(label, rows, 1)
            rows += 1
コード例 #2
0
ファイル: E5SslInfoWidget.py プロジェクト: pycom/EricShort
 def __init__(self, url, configuration, parent=None):
     """
     Constructor
     
     @param url URL to show SSL info for (QUrl)
     @param configuration SSL configuration (QSslConfiguration)
     @param parent reference to the parent widget (QWidget)
     """
     super(E5SslInfoWidget, self).__init__(parent)
     
     self.__url = QUrl(url)
     self.__configuration = QSslConfiguration(configuration)
     
     self.setMinimumWidth(400)
     
     certList = self.__configuration.peerCertificateChain()
     if certList:
         cert = certList[0]
     else:
         cert = QSslCertificate()
     
     layout = QGridLayout(self)
     rows = 0
     
     ##########################################
     ## Identity Information
     ##########################################
     imageLabel = QLabel(self)
     layout.addWidget(imageLabel, rows, 0, Qt.AlignCenter)
     
     label = QLabel(self)
     label.setWordWrap(True)
     label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
     label.setText(self.tr("Identity"))
     font = label.font()
     font.setBold(True)
     label.setFont(font)
     layout.addWidget(label, rows, 1)
     rows += 1
     
     label = QLabel(self)
     label.setWordWrap(True)
     if cert.isNull():
         label.setText(self.tr(
             "Warning: this site is NOT carrying a certificate."))
         imageLabel.setPixmap(UI.PixmapCache.getPixmap("securityLow32.png"))
     else:
         if qVersion() >= "5.0.0":
             valid = not cert.isBlacklisted()
         else:
             valid = cert.isValid()
         if valid:
             if qVersion() >= "5.0.0":
                 txt = ", ".join(
                     cert.issuerInfo(QSslCertificate.CommonName))
             else:
                 txt = cert.issuerInfo(QSslCertificate.CommonName)
             label.setText(self.tr(
                 "The certificate for this site is valid"
                 " and has been verified by:\n{0}").format(
                 Utilities.decodeString(txt)))
             imageLabel.setPixmap(
                 UI.PixmapCache.getPixmap("securityHigh32.png"))
         else:
             label.setText(self.tr(
                 "The certificate for this site is NOT valid."))
             imageLabel.setPixmap(
                 UI.PixmapCache.getPixmap("securityLow32.png"))
         layout.addWidget(label, rows, 1)
         rows += 1
         
         label = QLabel(self)
         label.setWordWrap(True)
         label.setText(
             '<a href="moresslinfos">' +
             self.tr("Certificate Information") + "</a>")
         label.linkActivated.connect(self.__showCertificateInfos)
         layout.addWidget(label, rows, 1)
         rows += 1
     
     ##########################################
     ## Identity Information
     ##########################################
     imageLabel = QLabel(self)
     layout.addWidget(imageLabel, rows, 0, Qt.AlignCenter)
     
     label = QLabel(self)
     label.setWordWrap(True)
     label.setText(self.tr("Encryption"))
     font = label.font()
     font.setBold(True)
     label.setFont(font)
     layout.addWidget(label, rows, 1)
     rows += 1
     
     cipher = self.__configuration.sessionCipher()
     if cipher.isNull():
         label = QLabel(self)
         label.setWordWrap(True)
         label.setText(self.tr(
             'Your connection to "{0}" is NOT encrypted.\n').format(
             self.__url.host()))
         layout.addWidget(label, rows, 1)
         imageLabel.setPixmap(UI.PixmapCache.getPixmap("securityLow32.png"))
         rows += 1
     else:
         label = QLabel(self)
         label.setWordWrap(True)
         label.setText(self.tr(
             'Your connection to "{0}" is encrypted.').format(
             self.__url.host()))
         layout.addWidget(label, rows, 1)
         
         proto = cipher.protocol()
         if proto == QSsl.SslV3:
             sslVersion = "SSL 3.0"
             imageLabel.setPixmap(
                 UI.PixmapCache.getPixmap("securityLow32.png"))
         elif proto == QSsl.TlsV1SslV3:
             sslVersion = "TLS 1.0/SSL 3.0"
             imageLabel.setPixmap(
                 UI.PixmapCache.getPixmap("securityLow32.png"))
         elif proto == QSsl.SslV2:
             sslVersion = "SSL 2.0"
             imageLabel.setPixmap(
                 UI.PixmapCache.getPixmap("securityLow32.png"))
         else:
             sslVersion = self.tr("unknown")
             imageLabel.setPixmap(
                 UI.PixmapCache.getPixmap("securityLow32.png"))
         if qVersion() >= "5.0.0":
             if proto == QSsl.TlsV1_0:
                 sslVersion = "TLS 1.0"
                 imageLabel.setPixmap(
                     UI.PixmapCache.getPixmap("securityHigh32.png"))
             elif proto == QSsl.TlsV1_1:
                 sslVersion = "TLS 1.1"
                 imageLabel.setPixmap(
                     UI.PixmapCache.getPixmap("securityHigh32.png"))
             elif proto == QSsl.TlsV1_2:
                 sslVersion = "TLS 1.2"
                 imageLabel.setPixmap(
                     UI.PixmapCache.getPixmap("securityHigh32.png"))
         else:
             if proto == QSsl.TlsV1:
                 sslVersion = "TLS 1.0"
                 imageLabel.setPixmap(
                     UI.PixmapCache.getPixmap("securityHigh32.png"))
         rows += 1
         
         label = QLabel(self)
         label.setWordWrap(True)
         label.setText(self.tr(
             "It uses protocol: {0}").format(sslVersion))
         layout.addWidget(label, rows, 1)
         rows += 1
         
         label = QLabel(self)
         label.setWordWrap(True)
         label.setText(self.tr(
             "It is encrypted using {0} at {1} bits, "
             "with {2} for message authentication and "
             "{3} as key exchange mechanism.\n\n").format(
             cipher.encryptionMethod(),
             cipher.usedBits(),
             cipher.authenticationMethod(),
             cipher.keyExchangeMethod()))
         layout.addWidget(label, rows, 1)
         rows += 1