matrix_sdk_test::test_json::keys_query_sets

Struct KeyQueryResponseTemplate

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

A test helper for building test data sets for /keys/query response objects ([KeyQueryResponse]).

§Examples

A simple case with no cross-signing identity and a single device:


// Note that (almost) any 32-byte sequence can be used as a private Ed25519 or Curve25519 key.
// You can also use an arbitrary 32-byte sequence as a *public* key though of course you will
// not know the private key it corresponds to (if indeed there is one).

let template = KeyQueryResponseTemplate::new(owned_user_id!("@alice:localhost"))
    .with_device(
        device_id!("TESTDEVICE"),
        &Curve25519PublicKey::from(b"curvepubcurvepubcurvepubcurvepub".to_owned()),
        &Ed25519SecretKey::from_slice(b"device12device12device12device12"),
        KeyQueryResponseTemplateDeviceOptions::new(),
    );

let response = template.build_response();

A more complex case, with cross-signing keys and a signed device:


let template = KeyQueryResponseTemplate::new(owned_user_id!("@me:localhost"))
    // add cross-signing keys
    .with_cross_signing_keys(
        Ed25519SecretKey::from_slice(b"master12master12master12master12"),
        Ed25519SecretKey::from_slice(b"self1234self1234self1234self1234"),
        Ed25519SecretKey::from_slice(b"user1234user1234user1234user1234"),
    )
    // add verification from another user
    .with_user_verification_signature(
        user_id!("@them:localhost"),
        &Ed25519SecretKey::from_slice(b"otheruser12otheruser12otheruser1"),
    )
    // add signed device
    .with_device(
        device_id!("SECUREDEVICE"),
        &Curve25519PublicKey::from(b"curvepubcurvepubcurvepubcurvepub".to_owned()),
        &Ed25519SecretKey::from_slice(b"device12device12device12device12"),
        KeyQueryResponseTemplateDeviceOptions::new().verified(true),
    );

let response = template.build_response();

Implementations§

Source§

impl KeyQueryResponseTemplate

Source

pub fn new(user_id: OwnedUserId) -> Self

Create a new KeyQueryResponseTemplate for the given user.

Source

pub fn with_cross_signing_keys( self, master_cross_signing_key: Ed25519SecretKey, self_signing_key: Ed25519SecretKey, user_signing_key: Ed25519SecretKey, ) -> Self

Add a set of cross-signing keys to the data to be returned.

The private keys must be provided here so that signatures can be correctly calculated.

Source

pub fn with_device( self, device_id: &DeviceId, curve25519_public_key: &Curve25519PublicKey, ed25519_secret_key: &Ed25519SecretKey, options: KeyQueryResponseTemplateDeviceOptions, ) -> Self

Add a device to the data to be returned.

As well as a device ID and public Curve25519 device key, the private Ed25519 device key must be provided so that the signature can be calculated.

The device can optionally be signed by the self-signing key by calling [KeyResponseTemplateDeviceOptions::verified(true)] on the options object.

Source

pub fn with_user_verification_signature( self, signing_user_id: &UserId, signing_user_user_signing_key: &Ed25519SecretKey, ) -> Self

Add the signature from another user to our master key, as would happen if that user had verified us.

Source

pub fn build_response(&self) -> KeyQueryResponse

Build a /keys/query response containing this user’s data.

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
§

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

§

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