1== libfido2 2 3image:https://github.com/yubico/libfido2/workflows/linux/badge.svg["Linux Build Status (github actions)", link="https://github.com/Yubico/libfido2/actions"] 4image:https://github.com/yubico/libfido2/workflows/macos/badge.svg["macOS Build Status (github actions)", link="https://github.com/Yubico/libfido2/actions"] 5image:https://github.com/yubico/libfido2/workflows/windows/badge.svg["Windows Build Status (github actions)", link="https://github.com/Yubico/libfido2/actions"] 6image:https://github.com/yubico/libfido2/workflows/fuzzer/badge.svg["Fuzz Status (github actions)", link="https://github.com/Yubico/libfido2/actions"] 7image: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"] 8 9*libfido2* provides library functionality and command-line tools to 10communicate with a FIDO device over USB, and to verify attestation and 11assertion signatures. 12 13*libfido2* supports the FIDO U2F (CTAP 1) and FIDO2 (CTAP 2) protocols. 14 15For usage, see the `examples/` directory. 16 17=== License 18 19*libfido2* is licensed under the BSD 2-clause license. See the LICENSE 20file for the full license text. 21 22=== Supported Platforms 23 24*libfido2* is known to work on Linux, macOS, Windows, OpenBSD, and FreeBSD. 25 26NFC support is available on Linux and Windows. 27 28=== Documentation 29 30Documentation is available in troff and HTML formats. An 31https://developers.yubico.com/libfido2/Manuals/[online mirror of *libfido2*'s documentation] 32is also available. 33 34=== Bindings 35 36* .NET: https://github.com/borrrden/Fido2Net[Fido2Net] 37* Go: https://github.com/keys-pub/go-libfido2[go-libfido2] 38* Perl: https://github.com/jacquesg/p5-FIDO-Raw[p5-FIDO-Raw] 39* Rust: https://github.com/PvdBerg1998/libfido2[libfido2] 40 41=== Installation 42 43==== Releases 44 45The current release of *libfido2* is 1.10.0. Please consult Yubico's 46https://developers.yubico.com/libfido2/Releases[release page] for source 47and binary releases. 48 49==== Ubuntu 20.04 (Focal) 50 51 $ sudo apt install libfido2-1 52 $ sudo apt install libfido2-dev 53 $ sudo apt install libfido2-doc 54 55Alternatively, newer versions of *libfido2* are available in Yubico's PPA. 56Follow the instructions for Ubuntu 18.04 (Bionic) below. 57 58==== Ubuntu 18.04 (Bionic) 59 60 $ sudo apt install software-properties-common 61 $ sudo apt-add-repository ppa:yubico/stable 62 $ sudo apt update 63 $ sudo apt install libfido2-dev 64 65==== macOS 66 67 $ brew install libfido2 68 69Or from source, on UNIX-like systems: 70 71 $ cmake -B build 72 $ make -C build 73 $ sudo make -C build install 74 75Depending on the platform, 76https://www.freedesktop.org/wiki/Software/pkg-config/[pkg-config] may need to 77be installed, or the PKG_CONFIG_PATH environment variable set. 78 79*libfido2* depends on https://github.com/pjk/libcbor[libcbor], 80https://www.openssl.org[OpenSSL] 1.1 or newer, and https://zlib.net[zlib]. 81On Linux, libudev 82(part of https://www.freedesktop.org/wiki/Software/systemd[systemd]) is also 83required. 84 85For complete, OS-specific installation instructions, please refer to the 86`.actions/` (Linux, macOS) and `windows/` directories. 87 88On Linux, you will need to add a udev rule to be able to access the FIDO 89device, or run as root. For example, the udev rule may contain the following: 90 91---- 92#udev rule for allowing HID access to Yubico devices for FIDO support. 93 94KERNEL=="hidraw*", SUBSYSTEM=="hidraw", \ 95 MODE="0664", GROUP="plugdev", ATTRS{idVendor}=="1050" 96---- 97