--- security/py-fido2/Makefile (revision 511759) +++ security/py-fido2/Makefile (working copy) @@ -2,6 +2,7 @@ PORTNAME= fido2 PORTVERSION= 0.7.0 +PORTREVISION= 1 CATEGORIES= security python MASTER_SITES= CHEESESHOP PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} @@ -14,7 +15,8 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cryptography>=1.5:security/py-cryptography@${PY_FLAVOR} \ ${PY_ENUM34} \ - ${PYTHON_PKGNAMEPREFIX}six>=0:devel/py-six@${PY_FLAVOR} + ${PYTHON_PKGNAMEPREFIX}six>=0:devel/py-six@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}uhid-freebsd>=0:devel/py-uhid-freebsd@${PY_FLAVOR} USES= python USE_PYTHON= autoplist distutils --- security/py-fido2/files/patch-fido2___pyu2f_____init____.py (nonexistent) +++ security/py-fido2/files/patch-fido2___pyu2f_____init____.py (working copy) @@ -0,0 +1,12 @@ +--- fido2/_pyu2f/__init__.py.orig 2019-09-10 15:15:37 UTC ++++ fido2/_pyu2f/__init__.py +@@ -47,6 +47,9 @@ def InternalPlatformSwitch(funcname, *args, **kwargs): + elif sys.platform.startswith('darwin'): + from . import macos + clz = macos.MacOsHidDevice ++ elif sys.platform.startswith('freebsd'): ++ from . import freebsd ++ clz = freebsd.FreeBSDHidDevice + + if not clz: + raise Exception('Unsupported platform: ' + sys.platform) --- security/py-fido2/files/patch-fido2___pyu2f_freebsd.py (nonexistent) +++ security/py-fido2/files/patch-fido2___pyu2f_freebsd.py (working copy) @@ -0,0 +1,38 @@ +--- fido2/_pyu2f/freebsd.py.orig 2019-09-10 15:17:18 UTC ++++ fido2/_pyu2f/freebsd.py +@@ -0,0 +1,35 @@ ++from __future__ import absolute_import ++ ++import os ++import uhid_freebsd ++ ++from . import linux ++ ++class FreeBSDHidDevice(linux.LinuxHidDevice): ++ """Implementation of HID device for FreeBSD. ++ """ ++ ++ @staticmethod ++ def Enumerate(): ++ for dev in uhid_freebsd.enumerate(): ++ desc = linux.base.DeviceDescriptor() ++ desc.path = dev["path"] ++ desc.vendor_id = dev["vendor_id"] ++ desc.product_id = dev["product_id"] ++ desc.product_string = dev["product_desc"] ++ fd = os.open(desc.path, os.O_RDONLY) ++ linux.ParseReportDescriptor(uhid_freebsd.get_report_data(fd, 3), desc) ++ os.close(fd) ++ yield desc.ToPublicDict() ++ ++ def __init__(self, path): ++ linux.base.HidDevice.__init__(self, path) ++ self.dev = os.open(path, os.O_RDWR) ++ self.desc = linux.base.DeviceDescriptor() ++ self.desc.path = path ++ linux.ParseReportDescriptor(uhid_freebsd.get_report_data(self.dev, 3), self.desc) ++ ++ def Write(self, packet): ++ """See base class.""" ++ out = bytes(bytearray([0]*64 + packet)) # Prepend the zero-byte (report ID) ++ os.write(self.dev, out)