Services/KeyExchange: Difference between revisions

Jump to navigation Jump to search
Line 200: Line 200:
<pre>
<pre>
C: PUT /a7id HTTP/1.1
C: PUT /a7id HTTP/1.1
C: If-None-Match: *
C:  
C:  
C: {
C: {
Line 220: Line 221:


S: HTTP/1.1 200 OK
S: HTTP/1.1 200 OK
S: ETag: "444b424cbc84805b40bcd35c8ebe4524"
S: ETag: "etag-of-receiver1-message"
 
S: HTTP/1.1 412 Precondition Failed
S: ETag: "etag-of-receiver1-message"
</pre></li>
</pre></li>
<li>Desktop asks user for the PIN, extracts channel ID and weak secret, fetches Mobile's msg 1
<li>Desktop asks user for the PIN, extracts channel ID and weak secret, fetches Mobile's msg 1
Line 227: Line 231:


S: HTTP/1.1 200 OK
S: HTTP/1.1 200 OK
...
S: ETag: "etag-of-receiver1-message"
 
</pre></li>
</pre></li>
<li>Desktop computes and uploads msg 1
<li>Desktop computes and uploads msg 1
<pre>
<pre>
C: PUT /a7id HTTP/1.1
C: PUT /a7id HTTP/1.1
C: If-Match: "etag-of-receiver1-message"
C:  
C:  
C: {
C: {
Line 252: Line 258:


S: HTTP/1.1 200 OK
S: HTTP/1.1 200 OK
S: Etag: "209a424cbc8480465abcd35c8ebe4524"
S: Etag: "etag-of-sender1-message"
 
S: HTTP/1.1 412 Precondition Failed
S: Etag: "etag-of-sender1-message"
</pre></li>
</pre></li>
<li>Mobile polls for Desktop's msg 1
<li>Mobile polls for Desktop's msg 1
<pre>
<pre>
C: GET /a7id HTTP/1.1
C: GET /a7id HTTP/1.1
C: If-None-Match: "444b424cbc84805b40bcd35c8ebe4524"
C: If-None-Match: "etag-of-receiver1-message"


S: HTTP/1.1 304 Not Modified
S: HTTP/1.1 304 Not Modified
Line 264: Line 273:
<pre>
<pre>
C: GET /a7id HTTP/1.1
C: GET /a7id HTTP/1.1
C: If-None-Match: "444b424cbc84805b40bcd35c8ebe4524"


S: HTTP/1.1 200 OK
S: HTTP/1.1 200 OK
S: Etag: "etag-of-sender1-message"
...
...
</pre>
</pre>
  <p>Mobile computes and uploads msg 2</p>
  <p>Mobile computes and uploads msg 2</p>
  <pre>C: PUT /a7id HTTP/1.1
  <pre>C: PUT /a7id HTTP/1.1
C: If-Match: "etag-of-sender1-message"
C:  
C:  
C: {
C: {
Line 285: Line 295:


S: HTTP/1.1 200 OK
S: HTTP/1.1 200 OK
S: ETag: "111a424cbc8480465abcd35c8ebe4524"
S: ETag: "etag-of-receiver2-message"
 
S: HTTP/1.1 412 Precondition Failed
S: ETag: "etag-of-receiver2-message"
</pre></li>
</pre></li>
<li>Desktop polls for and eventually retrieves Mobile's msg 2
<li>Desktop polls for and eventually retrieves Mobile's msg 2
<pre>
<pre>
C: GET /a7id HTTP/1.1
C: GET /a7id HTTP/1.1
C: If-None-Match: "209a424cbc8480465abcd35c8ebe4524"
C: If-None-Match: "etag-of-sender1-message"


S: HTTP/1.1 200 OK
S: HTTP/1.1 200 OK
S: Etag: "etag-of-receiver2-message"
...
S: HTTP/1.1 412 Precondition Failed
S: Etag: "etag-of-receiver2-message"
...
...
</pre>
</pre>
Line 298: Line 316:
<pre>
<pre>
C: PUT /a7id HTTP/1.1
C: PUT /a7id HTTP/1.1
C: If-Match: "etag-of-receiver2-message"
C:  
C:  
C: {
C: {
Line 310: Line 329:
C:    }
C:    }
C: }
C: }
S: HTTP/1.1 200 OK
S: ETag: "etag-of-sender2-message"
S: HTTP/1.1 412 Precondition Failed
S: ETag: "etag-of-sender2-message"
</pre></li>
</pre></li>


Line 315: Line 340:
<pre>
<pre>
C: GET /a7id HTTP/1.1
C: GET /a7id HTTP/1.1
C:  
C: If-No-Match: "etag-of-receiver2-message"


S: HTTP/1.1 200 OK
S: HTTP/1.1 200 OK
...
S: Etag: "etag-of-sender2-message"
{ 'type': 'sender2', ... }
 
S: HTTP/1.1 412 Precondition failed
S: Etag: "etag-of-sender2-message"
</pre>
</pre>
<p>Mobile computes key, uploads encrypted known message "0123456789ABCDEF" to prove its knowledge (msg 3)</p>
<p>Mobile computes key, uploads encrypted known message "0123456789ABCDEF" to prove its knowledge (msg 3)</p>
<pre>
<pre>
C: PUT /a7id HTTP/1.1
C: PUT /a7id HTTP/1.1
C: If-Match: "etag-of-sender2-message"
C:  
C:  
C: {
C: {
Line 331: Line 361:
C:    }
C:    }
C: }
C: }
S: HTTP/1.1 200 OK
S: Etag: "etag-of-receiver3-message"
S: HTTP/1.1 412 Precondition failed
S: Etag: "etag-of-receiver3-message"
</pre></li>
</pre></li>
</li>
</li>
Line 337: Line 373:
<pre>
<pre>
C: GET /a7id HTTP/1.1
C: GET /a7id HTTP/1.1
C:  
C: If-No-Match: ""


S: HTTP/1.1 200 OK
S: HTTP/1.1 200 OK
C: ETag: "etag-of-receiver3-message"
...
...
</pre>
</pre>
verifies it against its own version. If the hash matches, it encrypts and uploads Sync credentials.
Desktop verifies it against its own version. If the hash matches, it encrypts and uploads Sync credentials.
<pre>
<pre>
C: PUT /a7id HTTP/1.1
C: PUT /a7id HTTP/1.1
C: If-Match: "etag-of-receiver3-message"
C:  
C:  
C: {
C: {
Line 354: Line 392:
C:    }
C:    }
C: }
C: }
S: HTTP/1.1 200 OK
S: Etag: "etag-of-sender3-message"
S: HTTP/1.1 412 Precondition failed
S: Etag: "etag-of-sender3-message"
</pre>
</pre>
If the hash does not match, the Desktop deletes the session.
If the hash does not match, the Desktop deletes the session.
Line 368: Line 413:
<pre>
<pre>
C: GET /a7id HTTP/1.1
C: GET /a7id HTTP/1.1
C: If-None-Match: "111a424cbc8480465abcd35c8ebe4524"
C: If-None-Match: "etag-of-receiver3-message"


S: HTTP/1.1 200 OK
S: HTTP/1.1 200 OK
Confirmed users
971

edits

Navigation menu