pub struct Device { /* private fields */ }
Expand description
A device represents a E2EE capable client of an user.
Implementations§
Source§impl Device
impl Device
Sourcepub async fn start_verification(&self) -> StoreResult<(Sas, ToDeviceRequest)>
pub async fn start_verification(&self) -> StoreResult<(Sas, ToDeviceRequest)>
Start a interactive verification with this Device
Returns a Sas
object and a to-device request that needs to be sent
out.
This method has been deprecated in the spec and the
request_verification()
method should be used instead.
Sourcepub fn is_our_own_device(&self) -> bool
pub fn is_our_own_device(&self) -> bool
Is this our own device?
Sourcepub fn is_owner_of_session(
&self,
session: &InboundGroupSession,
) -> Result<bool, MismatchedIdentityKeysError>
pub fn is_owner_of_session( &self, session: &InboundGroupSession, ) -> Result<bool, MismatchedIdentityKeysError>
Does the given InboundGroupSession
belong to this device?
An InboundGroupSession
is exchanged between devices as an Olm
encrypted m.room_key
event. This method determines if this Device
can be confirmed as the creator and owner of the m.room_key
.
Sourcepub fn is_cross_signed_by_owner(&self) -> bool
pub fn is_cross_signed_by_owner(&self) -> bool
Is this device cross signed by its owner?
Sourcepub fn is_device_owner_verified(&self) -> bool
pub fn is_device_owner_verified(&self) -> bool
Is the device owner verified by us?
Sourcepub fn request_verification(
&self,
) -> (VerificationRequest, OutgoingVerificationRequest)
pub fn request_verification( &self, ) -> (VerificationRequest, OutgoingVerificationRequest)
Request an interactive verification with this Device
.
Returns a VerificationRequest
object and a to-device request that
needs to be sent out.
Sourcepub fn request_verification_with_methods(
&self,
methods: Vec<VerificationMethod>,
) -> (VerificationRequest, OutgoingVerificationRequest)
pub fn request_verification_with_methods( &self, methods: Vec<VerificationMethod>, ) -> (VerificationRequest, OutgoingVerificationRequest)
Request an interactive verification with this Device
.
Returns a VerificationRequest
object and a to-device request that
needs to be sent out.
§Arguments
methods
- The verification methods that we want to support.
Sourcepub fn is_verified(&self) -> bool
pub fn is_verified(&self) -> bool
Is this device considered to be verified.
This method returns true if either is_locally_trusted()
returns true
or if is_cross_signing_trusted()
returns true.
Sourcepub fn is_cross_signing_trusted(&self) -> bool
pub fn is_cross_signing_trusted(&self) -> bool
Is this device considered to be verified using cross signing.
Sourcepub async fn verify(&self) -> Result<SignatureUploadRequest, SignatureError>
pub async fn verify(&self) -> Result<SignatureUploadRequest, SignatureError>
Manually verify this device.
This method will attempt to sign the device using our private cross signing key.
This method will always fail if the device belongs to someone else, we can only sign our own devices.
It can also fail if we don’t have the private part of our self-signing key.
Returns a request that needs to be sent out for the device to be marked as verified.
Sourcepub async fn set_local_trust(&self, trust_state: LocalTrust) -> StoreResult<()>
pub async fn set_local_trust(&self, trust_state: LocalTrust) -> StoreResult<()>
Set the local trust state of the device to the given state.
This won’t affect any cross signing trust state, this only sets a flag marking to have the given trust state.
§Arguments
trust_state
- The new trust state that should be set for the device.
Sourcepub async fn encrypt_room_key_for_forwarding(
&self,
session: InboundGroupSession,
message_index: Option<u32>,
) -> Result<(Session, Raw<ToDeviceEncryptedEventContent>), OlmError>
pub async fn encrypt_room_key_for_forwarding( &self, session: InboundGroupSession, message_index: Option<u32>, ) -> Result<(Session, Raw<ToDeviceEncryptedEventContent>), OlmError>
Encrypt the given inbound group session as a forwarded room key for this device.
Sourcepub async fn encrypt_event_raw(
&self,
event_type: &str,
content: &Value,
) -> Result<Raw<ToDeviceEncryptedEventContent>, OlmError>
pub async fn encrypt_event_raw( &self, event_type: &str, content: &Value, ) -> Result<Raw<ToDeviceEncryptedEventContent>, OlmError>
Encrypt an event for this device.
Beware that the 1-to-1 session must be established prior to this
call by using the OlmMachine::get_missing_sessions
method.
Notable limitation: The caller is responsible for sending the encrypted event to the target device, this encryption method supports out-of-order messages to a certain extent (2000 messages), if multiple messages are encrypted using this method they should be sent in the same order as they are encrypted.
Note: To instead encrypt an event meant for a room use the
OlmMachine::encrypt_room_event()
method instead.
§Arguments
event_type
- The type of the event to be sent.content
- The content of the event to be sent. This should be a type that implements theSerialize
trait.
§Returns
The encrypted raw content to be shared with your preferred transport
layer (usually to-device), OlmError::MissingSession
if there is
no established session with the device.
Sourcepub fn is_dehydrated(&self) -> bool
pub fn is_dehydrated(&self) -> bool
Whether or not the device is a dehydrated device.
Methods from Deref<Target = DeviceData>§
Sourcepub fn display_name(&self) -> Option<&str>
pub fn display_name(&self) -> Option<&str>
Get the human readable name of the device.
Sourcepub fn get_key(&self, algorithm: DeviceKeyAlgorithm) -> Option<&DeviceKey>
pub fn get_key(&self, algorithm: DeviceKeyAlgorithm) -> Option<&DeviceKey>
Get the key of the given key algorithm belonging to this device.
Sourcepub fn curve25519_key(&self) -> Option<Curve25519PublicKey>
pub fn curve25519_key(&self) -> Option<Curve25519PublicKey>
Get the Curve25519 key of the given device.
Sourcepub fn ed25519_key(&self) -> Option<Ed25519PublicKey>
pub fn ed25519_key(&self) -> Option<Ed25519PublicKey>
Get the Ed25519 key of the given device.
Sourcepub fn keys(&self) -> &BTreeMap<OwnedDeviceKeyId, DeviceKey>
pub fn keys(&self) -> &BTreeMap<OwnedDeviceKeyId, DeviceKey>
Get a map containing all the device keys.
Sourcepub fn signatures(&self) -> &Signatures
pub fn signatures(&self) -> &Signatures
Get a map containing all the device signatures.
Sourcepub fn local_trust_state(&self) -> LocalTrust
pub fn local_trust_state(&self) -> LocalTrust
Get the trust state of the device.
Sourcepub fn is_locally_trusted(&self) -> bool
pub fn is_locally_trusted(&self) -> bool
Is the device locally marked as trusted.
Sourcepub fn is_blacklisted(&self) -> bool
pub fn is_blacklisted(&self) -> bool
Is the device locally marked as blacklisted.
Blacklisted devices won’t receive any group sessions.
Sourcepub fn was_withheld_code_sent(&self) -> bool
pub fn was_withheld_code_sent(&self) -> bool
Returns true if the m.no_olm
withheld code was already sent to this
device.
Sourcepub fn algorithms(&self) -> &[EventEncryptionAlgorithm]
pub fn algorithms(&self) -> &[EventEncryptionAlgorithm]
Get the list of algorithms this device supports.
Sourcepub fn supports_olm(&self) -> bool
pub fn supports_olm(&self) -> bool
Does this device support any of our known Olm encryption algorithms.
Sourcepub fn olm_session_config(&self) -> SessionConfig
pub fn olm_session_config(&self) -> SessionConfig
Get the optimal SessionConfig
for this device.
Sourcepub fn is_deleted(&self) -> bool
pub fn is_deleted(&self) -> bool
Is the device deleted.
Sourcepub fn as_device_keys(&self) -> &DeviceKeys
pub fn as_device_keys(&self) -> &DeviceKeys
Return the device keys
Sourcepub fn first_time_seen_ts(&self) -> MilliSecondsSinceUnixEpoch
pub fn first_time_seen_ts(&self) -> MilliSecondsSinceUnixEpoch
Get the local timestamp of when this device was first persisted, in milliseconds since epoch (client local time).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Device
impl !RefUnwindSafe for Device
impl Send for Device
impl Sync for Device
impl Unpin for Device
impl !UnwindSafe for Device
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more