bitwarden_uniffi/
crypto.rs1use bitwarden_core::key_management::{
2 V2UpgradeToken,
3 crypto::{
4 DeriveKeyConnectorRequest, DerivePinKeyResponse, EnrollPinResponse, InitOrgCryptoRequest,
5 InitUserCryptoRequest, UpdateKdfResponse, UpdatePasswordResponse,
6 },
7};
8use bitwarden_crypto::{EncString, Kdf, RotateableKeySet, UnsignedSharedKey};
9use bitwarden_encoding::B64;
10
11use crate::error::Result;
12
13#[allow(missing_docs)]
14#[derive(uniffi::Object)]
15pub struct CryptoClient(pub(crate) bitwarden_core::key_management::CryptoClient);
16
17#[uniffi::export(async_runtime = "tokio")]
18impl CryptoClient {
19 pub async fn initialize_user_crypto(&self, req: InitUserCryptoRequest) -> Result<()> {
22 Ok(self.0.initialize_user_crypto(req).await?)
23 }
24
25 pub async fn initialize_org_crypto(&self, req: InitOrgCryptoRequest) -> Result<()> {
28 Ok(self.0.initialize_org_crypto(req).await?)
29 }
30
31 pub async fn get_user_encryption_key(&self) -> Result<B64> {
34 Ok(self.0.get_user_encryption_key().await?)
35 }
36
37 pub async fn make_update_password(
41 &self,
42 new_password: String,
43 ) -> Result<UpdatePasswordResponse> {
44 Ok(self.0.make_update_password(new_password).await?)
45 }
46
47 pub async fn derive_pin_key(&self, pin: String) -> Result<DerivePinKeyResponse> {
51 Ok(self.0.derive_pin_key(pin).await?)
52 }
53
54 pub async fn derive_pin_user_key(&self, encrypted_pin: EncString) -> Result<EncString> {
57 Ok(self.0.derive_pin_user_key(encrypted_pin).await?)
58 }
59
60 pub fn enroll_pin(&self, pin: String) -> Result<EnrollPinResponse> {
64 Ok(self.0.enroll_pin(pin)?)
65 }
66
67 pub fn enroll_pin_with_encrypted_pin(
71 &self,
72 encrypted_pin: EncString,
73 ) -> Result<EnrollPinResponse> {
74 Ok(self
75 .0
76 .enroll_pin_with_encrypted_pin(encrypted_pin.to_string())?)
77 }
78
79 pub fn enroll_admin_password_reset(&self, public_key: B64) -> Result<UnsignedSharedKey> {
80 Ok(self.0.enroll_admin_password_reset(public_key)?)
81 }
82
83 pub fn derive_key_connector(&self, request: DeriveKeyConnectorRequest) -> Result<B64> {
85 Ok(self.0.derive_key_connector(request)?)
86 }
87
88 pub fn make_prf_user_key_set(&self, prf: B64) -> Result<RotateableKeySet> {
91 Ok(self.0.make_prf_user_key_set(prf)?)
92 }
93
94 pub async fn make_update_kdf(&self, password: String, kdf: Kdf) -> Result<UpdateKdfResponse> {
98 Ok(self.0.make_update_kdf(password, kdf).await?)
99 }
100
101 pub fn get_upgraded_user_key(&self, upgrade_token: Option<V2UpgradeToken>) -> Result<B64> {
105 Ok(self.0.get_upgraded_user_key(upgrade_token)?)
106 }
107}