CVS commit: src/external/bsd/libfido2

2021-06-18 Thread Christos Zoulas
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

2021-06-17 Thread Christos Zoulas
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

2021-06-17 Thread Christos Zoulas
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

2021-06-17 Thread Rin Okuyama
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

2021-06-16 Thread Christos Zoulas
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

2020-12-12 Thread Christos Zoulas
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

2020-12-12 Thread Christos Zoulas
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

2020-12-04 Thread Christos Zoulas
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

2020-03-04 Thread Christos Zoulas
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

2020-03-02 Thread Christos Zoulas
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