crypto: Make the user_id/device_id/identity_keys public methods.
parent
d220c6cb29
commit
350578739c
|
@ -159,15 +159,14 @@ impl Device {
|
||||||
impl From<&OlmMachine> for Device {
|
impl From<&OlmMachine> for Device {
|
||||||
fn from(machine: &OlmMachine) -> Self {
|
fn from(machine: &OlmMachine) -> Self {
|
||||||
Device {
|
Device {
|
||||||
user_id: Arc::new(machine.user_id.clone()),
|
user_id: Arc::new(machine.user_id().clone()),
|
||||||
device_id: Arc::new(machine.device_id.clone()),
|
device_id: Arc::new(machine.device_id().clone()),
|
||||||
algorithms: Arc::new(vec![
|
algorithms: Arc::new(vec![
|
||||||
Algorithm::MegolmV1AesSha2,
|
Algorithm::MegolmV1AesSha2,
|
||||||
Algorithm::OlmV1Curve25519AesSha2,
|
Algorithm::OlmV1Curve25519AesSha2,
|
||||||
]),
|
]),
|
||||||
keys: Arc::new(
|
keys: Arc::new(
|
||||||
machine
|
machine
|
||||||
.account
|
|
||||||
.identity_keys()
|
.identity_keys()
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(key, value)| {
|
.map(|(key, value)| {
|
||||||
|
|
|
@ -22,8 +22,8 @@ use uuid::Uuid;
|
||||||
|
|
||||||
use super::error::{OlmError, Result, SignatureError, VerificationResult};
|
use super::error::{OlmError, Result, SignatureError, VerificationResult};
|
||||||
use super::olm::{
|
use super::olm::{
|
||||||
Account, GroupSessionKey, InboundGroupSession, OlmMessage, OlmUtility, OutboundGroupSession,
|
Account, GroupSessionKey, IdentityKeys, InboundGroupSession, OlmMessage, OlmUtility,
|
||||||
Session,
|
OutboundGroupSession, Session,
|
||||||
};
|
};
|
||||||
use super::store::memorystore::MemoryStore;
|
use super::store::memorystore::MemoryStore;
|
||||||
#[cfg(feature = "sqlite-cryptostore")]
|
#[cfg(feature = "sqlite-cryptostore")]
|
||||||
|
@ -61,11 +61,11 @@ pub type OneTimeKeys = BTreeMap<AlgorithmAndDeviceId, OneTimeKey>;
|
||||||
|
|
||||||
pub struct OlmMachine {
|
pub struct OlmMachine {
|
||||||
/// The unique user id that owns this account.
|
/// The unique user id that owns this account.
|
||||||
pub(crate) user_id: UserId,
|
user_id: UserId,
|
||||||
/// The unique device id of the device that holds this account.
|
/// The unique device id of the device that holds this account.
|
||||||
pub(crate) device_id: DeviceId,
|
device_id: DeviceId,
|
||||||
/// Our underlying Olm Account holding our identity keys.
|
/// Our underlying Olm Account holding our identity keys.
|
||||||
pub(crate) account: Account,
|
account: Account,
|
||||||
/// The number of signed one-time keys we have uploaded to the server. If
|
/// The number of signed one-time keys we have uploaded to the server. If
|
||||||
/// this is None, no action will be taken. After a sync request the client
|
/// this is None, no action will be taken. After a sync request the client
|
||||||
/// needs to set this for us, depending on the count we will suggest the
|
/// needs to set this for us, depending on the count we will suggest the
|
||||||
|
@ -147,6 +147,21 @@ impl OlmMachine {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The unique user id that owns this identity.
|
||||||
|
pub(crate) fn user_id(&self) -> &UserId {
|
||||||
|
&self.user_id
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The unique device id of the device that holds this identity.
|
||||||
|
pub(crate) fn device_id(&self) -> &DeviceId {
|
||||||
|
&self.device_id
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get the public parts of the identity keys.
|
||||||
|
pub(crate) fn identity_keys(&self) -> &IdentityKeys {
|
||||||
|
self.account.identity_keys()
|
||||||
|
}
|
||||||
|
|
||||||
/// Should account or one-time keys be uploaded to the server.
|
/// Should account or one-time keys be uploaded to the server.
|
||||||
pub async fn should_upload_keys(&self) -> bool {
|
pub async fn should_upload_keys(&self) -> bool {
|
||||||
if !self.account.shared() {
|
if !self.account.shared() {
|
||||||
|
@ -1869,12 +1884,12 @@ mod test {
|
||||||
let room_id = RoomId::try_from("!test:example.org").unwrap();
|
let room_id = RoomId::try_from("!test:example.org").unwrap();
|
||||||
|
|
||||||
let to_device_requests = alice
|
let to_device_requests = alice
|
||||||
.share_group_session(&room_id, [bob.user_id.clone()].iter())
|
.share_group_session(&room_id, [bob.user_id().clone()].iter())
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let event = ToDeviceEncrypted {
|
let event = ToDeviceEncrypted {
|
||||||
sender: alice.user_id.clone(),
|
sender: alice.user_id().clone(),
|
||||||
content: to_device_requests_to_content(to_device_requests),
|
content: to_device_requests_to_content(to_device_requests),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1890,7 +1905,7 @@ mod test {
|
||||||
event_id: EventId::new("example.org").unwrap(),
|
event_id: EventId::new("example.org").unwrap(),
|
||||||
origin_server_ts: SystemTime::now(),
|
origin_server_ts: SystemTime::now(),
|
||||||
room_id: Some(room_id.clone()),
|
room_id: Some(room_id.clone()),
|
||||||
sender: alice.user_id.clone(),
|
sender: alice.user_id().clone(),
|
||||||
content: encrypted_content,
|
content: encrypted_content,
|
||||||
unsigned: BTreeMap::new(),
|
unsigned: BTreeMap::new(),
|
||||||
};
|
};
|
||||||
|
@ -1907,7 +1922,7 @@ mod test {
|
||||||
_ => panic!("Decrypted room event has the wrong type"),
|
_ => panic!("Decrypted room event has the wrong type"),
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(&decrypted_event.sender, &alice.user_id);
|
assert_eq!(&decrypted_event.sender, alice.user_id());
|
||||||
assert_eq!(&decrypted_event.room_id, &Some(room_id));
|
assert_eq!(&decrypted_event.room_id, &Some(room_id));
|
||||||
assert_eq!(&decrypted_event.content, &content);
|
assert_eq!(&decrypted_event.content, &content);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,8 @@ use serde::Serialize;
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
use zeroize::Zeroize;
|
use zeroize::Zeroize;
|
||||||
|
|
||||||
use olm_rs::account::{IdentityKeys, OlmAccount, OneTimeKeys};
|
pub use olm_rs::account::IdentityKeys;
|
||||||
|
use olm_rs::account::{OlmAccount, OneTimeKeys};
|
||||||
use olm_rs::errors::{OlmAccountError, OlmGroupSessionError, OlmSessionError};
|
use olm_rs::errors::{OlmAccountError, OlmGroupSessionError, OlmSessionError};
|
||||||
use olm_rs::inbound_group_session::OlmInboundGroupSession;
|
use olm_rs::inbound_group_session::OlmInboundGroupSession;
|
||||||
use olm_rs::outbound_group_session::OlmOutboundGroupSession;
|
use olm_rs::outbound_group_session::OlmOutboundGroupSession;
|
||||||
|
|
Loading…
Reference in New Issue