mbox series

[0/4] hw/usb/u2f-passthru: U2F keepalive fixes

Message ID 20240625145350.65978-1-dbouman03@gmail.com (mailing list archive)
Headers show
Series hw/usb/u2f-passthru: U2F keepalive fixes | expand

Message

David Bouman June 25, 2024, 2:53 p.m. UTC
Hello,

The u2f-passthru device is currently broken for (at least) the Yubikey 5.
(gitlab: https://gitlab.com/qemu-project/qemu/-/issues/2293)

This patchset aims to fix the issue by properly handling the
U2F keepalive response in the u2f-passthru device.

I initially suspected the hidraw chardev handle management to be the
culprit, so I also implemented a more efficient strategy where the host
hidraw chardev is only opened as long as the guest actually needs it to be opened.

This turned out to not be the root cause, but regardless, it's probably the 
right way to be doing it. Hence, I also included these patches here.

The patches were tested with `pamu2fcfg` in an x86_64 Linux guest
with the u2f-passthru device backed by a physical Yubikey 5 (type C model). 

---

I apologize for any anticipatory errors, I'm not really acquainted with the
USB/HID/U2F protocols, nor with QEMU. Happy to hear your feedback!

David Bouman (4):
  hw/usb/u2f: Add `start` and `stop` callbacks to U2F key class
  hw/usb/u2f-passthru: Do not needlessly retain handle to hidraw chardev
  hw/usb/u2f-passthru: Clean up code
  hw/usb/u2f-passthru: Implement FIDO U2FHID keep-alive

 hw/usb/u2f-passthru.c | 163 ++++++++++++++++++++++++++++--------------
 hw/usb/u2f.c          |  23 ++++++
 hw/usb/u2f.h          |   5 ++
 3 files changed, 138 insertions(+), 53 deletions(-)