mtx::events::msg::ForwardedRoomKey struct

Content of the m.forwarded_room_key event.

Public variables

std::string algorithm
Required. The encryption algorithm the key in this event is to be used with.
std::string room_id
Required. The room where the key is used.
std::string session_id
Required. The ID of the session that the key is for.
std::string session_key
Required. The key to be exchanged.
std::string sender_key
Required. The Curve25519 key of the device which initiated the session originally.
std::string sender_claimed_ed25519_key
Required. The Ed25519 key of the device which initiated the session originally.
std::vector<std::string> forwarding_curve25519_key_chain
Required. Chain of Curve25519 keys.

Variable documentation

std::string mtx::events::msg::ForwardedRoomKey::sender_claimed_ed25519_key

Required. The Ed25519 key of the device which initiated the session originally.

It is 'claimed' because the receiving device has no way to tell that the original room_key actually came from a device which owns the private part of this key unless they have done device verification.

std::vector<std::string> mtx::events::msg::ForwardedRoomKey::forwarding_curve25519_key_chain

Required. Chain of Curve25519 keys.

It starts out empty, but each time the key is forwarded to another device, the previous sender in the chain is added to the end of the list. For example, if the key is forwarded from A to B to C, this field is empty between A and B, and contains A's Curve25519 key between B and C.