pub struct BackupMachine { /* private fields */ }
Expand description

A state machine that handles backing up room keys.

The state machine can be activated using the BackupMachine::enable_backup_v1 method. After the state machine has been enabled a request that will upload encrypted room keys can be generated using the BackupMachine::backup method.

Implementations§

source§

impl BackupMachine

source

pub async fn enabled(&self) -> bool

Are we able to back up room keys to the server?

source

pub async fn verify_backup( &self, backup_info: RoomKeyBackupInfo, compute_all_signatures: bool ) -> Result<SignatureVerification, CryptoStoreError>

Verify some backup info that we downloaded from the server.

Arguments
  • backup_info: The backup info that should be verified. Should be fetched from the server using the /room_keys/version endpoint.

  • compute_all_signatures: Useful for debugging only. If this parameter is true, the internal machinery will compute the trust state for all signatures before returning, instead of short-circuiting on the first trusted signature. Has no impact on whether the backup will be considered verified.

source

pub async fn sign_backup( &self, backup_info: &mut RoomKeyBackupInfo ) -> Result<(), SignatureError>

Sign a RoomKeyBackupInfo using the device’s identity key and, if available, the cross-signing master key.

Arguments
source

pub async fn enable_backup_v1( &self, key: MegolmV1BackupKey ) -> Result<(), CryptoStoreError>

Activate the given backup key to be used to encrypt and backup room keys.

This will use the m.megolm_backup.v1.curve25519-aes-sha2 algorithm to encrypt the room keys.

source

pub async fn room_key_counts(&self) -> Result<RoomKeyCounts, CryptoStoreError>

Get the number of backed up room keys and the total number of room keys.

source

pub async fn disable_backup(&self) -> Result<(), CryptoStoreError>

Disable and reset our backup state.

This will remove any pending backup request, remove the backup key and reset the backup state of each room key we have.

source

pub async fn save_decryption_key( &self, backup_decryption_key: Option<BackupDecryptionKey>, version: Option<String> ) -> Result<(), CryptoStoreError>

Store the backup decryption key in the crypto store.

This is useful if the client wants to support gossiping of the backup key.

source

pub async fn get_backup_keys(&self) -> Result<BackupKeys, CryptoStoreError>

Get the backup keys we have saved in our crypto store.

source

pub async fn backup( &self ) -> Result<Option<(OwnedTransactionId, KeysBackupRequest)>, CryptoStoreError>

Encrypt a batch of room keys and return a request that needs to be sent out to backup the room keys.

source

pub async fn import_backed_up_room_keys( &self, room_keys: BTreeMap<OwnedRoomId, BTreeMap<String, BackedUpRoomKey>>, progress_listener: impl Fn(usize, usize) ) -> Result<RoomKeyImportResult, CryptoStoreError>

Import the given room keys into our store.

Arguments
  • room_keys - A list of previously exported keys that should be imported into our store. If we already have a better version of a key the key will not be imported.

Returns a RoomKeyImportResult containing information about room keys which were imported.

Trait Implementations§

source§

impl Clone for BackupMachine

source§

fn clone(&self) -> BackupMachine

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 BackupMachine

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

const WITNESS: W = W::MAKE

A constant of the type witness
§

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

§

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>).
§

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§

impl<T> Instrument for T

source§

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

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

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> Same for T

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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>,

§

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

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

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

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
source§

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> SendOutsideWasm for T
where T: Send,

source§

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