summaryrefslogtreecommitdiff
path: root/sk-usbhid.c
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2019-11-15 03:41:57 +0000
committerDamien Miller <djm@mindrot.org>2019-11-15 14:43:34 +1100
commit01362cf7cb979525c014714e2bccf799a46e772e (patch)
treef3fa6858f5c42a570395e50f6b33e3c77a38adb2 /sk-usbhid.c
parentcf62307bc9758105913dcb91b418e4968ac2244d (diff)
upstream: U2F tokens may return FIDO_ERR_USER_PRESENCE_REQUIRED when
probed to see if they own a key handle. Handle this case so the find_device() look can work for them. Reported by Michael Forney OpenBSD-Commit-ID: 2ccd5b30a6ddfe4dba228b7159bf168601bd9166
Diffstat (limited to 'sk-usbhid.c')
-rw-r--r--sk-usbhid.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sk-usbhid.c b/sk-usbhid.c
index f81dc8f28..e07b49e9f 100644
--- a/sk-usbhid.c
+++ b/sk-usbhid.c
@@ -201,6 +201,10 @@ try_device(fido_dev_t *dev, const uint8_t *message, size_t message_len,
201 } 201 }
202 r = fido_dev_get_assert(dev, assert, NULL); 202 r = fido_dev_get_assert(dev, assert, NULL);
203 skdebug(__func__, "fido_dev_get_assert: %s", fido_strerr(r)); 203 skdebug(__func__, "fido_dev_get_assert: %s", fido_strerr(r));
204 if (r == FIDO_ERR_USER_PRESENCE_REQUIRED) {
205 /* U2F tokens may return this */
206 r = FIDO_OK;
207 }
204 out: 208 out:
205 fido_assert_free(&assert); 209 fido_assert_free(&assert);
206 210