From 75073d0a8478441cc97a6efa10b566c5fb1dac81 Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Fri, 17 Apr 2020 20:57:17 +0100 Subject: New upstream version 1.4.0 --- tools/CMakeLists.txt | 3 +-- tools/bio.c | 3 +-- tools/credman.c | 2 +- tools/extern.h | 6 ++++++ tools/include_check.sh | 21 +++++++++++++++++++++ tools/macos_pkg.sh | 44 ++++++++++++++++++++++++++++++++++++++++++++ tools/token.c | 13 +++++++++++-- 7 files changed, 85 insertions(+), 7 deletions(-) create mode 100755 tools/include_check.sh create mode 100755 tools/macos_pkg.sh (limited to 'tools') diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 4b8ef32..274a799 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -8,7 +8,7 @@ list(APPEND COMPAT_SOURCES ../openbsd-compat/strlcat.c ) -if(WIN32) +if(WIN32 AND NOT CYGWIN AND NOT MSYS) list(APPEND COMPAT_SOURCES ../openbsd-compat/bsd-getline.c ../openbsd-compat/explicit_bzero_win32.c @@ -49,7 +49,6 @@ add_executable(fido2-token ${COMPAT_SOURCES} ) - target_link_libraries(fido2-cred ${CRYPTO_LIBRARIES} fido2_shared) target_link_libraries(fido2-assert ${CRYPTO_LIBRARIES} fido2_shared) target_link_libraries(fido2-token ${CRYPTO_LIBRARIES} fido2_shared) diff --git a/tools/bio.c b/tools/bio.c index b8f9b38..135b055 100644 --- a/tools/bio.c +++ b/tools/bio.c @@ -253,11 +253,10 @@ void bio_info(fido_dev_t *dev) { fido_bio_info_t *i = NULL; - int r; if ((i = fido_bio_info_new()) == NULL) errx(1, "fido_bio_info_new"); - if ((r = fido_bio_dev_get_info(dev, i)) != FIDO_OK) { + if (fido_bio_dev_get_info(dev, i) != FIDO_OK) { fido_bio_info_free(&i); return; } diff --git a/tools/credman.c b/tools/credman.c index 08c9eb8..6eda245 100644 --- a/tools/credman.c +++ b/tools/credman.c @@ -37,7 +37,7 @@ credman_get_metadata(fido_dev_t *dev, const char *path) printf("existing rk(s): %u\n", (unsigned)fido_credman_rk_existing(metadata)); - printf("possible rk(s): %u\n", + printf("remaining rk(s): %u\n", (unsigned)fido_credman_rk_remaining(metadata)); fido_credman_metadata_free(&metadata); diff --git a/tools/extern.h b/tools/extern.h index e79e6f0..be01046 100644 --- a/tools/extern.h +++ b/tools/extern.h @@ -7,6 +7,12 @@ #ifndef _EXTERN_H_ #define _EXTERN_H_ +#include +#include + +#include +#include + struct blob { unsigned char *ptr; size_t len; diff --git a/tools/include_check.sh b/tools/include_check.sh new file mode 100755 index 0000000..9958c9a --- /dev/null +++ b/tools/include_check.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# +# Copyright (c) 2019 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. + +check() { + for f in $(find $1 -maxdepth 1 -name '*.h'); do + echo "#include \"$f\"" | \ + cc $CFLAGS -Isrc -xc -c - -o /dev/null 2>&1 + echo $f $CFLAGS $? + done +} + +check examples +check fuzz +check openbsd-compat +CFLAGS=-D_FIDO_INTERNAL check src +check src/fido.h +check src/fido +check tools diff --git a/tools/macos_pkg.sh b/tools/macos_pkg.sh new file mode 100755 index 0000000..4313c27 --- /dev/null +++ b/tools/macos_pkg.sh @@ -0,0 +1,44 @@ +#!/bin/bash -e +# Copyright (c) 2019 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. + +if [[ "$#" -ne 2 ]]; then + echo usage: $0 version directory 1>&2 + exit 1 +fi + +V=$1 +D=$2 + +FIDO_PATH=$(realpath ${D}/lib/libfido2.${V}.dylib) +CBOR_PATH=$(otool -L "${FIDO_PATH}" | grep cbor | awk '{ print $1 }') +CRYPTO_PATH=$(otool -L "${FIDO_PATH}" | grep crypto | awk '{ print $1 }') + +cp -p "${CBOR_PATH}" "${CRYPTO_PATH}" "${D}/lib" +chmod 755 "${D}/lib/"*dylib +rm "${D}/lib/pkgconfig/libfido2.pc" +rmdir "${D}/lib/pkgconfig" + +CBOR_NAME=$(echo "${CBOR_PATH}" | grep -o 'libcbor.*dylib') +CRYPTO_NAME=$(echo "${CRYPTO_PATH}" | grep -o 'libcrypto.*dylib') +FIDO_NAME="libfido2.${V}.dylib" + +install_name_tool -id "@loader_path/${CBOR_NAME}" "${D}/lib/${CBOR_NAME}" +install_name_tool -id "@loader_path/${CRYPTO_NAME}" "${D}/lib/${CRYPTO_NAME}" +install_name_tool -id "@loader_path/libfido2.${V}.dylib" "${FIDO_PATH}" + +install_name_tool -change "${CBOR_PATH}" "@loader_path/${CBOR_NAME}" \ + "${FIDO_PATH}" +install_name_tool -change "${CRYPTO_PATH}" "@loader_path/${CRYPTO_NAME}" \ + "${FIDO_PATH}" + +for f in $(find "${D}/bin" -type f); do + FIDO_PATH=$(otool -L "${f}" | grep libfido2 | awk '{ print $1 }') + install_name_tool -change "${CBOR_PATH}" \ + "@executable_path/../lib/${CBOR_NAME}" "${f}" + install_name_tool -change "${CRYPTO_PATH}" \ + "@executable_path/../lib/${CRYPTO_NAME}" "${f}" + install_name_tool -change "${FIDO_PATH}" \ + "@executable_path/../lib/${FIDO_NAME}" "${f}" +done diff --git a/tools/token.c b/tools/token.c index b149208..e65f09f 100644 --- a/tools/token.c +++ b/tools/token.c @@ -111,6 +111,12 @@ print_maxmsgsiz(uint64_t maxmsgsiz) printf("maxmsgsiz: %d\n", (int)maxmsgsiz); } +static void +print_fwversion(uint64_t fwversion) +{ + printf("fwversion: 0x%x\n", (int)fwversion); +} + static void print_byte_array(const char *label, const uint8_t *ba, size_t len) { @@ -166,7 +172,7 @@ token_info(int argc, char **argv, char *path) return (credman_print_rk(dev, path, rp_id, cred_id)); if (cred_id || rp_id) usage(); - + print_attr(dev); if (fido_dev_is_fido2(dev) == false) @@ -196,11 +202,14 @@ token_info(int argc, char **argv, char *path) /* print maximum message size */ print_maxmsgsiz(fido_cbor_info_maxmsgsiz(ci)); + /* print firmware version */ + print_fwversion(fido_cbor_info_fwversion(ci)); + /* print supported pin protocols */ print_byte_array("pin protocols", fido_cbor_info_protocols_ptr(ci), fido_cbor_info_protocols_len(ci)); - if ((r = fido_dev_get_retry_count(dev, &retrycnt)) != FIDO_OK) + if (fido_dev_get_retry_count(dev, &retrycnt) != FIDO_OK) printf("pin retries: undefined\n"); else printf("pin retries: %d\n", retrycnt); -- cgit v1.2.3