1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use crate::{Initiator, Responder, X3dhVault};
use ockam_key_exchange_core::NewKeyExchanger;
use std::sync::{Arc, Mutex};
pub struct X3dhNewKeyExchanger {
vault_initiator: Arc<Mutex<dyn X3dhVault>>,
vault_responder: Arc<Mutex<dyn X3dhVault>>,
}
impl std::fmt::Debug for X3dhNewKeyExchanger {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"X3dhNewKeyExchanger {{ vault_initiator, vault_responder }}"
)
}
}
impl X3dhNewKeyExchanger {
pub fn new(
vault_initiator: Arc<Mutex<dyn X3dhVault>>,
vault_responder: Arc<Mutex<dyn X3dhVault>>,
) -> Self {
Self {
vault_initiator,
vault_responder,
}
}
}
impl NewKeyExchanger<Initiator, Responder> for X3dhNewKeyExchanger {
fn initiator(&self) -> Initiator {
Initiator::new(self.vault_initiator.clone(), None)
}
fn responder(&self) -> Responder {
Responder::new(self.vault_responder.clone(), None)
}
}