CVS commit: src/external/bsd/libfido2
Module Name:src Committed By: christos Date: Fri Jun 18 13:57:52 UTC 2021 Modified Files: src/external/bsd/libfido2: Makefile.inc src/external/bsd/libfido2/bin: Makefile.inc src/external/bsd/libfido2/lib: Makefile Log Message: fix sun2 build To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/external/bsd/libfido2/Makefile.inc cvs rdiff -u -r1.2 -r1.3 src/external/bsd/libfido2/bin/Makefile.inc cvs rdiff -u -r1.6 -r1.7 src/external/bsd/libfido2/lib/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/bsd/libfido2/Makefile.inc diff -u src/external/bsd/libfido2/Makefile.inc:1.3 src/external/bsd/libfido2/Makefile.inc:1.4 --- src/external/bsd/libfido2/Makefile.inc:1.3 Wed Jun 16 21:15:44 2021 +++ src/external/bsd/libfido2/Makefile.inc Fri Jun 18 09:57:52 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.3 2021/06/17 01:15:44 christos Exp $ +# $NetBSD: Makefile.inc,v 1.4 2021/06/18 13:57:52 christos Exp $ DIST:=${.PARSEDIR}/dist @@ -13,6 +13,3 @@ FIDO_VERSION=${FIDO_MAJOR}.${FIDO_MINOR} CPPFLAGS+=-D_FIDO_MAJOR=${FIDO_MAJOR} -D_FIDO_MINOR=${FIDO_MINOR} CPPFLAGS+=-D_FIDO_PATCH=${FIDO_PATCH} CPPFLAGS+=-DHAVE_UNISTD_H -DHAVE_ARC4RANDOM_BUF -DHAVE_TIMESPECSUB - -LDFLAGS+=-lz -DPFLAGS+=${LIBZ} Index: src/external/bsd/libfido2/bin/Makefile.inc diff -u src/external/bsd/libfido2/bin/Makefile.inc:1.2 src/external/bsd/libfido2/bin/Makefile.inc:1.3 --- src/external/bsd/libfido2/bin/Makefile.inc:1.2 Wed Mar 4 12:31:08 2020 +++ src/external/bsd/libfido2/bin/Makefile.inc Fri Jun 18 09:57:52 2021 @@ -1,8 +1,8 @@ -# $NetBSD: Makefile.inc,v 1.2 2020/03/04 17:31:08 christos Exp $ +# $NetBSD: Makefile.inc,v 1.3 2021/06/18 13:57:52 christos Exp $ .include "${.PARSEDIR}/../Makefile.inc" .PATH: ${DIST}/tools ${DIST}/man ${DIST}/openbsd-compat -LDADD+=-lfido2 -lcbor -lusbhid -lcrypto -lm -DPADD+=${LIBFIDO2} ${LIBCBOR} ${LIBUSBHID} ${LIBCRYPTO} ${LIBM} +LDADD+=-lfido2 -lcbor -lusbhid -lcrypto -lz -lm +DPADD+=${LIBFIDO2} ${LIBCBOR} ${LIBUSBHID} ${LIBCRYPTO} ${LIBZ} ${LIBM} Index: src/external/bsd/libfido2/lib/Makefile diff -u src/external/bsd/libfido2/lib/Makefile:1.6 src/external/bsd/libfido2/lib/Makefile:1.7 --- src/external/bsd/libfido2/lib/Makefile:1.6 Thu Jun 17 08:38:53 2021 +++ src/external/bsd/libfido2/lib/Makefile Fri Jun 18 09:57:52 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.6 2021/06/17 12:38:53 christos Exp $ +# $NetBSD: Makefile,v 1.7 2021/06/18 13:57:52 christos Exp $ NOLINT= .include @@ -8,8 +8,8 @@ NOLINT= CPPFLAGS+= -D_FIDO_INTERNAL -I${DIST}/src -LDADD+=-lusbhid -lcbor -DPADD+=${LIBUSBHID} ${LIBCBOR} +LDADD+=-lusbhid -lcbor -lz +DPADD+=${LIBUSBHID} ${LIBCBOR} ${LIBZ} LDFLAGS+=-Wl,--version-script=${DIST}/src/export.gnu
CVS commit: src/external/bsd/libfido2/dist/src
Module Name:src Committed By: christos Date: Thu Jun 17 12:53:43 UTC 2021 Modified Files: src/external/bsd/libfido2/dist/src: hid_netbsd.c Log Message: replace our merged version with upstream. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/external/bsd/libfido2/dist/src/hid_netbsd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/bsd/libfido2/dist/src/hid_netbsd.c diff -u src/external/bsd/libfido2/dist/src/hid_netbsd.c:1.2 src/external/bsd/libfido2/dist/src/hid_netbsd.c:1.3 --- src/external/bsd/libfido2/dist/src/hid_netbsd.c:1.2 Wed Jun 16 21:15:46 2021 +++ src/external/bsd/libfido2/dist/src/hid_netbsd.c Thu Jun 17 08:53:43 2021 @@ -11,23 +11,22 @@ #include #include -#include #include +#include #include #include #include #include #include -#include #include "fido.h" #define MAX_UHID 64 struct hid_netbsd { - int fd; - size_t report_in_len; - size_t report_out_len; + int fd; + size_t report_in_len; + size_t report_out_len; sigset_tsigmask; const sigset_t *sigmaskp; }; @@ -41,47 +40,39 @@ struct hid_netbsd { static bool is_fido(int fd) { - report_desc_t rdesc; - hid_data_t hdata; - hid_item_t hitem; - boolisfido; + struct usb_ctl_report_desc ucrd; + uint32_t usage_page = 0; intraw = 1; - if ((rdesc = hid_get_report_desc(fd)) == NULL) { - fido_log_debug("%s: failed to get report descriptor", - __func__); + memset(, 0, sizeof(ucrd)); + + if (ioctl(fd, IOCTL_REQ(USB_GET_REPORT_DESC), ) == -1) { + fido_log_error(errno, "%s: ioctl", __func__); return (false); } - if ((hdata = hid_start_parse(rdesc, 1 << hid_collection, -1)) - == NULL) { - fido_log_debug("%s: failed to parse report descriptor", - __func__); - hid_dispose_report_desc(rdesc); + + if (ucrd.ucrd_size < 0 || + (size_t)ucrd.ucrd_size > sizeof(ucrd.ucrd_data) || + fido_hid_get_usage(ucrd.ucrd_data, (size_t)ucrd.ucrd_size, + _page) < 0) { + fido_log_debug("%s: fido_hid_get_usage", __func__); return (false); } - isfido = false; - while ((hid_get_item(hdata, )) > 0) { - if (HID_PAGE(hitem.usage) == 0xf1d0) { - isfido = true; - break; - } - } - hid_end_parse(hdata); - hid_dispose_report_desc(rdesc); - if (!isfido) + + if (usage_page != 0xf1d0) return (false); -/* + /* * This step is not strictly necessary -- NetBSD puts fido - * devices into raw mode automatically by default, but in - * principle that might change, and this serves as a test to - * verify that we're running on a kernel with support for raw - * mode at all so we don't get confused issuing writes that try - * to set the report descriptor rather than transfer data on - * the output interrupt pipe as we need. + * devices into raw mode automatically by default, but in + * principle that might change, and this serves as a test to + * verify that we're running on a kernel with support for raw + * mode at all so we don't get confused issuing writes that try + * to set the report descriptor rather than transfer data on + * the output interrupt pipe as we need. */ - if (ioctl(fd, USB_HID_SET_RAW, ) == -1) { - fido_log_debug("%s: unable to set raw", __func__); + if (ioctl(fd, IOCTL_REQ(USB_HID_SET_RAW), ) == -1) { + fido_log_error(errno, "%s: unable to set raw", __func__); return (false); } @@ -98,17 +89,13 @@ copy_info(fido_dev_info_t *di, const cha memset(di, 0, sizeof(*di)); memset(, 0, sizeof(udi)); - if ((fd = open(path, O_RDWR)) == -1) { - if (errno != EBUSY && errno != ENOENT) - fido_log_debug("%s: open %s: %s", __func__, path, - strerror(errno)); - goto fail; - } - if (!is_fido(fd)) + if ((fd = fido_hid_unix_open(path)) == -1 || is_fido(fd) == 0) goto fail; - if (ioctl(fd, USB_GET_DEVICEINFO, ) == -1) + if (ioctl(fd, IOCTL_REQ(USB_GET_DEVICEINFO), ) == -1) { + fido_log_error(errno, "%s: ioctl", __func__); goto fail; + } if ((di->path = strdup(path)) == NULL || (di->manufacturer = strdup(udi.udi_vendor)) == NULL || @@ -120,8 +107,8 @@ copy_info(fido_dev_info_t *di, const cha ok = 0; fail: - if (fd != -1) - close(fd); + if (fd != -1 && close(fd) == -1) + fido_log_error(errno, "%s: close", __func__); if (ok < 0) { free(di->path); @@ -198,7 +185,7 @@ terrible_ping_kludge(struct hid_netbsd * pfd.fd = ctx->fd; pfd.events = POLLIN; if ((n = poll(, 1, 100)) == -1) { - fido_log_debug("%s: poll: %d", __func__, errno); + fido_log_error(errno, "%s: poll", __func__); return -1; } else if (n == 0) { fido_log_debug("%s: timed out", __func__); @@ -223,58 +210,40 @@ void * fido_hid_open(const char *path) { struct hid_netbsd *ctx; - report_desc_t rdesc = NULL; - hid_data_t hdata; - intlen, report_id = 0; - - if ((ctx = calloc(1, sizeof(*ctx))) == NULL) - goto
CVS commit: src/external/bsd/libfido2/lib
Module Name:src Committed By: christos Date: Thu Jun 17 12:38:53 UTC 2021 Modified Files: src/external/bsd/libfido2/lib: Makefile Removed Files: src/external/bsd/libfido2/lib: fido2.map Log Message: use the linker script provided by the package To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/external/bsd/libfido2/lib/Makefile cvs rdiff -u -r1.3 -r0 src/external/bsd/libfido2/lib/fido2.map Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/bsd/libfido2/lib/Makefile diff -u src/external/bsd/libfido2/lib/Makefile:1.5 src/external/bsd/libfido2/lib/Makefile:1.6 --- src/external/bsd/libfido2/lib/Makefile:1.5 Thu Jun 17 02:20:56 2021 +++ src/external/bsd/libfido2/lib/Makefile Thu Jun 17 08:38:53 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.5 2021/06/17 06:20:56 rin Exp $ +# $NetBSD: Makefile,v 1.6 2021/06/17 12:38:53 christos Exp $ NOLINT= .include @@ -11,7 +11,7 @@ CPPFLAGS+= -D_FIDO_INTERNAL -I${DIST}/sr LDADD+=-lusbhid -lcbor DPADD+=${LIBUSBHID} ${LIBCBOR} -LDFLAGS+=-Wl,--version-script=${.CURDIR}/fido2.map +LDFLAGS+=-Wl,--version-script=${DIST}/src/export.gnu LIB=fido2
CVS commit: src/external/bsd/libfido2/lib
Module Name:src Committed By: rin Date: Thu Jun 17 06:20:56 UTC 2021 Modified Files: src/external/bsd/libfido2/lib: Makefile Log Message: Unbreak build; new libfido2 requires OpenBSD-compatible freezero(). To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/external/bsd/libfido2/lib/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/bsd/libfido2/lib/Makefile diff -u src/external/bsd/libfido2/lib/Makefile:1.4 src/external/bsd/libfido2/lib/Makefile:1.5 --- src/external/bsd/libfido2/lib/Makefile:1.4 Thu Jun 17 01:15:46 2021 +++ src/external/bsd/libfido2/lib/Makefile Thu Jun 17 06:20:56 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.4 2021/06/17 01:15:46 christos Exp $ +# $NetBSD: Makefile,v 1.5 2021/06/17 06:20:56 rin Exp $ NOLINT= .include @@ -48,6 +48,7 @@ u2f.c SRCS+= \ explicit_bzero.c \ +freezero.c \ recallocarray.c \ timingsafe_bcmp.c
CVS commit: src/external/bsd/libfido2
Module Name:src Committed By: christos Date: Thu Jun 17 01:15:46 UTC 2021 Modified Files: src/external/bsd/libfido2: Makefile.inc src/external/bsd/libfido2/bin/fido2-assert: Makefile src/external/bsd/libfido2/bin/fido2-cred: Makefile src/external/bsd/libfido2/bin/fido2-token: Makefile src/external/bsd/libfido2/dist/src: hid_netbsd.c src/external/bsd/libfido2/dist/tools: util.c src/external/bsd/libfido2/lib: Makefile fido2.map Removed Files: src/external/bsd/libfido2/dist: .travis.yml x xx src/external/bsd/libfido2/dist/.github/workflows: scan.yml windows.yml src/external/bsd/libfido2/dist/.travis: build-linux-clang build-linux-gcc build-linux-mingw build-osx-clang fuzz-linux-asan fuzz-linux-msan src/external/bsd/libfido2/dist/debian: changelog compat control copyright fido2-tools.install fido2-tools.manpages libfido2-1.install libfido2-1.symbols libfido2-dev.install libfido2-dev.links libfido2-dev.manpages libfido2-udev.install rules src/external/bsd/libfido2/dist/debian/source: format src/external/bsd/libfido2/dist/docker/bionic: Dockerfile src/external/bsd/libfido2/dist/fuzz: corpus.tgz src/external/bsd/libfido2/dist/openbsd-compat: diff.sh src/external/bsd/libfido2/dist/tools: macos_pkg.sh Log Message: merge conflicts and update between libfido 1.5.0 and 1.7.0 To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/external/bsd/libfido2/Makefile.inc cvs rdiff -u -r1.1 -r1.2 src/external/bsd/libfido2/bin/fido2-assert/Makefile cvs rdiff -u -r1.1 -r1.2 src/external/bsd/libfido2/bin/fido2-cred/Makefile cvs rdiff -u -r1.1 -r1.2 src/external/bsd/libfido2/bin/fido2-token/Makefile cvs rdiff -u -r1.1.1.1 -r0 src/external/bsd/libfido2/dist/.travis.yml \ src/external/bsd/libfido2/dist/x src/external/bsd/libfido2/dist/xx cvs rdiff -u -r1.1.1.1 -r0 \ src/external/bsd/libfido2/dist/.github/workflows/scan.yml \ src/external/bsd/libfido2/dist/.github/workflows/windows.yml cvs rdiff -u -r1.1.1.1 -r0 \ src/external/bsd/libfido2/dist/.travis/build-linux-clang \ src/external/bsd/libfido2/dist/.travis/build-linux-gcc \ src/external/bsd/libfido2/dist/.travis/build-linux-mingw \ src/external/bsd/libfido2/dist/.travis/build-osx-clang \ src/external/bsd/libfido2/dist/.travis/fuzz-linux-asan \ src/external/bsd/libfido2/dist/.travis/fuzz-linux-msan cvs rdiff -u -r1.1.1.1 -r0 src/external/bsd/libfido2/dist/debian/changelog \ src/external/bsd/libfido2/dist/debian/compat \ src/external/bsd/libfido2/dist/debian/control \ src/external/bsd/libfido2/dist/debian/copyright \ src/external/bsd/libfido2/dist/debian/fido2-tools.install \ src/external/bsd/libfido2/dist/debian/fido2-tools.manpages \ src/external/bsd/libfido2/dist/debian/libfido2-1.install \ src/external/bsd/libfido2/dist/debian/libfido2-1.symbols \ src/external/bsd/libfido2/dist/debian/libfido2-dev.install \ src/external/bsd/libfido2/dist/debian/libfido2-dev.links \ src/external/bsd/libfido2/dist/debian/libfido2-dev.manpages \ src/external/bsd/libfido2/dist/debian/libfido2-udev.install \ src/external/bsd/libfido2/dist/debian/rules cvs rdiff -u -r1.1.1.1 -r0 \ src/external/bsd/libfido2/dist/debian/source/format cvs rdiff -u -r1.1.1.1 -r0 \ src/external/bsd/libfido2/dist/docker/bionic/Dockerfile cvs rdiff -u -r1.1.1.1 -r0 src/external/bsd/libfido2/dist/fuzz/corpus.tgz cvs rdiff -u -r1.1.1.1 -r0 \ src/external/bsd/libfido2/dist/openbsd-compat/diff.sh cvs rdiff -u -r1.1 -r1.2 src/external/bsd/libfido2/dist/src/hid_netbsd.c cvs rdiff -u -r1.1.1.1 -r0 src/external/bsd/libfido2/dist/tools/macos_pkg.sh cvs rdiff -u -r1.1.1.3 -r1.2 src/external/bsd/libfido2/dist/tools/util.c cvs rdiff -u -r1.3 -r1.4 src/external/bsd/libfido2/lib/Makefile cvs rdiff -u -r1.2 -r1.3 src/external/bsd/libfido2/lib/fido2.map Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/bsd/libfido2/Makefile.inc diff -u src/external/bsd/libfido2/Makefile.inc:1.2 src/external/bsd/libfido2/Makefile.inc:1.3 --- src/external/bsd/libfido2/Makefile.inc:1.2 Fri Dec 4 13:27:44 2020 +++ src/external/bsd/libfido2/Makefile.inc Wed Jun 16 21:15:44 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.2 2020/12/04 18:27:44 christos Exp $ +# $NetBSD: Makefile.inc,v 1.3 2021/06/17 01:15:44 christos Exp $ DIST:=${.PARSEDIR}/dist @@ -13,3 +13,6 @@ FIDO_VERSION=${FIDO_MAJOR}.${FIDO_MINOR} CPPFLAGS+=-D_FIDO_MAJOR=${FIDO_MAJOR} -D_FIDO_MINOR=${FIDO_MINOR} CPPFLAGS+=-D_FIDO_PATCH=${FIDO_PATCH} CPPFLAGS+=-DHAVE_UNISTD_H -DHAVE_ARC4RANDOM_BUF -DHAVE_TIMESPECSUB + +LDFLAGS+=-lz +DPFLAGS+=${LIBZ} Index: src/external/bsd/libfido2/bin/fido2-assert/Makefile diff -u src/external/bsd/libfido2/bin/fido2-assert/Makefile:1.1
CVS commit: src/external/bsd/libfido2/lib
Module Name:src Committed By: christos Date: Sat Dec 12 18:45:12 UTC 2020 Modified Files: src/external/bsd/libfido2/lib: Makefile Log Message: Use the NetBSD-specific back-end. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/external/bsd/libfido2/lib/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/bsd/libfido2/lib/Makefile diff -u src/external/bsd/libfido2/lib/Makefile:1.2 src/external/bsd/libfido2/lib/Makefile:1.3 --- src/external/bsd/libfido2/lib/Makefile:1.2 Fri Dec 4 13:27:44 2020 +++ src/external/bsd/libfido2/lib/Makefile Sat Dec 12 13:45:11 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.2 2020/12/04 18:27:44 christos Exp $ +# $NetBSD: Makefile,v 1.3 2020/12/12 18:45:11 christos Exp $ NOLINT= .include @@ -31,7 +31,7 @@ eddsa.c \ err.c \ es256.c \ hid.c \ -hid_openbsd.c \ +hid_netbsd.c \ info.c \ io.c \ iso7816.c \
CVS commit: src/external/bsd/libfido2/dist/src
Module Name:src Committed By: christos Date: Sat Dec 12 18:44:38 UTC 2020 Added Files: src/external/bsd/libfido2/dist/src: hid_netbsd.c Log Message: Add a NetBSD-specific back-end. (riastradh@) To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/external/bsd/libfido2/dist/src/hid_netbsd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/external/bsd/libfido2/dist/src/hid_netbsd.c diff -u /dev/null src/external/bsd/libfido2/dist/src/hid_netbsd.c:1.1 --- /dev/null Sat Dec 12 13:44:38 2020 +++ src/external/bsd/libfido2/dist/src/hid_netbsd.c Sat Dec 12 13:44:38 2020 @@ -0,0 +1,423 @@ +/* + * Copyright (c) 2020 Yubico AB. All rights reserved. + * Use of this source code is governed by a BSD-style + * license that can be found in the LICENSE file. + */ + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "fido.h" + +#define MAX_UHID 64 + +struct hid_netbsd { + int fd; + size_t report_in_len; + size_t report_out_len; +}; + +/* Hack to make this work with newer kernels even if /usr/include is old. */ +#if __NetBSD_Version__ < 90100 /* 9.1 */ +#define USB_HID_GET_RAW _IOR('h', 1, int) +#define USB_HID_SET_RAW _IOW('h', 2, int) +#endif + +static bool +is_fido(int fd) +{ + report_desc_t rdesc; + hid_data_t hdata; + hid_item_t hitem; + boolisfido; + intraw = 1; + + if ((rdesc = hid_get_report_desc(fd)) == NULL) { + fido_log_debug("%s: failed to get report descriptor", + __func__); + return (false); + } + if ((hdata = hid_start_parse(rdesc, 1 << hid_collection, -1)) + == NULL) { + fido_log_debug("%s: failed to parse report descriptor", + __func__); + hid_dispose_report_desc(rdesc); + return (false); + } + isfido = false; + while ((hid_get_item(hdata, )) > 0) { + if (HID_PAGE(hitem.usage) == 0xf1d0) { + isfido = true; + break; + } + } + hid_end_parse(hdata); + hid_dispose_report_desc(rdesc); + if (!isfido) + return (false); + +/* + * This step is not strictly necessary -- NetBSD puts fido + * devices into raw mode automatically by default, but in + * principle that might change, and this serves as a test to + * verify that we're running on a kernel with support for raw + * mode at all so we don't get confused issuing writes that try + * to set the report descriptor rather than transfer data on + * the output interrupt pipe as we need. + */ + if (ioctl(fd, USB_HID_SET_RAW, ) == -1) { + fido_log_debug("%s: unable to set raw", __func__); + return (false); + } + + return (true); +} + +static int +copy_info(fido_dev_info_t *di, const char *path) +{ + int fd = -1; + int ok = -1; + struct usb_device_info udi; + + memset(di, 0, sizeof(*di)); + memset(, 0, sizeof(udi)); + + if ((fd = open(path, O_RDWR)) == -1) { + if (errno != EBUSY && errno != ENOENT) + fido_log_debug("%s: open %s: %s", __func__, path, + strerror(errno)); + goto fail; + } + if (!is_fido(fd)) + goto fail; + + if (ioctl(fd, USB_GET_DEVICEINFO, ) == -1) + goto fail; + + if ((di->path = strdup(path)) == NULL || + (di->manufacturer = strdup(udi.udi_vendor)) == NULL || + (di->product = strdup(udi.udi_product)) == NULL) + goto fail; + + di->vendor_id = (int16_t)udi.udi_vendorNo; + di->product_id = (int16_t)udi.udi_productNo; + + ok = 0; +fail: + if (fd != -1) + close(fd); + + if (ok < 0) { + free(di->path); + free(di->manufacturer); + free(di->product); + explicit_bzero(di, sizeof(*di)); + } + + return (ok); +} + +int +fido_hid_manifest(fido_dev_info_t *devlist, size_t ilen, size_t *olen) +{ + char path[64]; + size_t i; + + *olen = 0; + + if (ilen == 0) + return (FIDO_OK); /* nothing to do */ + + if (devlist == NULL || olen == NULL) + return (FIDO_ERR_INVALID_ARGUMENT); + + for (i = *olen = 0; i < MAX_UHID && *olen < ilen; i++) { + snprintf(path, sizeof(path), "/dev/uhid%zu", i); + if (copy_info([*olen], path) == 0) { + devlist[*olen].io = (fido_dev_io_t) { +fido_hid_open, +fido_hid_close, +fido_hid_read, +fido_hid_write, + }; + ++(*olen); + } + } + + return (FIDO_OK); +} + +/* + * Workaround for NetBSD (as of 201910) bug that loses + * sync of DATA0/DATA1 sequence bit across uhid open/close. + * Send pings until we get a response - early pings with incorrect + * sequence bits will be ignored as duplicate packets by the device. + */ +static int +terrible_ping_kludge(struct hid_netbsd *ctx) +{ + u_char data[256]; + int i, n; + struct pollfd pfd; + + if (sizeof(data) < ctx->report_out_len + 1) + return -1; + for (i = 0; i < 4; i++) { + memset(data, 0, sizeof(data)); + /* broadcast channel ID */ + data[1] = 0xff; + data[2] = 0xff; + data[3] = 0xff; + data[4] = 0xff; + /* Ping command */ + data[5] = 0x81; + /* One byte ping only, Vasili */ + data[6] = 0; + data[7] = 1;
CVS commit: src/external/bsd/libfido2
Module Name:src Committed By: christos Date: Fri Dec 4 18:27:44 UTC 2020 Modified Files: src/external/bsd/libfido2: Makefile.inc src/external/bsd/libfido2/lib: Makefile fido2.map Log Message: merge changes To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/external/bsd/libfido2/Makefile.inc cvs rdiff -u -r1.1 -r1.2 src/external/bsd/libfido2/lib/Makefile \ src/external/bsd/libfido2/lib/fido2.map Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/bsd/libfido2/Makefile.inc diff -u src/external/bsd/libfido2/Makefile.inc:1.1 src/external/bsd/libfido2/Makefile.inc:1.2 --- src/external/bsd/libfido2/Makefile.inc:1.1 Mon Mar 2 19:14:17 2020 +++ src/external/bsd/libfido2/Makefile.inc Fri Dec 4 13:27:44 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.1 2020/03/03 00:14:17 christos Exp $ +# $NetBSD: Makefile.inc,v 1.2 2020/12/04 18:27:44 christos Exp $ DIST:=${.PARSEDIR}/dist @@ -12,4 +12,4 @@ FIDO_VERSION=${FIDO_MAJOR}.${FIDO_MINOR} CPPFLAGS+=-D_FIDO_MAJOR=${FIDO_MAJOR} -D_FIDO_MINOR=${FIDO_MINOR} CPPFLAGS+=-D_FIDO_PATCH=${FIDO_PATCH} -CPPFLAGS+=-DHAVE_UNISTD_H +CPPFLAGS+=-DHAVE_UNISTD_H -DHAVE_ARC4RANDOM_BUF -DHAVE_TIMESPECSUB Index: src/external/bsd/libfido2/lib/Makefile diff -u src/external/bsd/libfido2/lib/Makefile:1.1 src/external/bsd/libfido2/lib/Makefile:1.2 --- src/external/bsd/libfido2/lib/Makefile:1.1 Mon Mar 2 19:14:17 2020 +++ src/external/bsd/libfido2/lib/Makefile Fri Dec 4 13:27:44 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.1 2020/03/03 00:14:17 christos Exp $ +# $NetBSD: Makefile,v 1.2 2020/12/04 18:27:44 christos Exp $ NOLINT= .include @@ -6,7 +6,7 @@ NOLINT= .PATH: ${DIST}/src ${DIST}/man ${DIST}/openbsd-compat -CPPFLAGS+= -DHAVE_ARC4RANDOM_BUF -D_FIDO_INTERNAL -I${DIST}/src +CPPFLAGS+= -D_FIDO_INTERNAL -I${DIST}/src LDADD+=-lusbhid -lcbor DPADD+=${LIBUSBHID} ${LIBCBOR} @@ -77,6 +77,7 @@ fido_cred_set_authdata.3 \ fido_cred_verify.3 \ fido_credman_metadata_new.3 \ fido_dev_get_assert.3 \ +fido_dev_get_touch_begin.3 \ fido_dev_info_manifest.3 \ fido_dev_make_cred.3 \ fido_dev_open.3 \ @@ -87,7 +88,7 @@ fido_strerr.3 \ rs256_pk_new.3 SHLIB_MAJOR=2 -SHLIB_MINOR=0 +SHLIB_MINOR=1 .SUFFIXES: .in .in: Index: src/external/bsd/libfido2/lib/fido2.map diff -u src/external/bsd/libfido2/lib/fido2.map:1.1 src/external/bsd/libfido2/lib/fido2.map:1.2 --- src/external/bsd/libfido2/lib/fido2.map:1.1 Mon Mar 2 19:14:17 2020 +++ src/external/bsd/libfido2/lib/fido2.map Fri Dec 4 13:27:44 2020 @@ -35,9 +35,9 @@ FIDO_2_0 { fido_assert_set_sig; fido_assert_set_up; fido_assert_set_uv; - fido_assert_sigcount; fido_assert_sig_len; fido_assert_sig_ptr; + fido_assert_sigcount; fido_assert_user_display_name; fido_assert_user_icon; fido_assert_user_id_len; @@ -75,6 +75,9 @@ FIDO_2_0 { fido_cbor_info_extensions_len; fido_cbor_info_extensions_ptr; fido_cbor_info_free; + fido_cbor_info_fwversion; + fido_cbor_info_maxcredcntlst; + fido_cbor_info_maxcredidlen; fido_cbor_info_maxmsgsiz; fido_cbor_info_new; fido_cbor_info_options_len; @@ -84,6 +87,8 @@ FIDO_2_0 { fido_cbor_info_protocols_ptr; fido_cbor_info_versions_len; fido_cbor_info_versions_ptr; + fido_cred_aaguid_len; + fido_cred_aaguid_ptr; fido_cred_authdata_len; fido_cred_authdata_ptr; fido_cred_clientdata_hash_len; @@ -95,25 +100,6 @@ FIDO_2_0 { fido_cred_free; fido_cred_id_len; fido_cred_id_ptr; - fido_credman_del_dev_rk; - fido_credman_get_dev_metadata; - fido_credman_get_dev_rk; - fido_credman_get_dev_rp; - fido_credman_metadata_free; - fido_credman_metadata_new; - fido_credman_rk; - fido_credman_rk_count; - fido_credman_rk_existing; - fido_credman_rk_free; - fido_credman_rk_new; - fido_credman_rk_remaining; - fido_credman_rp_count; - fido_credman_rp_free; - fido_credman_rp_id; - fido_credman_rp_id_hash_len; - fido_credman_rp_id_hash_ptr; - fido_credman_rp_name; - fido_credman_rp_new; fido_cred_new; fido_cred_prot; fido_cred_pubkey_len; @@ -144,6 +130,25 @@ FIDO_2_0 { fido_cred_verify_self; fido_cred_x5c_len; fido_cred_x5c_ptr; + fido_credman_del_dev_rk; + fido_credman_get_dev_metadata; + fido_credman_get_dev_rk; + fido_credman_get_dev_rp; + fido_credman_metadata_free; + fido_credman_metadata_new; + fido_credman_rk; + fido_credman_rk_count; + fido_credman_rk_existing; + fido_credman_rk_free; + fido_credman_rk_new; + fido_credman_rk_remaining; + fido_credman_rp_count; + fido_credman_rp_free; + fido_credman_rp_id; + fido_credman_rp_id_hash_len; + fido_credman_rp_id_hash_ptr; + fido_credman_rp_name; + fido_credman_rp_new; fido_dev_build; fido_dev_cancel; fido_dev_close; @@ -154,6 +159,8 @@ FIDO_2_0 { fido_dev_get_assert; fido_dev_get_cbor_info; fido_dev_get_retry_count; + fido_dev_get_touch_begin; + fido_dev_get_touch_status; fido_dev_info_free; fido_dev_info_manifest; fido_dev_info_manufacturer_string;
CVS commit: src/external/bsd/libfido2/bin
Module Name:src Committed By: christos Date: Wed Mar 4 17:31:08 UTC 2020 Modified Files: src/external/bsd/libfido2/bin: Makefile.inc Log Message: add a libm dependency To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/external/bsd/libfido2/bin/Makefile.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/bsd/libfido2/bin/Makefile.inc diff -u src/external/bsd/libfido2/bin/Makefile.inc:1.1 src/external/bsd/libfido2/bin/Makefile.inc:1.2 --- src/external/bsd/libfido2/bin/Makefile.inc:1.1 Mon Mar 2 19:14:17 2020 +++ src/external/bsd/libfido2/bin/Makefile.inc Wed Mar 4 12:31:08 2020 @@ -1,8 +1,8 @@ -# $NetBSD: Makefile.inc,v 1.1 2020/03/03 00:14:17 christos Exp $ +# $NetBSD: Makefile.inc,v 1.2 2020/03/04 17:31:08 christos Exp $ .include "${.PARSEDIR}/../Makefile.inc" .PATH: ${DIST}/tools ${DIST}/man ${DIST}/openbsd-compat -LDADD+=-lfido2 -lcbor -lusbhid -lcrypto -DPADD+=${LIBFIDO2} ${LIBCBOR} ${LIBUSBHID} ${LIBCRYPTO} +LDADD+=-lfido2 -lcbor -lusbhid -lcrypto -lm +DPADD+=${LIBFIDO2} ${LIBCBOR} ${LIBUSBHID} ${LIBCRYPTO} ${LIBM}
CVS commit: src/external/bsd/libfido2
Module Name:src Committed By: christos Date: Tue Mar 3 00:14:18 UTC 2020 Added Files: src/external/bsd/libfido2: Makefile Makefile.inc src/external/bsd/libfido2/bin: Makefile Makefile.inc src/external/bsd/libfido2/bin/fido2-assert: Makefile src/external/bsd/libfido2/bin/fido2-cred: Makefile src/external/bsd/libfido2/bin/fido2-token: Makefile src/external/bsd/libfido2/lib: Makefile fido2.map Log Message: Add build glue To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/external/bsd/libfido2/Makefile \ src/external/bsd/libfido2/Makefile.inc cvs rdiff -u -r0 -r1.1 src/external/bsd/libfido2/bin/Makefile \ src/external/bsd/libfido2/bin/Makefile.inc cvs rdiff -u -r0 -r1.1 src/external/bsd/libfido2/bin/fido2-assert/Makefile cvs rdiff -u -r0 -r1.1 src/external/bsd/libfido2/bin/fido2-cred/Makefile cvs rdiff -u -r0 -r1.1 src/external/bsd/libfido2/bin/fido2-token/Makefile cvs rdiff -u -r0 -r1.1 src/external/bsd/libfido2/lib/Makefile \ src/external/bsd/libfido2/lib/fido2.map Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/external/bsd/libfido2/Makefile diff -u /dev/null src/external/bsd/libfido2/Makefile:1.1 --- /dev/null Mon Mar 2 19:14:18 2020 +++ src/external/bsd/libfido2/Makefile Mon Mar 2 19:14:17 2020 @@ -0,0 +1,7 @@ +# $NetBSD: Makefile,v 1.1 2020/03/03 00:14:17 christos Exp $ + +.include + +SUBDIR= lib .WAIT bin + +.include Index: src/external/bsd/libfido2/Makefile.inc diff -u /dev/null src/external/bsd/libfido2/Makefile.inc:1.1 --- /dev/null Mon Mar 2 19:14:18 2020 +++ src/external/bsd/libfido2/Makefile.inc Mon Mar 2 19:14:17 2020 @@ -0,0 +1,15 @@ +# $NetBSD: Makefile.inc,v 1.1 2020/03/03 00:14:17 christos Exp $ + +DIST:=${.PARSEDIR}/dist + +VERS_FILE=${DIST}/CMakeLists.txt + +.for i in MAJOR MINOR PATCH +FIDO_${i} != \ +${TOOL_SED} -ne '/FIDO_${i}/s/.*"\([0-9]*\)")$$/\1/p' ${VERS_FILE} +.endfor +FIDO_VERSION=${FIDO_MAJOR}.${FIDO_MINOR}.${FIDO_PATCH} + +CPPFLAGS+=-D_FIDO_MAJOR=${FIDO_MAJOR} -D_FIDO_MINOR=${FIDO_MINOR} +CPPFLAGS+=-D_FIDO_PATCH=${FIDO_PATCH} +CPPFLAGS+=-DHAVE_UNISTD_H Index: src/external/bsd/libfido2/bin/Makefile diff -u /dev/null src/external/bsd/libfido2/bin/Makefile:1.1 --- /dev/null Mon Mar 2 19:14:18 2020 +++ src/external/bsd/libfido2/bin/Makefile Mon Mar 2 19:14:17 2020 @@ -0,0 +1,7 @@ +# $NetBSD: Makefile,v 1.1 2020/03/03 00:14:17 christos Exp $ + +.include + +SUBDIR= fido2-assert fido2-cred fido2-token + +.include Index: src/external/bsd/libfido2/bin/Makefile.inc diff -u /dev/null src/external/bsd/libfido2/bin/Makefile.inc:1.1 --- /dev/null Mon Mar 2 19:14:18 2020 +++ src/external/bsd/libfido2/bin/Makefile.inc Mon Mar 2 19:14:17 2020 @@ -0,0 +1,8 @@ +# $NetBSD: Makefile.inc,v 1.1 2020/03/03 00:14:17 christos Exp $ + +.include "${.PARSEDIR}/../Makefile.inc" + +.PATH: ${DIST}/tools ${DIST}/man ${DIST}/openbsd-compat + +LDADD+=-lfido2 -lcbor -lusbhid -lcrypto +DPADD+=${LIBFIDO2} ${LIBCBOR} ${LIBUSBHID} ${LIBCRYPTO} Index: src/external/bsd/libfido2/bin/fido2-assert/Makefile diff -u /dev/null src/external/bsd/libfido2/bin/fido2-assert/Makefile:1.1 --- /dev/null Mon Mar 2 19:14:18 2020 +++ src/external/bsd/libfido2/bin/fido2-assert/Makefile Mon Mar 2 19:14:17 2020 @@ -0,0 +1,24 @@ +# $NetBSD: Makefile,v 1.1 2020/03/03 00:14:17 christos Exp $ + +.include + +BINDIR=/usr/bin + +PROG= fido2-assert +SRCS+=\ +assert_get.c \ +assert_verify.c \ +fido2-assert.c \ +base64.c \ +bio.c \ +credman.c \ +pin.c \ +token.c \ +util.c + +SRCS+=\ +explicit_bzero.c \ +readpassphrase.c \ +recallocarray.c + +.include Index: src/external/bsd/libfido2/bin/fido2-cred/Makefile diff -u /dev/null src/external/bsd/libfido2/bin/fido2-cred/Makefile:1.1 --- /dev/null Mon Mar 2 19:14:18 2020 +++ src/external/bsd/libfido2/bin/fido2-cred/Makefile Mon Mar 2 19:14:17 2020 @@ -0,0 +1,24 @@ +# $NetBSD: Makefile,v 1.1 2020/03/03 00:14:17 christos Exp $ + +.include + +BINDIR=/usr/bin + +PROG= fido2-cred +SRCS+=\ +cred_make.c \ +cred_verify.c \ +base64.c \ +bio.c \ +credman.c \ +fido2-cred.c \ +pin.c \ +token.c \ +util.c + +SRCS+=\ +explicit_bzero.c \ +readpassphrase.c \ +recallocarray.c + +.include Index: src/external/bsd/libfido2/bin/fido2-token/Makefile diff -u /dev/null src/external/bsd/libfido2/bin/fido2-token/Makefile:1.1 --- /dev/null Mon Mar 2 19:14:18 2020 +++ src/external/bsd/libfido2/bin/fido2-token/Makefile Mon Mar 2 19:14:17 2020 @@ -0,0 +1,22 @@ +# $NetBSD: Makefile,v 1.1 2020/03/03 00:14:17 christos Exp $ + +.include + +BINDIR=/usr/bin + +PROG= fido2-token +SRCS+=\ +base64.c \ +bio.c \ +credman.c \ +fido2-token.c \ +pin.c \ +token.c \ +util.c + +SRCS+=\ +explicit_bzero.c \ +readpassphrase.c \ +recallocarray.c + +.include Index: src/external/bsd/libfido2/lib/Makefile diff -u /dev/null src/external/bsd/libfido2/lib/Makefile:1.1 --- /dev/null Mon Mar 2 19:14:18 2020 +++ src/external/bsd/libfido2/lib/Makefile