Philipp Hörist pushed to branch master at gajim / gajim


Commits:
d0fb8c5b by mjk at 2022-11-30T21:58:07+00:00
fix: Preview: Handle multiple simultaneous certificate verification errors

- - - - -


3 changed files:

- gajim/common/helpers.py
- gajim/common/modules/httpupload.py
- gajim/common/preview.py


Changes:

=====================================
gajim/common/helpers.py
=====================================
@@ -1277,11 +1277,9 @@ def is_retraction_allowed(self_contact: 
types.GroupchatParticipant,
     return self_contact.affiliation >= contact.affiliation
 
 
-def get_tls_error_phrase(tls_error: Gio.TlsCertificateFlags) -> str:
-    phrase = GIO_TLS_ERRORS.get(tls_error)
-    if phrase is None:
-        return GIO_TLS_ERRORS[Gio.TlsCertificateFlags.GENERIC_ERROR]
-    return phrase
+def get_tls_error_phrases(tls_errors: set[Gio.TlsCertificateFlags]
+                          ) -> list[str]:
+    return [GIO_TLS_ERRORS[err] for err in tls_errors]
 
 
 class Observable:


=====================================
gajim/common/modules/httpupload.py
=====================================
@@ -46,7 +46,7 @@
 from gajim.common.events import HTTPUploadError
 from gajim.common.events import HTTPUploadStarted
 from gajim.common.i18n import _
-from gajim.common.helpers import get_tls_error_phrase
+from gajim.common.helpers import get_tls_error_phrases
 from gajim.common.helpers import get_account_proxy
 from gajim.common.const import FTState
 from gajim.common.filetransfer import FileTransfer
@@ -318,16 +318,14 @@ def _check_certificate(self,
             self._session.cancel_message(message, Soup.Status.CANCELLED)
             return
 
-        tls_errors = convert_tls_error_flags(tls_errors)
-        if app.cert_store.verify(tls_certificate, tls_errors):
+        tls_error_set = convert_tls_error_flags(tls_errors)
+        if app.cert_store.verify(tls_certificate, tls_error_set):
             return
 
-        phrase = ''
-        for error in tls_errors:
-            phrase = get_tls_error_phrase(error)
-            self._log.warning('TLS verification failed: %s', phrase)
-
-        transfer.set_error('tls-verification-failed', phrase)
+        phrases = get_tls_error_phrases(tls_error_set)
+        self._log.warning(
+            'TLS verification failed: %s (0x%02x)', phrases, tls_errors)
+        transfer.set_error('tls-verification-failed', phrases[0])
         self._session.cancel_message(message, Soup.Status.CANCELLED)
 
     def _on_finish(self,


=====================================
gajim/common/preview.py
=====================================
@@ -25,6 +25,7 @@
 from gi.repository import Gio
 from gi.repository import GLib
 from gi.repository import Soup
+from nbxmpp.util import convert_tls_error_flags
 
 from gajim.common import app
 from gajim.common import configpaths
@@ -32,7 +33,7 @@
 from gajim.common.helpers import AdditionalDataDict
 from gajim.common.helpers import load_file_async
 from gajim.common.helpers import write_file_async
-from gajim.common.helpers import get_tls_error_phrase
+from gajim.common.helpers import get_tls_error_phrases
 from gajim.common.helpers import get_account_proxy
 from gajim.common.i18n import _
 from gajim.common.preview_helpers import aes_decrypt
@@ -442,11 +443,12 @@ def _check_certificate(self,
             return
 
         if tls_errors:
-            phrase = get_tls_error_phrase(tls_errors)
-            log.warning('TLS verification failed: %s', phrase)
+            phrases = 
get_tls_error_phrases(convert_tls_error_flags(tls_errors))
+            log.warning(
+                'TLS verification failed: %s (0x%02x)', phrases, tls_errors)
             session = self._get_session(preview.account)
             session.cancel_message(message, Soup.Status.CANCELLED)
-            preview.info_message = _('TLS verification failed: %s') % phrase
+            preview.info_message = _('TLS verification failed: %s') % 
phrases[0]
             preview.update_widget()
 
     def _on_content_sniffed(self,



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/d0fb8c5b47620d3d2831ecb529ef4225858c7e27

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/d0fb8c5b47620d3d2831ecb529ef4225858c7e27
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to