bitwarden_core/auth/api/response/
identity_success_response.rs1use std::{collections::HashMap, num::NonZeroU32};
2
3use bitwarden_api_identity::models::KdfType;
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6
7use crate::auth::api::response::user_decryption_options_response::UserDecryptionOptionsResponseModel;
8
9#[derive(Serialize, Deserialize, Debug, PartialEq)]
10pub(crate) struct IdentityTokenSuccessResponse {
11 pub access_token: String,
12 pub expires_in: u64,
13 pub refresh_token: Option<String>,
14 token_type: String,
15
16 #[serde(rename = "privateKey", alias = "PrivateKey")]
17 pub(crate) private_key: Option<String>,
18 #[serde(alias = "Key")]
19 pub(crate) key: Option<String>,
20 #[serde(rename = "twoFactorToken")]
21 two_factor_token: Option<String>,
22 #[serde(alias = "Kdf")]
23 kdf: KdfType,
24 #[serde(rename = "kdfIterations", alias = "KdfIterations")]
25 kdf_iterations: NonZeroU32,
26
27 #[serde(rename = "resetMasterPassword", alias = "ResetMasterPassword")]
28 pub reset_master_password: bool,
29 #[serde(rename = "forcePasswordReset", alias = "ForcePasswordReset")]
30 pub force_password_reset: bool,
31 #[serde(rename = "apiUseKeyConnector", alias = "ApiUseKeyConnector")]
32 api_use_key_connector: Option<bool>,
33 #[serde(rename = "keyConnectorUrl", alias = "KeyConnectorUrl")]
34 key_connector_url: Option<String>,
35
36 #[serde(rename = "userDecryptionOptions", alias = "UserDecryptionOptions")]
37 pub(crate) user_decryption_options: Option<UserDecryptionOptionsResponseModel>,
38
39 extra: Option<HashMap<String, Value>>,
41}
42
43#[cfg(test)]
44mod test {
45 use bitwarden_crypto::Kdf;
46
47 use super::*;
48
49 impl Default for IdentityTokenSuccessResponse {
50 fn default() -> Self {
51 let Kdf::PBKDF2 { iterations } = Kdf::default_pbkdf2() else {
52 panic!("Expected default KDF to be PBKDF2");
53 };
54
55 Self {
56 access_token: Default::default(),
57 expires_in: Default::default(),
58 refresh_token: Default::default(),
59 token_type: Default::default(),
60 private_key: Default::default(),
61 key: Default::default(),
62 two_factor_token: Default::default(),
63 kdf: KdfType::PBKDF2_SHA256,
64 kdf_iterations: iterations,
65 reset_master_password: Default::default(),
66 force_password_reset: Default::default(),
67 api_use_key_connector: Default::default(),
68 key_connector_url: Default::default(),
69 user_decryption_options: Default::default(),
70 extra: Default::default(),
71 }
72 }
73 }
74}