qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: David Bouman <dbouman03@gmail.com>
To: qemu-devel@nongnu.org
Cc: David Bouman <dbouman03@gmail.com>
Subject: [PATCH 0/4] hw/usb/u2f-passthru: U2F keepalive fixes
Date: Tue, 25 Jun 2024 16:53:46 +0200	[thread overview]
Message-ID: <20240625145350.65978-1-dbouman03@gmail.com> (raw)

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(-)

-- 
2.34.1



             reply	other threads:[~2024-06-25 17:36 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-25 14:53 David Bouman [this message]
2024-06-25 14:53 ` [PATCH 1/4] hw/usb/u2f: Add `start` and `stop` callbacks to U2F key class David Bouman
2024-06-25 14:53 ` [PATCH 2/4] hw/usb/u2f-passthru: Do not needlessly retain handle to hidraw chardev David Bouman
2024-06-25 14:53 ` [PATCH 3/4] hw/usb/u2f-passthru: Clean up code David Bouman
2024-06-25 14:53 ` [PATCH 4/4] hw/usb/u2f-passthru: Implement FIDO U2FHID keep-alive David Bouman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240625145350.65978-1-dbouman03@gmail.com \
    --to=dbouman03@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).