• Stars
    star
    461
  • Rank 95,028 (Top 2 %)
  • Language
    C
  • License
    Other
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Provides library functionality for FIDO2, including communication with a device over USB or NFC.

libfido2

Linux Build Status (github actions) macOS Build Status (github actions) Windows Build Status (github actions) Fuzz Status (github actions) Fuzz Status (oss-fuzz)

libfido2 provides library functionality and command-line tools to communicate with a FIDO device over USB or NFC, and to verify attestation and assertion signatures.

libfido2 supports the FIDO U2F (CTAP 1) and FIDO2 (CTAP 2) protocols.

For usage, see the examples/ directory.

License

libfido2 is licensed under the BSD 2-clause license. See the LICENSE file for the full license text.

Supported Platforms

libfido2 is known to work on Linux, macOS, Windows, OpenBSD, and FreeBSD.

Documentation

Documentation is available in troff and HTML formats. An online mirror of libfido2's documentation is also available.

Bindings

Releases

The current release of libfido2 is 1.13.0. Signed release tarballs are available at Yubico’s release page.

Dependencies

libfido2 depends on libcbor, OpenSSL 1.1 or newer, and zlib. On Linux, libudev (part of systemd) is also required.

Installation

Fedora 35 and 34

$ sudo dnf install libfido2 libfido2-devel fido2-tools

Ubuntu 22.04 (Jammy) and 20.04 (Focal)

$ sudo apt install libfido2-1 libfido2-dev libfido2-doc fido2-tools

Alternatively, newer versions of libfido2 are available in Yubico’s PPA. Follow the instructions for Ubuntu 18.04 (Bionic) below.

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

On Linux, you may need to add a udev rule to be able to access the FIDO device. For example, the udev rule may contain the following:

#udev rule for allowing HID access to Yubico devices for FIDO support.

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", \
  MODE="0664", GROUP="plugdev", ATTRS{idVendor}=="1050"

macOS

$ brew install libfido2

Windows

Please consult Yubico’s release page for ARM, ARM64, Win32, and Win64 artefacts.

Building from source

On UNIX-like systems:

$ cmake -B build
$ make -C build
$ sudo make -C build install

Depending on the platform, pkg-config may need to be installed, or the PKG_CONFIG_PATH environment variable set. For complete, OS-specific build instructions, please refer to the .actions/ (Linux, macOS, BSD) and windows/ directories.

Build-time Customisation

libfido2 supports a number of CMake options. Some of the options require additional dependencies. Options that are disabled by default are not officially supported.

Option

Description

Default

BUILD_EXAMPLES

Build example programs

ON

BUILD_MANPAGES

Build man pages

ON

BUILD_SHARED_LIBS

Build a shared library

ON

BUILD_STATIC_LIBS

Build a static library

ON

BUILD_TOOLS

Build auxiliary tools

ON

FUZZ

Enable fuzzing instrumentation

OFF

NFC_LINUX

Enable netlink NFC support on Linux

ON

USE_HIDAPI

Use hidapi as the HID backend

OFF

USE_PCSC

Enable experimental PCSC support

OFF

USE_WINHELLO

Abstract Windows Hello as a FIDO device

ON

The USE_HIDAPI option requires hidapi. The USE_PCSC option requires pcsc-lite on Linux.

Development

Please use GitHub Discussions to ask questions and suggest features, and GitHub pull-requests for code contributions.

Reporting bugs

Please use GitHub Issues to report bugs. To report security issues, please contact [email protected]. A PGP public key can be found at https://www.yubico.com/support/security-advisories/issue-rating-system/.

More Repositories

1

yubioath-flutter

Yubico Authenticator for Desktop (Windows, macOS and Linux) and Android
Dart
832
star
2

yubikey-manager

Python library and command line tool for configuring any YubiKey over all USB interfaces.
Python
729
star
3

yubico-pam

Yubico Pluggable Authentication Module (PAM)
C
650
star
4

pam-u2f

Pluggable Authentication Module (PAM) for U2F and FIDO2
C
498
star
5

python-fido2

Provides library functionality for FIDO 2.0, including communication with a device over USB.
Python
362
star
6

java-webauthn-server

Server-side Web Authentication library for Java https://www.w3.org/TR/webauthn/#rp-operations
Scala
354
star
7

libu2f-host

