Crate soft_fido2

Crate soft_fido2 

Source
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
RelyingParty
Relying Party information
User
User information

Enums§

StatusCode
CTAP2 status codes

Traits§

PinStorageCallbacks
Callbacks for PIN state persistence