bitwarden_core/key_management/
user_decryption.rs1use bitwarden_api_api::models::UserDecryptionResponseModel;
2use serde::{Deserialize, Serialize};
3
4use crate::{
5 auth::UserDecryptionOptionsResponseModel,
6 key_management::master_password::{MasterPasswordError, MasterPasswordUnlockData},
7};
8
9#[allow(dead_code)]
12#[derive(Serialize, Deserialize, Debug)]
13#[serde(rename_all = "camelCase", deny_unknown_fields)]
14struct UserDecryptionData {
15 master_password_unlock: Option<MasterPasswordUnlockData>,
17}
18
19impl TryFrom<UserDecryptionResponseModel> for UserDecryptionData {
20 type Error = MasterPasswordError;
21
22 fn try_from(response: UserDecryptionResponseModel) -> Result<Self, Self::Error> {
23 let master_password_unlock = response
24 .master_password_unlock
25 .map(|response| MasterPasswordUnlockData::try_from(*response))
26 .transpose()?;
27
28 Ok(UserDecryptionData {
29 master_password_unlock,
30 })
31 }
32}
33
34impl TryFrom<UserDecryptionOptionsResponseModel> for UserDecryptionData {
35 type Error = MasterPasswordError;
36
37 fn try_from(response: UserDecryptionOptionsResponseModel) -> Result<Self, Self::Error> {
38 let master_password_unlock = response
39 .master_password_unlock
40 .map(MasterPasswordUnlockData::try_from)
41 .transpose()?;
42
43 Ok(UserDecryptionData {
44 master_password_unlock,
45 })
46 }
47}