bitwarden_uniffi/
crypto.rs1use bitwarden_core::key_management::crypto::{
2 DeriveKeyConnectorRequest, DerivePinKeyResponse, InitOrgCryptoRequest, InitUserCryptoRequest,
3 UpdatePasswordResponse,
4};
5use bitwarden_crypto::{EncString, UnsignedSharedKey};
6
7use crate::error::{Error, Result};
8
9#[allow(missing_docs)]
10#[derive(uniffi::Object)]
11pub struct CryptoClient(pub(crate) bitwarden_core::key_management::CryptoClient);
12
13#[uniffi::export(async_runtime = "tokio")]
14impl CryptoClient {
15 pub async fn initialize_user_crypto(&self, req: InitUserCryptoRequest) -> Result<()> {
18 Ok(self
19 .0
20 .initialize_user_crypto(req)
21 .await
22 .map_err(Error::EncryptionSettings)?)
23 }
24
25 pub async fn initialize_org_crypto(&self, req: InitOrgCryptoRequest) -> Result<()> {
28 Ok(self
29 .0
30 .initialize_org_crypto(req)
31 .await
32 .map_err(Error::EncryptionSettings)?)
33 }
34
35 pub async fn get_user_encryption_key(&self) -> Result<String> {
38 Ok(self
39 .0
40 .get_user_encryption_key()
41 .await
42 .map_err(Error::MobileCrypto)?)
43 }
44
45 pub fn update_password(&self, new_password: String) -> Result<UpdatePasswordResponse> {
48 Ok(self
49 .0
50 .update_password(new_password)
51 .map_err(Error::MobileCrypto)?)
52 }
53
54 pub fn derive_pin_key(&self, pin: String) -> Result<DerivePinKeyResponse> {
58 Ok(self.0.derive_pin_key(pin).map_err(Error::MobileCrypto)?)
59 }
60
61 pub fn derive_pin_user_key(&self, encrypted_pin: EncString) -> Result<EncString> {
64 Ok(self
65 .0
66 .derive_pin_user_key(encrypted_pin)
67 .map_err(Error::MobileCrypto)?)
68 }
69
70 pub fn enroll_admin_password_reset(&self, public_key: String) -> Result<UnsignedSharedKey> {
71 Ok(self
72 .0
73 .enroll_admin_password_reset(public_key)
74 .map_err(Error::EnrollAdminPasswordReset)?)
75 }
76
77 pub fn derive_key_connector(&self, request: DeriveKeyConnectorRequest) -> Result<String> {
79 Ok(self
80 .0
81 .derive_key_connector(request)
82 .map_err(Error::DeriveKeyConnector)?)
83 }
84}