bitwarden_uniffi/platform/
mod.rs

1use bitwarden_core::platform::FingerprintRequest;
2use bitwarden_fido::ClientFido2Ext;
3
4use crate::error::{Error, Result};
5
6mod fido2;
7
8#[derive(uniffi::Object)]
9pub struct PlatformClient(pub(crate) bitwarden_core::Client);
10
11#[uniffi::export]
12impl PlatformClient {
13    /// Fingerprint (public key)
14    pub fn fingerprint(&self, req: FingerprintRequest) -> Result<String> {
15        Ok(self
16            .0
17            .platform()
18            .fingerprint(&req)
19            .map_err(Error::Fingerprint)?)
20    }
21
22    /// Fingerprint using logged in user's public key
23    pub fn user_fingerprint(&self, fingerprint_material: String) -> Result<String> {
24        Ok(self
25            .0
26            .platform()
27            .user_fingerprint(fingerprint_material)
28            .map_err(Error::UserFingerprint)?)
29    }
30
31    /// Load feature flags into the client
32    pub fn load_flags(&self, flags: std::collections::HashMap<String, bool>) -> Result<()> {
33        self.0.internal.load_flags(flags);
34        Ok(())
35    }
36
37    /// FIDO2 operations
38    pub fn fido2(&self) -> fido2::ClientFido2 {
39        fido2::ClientFido2(self.0.fido2())
40    }
41}