offline_protocol_mls/
provider.rs1use crate::storage_adapter::MlsStorageAdapter;
7use openmls_rust_crypto::OpenMlsRustCrypto;
8use openmls_traits::OpenMlsProvider;
9use std::sync::Arc;
10
11#[derive(Clone)]
13pub struct MlsProvider {
14 inner: Arc<OpenMlsRustCrypto>,
15 storage: MlsStorageAdapter,
16}
17
18impl MlsProvider {
19 pub fn new(storage: MlsStorageAdapter) -> Self {
21 Self {
22 inner: Arc::new(OpenMlsRustCrypto::default()),
23 storage,
24 }
25 }
26}
27
28impl OpenMlsProvider for MlsProvider {
29 type CryptoProvider = <OpenMlsRustCrypto as OpenMlsProvider>::CryptoProvider;
30 type RandProvider = <OpenMlsRustCrypto as OpenMlsProvider>::RandProvider;
31 type StorageProvider = MlsStorageAdapter;
32
33 fn crypto(&self) -> &Self::CryptoProvider {
34 self.inner.crypto()
35 }
36
37 fn rand(&self) -> &Self::RandProvider {
38 self.inner.rand()
39 }
40
41 fn storage(&self) -> &Self::StorageProvider {
42 &self.storage
43 }
44}