Expand description
§soft-fido2
A pure Rust FIDO2/WebAuthn CTAP2 implementation providing virtual authenticator capabilities for testing and development.
§no_std Support
This crate supports no_std environments. To use without the standard library:
[dependencies]
soft-fido2 = { version = "0.4", default-features = false }Note: Transport layers (USB HID, UHID) require std and are not available in no_std.
The core CTAP protocol and authenticator logic work in no_std with alloc.
§Architecture
- Authenticator: Virtual FIDO2 authenticator with callback-based user interaction
- Client: High-level API for communicating with authenticators (requires
std) - Transport: USB HID and Linux UHID transport layers (requires
std) - PIN Protocol: CTAP2 PIN/UV authentication
§Example (with std)
use soft_fido2::{TransportList, Client};
let mut list = TransportList::enumerate()?;
let mut transport = list.get(0).unwrap();
transport.open()?;
let info = Client::authenticator_get_info(&mut transport)?;Re-exports§
pub use authenticator::Authenticator;pub use authenticator::AuthenticatorCallbacks;pub use authenticator::AuthenticatorConfig;pub use authenticator::AuthenticatorConfigBuilder;pub use authenticator::UpResult;pub use authenticator::UvResult;pub use ctap::CtapCommand;pub use error::Error;pub use error::Result;pub use options::AuthenticatorOptions;pub use request::ClientDataHash;pub use request::CredentialDescriptor;pub use request::CredentialManagementRequest;pub use request::CredentialType;pub use request::DeleteCredentialRequest;pub use request::EnumerateCredentialsRequest;pub use request::GetAssertionRequest;pub use request::MakeCredentialRequest;pub use request::PinUvAuth;pub use request::PinUvAuthProtocol;pub use request::UpdateUserRequest;pub use types::Credential;pub use types::CredentialRef;pub use types::Extensions;pub use response::CredentialEnumerationBeginResponse;pub use response::CredentialEnumerationNextResponse;pub use response::CredentialInfo;pub use response::CredentialsMetadata;pub use response::RpEnumerationBeginResponse;pub use response::RpEnumerationNextResponse;pub use response::RpInfo;pub use client::Client;pub use client::compute_rp_id_hash;pub use pin::PinProtocol;pub use pin::PinUvAuthEncapsulation;pub use transport::Transport;pub use transport::TransportList;pub use uhid::Uhid;
Modules§
- authenticator
- FIDO2 Authenticator Implementation
- client
- FIDO2 Client API
- ctap
- error
- Error types for CTAP operations
- options
- pin
- CTAP2 PIN Protocol Support
- request
- Request and response types for CTAP client operations
- response
- Response types for CTAP client operations
- transport
- types
- High-level types for FIDO2/WebAuthn credentials
- uhid
- Linux UHID Virtual Device Support
Structs§
- PinState
- Persistent PIN state for secure storage
- Relying
Party - Relying Party information
- User
- User information
Enums§
- Status
Code - CTAP2 status codes
Traits§
- PinStorage
Callbacks - Callbacks for PIN state persistence