matrix_sdk_crypto

Struct Device

Source
pub struct Device { /* private fields */ }
Expand description

A device represents a E2EE capable client of an user.

Implementations§

Source§

impl Device

Source

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.

Source

pub fn is_our_own_device(&self) -> bool

Is this our own device?

Source

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.

Source

pub fn is_cross_signed_by_owner(&self) -> bool

Is this device cross signed by its owner?

Source

pub fn is_device_owner_verified(&self) -> bool

Is the device owner verified by us?

Source

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.

Source

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.
Source

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.

Source

pub fn is_cross_signing_trusted(&self) -> bool

Is this device considered to be verified using cross signing.

Source

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.

Source

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.
Source

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.

Source

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 the Serialize 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.

Source

pub fn is_dehydrated(&self) -> bool

Whether or not the device is a dehydrated device.

Methods from Deref<Target = DeviceData>§

Source

pub fn user_id(&self) -> &UserId

The user id of the device owner.

Source

pub fn device_id(&self) -> &DeviceId

The unique ID of the device.

Source

pub fn display_name(&self) -> Option<&str>

Get the human readable name of the device.

Source

pub fn get_key(&self, algorithm: DeviceKeyAlgorithm) -> Option<&DeviceKey>

Get the key of the given key algorithm belonging to this device.

Source

pub fn curve25519_key(&self) -> Option<Curve25519PublicKey>

Get the Curve25519 key of the given device.

Source

pub fn ed25519_key(&self) -> Option<Ed25519PublicKey>

Get the Ed25519 key of the given device.

Source

pub fn keys(&self) -> &BTreeMap<OwnedDeviceKeyId, DeviceKey>

Get a map containing all the device keys.

Source

pub fn signatures(&self) -> &Signatures

Get a map containing all the device signatures.

Source

pub fn local_trust_state(&self) -> LocalTrust

Get the trust state of the device.

Source

pub fn is_locally_trusted(&self) -> bool

Is the device locally marked as trusted.

Source

pub fn is_blacklisted(&self) -> bool

Is the device locally marked as blacklisted.

Blacklisted devices won’t receive any group sessions.

Source

pub fn was_withheld_code_sent(&self) -> bool

Returns true if the m.no_olm withheld code was already sent to this device.

Source

pub fn algorithms(&self) -> &[EventEncryptionAlgorithm]

Get the list of algorithms this device supports.

Source

pub fn supports_olm(&self) -> bool

Does this device support any of our known Olm encryption algorithms.

Source

pub fn olm_session_config(&self) -> SessionConfig

Get the optimal SessionConfig for this device.

Source

pub fn is_deleted(&self) -> bool

Is the device deleted.

Source

pub fn as_device_keys(&self) -> &DeviceKeys

Return the device keys

Source

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§

Source§

impl Clone for Device

Source§

fn clone(&self) -> Device

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Device

Available on non-tarpaulin_include only.
Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for Device

Source§

type Target = DeviceData

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> CompatExt for T

§

fn compat(self) -> Compat<T>

Applies the [Compat] adapter by value. Read more
§

fn compat_ref(&self) -> Compat<&T>

Applies the [Compat] adapter by shared reference. Read more
§

fn compat_mut(&mut self) -> Compat<&mut T>

Applies the [Compat] adapter by mutable reference. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, UT> HandleAlloc<UT> for T
where T: Send + Sync,

Source§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
Source§

fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
Source§

fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<>
Source§

fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

impl<T> Identity for T
where T: ?Sized,

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
Available on non-bootstrap only.
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<T> AsyncTraitDeps for T

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T

Source§

impl<T> SendOutsideWasm for T
where T: Send,

Source§

impl<T> SyncOutsideWasm for T
where T: Sync,