@@ -113,12 +113,12 @@ even nonces. Device A starts with `1`, using only odd nonces.
113
113
- Device G generates ** (Gp, Gs)** , where ** Gp** is its public key and ** Gs** the private (secret) key.
114
114
- Device S generates ** (Sp, Ss)** , where ** Sp** is its public key and ** Ss** the private (secret) key.
115
115
116
- 1 . ** Create rendezvous session**
116
+ 2 . ** Create rendezvous session**
117
117
118
118
Device G creates a rendezvous session by making a ` POST ` request (as described previously) to the nominated homeserver
119
119
with an empty payload. It parses the ** id** and ** server** received.
120
120
121
- 1 . ** Initial key exchange**
121
+ 3 . ** Initial key exchange**
122
122
123
123
Device G displays a QR code containing:
124
124
@@ -138,7 +138,7 @@ Device S scans and parses the QR code to obtain **Gp**, the rendezvous session *
138
138
139
139
At this point Device S should check that the received intent matches what the user has asked to do on the device.
140
140
141
- 1 . ** Device S sends the initial message**
141
+ 4 . ** Device S sends the initial message**
142
142
143
143
Device S computes a shared secret ** SH** using ECDH between ** Ss** and ** Gp** , thereby establishing a secure channel
144
144
with Device G which can be layered on top of the insecure rendezvous session transport. It then discards ** Ss** and
@@ -162,7 +162,7 @@ LoginInitiateMessage := UnpaddedBase64(TaggedCiphertext) || "|" || UnpaddedBase6
162
162
Device S then sends the ** LoginInitiateMessage** as the payload to the rendezvous session using a ` PUT ` request with
163
163
` Content-Type ` header set to ` text/plain ` .
164
164
165
- 1 . ** Device G confirms**
165
+ 5 . ** Device G confirms**
166
166
167
167
Device G receives ** LoginInitiateMessage** (potentially coming from Device S) from the insecure rendezvous session by
168
168
polling with ` GET ` requests.
@@ -186,7 +186,7 @@ LoginOkMessage := UnpaddedBase64Encode(TaggedCiphertext)
186
186
Device G sends ** LoginOkMessage** as the payload via ` PUT ` request with ` Content-Type ` header set to ` text/plain ` to the
187
187
insecure rendezvous session.
188
188
189
- 1 . ** Verification by Device S**
189
+ 6 . ** Verification by Device S**
190
190
191
191
Device S receives a response over the insecure rendezvous session by polling with ` GET ` requests, potentially from
192
192
Device G.
@@ -216,7 +216,7 @@ Device S then displays an indication to the user that the secure channel has bee
216
216
should be entered on the other device when prompted. e.g. wording to say "secure connection established"; enter the code
217
217
XY on your other device;
218
218
219
- 1 . ** Out-of-band confirmation**
219
+ 7 . ** Out-of-band confirmation**
220
220
221
221
** Warning** : * This step is crucial for the security of the scheme since it overcomes the aforementioned limitation of ECIES.*
222
222
@@ -391,7 +391,7 @@ homeserver specified:
391
391
}
392
392
```
393
393
394
- 1 . ** New device checks if it can use an available protocol**
394
+ 2 . ** New device checks if it can use an available protocol**
395
395
396
396
Once the existing device knows which homeserver it is to use it then:
397
397
@@ -489,7 +489,7 @@ Content-Type: application/json
489
489
490
490
At this point the new device knows that, subject to the user consenting, it should be able to complete the login
491
491
492
- 1 . ** New device informs existing device that it wants to use the device_authorization_grant**
492
+ 3 . ** New device informs existing device that it wants to use the ` device_authorization_grant ` **
493
493
494
494
The new device send the ` verification_uri ` and, if present, the ` verification_uri_complete ` over to the existing device and
495
495
indicates that want to use protocol ` device_authorization_grant ` along with the ` device_id ` that will be used:
@@ -651,7 +651,7 @@ sequenceDiagram
651
651
652
652
Then we continue with the actual login:
653
653
654
- 1 . ** New device waits for approval from OIDC Provider**
654
+ 4 . ** New device waits for approval from OIDC Provider**
655
655
656
656
On receipt of the ` m.login.protocol_accepted ` message:
657
657
@@ -678,7 +678,7 @@ handles the different responses
678
678
- If the user consents in the next step then the new device will receive an ` access_token ` and ` refresh_token ` etc. as
679
679
normal for OIDC with MSC3861.
680
680
681
- 1 . ** User is asked by OIDC Provider to consent on existing device**
681
+ 5 . ** User is asked by OIDC Provider to consent on existing device**
682
682
683
683
On receipt of the ` m.login.protocol ` message above, and having completed step 7 of the secure channel establishment, the
684
684
existing device then asserts that there is no existing device corresponding to the ` device_id ` from the
@@ -786,7 +786,7 @@ If the device isn’t immediately visible it can repeat the `GET` request for up
786
786
787
787
If no device is found then the process should be stopped.
788
788
789
- 1 . ** Existing device shares secrets with new device**
789
+ 2 . ** Existing device shares secrets with new device**
790
790
791
791
The existing device sends a ` m.login.secrets ` message via the secure channel:
792
792
@@ -806,7 +806,7 @@ The existing device sends a `m.login.secrets` message via the secure channel:
806
806
}
807
807
```
808
808
809
- 1 . ** New device cross-signs itself and uploads device keys**
809
+ 3 . ** New device cross-signs itself and uploads device keys**
810
810
811
811
On receipt of the m.login.secrets message the new device can store the secrets locally
812
812
0 commit comments