Better handle FIDO keys on tokens that provide user verification (UV)
authordjm <djm@openbsd.org>
Tue, 2 Nov 2021 22:56:40 +0000 (22:56 +0000)
committerdjm <djm@openbsd.org>
Tue, 2 Nov 2021 22:56:40 +0000 (22:56 +0000)
commit18b3d906c30b4e35601bdcd9f11b6d18199d82cf
treec6777423316c2b22d5d363b5f0c758dbe9cde8b2
parent2bf224eb94ef6c242091cfd30ce3bc9487945eb5
Better handle FIDO keys on tokens that provide user verification (UV)
on the device itself, including biometric keys.

Query the token during key creation to determine whether it supports
on-token UV and, if so, clear the SSH_SK_USER_VERIFICATION_REQD flag
in the key so that ssh(1) doesn't automatically prompty for PIN later.

When making signatures with the key, query the token's capabilities
again and check whether the token is able (right now) to perform user-
verification without a PIN. If it is then the PIN prompt is bypassed
and user verification delegated to the token. If not (e.g. the token
is biometric capable, but no biometric are enrolled), then fall back
to user verification via the usual PIN prompt.

Work by Pedro Martelletto; ok myself and markus@

NB. cranks SSH_SK_VERSION_MAJOR
usr.bin/ssh/sk-api.h
usr.bin/ssh/sk-usbhid.c
usr.bin/ssh/ssh-sk.c