Yubico Universal 2nd Factor (U2F) Host C Library
C
321
star
8

php-u2flib-server

(OBSOLETE) U2F library in PHP
PHP
292
star
9

python-u2flib-server

Python based U2F server library
Python
287
star
10

yubikey-personalization

YubiKey Personalization cross-platform library and tool
C
279
star
11

yubico-piv-tool

Command line tool for the YubiKey PIV application
C
255
star
12

yubioath-android

Yubico Authenticator for Android
Kotlin
240
star
13

python-yubico

Python code to talk to YubiKeys
Python
220
star
14

ykneo-openpgp

OpenPGP applet for the YubiKey NEO
Java
214
star
15

yubikey-manager-qt

Cross-platform application for configuring any YubiKey over all USB interfaces.
QML
200
star
16

yubikey-personalization-gui

YubiKey Personalization GUI
C++
183
star
17

yubikit-ios

Yubico Mobile iOS SDK - YubiKit
Objective-C
171
star
18

php-yubico

PHP class for Yubico authentication
PHP
133
star
19

java-u2flib-server

(OBSOLETE) Java server-side library for U2F
Java
130
star
20

yubikey-val

YubiKey OTP validation server in PHP
PHP
130
star
21

Yubico.NET.SDK

A YubiKey SDK for .NET developers
C#
98
star
22

libu2f-server

Yubico Universal 2nd Factor (U2F) Server C Library
C
94
star
23

yubico-c

YubiKey C low-level library (libyubikey)
C
92
star
24

yubico-c-client

Yubico C client library
C
87
star
25

yubikit-android

Yubico Mobile Android SDK - YubiKit
Java
77
star
26

u2fval

Python based U2F Validation Server
Python
75
star
27

yubihsm-shell

yubihsm-shell and libyubihsm
C
73
star
28

python-pyhsm

Python code for YubiHSM
Python
67
star
29

ykneo-oath

OATH App for the YubiKey NEO
Java
63
star
30

yubico-java-client

Client library for verifying YubiKey one-time passwords (OTPs).
Java
62
star
31

webauthn-recovery-extension

Asynchronous delegated key generation without shared secrets (DRAFT)
Python
59
star
32

yubikey-neo-manager

Cross platform personalization tool for the YubiKey NEO
Python
57
star
33

yubico-windows-auth

YubiKey Logon for windows
C++
56
star
34

yubikey-ksm

YubiKey Key Storage Module
Perl
55
star
35

yubico-dotnet-client

Yubico validation protocol 2.0 client
C#
52
star
36

developers.yubico.com

Source code for generating our website
HTML
49
star
37

python-u2flib-host

Python based U2F host library
Python
47
star
38

wordpress-u2f

A Wordpress U2F plugin.
PHP
42
star
39

python-yubihsm

Python
42
star
40

yubiclip-android

YubiKey NEO OTP to clipboard app for Android
Java
41
star
41

yubikey-piv-manager

Tool for configuring your PIV-enabled YubiKey
Python
40
star
42

yubiauth

Authentication backend written in Python
Python
29
star
43

yubix

Yubico reference authentication software stack. This package installs and configures various packages contained in the YubiX stack.
Perl
29
star
44

yubihsm-connector

Go
28
star
45

yubioath-ios

Yubico Authenticator for iOS
Swift
27
star
46

ykneo-curves

Applet for testing ecc curves
Java
25
star
47

android-u2f-demo

U2F demo app for Android using NFC
Java
24
star
48

yubix-vm

Scripts for building a VM image for Yubi-X
Shell
18
star
49

u2fval-client-php

PHP connector library for communicating with a U2FVAL server
PHP
17
star
50

yubico-shibboleth-idp-multifactor-login-handler

Multi-factor Login Handler for Shibboleth IdP.
Java
16
star
51

yubico.github.com

Release artifacts for all projects.
HTML
15
star
52

u2fval-client-python

Python connector library for communicating with a U2FVAL server
Python
14
star
53

yubico-j

Low-level library for decrypting and parsing Yubikey One-Time Passwords (OTP), written in Java.
Java
14
star
54

yubikey-neo-demo

Android demo application for uses of the YubiKey NEO
Java
14
star
55

python-yubicommon

Common utility modules shared between various Python based Yubico projects.
Python
13
star
56

