use serde::{Serialize, Deserialize};
pub type AuthenticatorId = String;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum AuthenticatorProtocol {
#[default]
U2f,
Ctap2,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum Ctap2Version {
#[default]
Ctap20,
Ctap21,
Ctap22,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum AuthenticatorTransport {
#[default]
Usb,
Nfc,
Ble,
Cable,
Internal,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct VirtualAuthenticatorOptions {
pub protocol: AuthenticatorProtocol,
#[serde(skip_serializing_if = "Option::is_none")]
pub ctap2Version: Option<Ctap2Version>,
pub transport: AuthenticatorTransport,
#[serde(skip_serializing_if = "Option::is_none")]
pub hasResidentKey: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hasUserVerification: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hasLargeBlob: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hasCredBlob: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hasMinPinLength: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hasPrf: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hasHmacSecret: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hasHmacSecretMc: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub automaticPresenceSimulation: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub isUserVerified: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defaultBackupEligibility: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defaultBackupState: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct Credential {
pub credentialId: String,
pub isResidentCredential: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub rpId: Option<String>,
pub privateKey: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub userHandle: Option<String>,
pub signCount: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub largeBlob: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backupEligibility: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backupState: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub userName: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub userDisplayName: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct EnableParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub enableUI: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AddVirtualAuthenticatorParams {
pub options: VirtualAuthenticatorOptions,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AddVirtualAuthenticatorReturns {
pub authenticatorId: AuthenticatorId,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetResponseOverrideBitsParams {
pub authenticatorId: AuthenticatorId,
#[serde(skip_serializing_if = "Option::is_none")]
pub isBogusSignature: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub isBadUV: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub isBadUP: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RemoveVirtualAuthenticatorParams {
pub authenticatorId: AuthenticatorId,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AddCredentialParams {
pub authenticatorId: AuthenticatorId,
pub credential: Credential,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetCredentialParams {
pub authenticatorId: AuthenticatorId,
pub credentialId: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetCredentialReturns {
pub credential: Credential,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetCredentialsParams {
pub authenticatorId: AuthenticatorId,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetCredentialsReturns {
pub credentials: Vec<Credential>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RemoveCredentialParams {
pub authenticatorId: AuthenticatorId,
pub credentialId: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ClearCredentialsParams {
pub authenticatorId: AuthenticatorId,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetUserVerifiedParams {
pub authenticatorId: AuthenticatorId,
pub isUserVerified: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetAutomaticPresenceSimulationParams {
pub authenticatorId: AuthenticatorId,
pub enabled: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetCredentialPropertiesParams {
pub authenticatorId: AuthenticatorId,
pub credentialId: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub backupEligibility: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backupState: Option<bool>,
}