You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Dain Nilsson 54cee2216a
Bump version.
2 months ago
.github/workflows Add Python 3.11 to build matrix. 7 months ago
examples Increase range for supported cryptography versions. 2 months ago
fido2 Bump version. 2 months ago
tests Add new flags: Backup eligibility and state. 9 months ago
.bandit Start migration to Poetry. 2 years ago
.flake8 More poetry. 2 years ago
.gitignore Add poetry.lock to .gitignore. 2 months ago
.pre-commit-config.yaml Fix pre-commit after flake8 moved to github. 7 months ago
COPYING Initial import. 5 years ago
COPYING.APLv2 Initial import. 5 years ago
COPYING.MPLv2 Initial import. 5 years ago
NEWS Prepare 1.1.1. 2 months ago
README.adoc Update NEWS. 2 months ago
RELEASE.adoc Bump version. 8 months ago
mypy.ini More mypy checks/fixes. 2 years ago
pyproject.toml Bump version. 2 months ago


== python-fido2
image:["Github actions build", link=""]

Provides library functionality for communicating with a FIDO device over USB as
well as verifying attestation and assertion signatures.

This library aims to support the FIDO U2F and FIDO 2 protocols for
communicating with a USB authenticator via the Client-to-Authenticator Protocol
(CTAP 1 and 2). In addition to this low-level device access, classes defined in
the `fido2.client` and `fido2.server` modules implement higher level operations
which are useful when interfacing with an Authenticator, or when implementing
WebAuthn support for a Relying Party.

For usage, see the `examples/` directory.

=== References
These links related to WebAuthn and FIDO2 can help you get started:

* Yubico WebAuthn/FIDO2 guide:
* W3C WebAuthn specification:
* FIDO specifications:

=== License
This project, with the exception of the files mentioned below, is licensed
under the BSD 2-clause license.
See the _COPYING_ file for the full license text.

This project contains source code from pyu2f (
which is licensed under the Apache License, version 2.0.
These files are located in `fido2/hid/`.
or the _COPYING.APLv2_ file for the full license text.

This project also bundles the public suffix list (
which is licensed under the Mozilla Public License, version 2.0.
This file is stored as `fido2/public_suffix_list.dat`.
or the _COPYING.MPLv2_ file for the full license text.

=== Requirements
fido2 is compatible with Python 3.7 and later, and is tested on Windows, MacOS,
and Linux. Support for OpenBSD, FreeBSD, and NetBSD is provided as-is and
relies on community contributions.

=== Installation

fido2 is installable by running the following command:

  pip install fido2

To install the dependencies required for communication with NFC authenticators,
instead use:

  pip install fido2[pcsc]

Under Windows 10 (1903 or later) access to FIDO devices is restricted and
requires running as Administrator. This library can still be used when running
as non-administrator, via the  `fido.client.WindowsClient` class. An example of
this is included in the file `examples/`.

Under Linux you will need to add a Udev rule to be able to access the FIDO
device, or run as root. 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"

There may be a package already available for your distribution that does this
for you, see:

Under FreeBSD you will either need to run as root or add rules for your device
to /etc/devd.conf, which can be automated by installing security/u2f-devd:

  # pkg install u2f-devd

==== Dependencies
This project depends on Cryptography. For instructions on installing this
dependency, see

NFC support is optionally available via PC/SC, using the pyscard library. For
instructions on installing this dependency, see

=== Development
For development of the library  we use[poetry]. To
set up the dev environment, run this command in the root directory of the

  poetry install

We also use[pre-commit] to run some scans on the code
prior to committing.

==== Running tests
While many tests can run on their own, some require a connected U2F or FIDO2
device to run.

  poetry run pytest