make key_lookup compatible with winhello

This commit is contained in:
Tess Gauthier 2022-10-18 14:04:50 -04:00
parent ca9f04bd94
commit 803e013b3b
2 changed files with 11 additions and 7 deletions

View File

@ -151,6 +151,7 @@
#define HAVE_FIDO_DEV_GET_TOUCH_STATUS #define HAVE_FIDO_DEV_GET_TOUCH_STATUS
#define HAVE_FIDO_CRED_SET_CLIENTDATA #define HAVE_FIDO_CRED_SET_CLIENTDATA
#define HAVE_FIDO_ASSERT_SET_CLIENTDATA #define HAVE_FIDO_ASSERT_SET_CLIENTDATA
#define HAVE_FIDO_DEV_IS_WINHELLO
/* File names may not contain backslash characters */ /* File names may not contain backslash characters */
/* #undef FILESYSTEM_NO_BACKSLASH */ /* #undef FILESYSTEM_NO_BACKSLASH */
@ -1736,3 +1737,4 @@
#define HAVE_KILLPG 1 #define HAVE_KILLPG 1

View File

@ -780,7 +780,10 @@ static int
key_lookup(fido_dev_t *dev, const char *application, const uint8_t *user_id, key_lookup(fido_dev_t *dev, const char *application, const uint8_t *user_id,
size_t user_id_len, const char *pin) size_t user_id_len, const char *pin)
{ {
fido_assert_t *assert = NULL; #ifdef HAVE_FIDO_DEV_IS_WINHELLO
return FIDO_OK;
#else
fido_assert_t* assert = NULL;
uint8_t message[32]; uint8_t message[32];
int r = FIDO_ERR_INTERNAL; int r = FIDO_ERR_INTERNAL;
int sk_supports_uv, uv; int sk_supports_uv, uv;
@ -815,12 +818,10 @@ key_lookup(fido_dev_t *dev, const char *application, const uint8_t *user_id,
skdebug(__func__, "fido_assert_set_uv: %s", fido_strerr(r)); skdebug(__func__, "fido_assert_set_uv: %s", fido_strerr(r));
goto out; goto out;
} }
#ifndef WINDOWS
if ((r = fido_dev_get_assert(dev, assert, pin)) != FIDO_OK) { if ((r = fido_dev_get_assert(dev, assert, pin)) != FIDO_OK) {
skdebug(__func__, "fido_dev_get_assert: %s", fido_strerr(r)); skdebug(__func__, "fido_dev_get_assert: %s", fido_strerr(r));
goto out; goto out;
} }
#endif
r = FIDO_ERR_NO_CREDENTIALS; r = FIDO_ERR_NO_CREDENTIALS;
skdebug(__func__, "%zu signatures returned", fido_assert_count(assert)); skdebug(__func__, "%zu signatures returned", fido_assert_count(assert));
for (i = 0; i < fido_assert_count(assert); i++) { for (i = 0; i < fido_assert_count(assert); i++) {
@ -832,10 +833,11 @@ key_lookup(fido_dev_t *dev, const char *application, const uint8_t *user_id,
goto out; goto out;
} }
} }
out: out:
fido_assert_free(&assert); fido_assert_free(&assert);
return r; return r;
#endif /* HAVE_FIDO_DEV_IS_WINHELLO */
} }
int int