ctap2 only.Expand description
This package provides a CTAP 2.0, CTAP 2.1-PRE and CTAP 2.1 protocol implementation on top of Token, allowing you to interface with FIDO authenticators.
The main interface for this package is CtapAuthenticator.
§Warning
This is “alpha” quality code: it still a work in progress, and missing core functionality.
There are edge cases that which cause you to be locked out of your authenticator.
The API is not final, and subject to change without warning.
§Known issues
There are many limitations with this implementation, which are intended to be addressed in the future:
-
lock-outs aren’t handled; this will just use up all your PIN and UV retries without warning, potentially locking you out.
This also doesn’t fall-back to PIN auth if UV (fingerprint) auth is locked out.
-
multiple authenticators doesn’t work particularly well, and connecting devices while an action is in progress doesn’t work
-
cancellations and timeouts
-
session management (re-using
pin_uv_auth_token)
Many CTAP2 features are unsupported:
-
creating and using discoverable credentials
-
large blobs (
authenticatorLargeBlobs)
§Features
-
Basic registration and authentication with a CLI interface (or implement your own)
-
Bluetooth Low Energy, caBLE / Hybrid, NFC and USB HID authenticators
-
CTAP 2.1 and NFC authenticator selection
-
Fingerprint (biometric) authentication, enrollment and management (CTAP 2.1 and 2.1-PRE)
-
Built-in user verification
-
PIN/UV Auth Protocol One and Protocol Two, getPinToken, getPinUvAuthTokenUsingPinWithPermissions, and getPinUvAuthTokenUsingUvWithPermissions
-
configuring user verification and minimum PIN length requirements
§Examples
-
webauthn-authenticator-rs/examples/authenticate.rsworks with any crate::AuthenticatorBackend, including CtapAuthenticator. -
fido-key-managerwill connect to a key, pull hardware information, and let you reconfigure the key (reset, PIN, fingerprints, etc.)
§Device-specific issues
-
Some YubiKey USB tokens provide a USB CCID (smartcard) interface, in addition to a USB HID FIDO interface, which will be detected as an “NFC reader”.
This only provides access to the PIV, OATH or OpenPGP applets, not FIDO.
Use USBTransport for these tokens.
§Platform-specific issues
See fido-key-manager/README.md.
Modules§
- commands
- CTAP 2 commands.
Structs§
- Ctap20
Authenticator - CTAP 2.0 protocol implementation.
- Ctap21
Authenticator - CTAP 2.1 protocol implementation.
- Ctap21
PreAuthenticator - CTAP 2.1-PRE protocol implementation.
- GetInfo
Response authenticatorGetInforesponse type.
Enums§
- Ctap
Authenticator - Abstraction for different versions of the CTAP2 protocol.
Traits§
- Biometric
Authenticator ctap2-management - Biometric management commands for Ctap21Authenticator and Ctap21PreAuthenticator.
- CBOR
Command - Common trait for all CBOR commands.
- CBOR
Response - Common trait for all CBOR responses.
- Credential
Management Authenticator ctap2-management - CTAP 2.1 and 2.1-PRE discoverable credential management commands.
- Solo
KeyAuthenticator vendor-solokey - SoloKey (Trussed) vendor-specific commands.
- Yubi
KeyAuthenticator vendor-yubikey - YubiKey vendor-specific commands.
Functions§
- select_
one_ device - Selects an authenticator device to use from a
TokenEventstream. - select_
one_ device_ predicate - Selects an authenticator device to use from a
TokenEventstream. - select_
one_ device_ version - Selects an authenticator device to use from a
TokenEventstream, using a specific CTAP version. - select_
one_ token - Selects one Token from an Iterator of Tokens.