Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-acme for openSUSE:Factory checked in at 2026-01-17 14:54:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-acme (Old) and /work/SRC/openSUSE:Factory/.python-acme.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-acme" Sat Jan 17 14:54:20 2026 rev:78 rq:1327568 version:5.2.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-acme/python-acme.changes 2025-10-14 18:12:13.696695187 +0200 +++ /work/SRC/openSUSE:Factory/.python-acme.new.1928/python-acme.changes 2026-01-17 14:55:10.048221164 +0100 @@ -1,0 +2,6 @@ +Thu Jan 15 13:29:20 UTC 2026 - Markéta Machová <[email protected]> + +- Update to 5.2.2 + * Support for Python 3.14 was added. + +------------------------------------------------------------------- Old: ---- acme-5.1.0.tar.gz New: ---- acme-5.2.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-acme.spec ++++++ --- /var/tmp/diff_new_pack.LNH5jK/_old 2026-01-17 14:55:10.764251101 +0100 +++ /var/tmp/diff_new_pack.LNH5jK/_new 2026-01-17 14:55:10.768251269 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-acme # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %{?sle15_python_module_pythons} %define libname acme Name: python-%{libname} -Version: 5.1.0 +Version: 5.2.2 Release: 0 Summary: Python library for the ACME protocol License: Apache-2.0 ++++++ acme-5.1.0.tar.gz -> acme-5.2.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acme-5.1.0/PKG-INFO new/acme-5.2.2/PKG-INFO --- old/acme-5.1.0/PKG-INFO 2025-10-07 18:42:02.258448000 +0200 +++ new/acme-5.2.2/PKG-INFO 2025-12-10 18:08:12.141301200 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: acme -Version: 5.1.0 +Version: 5.2.2 Summary: ACME protocol implementation in Python Author-email: Certbot Project <[email protected]> License-Expression: Apache-2.0 @@ -13,6 +13,7 @@ Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.14 Classifier: Topic :: Internet :: WWW/HTTP Classifier: Topic :: Security Requires-Python: >=3.10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acme-5.1.0/pyproject.toml new/acme-5.2.2/pyproject.toml --- old/acme-5.1.0/pyproject.toml 2025-10-07 18:41:59.000000000 +0200 +++ new/acme-5.2.2/pyproject.toml 2025-12-10 18:08:09.000000000 +0100 @@ -21,6 +21,7 @@ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.14", "Topic :: Internet :: WWW/HTTP", "Topic :: Security", ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acme-5.1.0/setup.py new/acme-5.2.2/setup.py --- old/acme-5.1.0/setup.py 2025-10-07 18:42:00.000000000 +0200 +++ new/acme-5.2.2/setup.py 2025-12-10 18:08:09.000000000 +0100 @@ -1,6 +1,6 @@ from setuptools import setup -version = '5.1.0' +version = '5.2.2' setup( version=version, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acme-5.1.0/src/acme/client.py new/acme-5.2.2/src/acme/client.py --- old/acme-5.1.0/src/acme/client.py 2025-10-07 18:41:59.000000000 +0200 +++ new/acme-5.2.2/src/acme/client.py 2025-12-10 18:08:09.000000000 +0100 @@ -121,18 +121,12 @@ :rtype: OrderResource """ csr = x509.load_pem_x509_csr(csr_pem) - dnsNames = crypto_util.get_names_from_subject_and_extensions(csr.subject, csr.extensions) - try: - san_ext = csr.extensions.get_extension_for_class(x509.SubjectAlternativeName) - except x509.ExtensionNotFound: - ipNames = [] - else: - ipNames = san_ext.value.get_values_for_type(x509.IPAddress) + dns_names, ip_addrs = crypto_util.get_identifiers_from_x509(csr.subject, csr.extensions) identifiers = [] - for name in dnsNames: + for name in dns_names: identifiers.append(messages.Identifier(typ=messages.IDENTIFIER_FQDN, value=name)) - for ip in ipNames: + for ip in ip_addrs: identifiers.append(messages.Identifier(typ=messages.IDENTIFIER_IP, value=str(ip))) if profile is None: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acme-5.1.0/src/acme/crypto_util.py new/acme-5.2.2/src/acme/crypto_util.py --- old/acme-5.1.0/src/acme/crypto_util.py 2025-10-07 18:41:59.000000000 +0200 +++ new/acme-5.2.2/src/acme/crypto_util.py 2025-12-10 18:08:09.000000000 +0100 @@ -112,7 +112,7 @@ def get_names_from_subject_and_extensions( subject: x509.Name, exts: x509.Extensions ) -> list[str]: - """Gets all DNS SAN names as well as the first Common Name from subject. + """Gets all DNS SANs as well as the first Common Name from subject. :param subject: Name of the x509 object, which may include Common Name :type subject: `cryptography.x509.Name` @@ -122,6 +122,24 @@ :returns: List of DNS Subject Alternative Names and first Common Name :rtype: `list` of `str` """ + dns_names, _ = get_identifiers_from_x509(subject, exts) + return dns_names + + +def get_identifiers_from_x509( + subject: x509.Name, exts: x509.Extensions +) -> tuple[list[str], list[str]]: + """Gets all DNS and/or IP address SANs as well as the first Common Name from subject. + + The CN will be first in the list of DNS names, if present. + + :param subject: Name of the x509 object, which may include Common Name + :type subject: `cryptography.x509.Name` + :param exts: Extensions of the x509 object, which may include SANs + :type exts: `cryptography.x509.Extensions` + + :returns: Tuple containing DNS names and IP addresses. + """ # We know these are always `str` because `bytes` is only possible for # other OIDs. cns = [ @@ -132,15 +150,17 @@ san_ext = exts.get_extension_for_class(x509.SubjectAlternativeName) except x509.ExtensionNotFound: dns_names = [] + ip_addresses = [] else: dns_names = san_ext.value.get_values_for_type(x509.DNSName) + ip_addresses = [str(ip) for ip in san_ext.value.get_values_for_type(x509.IPAddress)] if not cns: - return dns_names + return dns_names, ip_addresses else: # We only include the first CN, if there are multiple. This matches # the behavior of the previous implementation using pyOpenSSL. - return [cns[0]] + [d for d in dns_names if d != cns[0]] + return [cns[0]] + [d for d in dns_names if d != cns[0]], ip_addresses def _cryptography_cert_or_req_san( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acme-5.1.0/src/acme.egg-info/PKG-INFO new/acme-5.2.2/src/acme.egg-info/PKG-INFO --- old/acme-5.1.0/src/acme.egg-info/PKG-INFO 2025-10-07 18:42:02.000000000 +0200 +++ new/acme-5.2.2/src/acme.egg-info/PKG-INFO 2025-12-10 18:08:12.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: acme -Version: 5.1.0 +Version: 5.2.2 Summary: ACME protocol implementation in Python Author-email: Certbot Project <[email protected]> License-Expression: Apache-2.0 @@ -13,6 +13,7 @@ Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.14 Classifier: Topic :: Internet :: WWW/HTTP Classifier: Topic :: Security Requires-Python: >=3.10
