browser_protocol/webauthn/
mod.rs1use serde::{Serialize, Deserialize};
5
6
7pub type AuthenticatorId = String;
8
9
10#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
11pub enum AuthenticatorProtocol {
12 #[default]
13 U2f,
14 Ctap2,
15}
16
17
18#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
19pub enum Ctap2Version {
20 #[default]
21 Ctap20,
22 Ctap21,
23 Ctap22,
24}
25
26
27#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28pub enum AuthenticatorTransport {
29 #[default]
30 Usb,
31 Nfc,
32 Ble,
33 Cable,
34 Internal,
35}
36
37
38#[derive(Debug, Clone, Serialize, Deserialize, Default)]
39#[serde(rename_all = "camelCase")]
40pub struct VirtualAuthenticatorOptions {
41
42 pub protocol: AuthenticatorProtocol,
43 #[serde(skip_serializing_if = "Option::is_none")]
46 pub ctap2Version: Option<Ctap2Version>,
47
48 pub transport: AuthenticatorTransport,
49 #[serde(skip_serializing_if = "Option::is_none")]
52 pub hasResidentKey: Option<bool>,
53 #[serde(skip_serializing_if = "Option::is_none")]
56 pub hasUserVerification: Option<bool>,
57 #[serde(skip_serializing_if = "Option::is_none")]
62 pub hasLargeBlob: Option<bool>,
63 #[serde(skip_serializing_if = "Option::is_none")]
68 pub hasCredBlob: Option<bool>,
69 #[serde(skip_serializing_if = "Option::is_none")]
74 pub hasMinPinLength: Option<bool>,
75 #[serde(skip_serializing_if = "Option::is_none")]
80 pub hasPrf: Option<bool>,
81 #[serde(skip_serializing_if = "Option::is_none")]
86 pub hasHmacSecret: Option<bool>,
87 #[serde(skip_serializing_if = "Option::is_none")]
92 pub hasHmacSecretMc: Option<bool>,
93 #[serde(skip_serializing_if = "Option::is_none")]
97 pub automaticPresenceSimulation: Option<bool>,
98 #[serde(skip_serializing_if = "Option::is_none")]
102 pub isUserVerified: Option<bool>,
103 #[serde(skip_serializing_if = "Option::is_none")]
108 pub defaultBackupEligibility: Option<bool>,
109 #[serde(skip_serializing_if = "Option::is_none")]
114 pub defaultBackupState: Option<bool>,
115}
116
117
118#[derive(Debug, Clone, Serialize, Deserialize, Default)]
119#[serde(rename_all = "camelCase")]
120pub struct Credential {
121
122 pub credentialId: String,
123
124 pub isResidentCredential: bool,
125 #[serde(skip_serializing_if = "Option::is_none")]
129 pub rpId: Option<String>,
130 pub privateKey: String,
133 #[serde(skip_serializing_if = "Option::is_none")]
137 pub userHandle: Option<String>,
138 pub signCount: u64,
143 #[serde(skip_serializing_if = "Option::is_none")]
147 pub largeBlob: Option<String>,
148 #[serde(skip_serializing_if = "Option::is_none")]
153 pub backupEligibility: Option<bool>,
154 #[serde(skip_serializing_if = "Option::is_none")]
159 pub backupState: Option<bool>,
160 #[serde(skip_serializing_if = "Option::is_none")]
164 pub userName: Option<String>,
165 #[serde(skip_serializing_if = "Option::is_none")]
170 pub userDisplayName: Option<String>,
171}
172
173#[derive(Debug, Clone, Serialize, Deserialize, Default)]
177#[serde(rename_all = "camelCase")]
178pub struct EnableParams {
179 #[serde(skip_serializing_if = "Option::is_none")]
186 pub enableUI: Option<bool>,
187}
188
189#[derive(Debug, Clone, Serialize, Deserialize, Default)]
192#[serde(rename_all = "camelCase")]
193pub struct AddVirtualAuthenticatorParams {
194
195 pub options: VirtualAuthenticatorOptions,
196}
197
198#[derive(Debug, Clone, Serialize, Deserialize, Default)]
201#[serde(rename_all = "camelCase")]
202pub struct AddVirtualAuthenticatorReturns {
203
204 pub authenticatorId: AuthenticatorId,
205}
206
207#[derive(Debug, Clone, Serialize, Deserialize, Default)]
210#[serde(rename_all = "camelCase")]
211pub struct SetResponseOverrideBitsParams {
212
213 pub authenticatorId: AuthenticatorId,
214 #[serde(skip_serializing_if = "Option::is_none")]
218 pub isBogusSignature: Option<bool>,
219 #[serde(skip_serializing_if = "Option::is_none")]
223 pub isBadUV: Option<bool>,
224 #[serde(skip_serializing_if = "Option::is_none")]
228 pub isBadUP: Option<bool>,
229}
230
231#[derive(Debug, Clone, Serialize, Deserialize, Default)]
234#[serde(rename_all = "camelCase")]
235pub struct RemoveVirtualAuthenticatorParams {
236
237 pub authenticatorId: AuthenticatorId,
238}
239
240#[derive(Debug, Clone, Serialize, Deserialize, Default)]
243#[serde(rename_all = "camelCase")]
244pub struct AddCredentialParams {
245
246 pub authenticatorId: AuthenticatorId,
247
248 pub credential: Credential,
249}
250
251#[derive(Debug, Clone, Serialize, Deserialize, Default)]
255#[serde(rename_all = "camelCase")]
256pub struct GetCredentialParams {
257
258 pub authenticatorId: AuthenticatorId,
259
260 pub credentialId: String,
261}
262
263#[derive(Debug, Clone, Serialize, Deserialize, Default)]
267#[serde(rename_all = "camelCase")]
268pub struct GetCredentialReturns {
269
270 pub credential: Credential,
271}
272
273#[derive(Debug, Clone, Serialize, Deserialize, Default)]
276#[serde(rename_all = "camelCase")]
277pub struct GetCredentialsParams {
278
279 pub authenticatorId: AuthenticatorId,
280}
281
282#[derive(Debug, Clone, Serialize, Deserialize, Default)]
285#[serde(rename_all = "camelCase")]
286pub struct GetCredentialsReturns {
287
288 pub credentials: Vec<Credential>,
289}
290
291#[derive(Debug, Clone, Serialize, Deserialize, Default)]
294#[serde(rename_all = "camelCase")]
295pub struct RemoveCredentialParams {
296
297 pub authenticatorId: AuthenticatorId,
298
299 pub credentialId: String,
300}
301
302#[derive(Debug, Clone, Serialize, Deserialize, Default)]
305#[serde(rename_all = "camelCase")]
306pub struct ClearCredentialsParams {
307
308 pub authenticatorId: AuthenticatorId,
309}
310
311#[derive(Debug, Clone, Serialize, Deserialize, Default)]
315#[serde(rename_all = "camelCase")]
316pub struct SetUserVerifiedParams {
317
318 pub authenticatorId: AuthenticatorId,
319
320 pub isUserVerified: bool,
321}
322
323#[derive(Debug, Clone, Serialize, Deserialize, Default)]
327#[serde(rename_all = "camelCase")]
328pub struct SetAutomaticPresenceSimulationParams {
329
330 pub authenticatorId: AuthenticatorId,
331
332 pub enabled: bool,
333}
334
335#[derive(Debug, Clone, Serialize, Deserialize, Default)]
339#[serde(rename_all = "camelCase")]
340pub struct SetCredentialPropertiesParams {
341
342 pub authenticatorId: AuthenticatorId,
343
344 pub credentialId: String,
345
346 #[serde(skip_serializing_if = "Option::is_none")]
347 pub backupEligibility: Option<bool>,
348
349 #[serde(skip_serializing_if = "Option::is_none")]
350 pub backupState: Option<bool>,
351}