git: 6352b229f1e2 - main - security/py-asyncssh: Update to 2.22.0
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 30 Dec 2025 13:32:43 UTC
The branch main has been updated by sunpoet:
URL: https://cgit.FreeBSD.org/ports/commit/?id=6352b229f1e2ce647c809fc1b54025d6f2b9e984
commit 6352b229f1e2ce647c809fc1b54025d6f2b9e984
Author: Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2025-12-30 13:22:36 +0000
Commit: Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2025-12-30 13:29:24 +0000
security/py-asyncssh: Update to 2.22.0
Changes: https://github.com/ronf/asyncssh/blob/master/docs/changes.rst
---
security/py-asyncssh/Makefile | 3 +-
security/py-asyncssh/distinfo | 6 +-
security/py-asyncssh/files/patch-fido2 | 161 ---------------------------------
3 files changed, 4 insertions(+), 166 deletions(-)
diff --git a/security/py-asyncssh/Makefile b/security/py-asyncssh/Makefile
index 8e120f883d47..26afd9b76aa5 100644
--- a/security/py-asyncssh/Makefile
+++ b/security/py-asyncssh/Makefile
@@ -1,6 +1,5 @@
PORTNAME= asyncssh
-PORTVERSION= 2.21.1
-PORTREVISION= 1
+PORTVERSION= 2.22.0
CATEGORIES= security python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/security/py-asyncssh/distinfo b/security/py-asyncssh/distinfo
index d5154bcec3ab..fff89b5ba5eb 100644
--- a/security/py-asyncssh/distinfo
+++ b/security/py-asyncssh/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1759816710
-SHA256 (asyncssh-2.21.1.tar.gz) = 9943802955e2131536c2b1e71aacc68f56973a399937ed0b725086d7461c990c
-SIZE (asyncssh-2.21.1.tar.gz) = 540515
+TIMESTAMP = 1766953406
+SHA256 (asyncssh-2.22.0.tar.gz) = c3ce72b01be4f97b40e62844dd384227e5ff5a401a3793007c42f86a5c8eb537
+SIZE (asyncssh-2.22.0.tar.gz) = 540523
diff --git a/security/py-asyncssh/files/patch-fido2 b/security/py-asyncssh/files/patch-fido2
deleted file mode 100644
index d8b9c8387a67..000000000000
--- a/security/py-asyncssh/files/patch-fido2
+++ /dev/null
@@ -1,161 +0,0 @@
-Obtained from: https://github.com/ronf/asyncssh/commit/b9e58a3914c7d1df7f2c096e8c1c0220799e247f
-
---- asyncssh/sk.py.orig 2025-08-23 02:54:29 UTC
-+++ asyncssh/sk.py
-@@ -128,7 +128,9 @@ def _win_enroll(alg: int, application: str, user: str)
- def _win_enroll(alg: int, application: str, user: str) -> Tuple[bytes, bytes]:
- """Enroll a new security key using Windows WebAuthn API"""
-
-- client = WindowsClient(application, verify=_verify_rp_id)
-+ data_collector = DefaultClientDataCollector(origin=application,
-+ verify=_verify_rp_id)
-+ client = WindowsClient(data_collector)
-
- rp = {'id': application, 'name': application}
- user_cred = {'id': user.encode('utf-8'), 'name': user}
-@@ -137,7 +139,8 @@ def _win_enroll(alg: int, application: str, user: str)
- 'pubKeyCredParams': key_params}
-
- result = client.make_credential(options)
-- cdata = result.attestation_object.auth_data.credential_data
-+ response = result.response
-+ cdata = response.attestation_object.auth_data.credential_data
-
- # pylint: disable=no-member
- return _decode_public_key(alg, cdata.public_key), cdata.credential_id
-@@ -188,17 +191,20 @@ def _win_sign(data: bytes, application: str,
- key_handle: bytes) -> Tuple[int, int, bytes, bytes]:
- """Sign a message with a security key using Windows WebAuthn API"""
-
-- client = WindowsClient(application, verify=_verify_rp_id)
-+ data_collector = DefaultClientDataCollector(origin=application,
-+ verify=_verify_rp_id)
-+ client = WindowsClient(data_collector)
-
- creds = [{'type': 'public-key', 'id': key_handle}]
- options = {'challenge': data, 'rpId': application,
- 'allowCredentials': creds}
-
- result = client.get_assertion(options).get_response(0)
-- auth_data = result.authenticator_data
-+ response = result.response
-+ auth_data = response.authenticator_data
-
- return auth_data.flags, auth_data.counter, \
-- result.signature, bytes(result.client_data)
-+ response.signature, bytes(response.client_data)
-
-
- def sk_webauthn_prefix(data: bytes, application: str) -> bytes:
-@@ -327,7 +333,7 @@ try:
-
-
- try:
-- from fido2.client import WindowsClient
-+ from fido2.client import DefaultClientDataCollector
- from fido2.ctap import CtapError
- from fido2.ctap1 import Ctap1, APDU, ApduError
- from fido2.ctap2 import Ctap2, ClientPin, PinProtocolV1
-@@ -335,13 +341,8 @@ try:
- from fido2.hid import CtapHidDevice
-
- sk_available = True
--
-- sk_use_webauthn = WindowsClient.is_available() and \
-- hasattr(ctypes, 'windll') and \
-- not ctypes.windll.shell32.IsUserAnAdmin()
- except (ImportError, OSError, AttributeError): # pragma: no cover
- sk_available = False
-- sk_use_webauthn = False
-
- def _sk_not_available(*args: object, **kwargs: object) -> NoReturn:
- """Report that security key support is unavailable"""
-@@ -351,3 +352,13 @@ except (ImportError, OSError, AttributeError): # pragm
- sk_enroll = _sk_not_available
- sk_sign = _sk_not_available
- sk_get_resident = _sk_not_available
-+
-+try:
-+ from fido2.client.windows import WindowsClient
-+
-+ sk_use_webauthn = WindowsClient.is_available() and \
-+ hasattr(ctypes, 'windll') and \
-+ not ctypes.windll.shell32.IsUserAnAdmin()
-+except ImportError:
-+ WindowsClient = None
-+ sk_use_webauthn = False
---- pyproject.toml.orig 2025-09-28 13:31:10 UTC
-+++ pyproject.toml
-@@ -35,7 +35,7 @@ bcrypt = ['bcrypt >= 3.1.3']
-
- [project.optional-dependencies]
- bcrypt = ['bcrypt >= 3.1.3']
--fido2 = ['fido2 >= 0.9.2, < 2']
-+fido2 = ['fido2 >= 2']
- gssapi = ['gssapi >= 1.2.0']
- libnacl = ['libnacl >= 1.4.2']
- pkcs11 = ['python-pkcs11 >= 0.7.0']
---- tests/sk_stub.py.orig 2025-05-29 03:09:38 UTC
-+++ tests/sk_stub.py
-@@ -93,6 +93,13 @@ class _AttestationResponse:
- self.attestation_object = attestation_object
-
-
-+class _RegistrationResponse:
-+ """Security key registration response"""
-+
-+ def __init__(self, attestation_response):
-+ self.response = attestation_response
-+
-+
- class _AuthenticatorData:
- """Security key authenticator data in aseertion"""
-
-@@ -110,6 +117,13 @@ class _AssertionResponse:
- self.signature = signature
-
-
-+class _AuthenticationResponse:
-+ """Security key authentication response"""
-+
-+ def __init__(self, response):
-+ self.response = response
-+
-+
- class _AssertionSelection:
- """Security key assertion response list"""
-
-@@ -261,9 +275,9 @@ class WindowsClient(_CtapStub):
- class WindowsClient(_CtapStub):
- """Stub for unit testing U2F security keys via Windows WebAuthn"""
-
-- def __init__(self, origin, verify):
-- self._origin = origin
-- self._verify = verify
-+ def __init__(self, data_collector):
-+ self._origin = data_collector._origin
-+ self._verify = data_collector._verify
-
- def make_credential(self, options):
- """Make a credential using Windows WebAuthN API"""
-@@ -275,8 +289,9 @@ class WindowsClient(_CtapStub):
- public_key, key_handle = self._enroll(alg)
-
- cdata = _CredentialData(alg, public_key, key_handle)
-+ attestation_object = _Credential(_CredentialAuthData(cdata))
-
-- return _AttestationResponse(_Credential(_CredentialAuthData(cdata)))
-+ return _RegistrationResponse(_AttestationResponse(attestation_object))
-
- def get_assertion(self, options):
- """Get assertion using Windows WebAuthN API"""
-@@ -297,7 +312,8 @@ class WindowsClient(_CtapStub):
- key_handle, flags)
-
- auth_data = _AuthenticatorData(flags, counter)
-- assertion = _AssertionResponse(data, auth_data, sig)
-+ response = _AssertionResponse(data, auth_data, sig)
-+ assertion = _AuthenticationResponse(response)
-
- return _AssertionSelection([assertion])
-