Skip to main content

bitwarden_emergency_access/
emergency_access_client.rs

1use std::sync::Arc;
2
3use bitwarden_core::{
4    Client, FromClient,
5    client::{ApiConfigurations, FromClientPart},
6    key_management::KeySlotIds,
7};
8use bitwarden_crypto::KeyStore;
9
10/// Client for emergency access operations, performed as the grantor or the grantee.
11#[bitwarden_ffi::wasm_object]
12pub struct EmergencyAccessClient {
13    pub(crate) api_configurations: Arc<ApiConfigurations>,
14    pub(crate) key_store: KeyStore<KeySlotIds>,
15}
16
17impl FromClient for EmergencyAccessClient {
18    fn from_client(client: &Client) -> Self {
19        Self {
20            api_configurations: client.get_part(),
21            key_store: client.get_part(),
22        }
23    }
24}
25
26/// Extension trait that exposes [`EmergencyAccessClient`] on [`Client`].
27pub trait EmergencyAccessClientExt {
28    /// Returns an [`EmergencyAccessClient`].
29    fn emergency_access(&self) -> EmergencyAccessClient;
30}
31
32impl EmergencyAccessClientExt for Client {
33    fn emergency_access(&self) -> EmergencyAccessClient {
34        EmergencyAccessClient::from_client(self)
35    }
36}