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

An implementation of CryptoStore that uses IndexedDB for persistent storage.

Implementations§

source§

impl IndexeddbCryptoStore

source

pub async fn open() -> Result<Self, IndexeddbCryptoStoreError>

Open a new IndexeddbCryptoStore with default name and no passphrase

source

pub async fn open_with_passphrase( prefix: &str, passphrase: &str ) -> Result<Self, IndexeddbCryptoStoreError>

Open a new IndexeddbCryptoStore with given name and passphrase

source

pub async fn open_with_name( name: &str ) -> Result<Self, IndexeddbCryptoStoreError>

Open a new IndexeddbCryptoStore with given name and no passphrase

Trait Implementations§

source§

impl CryptoStore for IndexeddbCryptoStore

§

type Error = IndexeddbCryptoStoreError

The error type used by this crypto store.
source§

fn save_pending_changes<'life0, 'async_trait>( &'life0 self, changes: PendingChanges ) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Save the set of changes to the store. Read more
source§

fn save_changes<'life0, 'async_trait>( &'life0 self, changes: Changes ) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Save the set of changes to the store. Read more
source§

fn load_tracked_users<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Vec<TrackedUser>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Load the list of users whose devices we are keeping track of.
source§

fn get_outbound_group_session<'life0, 'life1, 'async_trait>( &'life0 self, room_id: &'life1 RoomId ) -> Pin<Box<dyn Future<Output = Result<Option<OutboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get the outbound group session we have stored that is used for the given room.
source§

fn get_outgoing_secret_requests<'life0, 'life1, 'async_trait>( &'life0 self, request_id: &'life1 TransactionId ) -> Pin<Box<dyn Future<Output = Result<Option<GossipRequest>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get an outgoing secret request that we created that matches the given request id. Read more
source§

fn load_account<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Option<Account>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Load an account that was previously stored.
source§

fn next_batch_token<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Option<String>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Load the next-batch token for a to-device query, if any.
source§

fn load_identity<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Option<PrivateCrossSigningIdentity>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Try to load a private cross signing identity, if one is stored.
source§

fn get_sessions<'life0, 'life1, 'async_trait>( &'life0 self, sender_key: &'life1 str ) -> Pin<Box<dyn Future<Output = Result<Option<Arc<Mutex<Vec<Session>>>>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get all the sessions that belong to the given sender key. Read more
source§

fn get_inbound_group_session<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, room_id: &'life1 RoomId, session_id: &'life2 str ) -> Pin<Box<dyn Future<Output = Result<Option<InboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Get the inbound group session from our store. Read more
source§

fn get_inbound_group_sessions<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Vec<InboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get all the inbound group sessions we have stored.
source§

fn inbound_group_session_counts<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<RoomKeyCounts, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get the number inbound group sessions we have and how many of them are backed up.
source§

fn inbound_group_sessions_for_backup<'life0, 'async_trait>( &'life0 self, limit: usize ) -> Pin<Box<dyn Future<Output = Result<Vec<InboundGroupSession>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get all the inbound group sessions we have not backed up yet.
source§

fn mark_inbound_group_sessions_as_backed_up<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, room_and_session_ids: &'life1 [(&'life2 RoomId, &'life3 str)] ) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Mark the inbound group sessions with the supplied room and session IDs as backed up
source§

fn reset_backup_state<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Reset the backup state of all the stored inbound group sessions.
source§

fn save_tracked_users<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, users: &'life1 [(&'life2 UserId, bool)] ) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Save a list of users and their respective dirty/outdated flags to the store.
source§

fn get_device<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, user_id: &'life1 UserId, device_id: &'life2 DeviceId ) -> Pin<Box<dyn Future<Output = Result<Option<ReadOnlyDevice>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Get the device for the given user with the given device ID. Read more
source§

