|
|
@ -360,6 +360,11 @@ The plaintext payload is of the form:
|
|
|
|
"type": "<type of the plaintext event>",
|
|
|
|
"type": "<type of the plaintext event>",
|
|
|
|
"content": "<content for the plaintext event>",
|
|
|
|
"content": "<content for the plaintext event>",
|
|
|
|
"room_id": "<the room_id>",
|
|
|
|
"room_id": "<the room_id>",
|
|
|
|
|
|
|
|
"sender": "<sender_user_id>",
|
|
|
|
|
|
|
|
"recipient": "<recipient_user_id>",
|
|
|
|
|
|
|
|
"recipient_keys": {
|
|
|
|
|
|
|
|
"ed25519": "<our_ed25519_key>"
|
|
|
|
|
|
|
|
},
|
|
|
|
"keys": {
|
|
|
|
"keys": {
|
|
|
|
"ed25519": "<sender_ed25519_key>"
|
|
|
|
"ed25519": "<sender_ed25519_key>"
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -370,6 +375,12 @@ The type and content of the plaintext message event are given in the payload.
|
|
|
|
We include the room ID in the payload, because otherwise the homeserver would
|
|
|
|
We include the room ID in the payload, because otherwise the homeserver would
|
|
|
|
be able to change the room a message was sent in.
|
|
|
|
be able to change the room a message was sent in.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Other properties are included in order to prevent an attacker from publishing
|
|
|
|
|
|
|
|
someone else's curve25519 keys as their own and subsequently claiming to have
|
|
|
|
|
|
|
|
sent messages which they didn't.
|
|
|
|
|
|
|
|
``sender`` must correspond to the user who sent the event, ``recipient`` to
|
|
|
|
|
|
|
|
the local user, and ``recipient_keys`` to the local ed25519 key.
|
|
|
|
|
|
|
|
|
|
|
|
Clients must confirm that the ``sender_key`` and the ``ed25519`` field value
|
|
|
|
Clients must confirm that the ``sender_key`` and the ``ed25519`` field value
|
|
|
|
under the ``keys`` property match the keys returned by |/keys/query|_ for
|
|
|
|
under the ``keys`` property match the keys returned by |/keys/query|_ for
|
|
|
|
the given user, and must also verify the signature of the payload. Without
|
|
|
|
the given user, and must also verify the signature of the payload. Without
|
|
|
|