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)]
14pub struct UserDecryptionData {
15 pub 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 .as_deref()
26 .map(MasterPasswordUnlockData::try_from)
27 .transpose()?;
28
29 Ok(UserDecryptionData {
30 master_password_unlock,
31 })
32 }
33}
34
35impl TryFrom<&UserDecryptionOptionsResponseModel> for UserDecryptionData {
36 type Error = MasterPasswordError;
37
38 fn try_from(response: &UserDecryptionOptionsResponseModel) -> Result<Self, Self::Error> {
39 let master_password_unlock = response
40 .master_password_unlock
41 .as_ref()
42 .map(MasterPasswordUnlockData::try_from)
43 .transpose()?;
44
45 Ok(UserDecryptionData {
46 master_password_unlock,
47 })
48 }
49}