bitwarden_api_api/models/
credential_create_options.rs1use serde::{Deserialize, Serialize};
12use serde_with::serde_as;
13
14use crate::models;
15
16#[serde_as]
17#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
18pub struct CredentialCreateOptions {
19 #[serde(rename = "rp", alias = "Rp")]
20 pub rp: Box<models::PublicKeyCredentialRpEntity>,
21 #[serde(rename = "user", alias = "User")]
22 pub user: Box<models::Fido2User>,
23 #[serde_as(
24 as = "Option<serde_with::base64::Base64<serde_with::base64::UrlSafe, serde_with::formats::Unpadded>>"
25 )]
26 #[serde(rename = "challenge", alias = "Challenge")]
27 pub challenge: Option<Vec<u8>>,
28 #[serde(rename = "pubKeyCredParams", alias = "PubKeyCredParams")]
29 pub pub_key_cred_params: Option<Vec<models::PubKeyCredParam>>,
30 #[serde(
31 rename = "timeout",
32 alias = "Timeout",
33 skip_serializing_if = "Option::is_none"
34 )]
35 pub timeout: Option<i64>,
36 #[serde(
37 rename = "attestation",
38 alias = "Attestation",
39 skip_serializing_if = "Option::is_none"
40 )]
41 pub attestation: Option<models::AttestationConveyancePreference>,
42 #[serde(
43 rename = "attestationFormats",
44 alias = "AttestationFormats",
45 skip_serializing_if = "Option::is_none"
46 )]
47 pub attestation_formats: Option<Vec<models::AttestationStatementFormatIdentifier>>,
48 #[serde(
49 rename = "authenticatorSelection",
50 alias = "AuthenticatorSelection",
51 skip_serializing_if = "Option::is_none"
52 )]
53 pub authenticator_selection: Option<Box<models::AuthenticatorSelection>>,
54 #[serde(
55 rename = "hints",
56 alias = "Hints",
57 skip_serializing_if = "Option::is_none"
58 )]
59 pub hints: Option<Vec<models::PublicKeyCredentialHint>>,
60 #[serde(
61 rename = "excludeCredentials",
62 alias = "ExcludeCredentials",
63 skip_serializing_if = "Option::is_none"
64 )]
65 pub exclude_credentials: Option<Vec<models::PublicKeyCredentialDescriptor>>,
66 #[serde(
67 rename = "extensions",
68 alias = "Extensions",
69 skip_serializing_if = "Option::is_none"
70 )]
71 pub extensions: Option<Box<models::AuthenticationExtensionsClientInputs>>,
72}
73
74impl CredentialCreateOptions {
75 pub fn new(
76 rp: models::PublicKeyCredentialRpEntity,
77 user: models::Fido2User,
78 challenge: Option<Vec<u8>>,
79 pub_key_cred_params: Option<Vec<models::PubKeyCredParam>>,
80 ) -> CredentialCreateOptions {
81 CredentialCreateOptions {
82 rp: Box::new(rp),
83 user: Box::new(user),
84 challenge,
85 pub_key_cred_params,
86 timeout: None,
87 attestation: None,
88 attestation_formats: None,
89 authenticator_selection: None,
90 hints: None,
91 exclude_credentials: None,
92 extensions: None,
93 }
94 }
95}