Skip to main content

bitwarden_api_api/models/
credential_create_options.rs

1/*
2 * Bitwarden Internal API
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: latest
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use 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}