use .ready to accept a verification, plus some clarification

pull/2241/head
Hubert Chathi 4 years ago
parent 1590ae224c
commit 91f51bb23e

@ -86,7 +86,7 @@ verification itself.
#### Accepting a key verification
To accept a key verification, Bob will send an `m.key.verification.start` event
To accept a key verification, Bob will send an `m.key.verification.ready` event
with the following properties in its contents:
TODO: MSC1849 may use `m.relationship` rather than `m.relates_to`, in which
@ -96,17 +96,38 @@ case this proposal should follow suit.
- `rel_type`: `m.reference`
- `event_id`: the event ID of the key verification request that is being
accepted
- `method`: the key verification method that is being used
- `methods`: an array of verification methods that the device supports
- `from_device`: Bob's device ID. This is required since some verification
methods may use the device IDs as part of the verification process.
Clients should ignore `m.key.verification.start` events that correspond to
Clients should ignore `m.key.verification.ready` events that correspond to
verification requests that they did not send.
After this, either Alice or Bob may start the verification by sending an
`m.key.verification.start` event with the following properties in its contents:
- `m.relates_to`: an object with the properties:
- `rel_type`: `m.reference`
- `event_id`: the event ID of the key verification request that is being
started
- `method`: the key verification method that is being used. This should be a
method that both Alice's and Bob's devices support.
- `from_device`: The user's device ID.
If both Alice and Bob send an `m.key.verification.start` message, and they both
specify the same verification method, then the event sent by the user whose
user ID is the smallest is used, and the other event is ignored. If they both
send an `m.key.verification.start` message and the method is different, then
the verification should be cancelled with a `code` of `m.unexpected_message`.
After the `m.key.verification.start` event is sent, the devices may exchange
messages (if any) according to the verification method in use.
#### Rejecting a key verification
To reject a key verification, Bob will send an `m.key.verification.cancel`
event with the following properties in its contents:
To reject a key verification, Alice or Bob will send an
`m.key.verification.cancel` event with the following properties in its
contents:
- `m.relates_to`: an object with the properties:
- `rel_type`: `m.reference`
@ -135,7 +156,13 @@ properties in its contents:
This provides a record within the room of the result of the verification.
Any subsequent key verification messages relating to the same request are ignored.
Any subsequent key verification messages relating to the same request are
ignored.
Although a client may have successfully completed its side of the verification,
it may wait until receiving an `m.key.verification.done` (or
`m.key.verification.cancel`) event from the other device before informing the
user that the verification was successful or unsuccessful.
#### Other events
@ -145,7 +172,7 @@ should have an `m.relates_to` property as defined for
`m.key.verification.accept` or `m.key.verification.cancel` events.
Clients should ignore events with an `m.relates_to` that have a `rel_type` of
`m.reference` that refer to a verification where it is not the requester
`m.reference` that refer to a verification where it is neither the requester
nor the accepter.
Clients should not redact or edit verification messages. A client may ignore
@ -242,13 +269,16 @@ then the hash commitment will be based on the message contents:
Messages sent by the verification methods, after the initial key verification
request message, could be sent as to-device messages. The
`m.key.verification.start`, `m.key.verification.cancel`, and
`m.key.verification.ready`, `m.key.verification.cancel`, and
`m.key.verification.done` messages must be still be sent in the room, as the
`m.key.verification.start` notifies the sender's other devices that the request
`m.key.verification.ready` notifies the sender's other devices that the request
has been acknowledged, and the `m.key.verification.cancel` and
`m.key.verification.done` provide a record of the status of the key
verification.
However, it seems more natural to have all messages sent via the same
mechanism.
## Potential issues
If a user wants to verify their own device, this will require the creation of a
@ -262,8 +292,8 @@ decryption keys are sent to all of the target user's devices), or should be
sent unencrypted, so that unverified devices will be able to be verified.
Users might have multiple Direct Messaging rooms with other users. In this
case, clients will need to prompt the user to select the room in which they
want to perform the verification.
case, clients could need to prompt the user to select the room in which they
want to perform the verification, or could select a room.
## Security considerations

Loading…
Cancel
Save