Skip to main content

RoomCrypto

Struct RoomCrypto 

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

Per-room Megolm crypto: one outbound session (ours) + many inbound (others’).

Implementations§

Source§

impl RoomCrypto

Source

pub fn new_for_room( db: Db, room_id: String, our_fingerprint: String, persist_key: [u8; 32], ) -> Result<Self>

Create a fresh outbound session and persist it. persist_key is the 32-byte key the at-rest session pickles are encrypted under.

Source

pub fn load( db: Db, room_id: String, our_fingerprint: String, persist_key: [u8; 32], ) -> Result<Option<Self>>

Load any persisted sessions for the room. Returns None when no usable outbound session is stored (we haven’t joined or created it, or the only outbound pickle is unreadable).

Resilient by design: a single session that fails to decode or decrypt is logged and skipped rather than aborting the whole room load. One corrupt row should not lock the user out.

Source

pub fn encrypt(&mut self, plaintext: &[u8]) -> Result<(String, Vec<u8>)>

Encrypt a plaintext using our outbound session. Returns (session_id, MegolmMessage bytes).

Source

pub fn decrypt( &mut self, sender_fingerprint: &str, session_id: &str, ciphertext: &[u8], ) -> Result<Vec<u8>>

Decrypt a message from a specific sender.

Source

pub fn add_inbound_session( &mut self, sender_fingerprint: &str, session_key_b64: &str, ) -> Result<()>

Add an inbound session from another member. session_key_b64 is the base64-encoded Megolm SessionKey they shared with us.

Source

pub fn our_session_key_b64(&self) -> String

Get our outbound session key for sharing with new members (base64).

Source

pub fn our_session_id(&self) -> String

Source

pub fn our_fingerprint(&self) -> &str

Source

pub fn room_id(&self) -> &str

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

Source§

type Output = T

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

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