Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-pynitrokey for openSUSE:Factory checked in at 2026-10-15 13:05:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pynitrokey (Old) and /work/SRC/openSUSE:Factory/.python-pynitrokey.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pynitrokey" Thu Oct 15 13:05:14 2026 rev:30 rq:1384912 version:0.14.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pynitrokey/python-pynitrokey.changes 2026-09-21 12:23:48.066750733 +0200 +++ /work/SRC/openSUSE:Factory/.python-pynitrokey.new.3698736/python-pynitrokey.changes 2026-10-15 13:05:14.822070723 +0200 @@ -1,0 +2,10 @@ +Thu Oct 15 05:05:11 UTC 2026 - Johannes Kastl <[email protected]> + +- update to 14.0.0: + * trussed: Add model and revision to status output in #795 + * Allow cryptography <53 in #798 + * Use secrets rather than random to generate secrets in #800 + * nk3: secret: Make get-password pipe compatible in #801 + * Fix typo in NetHSM error message in #802 + +------------------------------------------------------------------- Old: ---- pynitrokey-0.13.0.tar.gz New: ---- pynitrokey-0.14.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pynitrokey.spec ++++++ --- /var/tmp/diff_new_pack.cHiLJ2/_old 2026-10-15 13:05:15.785110779 +0200 +++ /var/tmp/diff_new_pack.cHiLJ2/_new 2026-10-15 13:05:15.789110945 +0200 @@ -18,7 +18,7 @@ %{?sle15_python_module_pythons} Name: python-pynitrokey -Version: 0.13.0 +Version: 0.14.0 Release: 0 Summary: Python Library for Nitrokey devices License: Apache-2.0 OR MIT @@ -39,7 +39,7 @@ BuildRequires: %{python_module hidapi >= 0.14.0.post2 with %python-hidapi < 0.14.0.post3} BuildRequires: %{python_module libusb1 >= 3 with %python-libusb1 < 4} BuildRequires: %{python_module nethsm >= 3 with %python-nethsm < 4} -BuildRequires: %{python_module nitrokey >= 0.4.2 with %python-nitrokey < 0.5} +BuildRequires: %{python_module nitrokey >= 0.5 with %python-nitrokey < 0.6} BuildRequires: %{python_module nkdfu >= 0.2 with %python-nkdfu < 0.3} BuildRequires: %{python_module pyusb >= 1.2 with %python-pyusb < 2} BuildRequires: %{python_module requests >= 2.16 with %python-requests < 3} @@ -59,7 +59,7 @@ Requires: (python-hidapi >= 0.14.0.post2 with python-hidapi < 0.14.0.post3) Requires: (python-libusb1 >= 3 with python-libusb1 < 4) Requires: (python-nethsm >= 3 with python-nethsm < 4) -Requires: (python-nitrokey >= 0.4.2 with python-nitrokey < 0.5) +Requires: (python-nitrokey >= 0.5 with python-nitrokey < 0.6) Requires: (python-nkdfu >= 0.2 with python-nkdfu < 0.3) Requires: (python-pyusb >= 1.2 with python-pyusb < 2) Requires: (python-requests >= 2.16 with python-requests < 3) ++++++ pynitrokey-0.13.0.tar.gz -> pynitrokey-0.14.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pynitrokey-0.13.0/PKG-INFO new/pynitrokey-0.14.0/PKG-INFO --- old/pynitrokey-0.13.0/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 +++ new/pynitrokey-0.14.0/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: pynitrokey -Version: 0.13.0 +Version: 0.14.0 Summary: Python client for Nitrokey devices License-Expression: Apache-2.0 OR MIT License-File: LICENSES/Apache-2.0.txt @@ -20,14 +20,14 @@ Provides-Extra: pcsc Requires-Dist: cffi (>=1.15,<3) Requires-Dist: click (>=8.2,<9) -Requires-Dist: cryptography (>=43,<50) +Requires-Dist: cryptography (>=43,<53) Requires-Dist: fido2 (>=2,<3) Requires-Dist: hidapi (==0.14.0.post2) ; sys_platform == "linux" Requires-Dist: hidapi (>=0.14,<0.15) Requires-Dist: intelhex (>=2.3,<3) Requires-Dist: libusb1 (>=3,<4) Requires-Dist: nethsm (>=3,<4) -Requires-Dist: nitrokey (>=0.4.2,<0.5) +Requires-Dist: nitrokey (>=0.5,<0.6) Requires-Dist: nkdfu (>=0.2,<0.3) Requires-Dist: pyscard (>=2,<3) ; extra == "pcsc" Requires-Dist: pyserial (>=3.5,<4) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pynitrokey-0.13.0/pynitrokey/cli/nethsm.py new/pynitrokey-0.14.0/pynitrokey/cli/nethsm.py --- old/pynitrokey-0.13.0/pynitrokey/cli/nethsm.py 1970-01-01 01:00:00.000000000 +0100 +++ new/pynitrokey-0.14.0/pynitrokey/cli/nethsm.py 1970-01-01 01:00:00.000000000 +0100 @@ -165,7 +165,7 @@ ) else: raise click.ClickException( - f"Cound not connect to the NetHSM: {e.reason}\nIs the NetHSM running and reachable?" + f"Could not connect to the NetHSM: {e.reason}\nIs the NetHSM running and reachable?" ) finally: nethsm.close() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pynitrokey-0.13.0/pynitrokey/cli/nk3/secrets.py new/pynitrokey-0.14.0/pynitrokey/cli/nk3/secrets.py --- old/pynitrokey-0.13.0/pynitrokey/cli/nk3/secrets.py 1970-01-01 01:00:00.000000000 +0100 +++ new/pynitrokey-0.14.0/pynitrokey/cli/nk3/secrets.py 1970-01-01 01:00:00.000000000 +0100 @@ -64,7 +64,8 @@ elif e.to_id() == SecretsAppExceptionID.NotFound: if repeat_if_pin_needed.cached_PIN is None: # type: ignore[attr-defined] local_print( - "Credential not found. Please provide PIN below to search in the PIN-protected database." + "Credential not found. Please provide PIN below to search in the PIN-protected database.", + file=sys.stderr, ) else: raise diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pynitrokey-0.13.0/pynitrokey/cli/trussed/__init__.py new/pynitrokey-0.14.0/pynitrokey/cli/trussed/__init__.py --- old/pynitrokey-0.13.0/pynitrokey/cli/trussed/__init__.py 1970-01-01 01:00:00.000000000 +0100 +++ new/pynitrokey-0.14.0/pynitrokey/cli/trussed/__init__.py 1970-01-01 01:00:00.000000000 +0100 @@ -569,8 +569,12 @@ local_print(f"Free blocks (int): {status.ifs_blocks}") if status.efs_blocks is not None: local_print(f"Free blocks (ext): {status.efs_blocks}") + if status.model is not None: + local_print(f"Model: {status.model.name}") if status.variant is not None: local_print(f"Variant: {status.variant.name}") + if status.revision is not None: + local_print(f"Revision: {status.revision}") @click.command() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pynitrokey-0.13.0/pynitrokey/cli/trussed/tests.py new/pynitrokey-0.14.0/pynitrokey/cli/trussed/tests.py --- old/pynitrokey-0.13.0/pynitrokey/cli/trussed/tests.py 1970-01-01 01:00:00.000000000 +0100 +++ new/pynitrokey-0.14.0/pynitrokey/cli/trussed/tests.py 1970-01-01 01:00:00.000000000 +0100 @@ -322,11 +322,15 @@ if not isinstance(device, TrussedDevice): return TestResult(TestStatus.SKIPPED) + ctaphid_device = device.ctaphid_device() + if ctaphid_device is None: + return TestResult(TestStatus.SKIPPED) + # drop out early, if pin is needed, but not provided from fido2.client import DefaultClientDataCollector, Fido2Client client_data_collector = DefaultClientDataCollector(origin="https://example.com") - fido2_client = Fido2Client(device=device.device, client_data_collector=client_data_collector) + fido2_client = Fido2Client(device=ctaphid_device, client_data_collector=client_data_collector) options = fido2_client.info.options has_pin = options["clientPin"] uv_required = not options.get("makeCredUvNotRqd", False) @@ -373,7 +377,7 @@ return True client = Fido2Client( - device=device.device, + device=ctaphid_device, client_data_collector=client_data_collector, user_interaction=NoInteraction(ctx.pin), ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pynitrokey-0.13.0/pynitrokey/fido2/entra.py new/pynitrokey-0.14.0/pynitrokey/fido2/entra.py --- old/pynitrokey-0.13.0/pynitrokey/fido2/entra.py 1970-01-01 01:00:00.000000000 +0100 +++ new/pynitrokey-0.14.0/pynitrokey/fido2/entra.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ import json -import random import re +import secrets import string import time from datetime import datetime, timedelta @@ -27,7 +27,7 @@ def _generate_password(self, length: int = 16) -> str: characters = string.ascii_letters + string.digits + string.punctuation - password = "".join(random.choice(characters) for _ in range(length)) + password = "".join(secrets.choice(characters) for _ in range(length)) return password def _get_endpoint(self, graph_version: str = "v1.0") -> str: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pynitrokey-0.13.0/pyproject.toml new/pynitrokey-0.14.0/pyproject.toml --- old/pynitrokey-0.13.0/pyproject.toml 1970-01-01 01:00:00.000000000 +0100 +++ new/pynitrokey-0.14.0/pyproject.toml 1970-01-01 01:00:00.000000000 +0100 @@ -8,7 +8,7 @@ [project] name = "pynitrokey" -version = "0.13.0" +version = "0.14.0" description = "Python client for Nitrokey devices" license = "Apache-2.0 OR MIT" authors = [ @@ -20,7 +20,7 @@ dependencies = [ "cffi >=1.15, <3", "click >=8.2, <9", - "cryptography >=43, <50", + "cryptography >=43, <53", "fido2 >=2, <3", "hidapi >=0.14, <0.15", # Limit hidapi on Linux to version using the hidraw backend, see @@ -30,7 +30,7 @@ "intelhex >=2.3, <3", "libusb1 >=3, <4", "nethsm >=3, <4", - "nitrokey >=0.4.2, <0.5", + "nitrokey >=0.5, <0.6", "nkdfu >=0.2, <0.3", "pyusb >=1.2, <2", "pyserial >=3.5, <4", @@ -145,4 +145,8 @@ # These additional lower bounds are required for --resolution lowest. # As these are transitive dependencies, we don’t include them in our dependency list. "fire >=0.1.2", + "pycparser >=2.18", ] +exclude-newer = "7 days" +# Can be used to update packages to a version more recent what exclude-newer allows +exclude-newer-package = { nitrokey = false }