yubico-bitcoin-java

Java client library for communicating with the ykneo-bitcoin applet for the YubiKey NEO
Java
13
star
57

yubitotp-android

Android application for TOTP with YubiKey NEO
Java
13
star
58

yubico-dbus-notifier

Get D-Bus notifications when a YubiKey is inserted/removed
Python
12
star
59

libykneomgr

YubiKey NEO CCID Manager C Library
C
11
star
60

yubico-perl-client

AnyEvent based Perl extension for validating YubiKey OTPs against the Yubico Validation Protocol version 2.0
Perl
11
star
61

yubiadmin

Web based administration tool for Yubico software components including YK-VAL, YK-KSM and rlm_yubikey
Python
11
star
62

ifd-yubico

Yubico OS X libccid patcher
Python
10
star
63

yubikey-personalization-gui-dpkg

Debian packaging of yubico-personalization-gui
C++
8
star
64

yubihsmrs

rust wrapper for libyubihsm
Rust
8
star
65

yubico-pam-dpkg

Debian packaging of yubico-pam
Shell
7
star
66

yubikey-neo-manager-dpkg

Debian packaging for yubikey-neo-manager
Python
7
star
67

yubikey-salesforce-client

Apex classes for validating YubiKey one-time passwords
Apex
7
star
68

rlm-yubico

FreeRADIUS module for using YubiKeys for authentication
Perl
7
star
69

yubico-piv-tool-dpkg

Moved to https://salsa.debian.org/auth-team/yubico-piv-tool
C
7
star
70

yubikey-personalization-dpkg

Debian package of yubikey-personalization
C
6
star
71

yubioath-desktop-dpkg

Debian package for yubioath-desktop.
Python
6
star
72

yubikit-swift

Yubico Swift SDK - YubiKit
Swift
6
star
73

yubico-bitcoin-python

Python client library and command line tool for communicating with the ykneo-bitcoin applet for the YubiKey NEO
Python
6
star
74

python-yubico-client-dpkg

Debian package for python-yubico-client.
Python
5
star
75

gradle-gpg-signing-plugin

GnuPG signing backend for Gradle's Signing plugin
Java
5
star
76

python-yubico-dpkg

Debian packaging of python-yubico
Python
5
star
77

python-pyhsm-dpkg

Debian packaging of python-pyhsm
Python
4
star
78

yubihsm-setup

Rust
4
star
79

libu2f-server-dpkg

Debian packaging for libu2f-server
Shell
4
star
80

ykneo-ccid-tools

YubiKey NEO CCID Tools
Objective-C
4
star
81

arkg-rfc

Internet-Draft: The Asynchronous Remote Key Generation (ARKG) algorithm
Makefile
4
star
82

yubico-c-dpkg

Debian packaging of the Yubico C library (libyubikey)
Shell
4
star
83

webauthn-sign-kem-extensions

DRAFT: WebAuthn extension(s) for arbitrary signing and key encapsulation
4
star
84

pam-u2f-dpkg

Debian packaging for pam-u2f
Shell
3
star
85

php-yubico-dpkg

Debian packaging of php-yubico
PHP
3
star
86

yubikey-piv-manager-dpkg

Debian packaging for yubikey-piv-manager
Python
3
star
87

yubico-c-client-dpkg

Debian package of Yubico C Client
Shell
2
star
88

libu2f-host-dpkg

debian packaging of libu2f-host
Shell
2
star
89

yubikey-ksm-dpkg

Debian package of YubiKey KSM project
Perl
2
star
90

yubikey-val-dpkg

Debian package of YubiKey VAL project
PHP
2
star
91

globalplatform-dpkg

Debian packaging for globalplatform
C
2
star
92

rlm-yubico-dpkg

Debian package of rlm-yubico
Perl
2
star
93

gpshell-dpkg

Debian packaging for gpshell
C
2
star
94

gppcscconnectionplugin-dpkg

Debian packaging for gppcscconnectionplugin
Shell
2
star
95

yubiauth-dpkg

Debian package of the YubiAuth project
Python
2
star
96

yubico-perl-client-dpkg

Debian packaging for yubico-perl-client
Perl
2
star
97

yubiadmin-dpkg

Debian package for yubiadmin
Python
2
star
98

libykneomgr-dpkg

Debian packaging of libykneomgr
Shell
2
star