Module webauthn_authenticator_rs::ctap2
source · 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§
- CTAP 2 commands.
Structs§
- CTAP 2.0 protocol implementation.
- CTAP 2.1 protocol implementation.
- CTAP 2.1-PRE protocol implementation.
authenticatorGetInforesponse type.
Enums§
- Abstraction for different versions of the CTAP2 protocol.
Traits§
- BiometricAuthenticator
ctap2-managementBiometric management commands for Ctap21Authenticator and Ctap21PreAuthenticator. - Common trait for all CBOR commands.
- Common trait for all CBOR responses.
- CredentialManagementAuthenticator
ctap2-management - SoloKeyAuthenticator
vendor-solokeySoloKey (Trussed) vendor-specific commands. - YubiKeyAuthenticator
vendor-yubikeyYubiKey vendor-specific commands.
Functions§
- Selects an authenticator device to use from a
TokenEventstream. - Selects an authenticator device to use from a
TokenEventstream. - Selects an authenticator device to use from a
TokenEventstream, using a specific CTAP version.