fn get_user_devices<'life0, 'life1, 'async_trait>( &'life0 self, user_id: &'life1 UserId ) -> Pin<Box<dyn Future<Output = Result<HashMap<OwnedDeviceId, ReadOnlyDevice>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get all the devices of the given user. Read more
source§

fn get_user_identity<'life0, 'life1, 'async_trait>( &'life0 self, user_id: &'life1 UserId ) -> Pin<Box<dyn Future<Output = Result<Option<ReadOnlyUserIdentities>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get the user identity that is attached to the given user id. Read more
source§

fn is_message_known<'life0, 'life1, 'async_trait>( &'life0 self, hash: &'life1 OlmMessageHash ) -> Pin<Box<dyn Future<Output = Result<bool, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Check if a hash for an Olm message stored in the database.
source§

fn get_secrets_from_inbox<'life0, 'life1, 'async_trait>( &'life0 self, secret_name: &'life1 SecretName ) -> Pin<Box<dyn Future<Output = Result<Vec<GossippedSecret>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get all the secrets with the given [SecretName] we have currently stored.
source§

fn delete_secrets_from_inbox<'life0, 'life1, 'async_trait>( &'life0 self, secret_name: &'life1 SecretName ) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Delete all the secrets with the given [SecretName] we have currently stored.
source§

fn get_secret_request_by_info<'life0, 'life1, 'async_trait>( &'life0 self, key_info: &'life1 SecretInfo ) -> Pin<Box<dyn Future<Output = Result<Option<GossipRequest>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get an outgoing key request that we created that matches the given requested key info. Read more
source§

fn get_unsent_secret_requests<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Vec<GossipRequest>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get all outgoing secret requests that we have in the store.
source§

fn delete_outgoing_secret_requests<'life0, 'life1, 'async_trait>( &'life0 self, request_id: &'life1 TransactionId ) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Delete an outgoing key request that we created that matches the given request id. Read more
source§

fn load_backup_keys<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<BackupKeys, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get the backup keys we have stored.
source§

fn get_withheld_info<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, room_id: &'life1 RoomId, session_id: &'life2 str ) -> Pin<Box<dyn Future<Output = Result<Option<RoomKeyWithheldEvent>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Get withheld info for this key. Allows to know if the session was not sent on purpose. This only returns withheld info sent by the owner of the group session, not the one you can get from a response to a key request from another of your device.
source§

fn get_room_settings<'life0, 'life1, 'async_trait>( &'life0 self, room_id: &'life1 RoomId ) -> Pin<Box<dyn Future<Output = Result<Option<RoomSettings>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get the room settings, such as the encryption algorithm or whether to encrypt only for trusted devices. Read more
source§

fn get_custom_value<'life0, 'life1, 'async_trait>( &'life0 self, key: &'life1 str ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get arbitrary data from the store Read more
source§

fn set_custom_value<'life0, 'life1, 'async_trait>( &'life0 self, key: &'life1 str, value: Vec<u8> ) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Put arbitrary data into the store Read more
source§

fn remove_custom_value<'life0, 'life1, 'async_trait>( &'life0 self, key: &'life1 str ) -> Pin<Box<dyn Future<Output = Result<(), IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Remove arbitrary data into the store Read more
source§

fn try_take_leased_lock<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, lease_duration_ms: u32, key: &'life1 str, holder: &'life2 str ) -> Pin<Box<dyn Future<Output = Result<bool, IndexeddbCryptoStoreError>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Try to take a leased lock. Read more
source§

impl Debug for IndexeddbCryptoStore

source§

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

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

impl Drop for IndexeddbCryptoStore

source§

fn drop(&mut self)

Executes the destructor for this type. 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> IntoCryptoStore for T
where T: CryptoStore + 'static,

source§

impl<T> Same for T

§

type Output = T

Should always be Self
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
§

impl<T> AsyncTraitDeps for T
where T: Debug + SendOutsideWasm + SyncOutsideWasm,

§

impl<T> SendOutsideWasm for T

§

impl<T> SyncOutsideWasm for T