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
42
43
44
45
46
47
48
49
use serde::{Deserialize, Serialize};
use crate::Curve25519PublicKey;
#[derive(Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
pub struct SessionKeys {
pub identity_key: Curve25519PublicKey,
pub base_key: Curve25519PublicKey,
pub one_time_key: Curve25519PublicKey,
}
impl std::fmt::Debug for SessionKeys {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("SessionKeys")
.field("identity_key", &self.identity_key.to_base64())
.field("base_key", &self.base_key.to_base64())
.field("one_time_key", &self.one_time_key.to_base64())
.finish()
}
}
#[cfg(feature = "libolm-compat")]
impl crate::utilities::Decode for SessionKeys {
fn decode(
reader: &mut impl std::io::Read,
) -> Result<Self, crate::utilities::LibolmDecodeError> {
Ok(Self {
identity_key: Curve25519PublicKey::decode(reader)?,
base_key: Curve25519PublicKey::decode(reader)?,
one_time_key: Curve25519PublicKey::decode(reader)?,
})
}
}