
Предоставляет функции библиотеки для FIDO2, включая взаимодействие с устройством через USB или NFC.
== libfido2
image:https://github.com/yubico/libfido2/workflows/linux/badge.svg["Linux Build Status (github actions)", link="https://github.com/Yubico/libfido2/actions"] image:https://github.com/yubico/libfido2/workflows/macos/badge.svg["macOS Build Status (github actions)", link="https://github.com/Yubico/libfido2/actions"] image:https://github.com/yubico/libfido2/workflows/windows/badge.svg["Windows Build Status (github actions)", link="https://github.com/Yubico/libfido2/actions"] image:https://github.com/yubico/libfido2/workflows/fuzzer/badge.svg["Fuzz Status (github actions)", link="https://github.com/yubico/libfido2/actions"] image:https://oss-fuzz-build-logs.storage.googleapis.com/badges/libfido2.svg["Fuzz Status (oss-fuzz)", link="https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:libfido2"]
libfido2 предоставляет библиотечные функции и инструменты командной строки для взаимодействия с FIDO-устройством через USB или NFC, а также для проверки подписей аттестации и аутентификации.
libfido2 поддерживает протоколы FIDO U2F (CTAP 1) и FIDO2 (CTAP 2).
Порядок использования описан в каталоге examples/.
=== Лицензия
libfido2 распространяется под лицензией BSD 2-clause. Полный текст лицензии приведён в файле LICENSE.
=== Поддерживаемые платформы
libfido2 работает на Linux, macOS, Windows, OpenBSD и FreeBSD.
=== Документация
Документация доступна в форматах troff и HTML. Также доступно https://developers.yubico.com/libfido2/Manuals/[онлайн-зеркало документации libfido2].
=== Привязки
=== Релизы
Текущий релиз libfido2 — 1.17.0. Подписанные tar-архивы релизов доступны на https://developers.yubico.com/libfido2/Releases[странице релизов] Yubico.
=== Зависимости
libfido2 зависит от https://github.com/pjk/libcbor[libcbor], https://www.openssl.org[OpenSSL] 3.0 или новее и https://zlib.net[zlib]. В Linux также требуется libudev (часть https://www.freedesktop.org/wiki/Software/systemd[systemd]).
=== Установка
==== Fedora 34 и новее
$ sudo dnf install libfido2 libfido2-devel fido2-tools
==== Ubuntu 20.04 (Focal) и новее
$ sudo apt install libfido2-1 libfido2-dev libfido2-doc fido2-tools
Кроме того, более новые версии libfido2 доступны в PPA-репозитории Yubico. Следуйте инструкциям для Ubuntu 18.04 (Bionic) ниже.
==== Ubuntu 18.04 (Bionic)
$ sudo apt install software-properties-common $ sudo apt-add-repository ppa:yubico/stable $ sudo apt update $ sudo apt install libfido2-1 libfido2-dev libfido2-doc fido2-tools
В Linux для доступа к FIDO-устройству может потребоваться добавить правило udev. Например, правило udev может содержать следующее:
#udev rule for allowing HID access to Yubico devices for FIDO support.
==== macOS
$ brew install libfido2
==== Windows
Обратитесь к https://developers.yubico.com/libfido2/Releases[странице релизов] Yubico, чтобы получить артефакты для ARM, ARM64, Win32 и Win64.
Безопасное использование наших библиотек предполагает, что артефакты
распакованы в доверенный каталог, доступный только для чтения, при этом DLL
находятся рядом с исполняемым файлом. Общие рекомендации по развёртыванию DLL
и безопасным методам упаковки приведены в официальной документации Microsoft.
Обратите внимание, что наши динамически компонуемые артефакты собраны
с параметром /MD и могут требовать наличия соответствующей среды выполнения
Visual C++.
=== Сборка из исходного кода
В UNIX-подобных системах:
$ cmake -B build $ make -C build $ sudo make -C build install
В зависимости от платформы может потребоваться установить
https://www.freedesktop.org/wiki/Software/pkg-config/[pkg-config] или задать
переменную окружения PKG_CONFIG_PATH. Полные инструкции по сборке для
конкретных ОС приведены в каталогах .actions/ (Linux, macOS, BSD)
и windows/.
=== Параметры сборки
libfido2 поддерживает ряд опций CMake. Некоторые опции требуют дополнительных зависимостей. Опции, отключённые по умолчанию, официально не поддерживаются.
[%autowidth.stretch] |=== |Опция |Описание |По умолчанию | BUILD_EXAMPLES | Сборка примеров программ | ON | BUILD_MANPAGES | Сборка man-страниц | ON | BUILD_SHARED_LIBS | Сборка разделяемой библиотеки | ON | BUILD_STATIC_LIBS | Сборка статической библиотеки | ON | BUILD_TOOLS | Сборка вспомогательных инструментов | ON | FUZZ | Включение инструментов фаззинга | OFF | NFC_LINUX | Включение поддержки NFC через netlink в Linux | ON | USE_HIDAPI | Использовать hidapi в качестве HID-бэкенда | OFF | USE_PCSC | Включение экспериментальной поддержки PCSC | OFF | USE_WINHELLO | Абстрагирование Windows Hello как FIDO-устройства | ON |===
Опция USE_HIDAPI требует https://github.com/libusb/hidapi[hidapi]. Опция USE_PCSC в Linux требует https://github.com/LudovicRousseau/PCSC[pcsc-lite].
=== Разработка
Задавайте вопросы и предлагайте новые функции на https://github.com/Yubico/libfido2/discussions[GitHub Discussions], а для вклада в код используйте https://github.com/Yubico/libfido2/pulls[GitHub pull-requests].
=== Сообщение об ошибках
Сообщайте об ошибках через https://github.com/Yubico/libfido2/issues[GitHub Issues]. О проблемах безопасности сообщайте по адресу [email protected]. Открытый PGP-ключ можно найти по адресу https://www.yubico.com/support/security-advisories/issue-rating-system/.