Struct matrix_sdk::encryption::secret_storage::SecretStorage

source ·
pub struct SecretStorage { /* private fields */ }
Expand description

A high-level API to manage secret storage.

To get this, use [Client::encryption()::secret_storage()].

Implementations§

source§

impl SecretStorage

source

pub async fn open_secret_store( &self, secret_storage_key: &str, ) -> Result<SecretStore>

Open the SecretStore with the given key.

The secret_storage_key can be a passphrase or a Base58 encoded secret storage key.

§Examples
use ruma::events::secret::request::SecretName;

let secret_store = client
    .encryption()
    .secret_storage()
    .open_secret_store("It's a secret to everybody")
    .await?;

let my_secret = "Top secret secret";
let my_secret_name = "m.treasure";

secret_store.put_secret(my_secret_name, my_secret);
source

pub fn create_secret_store(&self) -> CreateStore<'_>

Create a new SecretStore.

The SecretStore will be protected by a randomly generated key, or optionally a passphrase can be provided as well.

In both cases, whether a passphrase was provided or not, the key to open the SecretStore can be obtained using the SecretStore::secret_storage_key() method.

Note: This method will set the new secret storage key as the default key in the m.secret_storage.default_key event. All the known secrets will be re-encrypted and uploaded to the homeserver as well. This includes the following secrets:

  • m.cross_signing.master: The master cross-signing key.
  • m.cross_signing.self_signing: The self-signing cross-signing key.
  • m.cross_signing.user_signing: The user-signing cross-signing key.
§Examples
use ruma::events::secret::request::SecretName;

let secret_store = client
    .encryption()
    .secret_storage()
    .create_secret_store()
    .await?;

let my_secret = "Top secret secret";
let my_secret_name = SecretName::from("m.treasure");

secret_store.put_secret(my_secret_name, my_secret);

let secret_storage_key = secret_store.secret_storage_key();

println!("Your secret storage key is {secret_storage_key}, save it somewhere safe.");
source

pub async fn is_enabled(&self) -> Result<bool>

Run a network request to find if secret storage is set up for this user.

Trait Implementations§

source§

impl Debug for SecretStorage

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.

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,

§

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

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

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

source§

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

source§

impl<T> AsyncTraitDeps for T

source§

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

source§

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