Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pyOpenSSL for 
openSUSE:Factory checked in at 2026-04-28 11:53:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyOpenSSL (Old)
 and      /work/SRC/openSUSE:Factory/.python-pyOpenSSL.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pyOpenSSL"

Tue Apr 28 11:53:45 2026 rev:64 rq:1349507 version:26.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pyOpenSSL/python-pyOpenSSL.changes        
2026-03-19 17:26:47.067528325 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-pyOpenSSL.new.11940/python-pyOpenSSL.changes 
    2026-04-28 11:54:11.104056221 +0200
@@ -1,0 +2,11 @@
+Sun Apr 26 10:26:13 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 26.1.0 (CVE-2026-40475, bsc#1262803):
+  * Maximum supported cryptography version is now 47.x.
+  * Fixed X509Name field setters to correctly pass the value
+    length to OpenSSL. Previously, values containing NUL bytes
+    would be silently truncated, causing a divergence between the
+    stored ASN.1 value and the value visible from Python. Credit
+    to BudongJW for reporting the issue. CVE-2026-40475
+
+-------------------------------------------------------------------

Old:
----
  pyopenssl-26.0.0.tar.gz

New:
----
  pyopenssl-26.1.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pyOpenSSL.spec ++++++
--- /var/tmp/diff_new_pack.JlKiSe/_old  2026-04-28 11:54:11.932090412 +0200
+++ /var/tmp/diff_new_pack.JlKiSe/_new  2026-04-28 11:54:11.936090577 +0200
@@ -26,7 +26,7 @@
 %endif
 %{?sle15_python_module_pythons}
 Name:           python-pyOpenSSL%{psuffix}
-Version:        26.0.0
+Version:        26.1.0
 Release:        0
 Summary:        Python wrapper module around the OpenSSL library
 License:        Apache-2.0
@@ -35,14 +35,14 @@
 # PATCH-FIX-UPSTREAM skip-networked-test.patch gh#pyca/pyopenssl#68 
[email protected]
 # Mark tests requiring network access
 Patch0:         skip-networked-test.patch
-BuildRequires:  %{python_module base >= 3.7}
+BuildRequires:  %{python_module base >= 3.8}
 BuildRequires:  %{python_module cffi}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-cffi
-Requires:       (python-cryptography >= 45.0.7 with python-cryptography < 47)
+Requires:       (python-cryptography >= 46.0.0 with python-cryptography < 48)
 %if %{python_version_nodots} < 313
 Requires:       python-typing-extensions >= 4.9
 %endif
@@ -51,7 +51,7 @@
 %if %{without test}
 BuildArch:      noarch
 %else
-BuildRequires:  %{python_module cryptography >= 45.0.7 with 
%python-cryptography < 47}
+BuildRequires:  %{python_module cryptography >= 46.0.0 with 
%python-cryptography < 48}
 BuildRequires:  %{python_module pretend}
 BuildRequires:  %{python_module pyOpenSSL >= %version}
 BuildRequires:  %{python_module pytest >= 3.0.1}
@@ -97,7 +97,7 @@
 %if !%{with test}
 %files %{python_files}
 %license LICENSE
-%doc *.rst
+%doc CHANGELOG.rst README.rst
 %{python_sitelib}/OpenSSL/
 %{python_sitelib}/py[Oo]pen[Ss][Ss][Ll]-%{version}.dist-info
 %endif

++++++ pyopenssl-26.0.0.tar.gz -> pyopenssl-26.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyopenssl-26.0.0/CHANGELOG.rst 
new/pyopenssl-26.1.0/CHANGELOG.rst
--- old/pyopenssl-26.0.0/CHANGELOG.rst  2026-03-15 15:28:02.000000000 +0100
+++ new/pyopenssl-26.1.0/CHANGELOG.rst  2026-04-24 22:23:14.000000000 +0200
@@ -4,6 +4,21 @@
 Versions are year-based with a strict backward-compatibility policy.
 The third digit is only for regressions.
 
+26.1.0 (2026-04-24)
+-------------------
+
+Backward-incompatible changes:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Deprecations:
+^^^^^^^^^^^^^
+
+Changes:
+^^^^^^^^
+
+- Maximum supported ``cryptography`` version is now 47.x.
+- Fixed ``X509Name`` field setters to correctly pass the value length to 
OpenSSL. Previously, values containing NUL bytes would be silently truncated, 
causing a divergence between the stored ASN.1 value and the value visible from 
Python. Credit to **BudongJW** for reporting the issue. **CVE-2026-40475**
+
 26.0.0 (2026-03-15)
 -------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyopenssl-26.0.0/PKG-INFO 
new/pyopenssl-26.1.0/PKG-INFO
--- old/pyopenssl-26.0.0/PKG-INFO       2026-03-15 15:28:07.175517300 +0100
+++ new/pyopenssl-26.1.0/PKG-INFO       2026-04-24 22:23:19.443975000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: pyOpenSSL
-Version: 26.0.0
+Version: 26.1.0
 Summary: Python wrapper module around the OpenSSL library
 Home-page: https://pyopenssl.org/
 Author: The pyOpenSSL developers
@@ -27,7 +27,7 @@
 Classifier: Topic :: System :: Networking
 Requires-Python: >=3.8
 License-File: LICENSE
-Requires-Dist: cryptography<47,>=46.0.0
+Requires-Dist: cryptography<48,>=46.0.0
 Requires-Dist: typing-extensions>=4.9; python_version < "3.13" and 
python_version >= "3.8"
 Provides-Extra: test
 Requires-Dist: pytest-rerunfailures; extra == "test"
@@ -96,6 +96,21 @@
 Release Information
 ===================
 
+26.1.0 (2026-04-24)
+-------------------
+
+Backward-incompatible changes:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Deprecations:
+^^^^^^^^^^^^^
+
+Changes:
+^^^^^^^^
+
+- Maximum supported ``cryptography`` version is now 47.x.
+- Fixed ``X509Name`` field setters to correctly pass the value length to 
OpenSSL. Previously, values containing NUL bytes would be silently truncated, 
causing a divergence between the stored ASN.1 value and the value visible from 
Python. Credit to **BudongJW** for reporting the issue. **CVE-2026-40475**
+
 26.0.0 (2026-03-15)
 -------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyopenssl-26.0.0/doc/backward-compatibility.rst 
new/pyopenssl-26.1.0/doc/backward-compatibility.rst
--- old/pyopenssl-26.0.0/doc/backward-compatibility.rst 2026-03-15 
15:28:02.000000000 +0100
+++ new/pyopenssl-26.1.0/doc/backward-compatibility.rst 2026-04-24 
22:23:14.000000000 +0200
@@ -9,3 +9,10 @@
 #. …announced in the :doc:`changelog`.
 #. …the old behavior raises a :exc:`DeprecationWarning` for a year.
 #. …are done with another announcement in the :doc:`changelog`.
+
+Versioning Policy
+=================
+
+pyOpenSSL follows `CalVer <https://calver.org>`_ in `YY.MINOR.MICRO` format.
+Unlike SemVer, major versions represent the year, and are not indicative of
+breaking changes.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyopenssl-26.0.0/setup.py 
new/pyopenssl-26.1.0/setup.py
--- old/pyopenssl-26.0.0/setup.py       2026-03-15 15:28:02.000000000 +0100
+++ new/pyopenssl-26.1.0/setup.py       2026-04-24 22:23:14.000000000 +0200
@@ -93,7 +93,7 @@
         packages=find_packages(where="src"),
         package_dir={"": "src"},
         install_requires=[
-            "cryptography>=46.0.0,<47",
+            "cryptography>=46.0.0,<48",
             (
                 "typing-extensions>=4.9; "
                 "python_version < '3.13' and python_version >= '3.8'"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyopenssl-26.0.0/src/OpenSSL/crypto.py 
new/pyopenssl-26.1.0/src/OpenSSL/crypto.py
--- old/pyopenssl-26.0.0/src/OpenSSL/crypto.py  2026-03-15 15:28:02.000000000 
+0100
+++ new/pyopenssl-26.1.0/src/OpenSSL/crypto.py  2026-04-24 22:23:14.000000000 
+0200
@@ -651,7 +651,7 @@
             value = value.encode("utf-8")
 
         add_result = _lib.X509_NAME_add_entry_by_NID(
-            self._name, nid, _lib.MBSTRING_UTF8, value, -1, -1, 0
+            self._name, nid, _lib.MBSTRING_UTF8, value, len(value), -1, 0
         )
         if not add_result:
             _raise_current_error()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyopenssl-26.0.0/src/OpenSSL/version.py 
new/pyopenssl-26.1.0/src/OpenSSL/version.py
--- old/pyopenssl-26.0.0/src/OpenSSL/version.py 2026-03-15 15:28:02.000000000 
+0100
+++ new/pyopenssl-26.1.0/src/OpenSSL/version.py 2026-04-24 22:23:14.000000000 
+0200
@@ -17,7 +17,7 @@
     "__version__",
 ]
 
-__version__ = "26.0.0"
+__version__ = "26.1.0"
 
 __title__ = "pyOpenSSL"
 __uri__ = "https://pyopenssl.org/";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyopenssl-26.0.0/src/pyOpenSSL.egg-info/PKG-INFO 
new/pyopenssl-26.1.0/src/pyOpenSSL.egg-info/PKG-INFO
--- old/pyopenssl-26.0.0/src/pyOpenSSL.egg-info/PKG-INFO        2026-03-15 
15:28:07.000000000 +0100
+++ new/pyopenssl-26.1.0/src/pyOpenSSL.egg-info/PKG-INFO        2026-04-24 
22:23:19.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: pyOpenSSL
-Version: 26.0.0
+Version: 26.1.0
 Summary: Python wrapper module around the OpenSSL library
 Home-page: https://pyopenssl.org/
 Author: The pyOpenSSL developers
@@ -27,7 +27,7 @@
 Classifier: Topic :: System :: Networking
 Requires-Python: >=3.8
 License-File: LICENSE
-Requires-Dist: cryptography<47,>=46.0.0
+Requires-Dist: cryptography<48,>=46.0.0
 Requires-Dist: typing-extensions>=4.9; python_version < "3.13" and 
python_version >= "3.8"
 Provides-Extra: test
 Requires-Dist: pytest-rerunfailures; extra == "test"
@@ -96,6 +96,21 @@
 Release Information
 ===================
 
+26.1.0 (2026-04-24)
+-------------------
+
+Backward-incompatible changes:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Deprecations:
+^^^^^^^^^^^^^
+
+Changes:
+^^^^^^^^
+
+- Maximum supported ``cryptography`` version is now 47.x.
+- Fixed ``X509Name`` field setters to correctly pass the value length to 
OpenSSL. Previously, values containing NUL bytes would be silently truncated, 
causing a divergence between the stored ASN.1 value and the value visible from 
Python. Credit to **BudongJW** for reporting the issue. **CVE-2026-40475**
+
 26.0.0 (2026-03-15)
 -------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyopenssl-26.0.0/src/pyOpenSSL.egg-info/requires.txt 
new/pyopenssl-26.1.0/src/pyOpenSSL.egg-info/requires.txt
--- old/pyopenssl-26.0.0/src/pyOpenSSL.egg-info/requires.txt    2026-03-15 
15:28:07.000000000 +0100
+++ new/pyopenssl-26.1.0/src/pyOpenSSL.egg-info/requires.txt    2026-04-24 
22:23:19.000000000 +0200
@@ -1,4 +1,4 @@
-cryptography<47,>=46.0.0
+cryptography<48,>=46.0.0
 
 [:python_version < "3.13" and python_version >= "3.8"]
 typing-extensions>=4.9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyopenssl-26.0.0/tests/test_crypto.py 
new/pyopenssl-26.1.0/tests/test_crypto.py
--- old/pyopenssl-26.0.0/tests/test_crypto.py   2026-03-15 15:28:02.000000000 
+0100
+++ new/pyopenssl-26.1.0/tests/test_crypto.py   2026-04-24 22:23:14.000000000 
+0200
@@ -1403,6 +1403,14 @@
         name.emailAddress = "[email protected]"
         assert copy.emailAddress == "[email protected]"
 
+    def test_null_bytes_preserved(self) -> None:
+        """
+        Null bytes in X509Name field values are round-tripped correctly.
+        """
+        name = x509_name()
+        name.CN = "a\x00b"
+        assert name.CN == "a\x00b"
+
     def test_repr(self) -> None:
         """
         `repr` passed an `X509Name` instance should return a string containing
@@ -1995,16 +2003,17 @@
         current time plus the number of seconds passed in.
         """
         cert = load_certificate(FILETYPE_PEM, self.pemData)
-        not_before_min = utcnow().replace(microsecond=0) + timedelta(
-            seconds=100
-        )
+        utc_now = utcnow().replace(microsecond=0)
+        # -1 second tolerance for clock adjustments
+        not_before_min = utc_now + timedelta(seconds=99)
         cert.gmtime_adj_notBefore(100)
         not_before_str = cert.get_notBefore()
         assert not_before_str is not None
         not_before = datetime.strptime(
             not_before_str.decode(), "%Y%m%d%H%M%SZ"
         )
-        not_before_max = utcnow() + timedelta(seconds=100)
+        # +1 second tolerance for clock adjustments
+        not_before_max = utc_now + timedelta(seconds=101)
         assert not_before_min <= not_before <= not_before_max
 
     def test_gmtime_adj_notAfter_wrong_args(self) -> None:
@@ -2023,14 +2032,15 @@
         to be the current time plus the number of seconds passed in.
         """
         cert = load_certificate(FILETYPE_PEM, self.pemData)
-        not_after_min = utcnow().replace(microsecond=0) + timedelta(
-            seconds=100
-        )
+        utc_now = utcnow().replace(microsecond=0)
+        # -1 second tolerance for clock adjustments
+        not_after_min = utc_now + timedelta(seconds=99)
         cert.gmtime_adj_notAfter(100)
         not_after_str = cert.get_notAfter()
         assert not_after_str is not None
         not_after = datetime.strptime(not_after_str.decode(), "%Y%m%d%H%M%SZ")
-        not_after_max = utcnow() + timedelta(seconds=100)
+        # +1 second tolerance for clock adjustments
+        not_after_max = utc_now + timedelta(seconds=101)
         assert not_after_min <= not_after <= not_after_max
 
     def test_has_expired(self) -> None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyopenssl-26.0.0/tests/test_ssl.py 
new/pyopenssl-26.1.0/tests/test_ssl.py
--- old/pyopenssl-26.0.0/tests/test_ssl.py      2026-03-15 15:28:02.000000000 
+0100
+++ new/pyopenssl-26.1.0/tests/test_ssl.py      2026-04-24 22:23:14.000000000 
+0200
@@ -4686,7 +4686,11 @@
     Tests for PyOpenSSL's OCSP stapling support.
     """
 
-    sample_ocsp_data = b"this is totally ocsp data"
+    # Minimal valid DER-encoded OCSPResponse with status "unauthorized"
+    # (SEQUENCE { ENUMERATED 6 }). Required by OpenSSL 4.0+, which parses
+    # the bytes via d2i_OCSP_RESPONSE before stapling and silently drops
+    # unparseable input.
+    sample_ocsp_data = b"\x30\x03\x0a\x01\x06"
 
     def _client_connection(
         self,

Reply via email to