From 077f628d8ac9714f0c31a0d05b670bb8bda5ac24 Mon Sep 17 00:00:00 2001
From: Etoh <etoh@syncplay.pl>
Date: Thu, 7 May 2026 22:11:06 +0100
Subject: [PATCH] Support TLS on pyOpenSSL 26.2.0 (#774)

---
 syncplay/protocols.py | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/syncplay/protocols.py b/syncplay/protocols.py
index 6554cb1..3e1d8b0 100755
--- a/syncplay/protocols.py
+++ b/syncplay/protocols.py
@@ -401,9 +401,27 @@ class SyncClientProtocol(JSONCommandProtocol):
             self.sendHello()
             return
 
-        for x in range(0,self._serverCertificateTLS.get_extension_count()):
-            if (self._serverCertificateTLS.get_extension(x).get_short_name() == b'subjectAltName'):
-                self._subjectTLS = self._serverCertificateTLS.get_extension(x).__str__().replace("DNS:", "")
+        self._subjectTLS = ""
+        try:
+            from cryptography import x509
+            cryptographyCertificate = self._serverCertificateTLS.to_cryptography()
+            subjectAltName = cryptographyCertificate.extensions.get_extension_for_class(x509.SubjectAlternativeName).value
+            names = subjectAltName.get_values_for_type(x509.DNSName)
+            names = names + ["IP Address:{}".format(ipAddress) for ipAddress in subjectAltName.get_values_for_type(x509.IPAddress)]
+            self._subjectTLS = ", ".join([str(name) for name in names])
+        except Exception:
+            pass
+
+        if not self._subjectTLS:
+            try:
+                if hasattr(self._serverCertificateTLS, "get_extension_count") and hasattr(self._serverCertificateTLS, "get_extension"):
+                    for x in range(0,self._serverCertificateTLS.get_extension_count()):
+                        extension = self._serverCertificateTLS.get_extension(x)
+                        if extension.get_short_name() == b'subjectAltName':
+                            self._subjectTLS = str(extension).replace("DNS:", "")
+                            break
+            except Exception:
+                pass
 
         if not self._subjectTLS:
             self._subjectTLS = self._client._config.get("host", "") or ""
-- 
2.53.0

