pub struct FIDO2 {Show 20 fields
pub aaguid: Uuid,
pub description: String,
pub alternative_descriptions: BTreeMap<String, String>,
pub authenticator_version: u32,
pub authentication_algorithms: Vec<AuthenticationAlgorithm>,
pub public_key_alg_and_encodings: Vec<PublicKeyAlg>,
pub attestation_types: Vec<AttestationType>,
pub user_verification_details: Vec<Vec<UserVerificationMethod>>,
pub key_protection: Vec<KeyProtection>,
pub is_key_restricted: bool,
pub is_fresh_user_verification_required: bool,
pub attestation_root_certificates: Vec<Vec<u8>>,
pub ecdaa_trust_anchors: Vec<EcdaaAnchor>,
pub supported_extensions: Vec<ExtensionDescriptor>,
pub authenticator_get_info: Option<AuthenticatorGetInfo>,
pub status_reports: BTreeSet<StatusReport>,
pub time_of_last_status_change: String,
pub inconsistent_data: bool,
pub patched_data: bool,
pub multi_device_credential_support: MultiDeviceCredentialSupport,
}Expand description
A metadata statement describing a FIDO2 device.
Fields§
§aaguid: UuidThe AAGUID (UUID, Universally Unique IDentifier) that identifies this device.
description: StringA description of the device in English
alternative_descriptions: BTreeMap<String, String>Descriptions of the device, mapped from language to description.
authenticator_version: u32The latest firmware version of the device.
authentication_algorithms: Vec<AuthenticationAlgorithm>The supported cryptographic algorithms this device supports.
public_key_alg_and_encodings: Vec<PublicKeyAlg>The encoding of the devices public key when registered
attestation_types: Vec<AttestationType>The types of attestation format that device may provide
user_verification_details: Vec<Vec<UserVerificationMethod>>A matrix of user verification methods this device supports. The outer matrix is
a list of OR methods, the inner list is AND methods. For example, consider:
[ [ { uvm: None } ], // OR [ { uvm: PresenceInternal } ], // OR [ { uvm: PresenceInternal }, { uvm: PasscodeExternal }, ], ]
This is a common configuration found on many devices where it supports signatures with no verification, signatures with touch-only, and signatures with touch and a passcode. These bits are represented via the User Presence and User Verification booleans inside of the attested credential data. Webauthn for example will always require at least presence.
key_protection: Vec<KeyProtection>The methods of supported private key protection this device supports.
is_key_restricted: boolIf this device is restricted to only sign FIDO signature assertions. If false the device
may be used to sign any arbitrary data. If true the device may only be used with FIDO
(Webauthn) requests.
is_fresh_user_verification_required: boolIf true the device requires user verification for each operation it performs. If false
the device may cache the user verification for a short time. Consider a token that requires
a PIN - it may cache this for a small amount of time so that the user only requires presence.
attestation_root_certificates: Vec<Vec<u8>>A list of DER root certificates that may have signed this model of authenticators attestation.
ecdaa_trust_anchors: Vec<EcdaaAnchor>A list of ECDAA root anchors that may have signed this model of authenticators attestation.
supported_extensions: Vec<ExtensionDescriptor>A list of extensions that this device supports.
authenticator_get_info: Option<AuthenticatorGetInfo>If supported, the output of CTAP2.0+ authenticatorGetInfo command from a “factory new” device.
status_reports: BTreeSet<StatusReport>A list of status reports about this device.
time_of_last_status_change: StringThe time this device was last updated.
inconsistent_data: boolThese data as supplied from FIDO is inconsistent for this device, and may contain omissions or errors. In some cases the webauthn-rs project has patched these data to correct these which is indicated by the “patched” flag.
patched_data: boolThese data have been patched by the webauthn-rs project to repair flaws in the MDS that are provided by FIDO. These patches are created by the project observing the device and providing this.
multi_device_credential_support: MultiDeviceCredentialSupportIf the device supports multiple credentials