|
|
|
@ -53,9 +53,9 @@
|
|
|
|
|
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
|
|
|
|
|
<!-- start req_pq_multi -->
|
|
|
|
|
<p>Sent payload (excluding transport headers/trailers):</p>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 24 9C 04 00 30 50 A0 65
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 8C CF CC F1 62 50 4E 4B
|
|
|
|
|
0020 | BA 8C 57 0E B7 B8 CF 18</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 54 EC 0E 00 AD DB A6 65
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 4A 1F 70 78 42 61 33 91
|
|
|
|
|
0020 | FB E9 02 12 4D 75 30 58</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
|
<pre><code>req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;</code></pre>
|
|
|
|
|
<table class="table">
|
|
|
|
@ -77,7 +77,7 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>249C04003050A065</code></td>
|
|
|
|
|
<td><code>54EC0E00ADDBA665</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -95,7 +95,7 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>8CCFCCF162504E4BBA8C570EB7B8CF18</code></td>
|
|
|
|
|
<td><code>4A1F707842613391FBE902124D753058</code></td>
|
|
|
|
|
<td>Random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -104,11 +104,11 @@
|
|
|
|
|
<h5><a class="anchor" href="#2-server-sends-response-of-the-form" id="2-server-sends-response-of-the-form" name="2-server-sends-response-of-the-form"><i class="anchor-icon"></i></a>2) Server sends response of the form</h5>
|
|
|
|
|
<!-- start resPQ -->
|
|
|
|
|
<p>Received payload (excluding transport headers/trailers):</p>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 38 4D 7A 30 50 A0 65
|
|
|
|
|
0010 | A8 00 00 00 63 24 16 05 8C CF CC F1 62 50 4E 4B
|
|
|
|
|
0020 | BA 8C 57 0E B7 B8 CF 18 64 FE A4 18 42 87 28 D8
|
|
|
|
|
0030 | CA 9D 63 0E CD BC 52 3B 08 2D 69 27 07 00 CB 9D
|
|
|
|
|
0040 | B1 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 78 BD 73 AD DB A6 65
|
|
|
|
|
0010 | BC 00 00 00 63 24 16 05 4A 1F 70 78 42 61 33 91
|
|
|
|
|
0020 | FB E9 02 12 4D 75 30 58 E5 A9 5A FB 78 BB 37 48
|
|
|
|
|
0030 | 52 CE 9F 64 23 3E 92 3B 08 1F C8 06 21 D3 44 76
|
|
|
|
|
0040 | CD 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
|
|
|
|
|
0050 | 35 5F C3 0B 21 6B E8 6C 02 2B B4 C3 85 FD 64 DE
|
|
|
|
|
0060 | 85 1D 9D D0</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
@ -132,13 +132,13 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>01384D7A3050A065</code></td>
|
|
|
|
|
<td><code>0178BD73ADDBA665</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_length</td>
|
|
|
|
|
<td>16, 4</td>
|
|
|
|
|
<td><code>A8000000</code> (168 in decimal)</td>
|
|
|
|
|
<td><code>BC000000</code> (188 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>8CCFCCF162504E4BBA8C570EB7B8CF18</code></td>
|
|
|
|
|
<td><code>4A1F707842613391FBE902124D753058</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>64FEA418428728D8CA9D630ECDBC523B</code></td>
|
|
|
|
|
<td><code>E5A95AFB78BB374852CE9F64233E923B</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>082D69270700CB9DB1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 3272189515292974513</td>
|
|
|
|
|
<td><code>081FC80621D34476CD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2290087152866064077</td>
|
|
|
|
|
<td>Single-byte prefix denoting length, an 8-byte string, and three bytes of padding</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -208,22 +208,22 @@
|
|
|
|
|
<h4><a class="anchor" href="#proof-of-work" id="proof-of-work" name="proof-of-work"><i class="anchor-icon"></i></a>Proof of work</h4>
|
|
|
|
|
<h5><a class="anchor" href="#3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" id="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" name="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q"><i class="anchor-icon"></i></a>3) Client decomposes pq into prime factors such that p < q.</h5>
|
|
|
|
|
<!-- start pq -->
|
|
|
|
|
<pre><code>pq = 3272189515292974513</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>3272189515292974513 = 1695785471 * 1929601103</code></p>
|
|
|
|
|
<pre><code>p = 1695785471
|
|
|
|
|
q = 1929601103</code></pre>
|
|
|
|
|
<pre><code>pq = 2290087152866064077</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2290087152866064077 = 1183657913 * 1934754229</code></p>
|
|
|
|
|
<pre><code>p = 1183657913
|
|
|
|
|
q = 1934754229</code></pre>
|
|
|
|
|
<!-- end pq -->
|
|
|
|
|
<h4><a class="anchor" href="#presenting-proof-of-work-server-authentication" id="presenting-proof-of-work-server-authentication" name="presenting-proof-of-work-server-authentication"><i class="anchor-icon"></i></a>Presenting proof of work; Server authentication</h4>
|
|
|
|
|
<h5><a class="anchor" href="#4-encrypted-data-payload-generation" id="4-encrypted-data-payload-generation" name="4-encrypted-data-payload-generation"><i class="anchor-icon"></i></a>4) <code>encrypted_data</code> payload generation</h5>
|
|
|
|
|
<p>First of all, generate an <code>encrypted_data</code> payload as follows:</p>
|
|
|
|
|
<!-- start p_q_inner_data_dc -->
|
|
|
|
|
<p>Generated payload (excluding transport headers/trailers):</p>
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 2D 69 27 07 00 CB 9D B1 00 00 00
|
|
|
|
|
0010 | 04 65 13 A1 FF 00 00 00 04 73 03 60 4F 00 00 00
|
|
|
|
|
0020 | 8C CF CC F1 62 50 4E 4B BA 8C 57 0E B7 B8 CF 18
|
|
|
|
|
0030 | 64 FE A4 18 42 87 28 D8 CA 9D 63 0E CD BC 52 3B
|
|
|
|
|
0040 | 83 E4 D0 8E 61 59 24 9F 91 C7 AD 96 14 1A 5E C7
|
|
|
|
|
0050 | 53 35 1C 90 3A 8C DE 33 E9 14 6A FF 11 8A 8B A6
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 1F C8 06 21 D3 44 76 CD 00 00 00
|
|
|
|
|
0010 | 04 46 8D 2F B9 00 00 00 04 73 52 01 B5 00 00 00
|
|
|
|
|
0020 | 4A 1F 70 78 42 61 33 91 FB E9 02 12 4D 75 30 58
|
|
|
|
|
0030 | E5 A9 5A FB 78 BB 37 48 52 CE 9F 64 23 3E 92 3B
|
|
|
|
|
0040 | F7 A5 E5 00 3D EF 52 29 BB FA 43 5F AB A6 6A 68
|
|
|
|
|
0050 | BE AE 53 AD 69 55 62 36 BD AE 35 F6 12 2B 4A 11
|
|
|
|
|
0060 | 02 00 00 00</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
|
<pre><code>p_q_inner_data_dc#a9f55f95 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int = P_Q_inner_data;</code></pre>
|
|
|
|
@ -246,37 +246,37 @@ q = 1929601103</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>082D69270700CB9DB1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 3272189515292974513</td>
|
|
|
|
|
<td><code>081FC80621D34476CD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2290087152866064077</td>
|
|
|
|
|
<td>Single-byte prefix denoting length, 8-byte string, and three bytes of padding</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>16, 8</td>
|
|
|
|
|
<td><code>046513A1FF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1695785471</td>
|
|
|
|
|
<td><code>04468D2FB9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1183657913</td>
|
|
|
|
|
<td>First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>q</td>
|
|
|
|
|
<td>24, 8</td>
|
|
|
|
|
<td><code>047303604F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1929601103</td>
|
|
|
|
|
<td><code>04735201B5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1934754229</td>
|
|
|
|
|
<td>Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>32, 16</td>
|
|
|
|
|
<td><code>8CCFCCF162504E4BBA8C570EB7B8CF18</code></td>
|
|
|
|
|
<td><code>4A1F707842613391FBE902124D753058</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>64FEA418428728D8CA9D630ECDBC523B</code></td>
|
|
|
|
|
<td><code>E5A95AFB78BB374852CE9F64233E923B</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>83E4D08E6159249F91C7AD96141A5EC7</code> <code>53351C903A8CDE33E9146AFF118A8BA6</code></td>
|
|
|
|
|
<td><code>F7A5E5003DEF5229BBFA435FABA66A68</code> <code>BEAE53AD69556236BDAE35F6122B4A11</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1929601103</code></pre>
|
|
|
|
|
<p>The serialization of <em>P_Q_inner_data</em> produces <strong>data</strong>, which is used to generate <strong>encrypted_data</strong> as specified in <a href="/mtproto/auth_key">step 4.1</a>.<br>
|
|
|
|
|
These are the inputs to the algorithm specified in <a href="/mtproto/auth_key">step 4.1</a>:</p>
|
|
|
|
|
<!-- start p_q_inner_data_input -->
|
|
|
|
|
<pre><code>data = 955FF5A9082D69270700CB9DB1000000046513A1FF000000047303604F0000008CCFCCF162504E4BBA8C570EB7B8CF1864FEA418428728D8CA9D630ECDBC523B83E4D08E6159249F91C7AD96141A5EC753351C903A8CDE33E9146AFF118A8BA602000000
|
|
|
|
|
random_padding_bytes = 290FE58B8499C67EB7393AA3915576EC6850747109E631BE3B066C3C6493DC815D74501F7E7C4CD7D2C6F1825606B051FDFDF5B15863BBDD6E4BC3B4F306612F4BE4F32934BC6D583D707CC768A54EA84BC0DBE137AF71256F54FB9F</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A9081FC80621D34476CD00000004468D2FB900000004735201B50000004A1F707842613391FBE902124D753058E5A95AFB78BB374852CE9F64233E923BF7A5E5003DEF5229BBFA435FABA66A68BEAE53AD69556236BDAE35F6122B4A1102000000
|
|
|
|
|
random_padding_bytes = 647CAF38C8D908B22E908B11522CF4688BBE6FCDD565655073E9BB81F6BB24FB775A79ACEBD0887E8CF10704DC2AC5FF8D408DAEEB9359C188EBC019A7416DA77B6D86A1DAFB202855678E0D37144DCE108AA4D2E7A478EAAC7BE7F5</code></pre>
|
|
|
|
|
<!-- end p_q_inner_data_input -->
|
|
|
|
|
<p>And this is the output:</p>
|
|
|
|
|
<!-- start p_q_inner_data_output -->
|
|
|
|
|
<pre><code>encrypted_data = 42BD23ECC53CB3E2D236112501D72399F55F9884D4ED8D4DFB20F14172DEEC5E20C4D5746D2A3034B261B8C4835DFD77CE4C45197FC90E1702CA439DEB49BA015F32EEA7C6FDAD982650E83342421AE881165336AB52056A038CB7AA760B8356F21D3CA9B7B4CA15479470A719B293B03EE658B073E2C8095FA093540232483693AFE9303ADDD16DF6BD99D7B5F023CC3AA2EEEE40CA8CC2A22261C87552023BD4DEB9D2C4CC2ED6FB1530622FBA4D09BE13B1D04778B336E4C2C9DC79E1B8EA21A3ACE0AA30651329CF5AFD31304DB6B2487919198685DE85D2A8141783A66DC88E01DB89859020ACCBFCD8E036BCBEDA3BA5713E3E7B7A4B86BEE4219D994D</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = B45C93ED020DC74BB8A76759F7EA69597BC8BEB3254122977B89B0FFCA380C149FFDB97001298E6755BC03222A6C0B9DA09B94657BB729A3EA33795D6F17AFB5A293CB640C39385A7A0F5ABB071CA3FAD70903565D947B0C3BE312B9F5AA76098FDFBD0E79350435600D84B23AD08271A0D858FB7A540F72714071650B43226D3C4B482D77FFF035833E3F654DA9EB81AFA60C4C1F0FEE834B15918288CFF06E40A441AB346FA9E3A1C4DF2B4EAA70E97F37B3B16343070518F359788B47F3080D5AF2A8A75542ECF7EADBC2071D9762A7C04535D4E6C3AAB8C74DB4C9F083C118271874925D103097C568E7896E02B29369788634C5181580D522C6483668C1</code></pre>
|
|
|
|
|
<!-- end p_q_inner_data_output -->
|
|
|
|
|
<p>The length of the final string is 256 bytes.</p>
|
|
|
|
|
<h5><a class="anchor" href="#5-send-req-dh-params-query-with-generated-encrypted-data" id="5-send-req-dh-params-query-with-generated-encrypted-data" name="5-send-req-dh-params-query-with-generated-encrypted-data"><i class="anchor-icon"></i></a>5) Send req_DH_params query with generated <code>encrypted_data</code></h5>
|
|
|
|
|
<!-- start req_DH_params -->
|
|
|
|
|
<p>Sent payload (excluding transport headers/trailers):</p>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 28 9C 04 00 30 50 A0 65
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 8C CF CC F1 62 50 4E 4B
|
|
|
|
|
0020 | BA 8C 57 0E B7 B8 CF 18 64 FE A4 18 42 87 28 D8
|
|
|
|
|
0030 | CA 9D 63 0E CD BC 52 3B 04 65 13 A1 FF 00 00 00
|
|
|
|
|
0040 | 04 73 03 60 4F 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 42 BD 23 EC C5 3C B3 E2 D2 36 11 25
|
|
|
|
|
0060 | 01 D7 23 99 F5 5F 98 84 D4 ED 8D 4D FB 20 F1 41
|
|
|
|
|
0070 | 72 DE EC 5E 20 C4 D5 74 6D 2A 30 34 B2 61 B8 C4
|
|
|
|
|
0080 | 83 5D FD 77 CE 4C 45 19 7F C9 0E 17 02 CA 43 9D
|
|
|
|
|
0090 | EB 49 BA 01 5F 32 EE A7 C6 FD AD 98 26 50 E8 33
|
|
|
|
|
00A0 | 42 42 1A E8 81 16 53 36 AB 52 05 6A 03 8C B7 AA
|
|
|
|
|
00B0 | 76 0B 83 56 F2 1D 3C A9 B7 B4 CA 15 47 94 70 A7
|
|
|
|
|
00C0 | 19 B2 93 B0 3E E6 58 B0 73 E2 C8 09 5F A0 93 54
|
|
|
|
|
00D0 | 02 32 48 36 93 AF E9 30 3A DD D1 6D F6 BD 99 D7
|
|
|
|
|
00E0 | B5 F0 23 CC 3A A2 EE EE 40 CA 8C C2 A2 22 61 C8
|
|
|
|
|
00F0 | 75 52 02 3B D4 DE B9 D2 C4 CC 2E D6 FB 15 30 62
|
|
|
|
|
0100 | 2F BA 4D 09 BE 13 B1 D0 47 78 B3 36 E4 C2 C9 DC
|
|
|
|
|
0110 | 79 E1 B8 EA 21 A3 AC E0 AA 30 65 13 29 CF 5A FD
|
|
|
|
|
0120 | 31 30 4D B6 B2 48 79 19 19 86 85 DE 85 D2 A8 14
|
|
|
|
|
0130 | 17 83 A6 6D C8 8E 01 DB 89 85 90 20 AC CB FC D8
|
|
|
|
|
0140 | E0 36 BC BE DA 3B A5 71 3E 3E 7B 7A 4B 86 BE E4
|
|
|
|
|
0150 | 21 9D 99 4D</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 58 EC 0E 00 AD DB A6 65
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 4A 1F 70 78 42 61 33 91
|
|
|
|
|
0020 | FB E9 02 12 4D 75 30 58 E5 A9 5A FB 78 BB 37 48
|
|
|
|
|
0030 | 52 CE 9F 64 23 3E 92 3B 04 46 8D 2F B9 00 00 00
|
|
|
|
|
0040 | 04 73 52 01 B5 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 B4 5C 93 ED 02 0D C7 4B B8 A7 67 59
|
|
|
|
|
0060 | F7 EA 69 59 7B C8 BE B3 25 41 22 97 7B 89 B0 FF
|
|
|
|
|
0070 | CA 38 0C 14 9F FD B9 70 01 29 8E 67 55 BC 03 22
|
|
|
|
|
0080 | 2A 6C 0B 9D A0 9B 94 65 7B B7 29 A3 EA 33 79 5D
|
|
|
|
|
0090 | 6F 17 AF B5 A2 93 CB 64 0C 39 38 5A 7A 0F 5A BB
|
|
|
|
|
00A0 | 07 1C A3 FA D7 09 03 56 5D 94 7B 0C 3B E3 12 B9
|
|
|
|
|
00B0 | F5 AA 76 09 8F DF BD 0E 79 35 04 35 60 0D 84 B2
|
|
|
|
|
00C0 | 3A D0 82 71 A0 D8 58 FB 7A 54 0F 72 71 40 71 65
|
|
|
|
|
00D0 | 0B 43 22 6D 3C 4B 48 2D 77 FF F0 35 83 3E 3F 65
|
|
|
|
|
00E0 | 4D A9 EB 81 AF A6 0C 4C 1F 0F EE 83 4B 15 91 82
|
|
|
|
|
00F0 | 88 CF F0 6E 40 A4 41 AB 34 6F A9 E3 A1 C4 DF 2B
|
|
|
|
|
0100 | 4E AA 70 E9 7F 37 B3 B1 63 43 07 05 18 F3 59 78
|
|
|
|
|
0110 | 8B 47 F3 08 0D 5A F2 A8 A7 55 42 EC F7 EA DB C2
|
|
|
|
|
0120 | 07 1D 97 62 A7 C0 45 35 D4 E6 C3 AA B8 C7 4D B4
|
|
|
|
|
0130 | C9 F0 83 C1 18 27 18 74 92 5D 10 30 97 C5 68 E7
|
|
|
|
|
0140 | 89 6E 02 B2 93 69 78 86 34 C5 18 15 80 D5 22 C6
|
|
|
|
|
0150 | 48 36 68 C1</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
|
<pre><code>req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params;</code></pre>
|
|
|
|
|
<table class="table">
|
|
|
|
@ -345,7 +345,7 @@ random_padding_bytes = 290FE58B8499C67EB7393AA3915576EC6850747109E631BE3B066C3C6
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>289C04003050A065</code></td>
|
|
|
|
|
<td><code>58EC0E00ADDBA665</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -363,25 +363,25 @@ random_padding_bytes = 290FE58B8499C67EB7393AA3915576EC6850747109E631BE3B066C3C6
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>8CCFCCF162504E4BBA8C570EB7B8CF18</code></td>
|
|
|
|
|
<td><code>4A1F707842613391FBE902124D753058</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>64FEA418428728D8CA9D630ECDBC523B</code></td>
|
|
|
|
|
<td><code>E5A95AFB78BB374852CE9F64233E923B</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>046513A1FF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1695785471</td>
|
|
|
|
|
<td><code>04468D2FB9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1183657913</td>
|
|
|
|
|
<td>First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>q</td>
|
|
|
|
|
<td>64, 8</td>
|
|
|
|
|
<td><code>047303604F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1929601103</td>
|
|
|
|
|
<td><code>04735201B5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1934754229</td>
|
|
|
|
|
<td>Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -393,7 +393,7 @@ random_padding_bytes = 290FE58B8499C67EB7393AA3915576EC6850747109E631BE3B066C3C6
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE00010042BD23ECC53CB3E2D2361125</code> <code>01D72399F55F9884D4ED8D4DFB20F141</code> <code>72DEEC5E20C4D5746D2A3034B261B8C4</code> <code>835DFD77CE4C45197FC90E1702CA439D</code> <code>EB49BA015F32EEA7C6FDAD982650E833</code> <code>42421AE881165336AB52056A038CB7AA</code> <code>760B8356F21D3CA9B7B4CA15479470A7</code> <code>19B293B03EE658B073E2C8095FA09354</code> <code>0232483693AFE9303ADDD16DF6BD99D7</code> <code>B5F023CC3AA2EEEE40CA8CC2A22261C8</code> <code>7552023BD4DEB9D2C4CC2ED6FB153062</code> <code>2FBA4D09BE13B1D04778B336E4C2C9DC</code> <code>79E1B8EA21A3ACE0AA30651329CF5AFD</code> <code>31304DB6B2487919198685DE85D2A814</code> <code>1783A66DC88E01DB89859020ACCBFCD8</code> <code>E036BCBEDA3BA5713E3E7B7A4B86BEE4</code><br> <code>219D994D</code></td>
|
|
|
|
|
<td><code>FE000100B45C93ED020DC74BB8A76759</code> <code>F7EA69597BC8BEB3254122977B89B0FF</code> <code>CA380C149FFDB97001298E6755BC0322</code> <code>2A6C0B9DA09B94657BB729A3EA33795D</code> <code>6F17AFB5A293CB640C39385A7A0F5ABB</code> <code>071CA3FAD70903565D947B0C3BE312B9</code> <code>F5AA76098FDFBD0E79350435600D84B2</code> <code>3AD08271A0D858FB7A540F7271407165</code> <code>0B43226D3C4B482D77FFF035833E3F65</code> <code>4DA9EB81AFA60C4C1F0FEE834B159182</code> <code>88CFF06E40A441AB346FA9E3A1C4DF2B</code> <code>4EAA70E97F37B3B16343070518F35978</code> <code>8B47F3080D5AF2A8A75542ECF7EADBC2</code> <code>071D9762A7C04535D4E6C3AAB8C74DB4</code> <code>C9F083C118271874925D103097C568E7</code> <code>896E02B29369788634C5181580D522C6</code><br> <code>483668C1</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = 290FE58B8499C67EB7393AA3915576EC6850747109E631BE3B066C3C6
|
|
|
|
|
<h5><a class="anchor" href="#6-server-responds-with" id="6-server-responds-with" name="6-server-responds-with"><i class="anchor-icon"></i></a>6) Server responds with:</h5>
|
|
|
|
|
<!-- start server_DH_params_ok -->
|
|
|
|
|
<p>Received payload (excluding transport headers/trailers):</p>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 00 F8 39 31 50 A0 65
|
|
|
|
|
0010 | 80 02 00 00 5C 07 E8 D0 8C CF CC F1 62 50 4E 4B
|
|
|
|
|
0020 | BA 8C 57 0E B7 B8 CF 18 64 FE A4 18 42 87 28 D8
|
|
|
|
|
0030 | CA 9D 63 0E CD BC 52 3B FE 50 02 00 AF AB FB 3D
|
|
|
|
|
0040 | 27 2B C2 03 93 96 89 EC A6 85 F6 22 EA 80 7F E2
|
|
|
|
|
0050 | 9A B8 FC FA 1B FA A0 95 B4 72 61 F5 00 29 FD 73
|
|
|
|
|
0060 | A0 CD CF 27 26 84 26 A8 1D F8 04 02 66 84 4E 01
|
|
|
|
|
0070 | B7 94 FC 60 C0 E6 26 33 7C AC 7D 61 54 96 DF CA
|
|
|
|
|
0080 | 6A DC 48 90 79 95 2D 3C 5C 62 2C E5 C0 CF 7F 1D
|
|
|
|
|
0090 | 5F F5 97 04 AD FA EE 1B E5 95 E8 20 69 6A C4 36
|
|
|
|
|
00A0 | E9 C6 AF 0B 62 4B 93 1B A7 24 70 2F 8E 8A 13 B7
|
|
|
|
|
00B0 | 47 DD 8D 0A 38 2D E1 76 4B 11 72 E6 F0 FF 16 35
|
|
|
|
|
00C0 | 5D 6E DE 51 A5 8C E6 A8 B0 15 24 8D BC 84 8F CA
|
|
|
|
|
00D0 | 9D 9A 3F 2D C6 DE 60 D2 1F 58 21 43 54 62 86 3D
|
|
|
|
|
00E0 | 90 DC 8E 47 DD 04 71 7A 71 A1 20 89 69 C5 72 A5
|
|
|
|
|
00F0 | DF C6 4D B5 80 94 D4 3F 47 29 D1 31 57 74 AE FB
|
|
|
|
|
0100 | B7 E5 D9 2D 7B D1 9D E4 70 86 C0 56 E4 0A 37 94
|
|
|
|
|
0110 | 13 73 CD A3 4E 59 B0 DD 38 3E 5A 2C 4E C8 E4 D7
|
|
|
|
|
0120 | 34 AC 12 01 80 9E E7 41 98 F2 8E 99 86 9F 2F 55
|
|
|
|
|
0130 | 37 4B 85 E7 0C 2E F8 9B D2 53 42 54 6B 48 89 AA
|
|
|
|
|
0140 | AD 7E 5C 83 9A FC 59 6A 80 ED AF 00 1F 53 70 60
|
|
|
|
|
0150 | 02 58 02 EB 61 27 57 D8 D4 D9 BB 6B 34 9F 95 7E
|
|
|
|
|
0160 | EC 76 2E EB 9D 68 D5 D4 32 E6 CC 0A 87 6D DA 69
|
|
|
|
|
0170 | 63 A1 BF DF 59 6C 94 97 71 85 E2 2D 96 51 70 2D
|
|
|
|
|
0180 | 1B E9 57 41 18 9F 5B E0 50 3A AC BC 09 BC D0 D1
|
|
|
|
|
0190 | F7 21 39 CC D4 63 CC F9 D7 CB D3 63 90 D9 AD 9E
|
|
|
|
|
01A0 | 73 F7 39 93 18 E8 FA F0 EB F1 42 47 71 09 4A 46
|
|
|
|
|
01B0 | 13 7E FA 27 2F E6 8C 95 2B 32 DD 4E 80 0E CC BB
|
|
|
|
|
01C0 | 7C F4 7D DA 98 A7 36 BE 53 AE A6 9C 8F C9 30 61
|
|
|
|
|
01D0 | 4C 32 D0 5F D9 34 47 BC 04 F6 B2 D0 0B 90 D7 BD
|
|
|
|
|
01E0 | 58 AE 9D DC 43 E9 C0 FE D4 F8 4E 2E 32 07 48 90
|
|
|
|
|
01F0 | B2 62 66 0C 19 7F 4F 47 38 88 B8 A4 2A 82 C3 BC
|
|
|
|
|
0200 | 86 79 DB 86 74 01 6A 6C EC 1A 96 D9 E4 7E C1 83
|
|
|
|
|
0210 | AC 34 50 3A 00 7C D9 08 8C 72 09 75 DF DE B4 3D
|
|
|
|
|
0220 | AC B4 98 D6 07 34 5B DA 89 53 D6 26 74 B4 27 D6
|
|
|
|
|
0230 | B5 C1 06 C0 B0 D9 28 86 9F 97 06 83 06 CC BD 09
|
|
|
|
|
0240 | 87 58 A1 4C D9 18 D0 79 A3 56 AE 11 2D 67 C4 22
|
|
|
|
|
0250 | C7 C3 DB AC 7B 1B 32 0E 28 17 29 84 A0 1F 57 85
|
|
|
|
|
0260 | 3B B3 A7 F2 EE 8F 1E E3 BE D7 2D B8 14 40 ED 54
|
|
|
|
|
0270 | F7 E2 B1 BB E2 B8 D9 F5 76 97 D2 EE 2A 26 AC 76
|
|
|
|
|
0280 | 26 D4 9C B9 3E E9 B5 4E 0E 9C D3 4D</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 64 2A 1D AE DB A6 65
|
|
|
|
|
0010 | D4 02 00 00 5C 07 E8 D0 4A 1F 70 78 42 61 33 91
|
|
|
|
|
0020 | FB E9 02 12 4D 75 30 58 E5 A9 5A FB 78 BB 37 48
|
|
|
|
|
0030 | 52 CE 9F 64 23 3E 92 3B FE 50 02 00 5C 9F 02 5A
|
|
|
|
|
0040 | 3A 9C 53 72 DC 10 3F 3A 64 78 81 0A 11 AD F3 A9
|
|
|
|
|
0050 | 5F 0D 0F 84 70 89 02 AC 7A 73 AD 0A 09 12 D9 27
|
|
|
|
|
0060 | D9 BB 19 0F 36 5E 75 B1 2B 31 A6 4E E5 A8 BC B2
|
|
|
|
|
0070 | 4C B7 94 A7 90 A7 C8 86 4C F7 B4 B7 95 2D 2D B7
|
|
|
|
|
0080 | 14 3D 56 91 8A D1 66 A1 03 BE 5F 96 B9 7D 0E 8B
|
|
|
|
|
0090 | 81 95 41 A4 F5 B6 89 B5 B5 A4 DF C6 69 66 49 82
|
|
|
|
|
00A0 | 6E 04 95 0E DB 30 D8 8C 2A 30 2B B8 4C F4 42 62
|
|
|
|
|
00B0 | DD 04 3E 07 E6 B7 89 72 E0 0B 68 5A E1 66 85 6F
|
|
|
|
|
00C0 | 64 C4 02 ED 98 D1 A4 AA E7 3D DF D2 7A 40 E4 E0
|
|
|
|
|
00D0 | 16 92 BA CB A6 12 18 31 39 4E 97 0F 06 36 07 B1
|
|
|
|
|
00E0 | 39 65 D0 3B E6 0F CA B4 AD 23 BE 8C F6 EF E6 86
|
|
|
|
|
00F0 | A4 04 BF 5B 48 9E EB 51 BC 65 46 DF 41 78 C5 D9
|
|
|
|
|
0100 | D4 24 4E A7 36 30 A6 05 9C 1B 84 E6 99 89 C2 7D
|
|
|
|
|
0110 | 00 0A F4 F6 4E 5D 25 DA 1D 9F 42 E9 9B 22 8B D0
|
|
|
|
|
0120 | 2B 25 25 6F 85 91 CC 22 87 5E 81 85 E7 C5 54 80
|
|
|
|
|
0130 | 73 75 36 62 87 80 CB 37 1E 8A 0F 1C 97 40 A1 AB
|
|
|
|
|
0140 | 8D E3 3B E1 D9 13 ED 1F 05 A2 B8 61 13 89 00 93
|
|
|
|
|
0150 | C9 B7 AD A0 28 B1 80 DC 16 8F 2F 19 F1 FC 73 5B
|
|
|
|
|
0160 | 44 1D D5 C2 C5 57 4E A2 AC EB FE D2 C7 D1 F0 99
|
|
|
|
|
0170 | 39 35 8B C4 46 A3 85 31 5C 2B F9 6C 5B 5E E0 95
|
|
|
|
|
0180 | 32 2D 34 EF A7 4B 8D F2 67 F3 23 2E 2B D7 6D E8
|
|
|
|
|
0190 | B5 48 9C 66 4C C1 FE 2C 3E EC F0 ED DA FF EC 3A
|
|
|
|
|
01A0 | E2 E8 A5 E2 66 3F CE 1D CA E7 A7 14 C8 D6 C4 33
|
|
|
|
|
01B0 | E0 49 1B E7 5D 8F 2D 55 90 B8 B2 7F CB 23 11 25
|
|
|
|
|
01C0 | B8 9B B2 E0 8A C8 43 13 8E 2D 82 08 2C 83 77 A7
|
|
|
|
|
01D0 | AF 16 78 7D 60 62 09 6A CC 02 AF 96 E0 2C 18 49
|
|
|
|
|
01E0 | 13 C7 7B C2 02 4D 4D 81 FD FF BB 76 A0 92 1D 3D
|
|
|
|
|
01F0 | A5 E8 BB 78 AD CE 3E 7D 9E 52 37 03 A6 E6 22 41
|
|
|
|
|
0200 | 62 46 2C A2 F8 2A DA 7D 05 80 80 53 FA 34 D9 9C
|
|
|
|
|
0210 | 77 CD E6 DB 03 BC F5 E0 1F 23 0A DA 21 F3 D5 8C
|
|
|
|
|
0220 | B9 BE 2F 48 B9 A3 B9 3F 3B 28 65 E6 CF 1E 90 40
|
|
|
|
|
0230 | 19 2F 59 04 D6 29 BB 18 CF 9D 3E 78 67 A1 F3 A6
|
|
|
|
|
0240 | F4 32 B4 27 0B C7 02 A2 E0 E7 2E A9 82 78 DD 10
|
|
|
|
|
0250 | 54 99 2C 1D 6D 69 9D D8 29 96 FC BC 2F 7B EF A9
|
|
|
|
|
0260 | E8 14 BE 37 83 28 19 8B 8E 36 E0 F2 60 BE 7B 80
|
|
|
|
|
0270 | 1D C2 ED 2D C7 75 BA 07 AC 65 6C 45 E2 EA D3 B3
|
|
|
|
|
0280 | B7 64 63 5D E5 4A 6D 82 EC 41 53 D6</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
|
<pre><code>server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;</code></pre>
|
|
|
|
|
<table class="table">
|
|
|
|
@ -464,13 +464,13 @@ random_padding_bytes = 290FE58B8499C67EB7393AA3915576EC6850747109E631BE3B066C3C6
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>0100F8393150A065</code></td>
|
|
|
|
|
<td><code>01642A1DAEDBA665</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_length</td>
|
|
|
|
|
<td>16, 4</td>
|
|
|
|
|
<td><code>80020000</code> (640 in decimal)</td>
|
|
|
|
|
<td><code>D4020000</code> (724 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -482,19 +482,19 @@ random_padding_bytes = 290FE58B8499C67EB7393AA3915576EC6850747109E631BE3B066C3C6
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>8CCFCCF162504E4BBA8C570EB7B8CF18</code></td>
|
|
|
|
|
<td><code>4A1F707842613391FBE902124D753058</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>64FEA418428728D8CA9D630ECDBC523B</code></td>
|
|
|
|
|
<td><code>E5A95AFB78BB374852CE9F64233E923B</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE500200AFABFB3D272BC203939689EC</code> <code>A685F622EA807FE29AB8FCFA1BFAA095</code> <code>B47261F50029FD73A0CDCF27268426A8</code> <code>1DF8040266844E01B794FC60C0E62633</code> <code>7CAC7D615496DFCA6ADC489079952D3C</code> <code>5C622CE5C0CF7F1D5FF59704ADFAEE1B</code> <code>E595E820696AC436E9C6AF0B624B931B</code> <code>A724702F8E8A13B747DD8D0A382DE176</code> <code>4B1172E6F0FF16355D6EDE51A58CE6A8</code> <code>B015248DBC848FCA9D9A3F2DC6DE60D2</code> <code>1F5821435462863D90DC8E47DD04717A</code> <code>71A1208969C572A5DFC64DB58094D43F</code> <code>4729D1315774AEFBB7E5D92D7BD19DE4</code> <code>7086C056E40A37941373CDA34E59B0DD</code> <code>383E5A2C4EC8E4D734AC1201809EE741</code> <code>98F28E99869F2F55374B85E70C2EF89B</code> <code>D25342546B4889AAAD7E5C839AFC596A</code> <code>80EDAF001F537060025802EB612757D8</code> <code>D4D9BB6B349F957EEC762EEB9D68D5D4</code> <code>32E6CC0A876DDA6963A1BFDF596C9497</code> <code>7185E22D9651702D1BE95741189F5BE0</code> <code>503AACBC09BCD0D1F72139CCD463CCF9</code> <code>D7CBD36390D9AD9E73F7399318E8FAF0</code> <code>EBF1424771094A46137EFA272FE68C95</code> <code>2B32DD4E800ECCBB7CF47DDA98A736BE</code> <code>53AEA69C8FC930614C32D05FD93447BC</code> <code>04F6B2D00B90D7BD58AE9DDC43E9C0FE</code> <code>D4F84E2E32074890B262660C197F4F47</code> <code>3888B8A42A82C3BC8679DB8674016A6C</code> <code>EC1A96D9E47EC183AC34503A007CD908</code> <code>8C720975DFDEB43DACB498D607345BDA</code> <code>8953D62674B427D6B5C106C0B0D92886</code> <code>9F97068306CCBD098758A14CD918D079</code> <code>A356AE112D67C422C7C3DBAC7B1B320E</code> <code>28172984A01F57853BB3A7F2EE8F1EE3</code> <code>BED72DB81440ED54F7E2B1BBE2B8D9F5</code> <code>7697D2EE2A26AC7626D49CB93EE9B54E</code><br> <code>0E9CD34D</code></td>
|
|
|
|
|
<td><code>FE5002005C9F025A3A9C5372DC103F3A</code> <code>6478810A11ADF3A95F0D0F84708902AC</code> <code>7A73AD0A0912D927D9BB190F365E75B1</code> <code>2B31A64EE5A8BCB24CB794A790A7C886</code> <code>4CF7B4B7952D2DB7143D56918AD166A1</code> <code>03BE5F96B97D0E8B819541A4F5B689B5</code> <code>B5A4DFC6696649826E04950EDB30D88C</code> <code>2A302BB84CF44262DD043E07E6B78972</code> <code>E00B685AE166856F64C402ED98D1A4AA</code> <code>E73DDFD27A40E4E01692BACBA6121831</code> <code>394E970F063607B13965D03BE60FCAB4</code> <code>AD23BE8CF6EFE686A404BF5B489EEB51</code> <code>BC6546DF4178C5D9D4244EA73630A605</code> <code>9C1B84E69989C27D000AF4F64E5D25DA</code> <code>1D9F42E99B228BD02B25256F8591CC22</code> <code>875E8185E7C55480737536628780CB37</code> <code>1E8A0F1C9740A1AB8DE33BE1D913ED1F</code> <code>05A2B86113890093C9B7ADA028B180DC</code> <code>168F2F19F1FC735B441DD5C2C5574EA2</code> <code>ACEBFED2C7D1F09939358BC446A38531</code> <code>5C2BF96C5B5EE095322D34EFA74B8DF2</code> <code>67F3232E2BD76DE8B5489C664CC1FE2C</code> <code>3EECF0EDDAFFEC3AE2E8A5E2663FCE1D</code> <code>CAE7A714C8D6C433E0491BE75D8F2D55</code> <code>90B8B27FCB231125B89BB2E08AC84313</code> <code>8E2D82082C8377A7AF16787D6062096A</code> <code>CC02AF96E02C184913C77BC2024D4D81</code> <code>FDFFBB76A0921D3DA5E8BB78ADCE3E7D</code> <code>9E523703A6E6224162462CA2F82ADA7D</code> <code>05808053FA34D99C77CDE6DB03BCF5E0</code> <code>1F230ADA21F3D58CB9BE2F48B9A3B93F</code> <code>3B2865E6CF1E9040192F5904D629BB18</code> <code>CF9D3E7867A1F3A6F432B4270BC702A2</code> <code>E0E72EA98278DD1054992C1D6D699DD8</code> <code>2996FCBC2F7BEFA9E814BE378328198B</code> <code>8E36E0F260BE7B801DC2ED2DC775BA07</code> <code>AC656C45E2EAD3B3B764635DE54A6D82</code><br> <code>EC4153D6</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = 290FE58B8499C67EB7393AA3915576EC6850747109E631BE3B066C3C6
|
|
|
|
|
<!-- end server_DH_params_ok -->
|
|
|
|
|
<p>Decrypt <code>encrypted_answer</code> using the reverse of the process specified in <a href="/mtproto/auth_key#6-server-responds-with">step 6</a>:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_input -->
|
|
|
|
|
<pre><code>encrypted_answer = AFABFB3D272BC203939689ECA685F622EA807FE29AB8FCFA1BFAA095B47261F50029FD73A0CDCF27268426A81DF8040266844E01B794FC60C0E626337CAC7D615496DFCA6ADC489079952D3C5C622CE5C0CF7F1D5FF59704ADFAEE1BE595E820696AC436E9C6AF0B624B931BA724702F8E8A13B747DD8D0A382DE1764B1172E6F0FF16355D6EDE51A58CE6A8B015248DBC848FCA9D9A3F2DC6DE60D21F5821435462863D90DC8E47DD04717A71A1208969C572A5DFC64DB58094D43F4729D1315774AEFBB7E5D92D7BD19DE47086C056E40A37941373CDA34E59B0DD383E5A2C4EC8E4D734AC1201809EE74198F28E99869F2F55374B85E70C2EF89BD25342546B4889AAAD7E5C839AFC596A80EDAF001F537060025802EB612757D8D4D9BB6B349F957EEC762EEB9D68D5D432E6CC0A876DDA6963A1BFDF596C94977185E22D9651702D1BE95741189F5BE0503AACBC09BCD0D1F72139CCD463CCF9D7CBD36390D9AD9E73F7399318E8FAF0EBF1424771094A46137EFA272FE68C952B32DD4E800ECCBB7CF47DDA98A736BE53AEA69C8FC930614C32D05FD93447BC04F6B2D00B90D7BD58AE9DDC43E9C0FED4F84E2E32074890B262660C197F4F473888B8A42A82C3BC8679DB8674016A6CEC1A96D9E47EC183AC34503A007CD9088C720975DFDEB43DACB498D607345BDA8953D62674B427D6B5C106C0B0D928869F97068306CCBD098758A14CD918D079A356AE112D67C422C7C3DBAC7B1B320E28172984A01F57853BB3A7F2EE8F1EE3BED72DB81440ED54F7E2B1BBE2B8D9F57697D2EE2A26AC7626D49CB93EE9B54E0E9CD34D
|
|
|
|
|
tmp_aes_key = EBFFA142D68C0F1503C20C45C4D179E7460DF109896999FBFD37BEF94566A459
|
|
|
|
|
tmp_aes_iv = A06E5F48A35781F6A357B942CEB7C8B0CAABEA062940D51D8BF497CE83E4D08E</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = 5C9F025A3A9C5372DC103F3A6478810A11ADF3A95F0D0F84708902AC7A73AD0A0912D927D9BB190F365E75B12B31A64EE5A8BCB24CB794A790A7C8864CF7B4B7952D2DB7143D56918AD166A103BE5F96B97D0E8B819541A4F5B689B5B5A4DFC6696649826E04950EDB30D88C2A302BB84CF44262DD043E07E6B78972E00B685AE166856F64C402ED98D1A4AAE73DDFD27A40E4E01692BACBA6121831394E970F063607B13965D03BE60FCAB4AD23BE8CF6EFE686A404BF5B489EEB51BC6546DF4178C5D9D4244EA73630A6059C1B84E69989C27D000AF4F64E5D25DA1D9F42E99B228BD02B25256F8591CC22875E8185E7C55480737536628780CB371E8A0F1C9740A1AB8DE33BE1D913ED1F05A2B86113890093C9B7ADA028B180DC168F2F19F1FC735B441DD5C2C5574EA2ACEBFED2C7D1F09939358BC446A385315C2BF96C5B5EE095322D34EFA74B8DF267F3232E2BD76DE8B5489C664CC1FE2C3EECF0EDDAFFEC3AE2E8A5E2663FCE1DCAE7A714C8D6C433E0491BE75D8F2D5590B8B27FCB231125B89BB2E08AC843138E2D82082C8377A7AF16787D6062096ACC02AF96E02C184913C77BC2024D4D81FDFFBB76A0921D3DA5E8BB78ADCE3E7D9E523703A6E6224162462CA2F82ADA7D05808053FA34D99C77CDE6DB03BCF5E01F230ADA21F3D58CB9BE2F48B9A3B93F3B2865E6CF1E9040192F5904D629BB18CF9D3E7867A1F3A6F432B4270BC702A2E0E72EA98278DD1054992C1D6D699DD82996FCBC2F7BEFA9E814BE378328198B8E36E0F260BE7B801DC2ED2DC775BA07AC656C45E2EAD3B3B764635DE54A6D82EC4153D6
|
|
|
|
|
tmp_aes_key = 7B93A1F00EEADD10F04CF6DD379827C82E46E2AB1B813D85BC3FE78EE5E76006
|
|
|
|
|
tmp_aes_iv = A51690E02EEE7F10D8BDC322A8D6D1DE66CE3D019A392506BDCC1191F7A5E500</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = 22733355720F9E6A3F7DCACD5D2C8BAD59C83B15BA0D89B58CCFCCF162504E4BBA8C570EB7B8CF1864FEA418428728D8CA9D630ECDBC523B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100C6BF014E3621855BF2B6643AD773F279096F3F64043039B63832FF1AC82B42ED1B4234FA69DCA2A38A49D50B1261021E130CCCA972D0D39D4C12BBAC7FAF5E01AA03677203867F8DB02B14D01032609CA7ADF1D1DF5EE6CA684A2F6B42841CFB30ADE1569CAE928FFAE1ACFE151F991BD08297B18E41C4A2D57A371290F83E97657788EBB7EE8464FE92613A2CE766320DF81C2129D70C7F793CF81824E743F9DBAF6876F3BD7099510A7979EDAB4A18D6BA9A3265F46AEADADD05DD48292D536C5BB1338D9E054013CF9A406068B8EC7A4CF12F1D757B7309C60BEA2A64D229D118D5E73C8A5FF0D03427BF3D11D47AF2102AEB694E5E0F923D42D0ED9F2E733150A06529FA3483D8567423
|
|
|
|
|
answer = BA0D89B58CCFCCF162504E4BBA8C570EB7B8CF1864FEA418428728D8CA9D630ECDBC523B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100C6BF014E3621855BF2B6643AD773F279096F3F64043039B63832FF1AC82B42ED1B4234FA69DCA2A38A49D50B1261021E130CCCA972D0D39D4C12BBAC7FAF5E01AA03677203867F8DB02B14D01032609CA7ADF1D1DF5EE6CA684A2F6B42841CFB30ADE1569CAE928FFAE1ACFE151F991BD08297B18E41C4A2D57A371290F83E97657788EBB7EE8464FE92613A2CE766320DF81C2129D70C7F793CF81824E743F9DBAF6876F3BD7099510A7979EDAB4A18D6BA9A3265F46AEADADD05DD48292D536C5BB1338D9E054013CF9A406068B8EC7A4CF12F1D757B7309C60BEA2A64D229D118D5E73C8A5FF0D03427BF3D11D47AF2102AEB694E5E0F923D42D0ED9F2E733150A06529FA3483D8567423</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = F49BB65BD2E3AA1104F84D405179AEA24C36174BBA0D89B54A1F707842613391FBE902124D753058E5A95AFB78BB374852CE9F64233E923B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001008F634AD2A0F7B1C24641E17932427E4377D5E18B96CB8F2F1720B8E647322422BA52CAB7CF407CDF7A6F2EEE6E601B2E5F5D4E9DBC5BFDC4EE9DBF83C773C4FBEF197523B45840B0ACF93789C43F6CB18086D7BFAC21957AD7CC87CB5198C2E1D677F28A5987A5E0E7B11CC538B9C1758852DD393723525445233E72C070F76E6939F4233C4B9C1ABE1BE2F62AFF209B922FEB85F3E2A1C57DE5EB4E122BAE201C46A6F89D2B0E9C40F1E72C8AFA63F923978A88F3F0441D6117910D27CECE2B29C92E2AFA795CA9862181E72FFD9A46FD07A201D7CAA8A62A05F79D93EC5026290E09854E9A3B0C88530C63C404E25E9955F3CC50053519811434306F1C8F05AEDBA665C43490F6213BAD5D
|
|
|
|
|
answer = BA0D89B54A1F707842613391FBE902124D753058E5A95AFB78BB374852CE9F64233E923B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001008F634AD2A0F7B1C24641E17932427E4377D5E18B96CB8F2F1720B8E647322422BA52CAB7CF407CDF7A6F2EEE6E601B2E5F5D4E9DBC5BFDC4EE9DBF83C773C4FBEF197523B45840B0ACF93789C43F6CB18086D7BFAC21957AD7CC87CB5198C2E1D677F28A5987A5E0E7B11CC538B9C1758852DD393723525445233E72C070F76E6939F4233C4B9C1ABE1BE2F62AFF209B922FEB85F3E2A1C57DE5EB4E122BAE201C46A6F89D2B0E9C40F1E72C8AFA63F923978A88F3F0441D6117910D27CECE2B29C92E2AFA795CA9862181E72FFD9A46FD07A201D7CAA8A62A05F79D93EC5026290E09854E9A3B0C88530C63C404E25E9955F3CC50053519811434306F1C8F05AEDBA665C43490F6213BAD5D</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_output -->
|
|
|
|
|
<!-- start server_DH_inner_data -->
|
|
|
|
|
<p>Generated payload (excluding transport headers/trailers):</p>
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 8C CF CC F1 62 50 4E 4B BA 8C 57 0E
|
|
|
|
|
0010 | B7 B8 CF 18 64 FE A4 18 42 87 28 D8 CA 9D 63 0E
|
|
|
|
|
0020 | CD BC 52 3B 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 4A 1F 70 78 42 61 33 91 FB E9 02 12
|
|
|
|
|
0010 | 4D 75 30 58 E5 A9 5A FB 78 BB 37 48 52 CE 9F 64
|
|
|
|
|
0020 | 23 3E 92 3B 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
0030 | C6 B1 C9 04 8E 6C 52 2F 70 F1 3F 73 98 0D 40 23
|
|
|
|
|
0040 | 8E 3E 21 C1 49 34 D0 37 56 3D 93 0F 48 19 8A 0A
|
|
|
|
|
0050 | A7 C1 40 58 22 94 93 D2 25 30 F4 DB FA 33 6F 6E
|
|
|
|
@ -532,23 +532,23 @@ answer = BA0D89B58CCFCCF162504E4BBA8C570EB7B8CF1864FEA418428728D8CA9D630ECDBC523
|
|
|
|
|
0100 | F4 7B F9 59 D9 56 85 0C E9 29 85 1F 0D 81 15 F6
|
|
|
|
|
0110 | 35 B1 05 EE 2E 4E 15 D0 4B 24 54 BF 6F 4F AD F0
|
|
|
|
|
0120 | 34 B1 04 03 11 9C D8 E3 B9 2F CC 5B FE 00 01 00
|
|
|
|
|
0130 | C6 BF 01 4E 36 21 85 5B F2 B6 64 3A D7 73 F2 79
|
|
|
|
|
0140 | 09 6F 3F 64 04 30 39 B6 38 32 FF 1A C8 2B 42 ED
|
|
|
|
|
0150 | 1B 42 34 FA 69 DC A2 A3 8A 49 D5 0B 12 61 02 1E
|
|
|
|
|
0160 | 13 0C CC A9 72 D0 D3 9D 4C 12 BB AC 7F AF 5E 01
|
|
|
|
|
0170 | AA 03 67 72 03 86 7F 8D B0 2B 14 D0 10 32 60 9C
|
|
|
|
|
0180 | A7 AD F1 D1 DF 5E E6 CA 68 4A 2F 6B 42 84 1C FB
|
|
|
|
|
0190 | 30 AD E1 56 9C AE 92 8F FA E1 AC FE 15 1F 99 1B
|
|
|
|
|
01A0 | D0 82 97 B1 8E 41 C4 A2 D5 7A 37 12 90 F8 3E 97
|
|
|
|
|
01B0 | 65 77 88 EB B7 EE 84 64 FE 92 61 3A 2C E7 66 32
|
|
|
|
|
01C0 | 0D F8 1C 21 29 D7 0C 7F 79 3C F8 18 24 E7 43 F9
|
|
|
|
|
01D0 | DB AF 68 76 F3 BD 70 99 51 0A 79 79 ED AB 4A 18
|
|
|
|
|
01E0 | D6 BA 9A 32 65 F4 6A EA DA DD 05 DD 48 29 2D 53
|
|
|
|
|
01F0 | 6C 5B B1 33 8D 9E 05 40 13 CF 9A 40 60 68 B8 EC
|
|
|
|
|
0200 | 7A 4C F1 2F 1D 75 7B 73 09 C6 0B EA 2A 64 D2 29
|
|
|
|
|
0210 | D1 18 D5 E7 3C 8A 5F F0 D0 34 27 BF 3D 11 D4 7A
|
|
|
|
|
0220 | F2 10 2A EB 69 4E 5E 0F 92 3D 42 D0 ED 9F 2E 73
|
|
|
|
|
0230 | 31 50 A0 65</code></pre>
|
|
|
|
|
0130 | 8F 63 4A D2 A0 F7 B1 C2 46 41 E1 79 32 42 7E 43
|
|
|
|
|
0140 | 77 D5 E1 8B 96 CB 8F 2F 17 20 B8 E6 47 32 24 22
|
|
|
|
|
0150 | BA 52 CA B7 CF 40 7C DF 7A 6F 2E EE 6E 60 1B 2E
|
|
|
|
|
0160 | 5F 5D 4E 9D BC 5B FD C4 EE 9D BF 83 C7 73 C4 FB
|
|
|
|
|
0170 | EF 19 75 23 B4 58 40 B0 AC F9 37 89 C4 3F 6C B1
|
|
|
|
|
0180 | 80 86 D7 BF AC 21 95 7A D7 CC 87 CB 51 98 C2 E1
|
|
|
|
|
0190 | D6 77 F2 8A 59 87 A5 E0 E7 B1 1C C5 38 B9 C1 75
|
|
|
|
|
01A0 | 88 52 DD 39 37 23 52 54 45 23 3E 72 C0 70 F7 6E
|
|
|
|
|
01B0 | 69 39 F4 23 3C 4B 9C 1A BE 1B E2 F6 2A FF 20 9B
|
|
|
|
|
01C0 | 92 2F EB 85 F3 E2 A1 C5 7D E5 EB 4E 12 2B AE 20
|
|
|
|
|
01D0 | 1C 46 A6 F8 9D 2B 0E 9C 40 F1 E7 2C 8A FA 63 F9
|
|
|
|
|
01E0 | 23 97 8A 88 F3 F0 44 1D 61 17 91 0D 27 CE CE 2B
|
|
|
|
|
01F0 | 29 C9 2E 2A FA 79 5C A9 86 21 81 E7 2F FD 9A 46
|
|
|
|
|
0200 | FD 07 A2 01 D7 CA A8 A6 2A 05 F7 9D 93 EC 50 26
|
|
|
|
|
0210 | 29 0E 09 85 4E 9A 3B 0C 88 53 0C 63 C4 04 E2 5E
|
|
|
|
|
0220 | 99 55 F3 CC 50 05 35 19 81 14 34 30 6F 1C 8F 05
|
|
|
|
|
0230 | AE DB A6 65</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
|
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
|
|
|
|
|
<table class="table">
|
|
|
|
@ -570,13 +570,13 @@ answer = BA0D89B58CCFCCF162504E4BBA8C570EB7B8CF1864FEA418428728D8CA9D630ECDBC523
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>8CCFCCF162504E4BBA8C570EB7B8CF18</code></td>
|
|
|
|
|
<td><code>4A1F707842613391FBE902124D753058</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>64FEA418428728D8CA9D630ECDBC523B</code></td>
|
|
|
|
|
<td><code>E5A95AFB78BB374852CE9F64233E923B</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B58CCFCCF162504E4BBA8C570EB7B8CF1864FEA418428728D8CA9D630ECDBC523
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE000100C6BF014E3621855BF2B6643A</code> <code>D773F279096F3F64043039B63832FF1A</code> <code>C82B42ED1B4234FA69DCA2A38A49D50B</code> <code>1261021E130CCCA972D0D39D4C12BBAC</code> <code>7FAF5E01AA03677203867F8DB02B14D0</code> <code>1032609CA7ADF1D1DF5EE6CA684A2F6B</code> <code>42841CFB30ADE1569CAE928FFAE1ACFE</code> <code>151F991BD08297B18E41C4A2D57A3712</code> <code>90F83E97657788EBB7EE8464FE92613A</code> <code>2CE766320DF81C2129D70C7F793CF818</code> <code>24E743F9DBAF6876F3BD7099510A7979</code> <code>EDAB4A18D6BA9A3265F46AEADADD05DD</code> <code>48292D536C5BB1338D9E054013CF9A40</code> <code>6068B8EC7A4CF12F1D757B7309C60BEA</code> <code>2A64D229D118D5E73C8A5FF0D03427BF</code> <code>3D11D47AF2102AEB694E5E0F923D42D0</code><br> <code>ED9F2E73</code></td>
|
|
|
|
|
<td><code>FE0001008F634AD2A0F7B1C24641E179</code> <code>32427E4377D5E18B96CB8F2F1720B8E6</code> <code>47322422BA52CAB7CF407CDF7A6F2EEE</code> <code>6E601B2E5F5D4E9DBC5BFDC4EE9DBF83</code> <code>C773C4FBEF197523B45840B0ACF93789</code> <code>C43F6CB18086D7BFAC21957AD7CC87CB</code> <code>5198C2E1D677F28A5987A5E0E7B11CC5</code> <code>38B9C1758852DD393723525445233E72</code> <code>C070F76E6939F4233C4B9C1ABE1BE2F6</code> <code>2AFF209B922FEB85F3E2A1C57DE5EB4E</code> <code>122BAE201C46A6F89D2B0E9C40F1E72C</code> <code>8AFA63F923978A88F3F0441D6117910D</code> <code>27CECE2B29C92E2AFA795CA9862181E7</code> <code>2FFD9A46FD07A201D7CAA8A62A05F79D</code> <code>93EC5026290E09854E9A3B0C88530C63</code> <code>C404E25E9955F3CC5005351981143430</code><br> <code>6F1C8F05</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>3150A065</code> (1705005105 in decimal)</td>
|
|
|
|
|
<td><code>AEDBA665</code> (1705434030 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B58CCFCCF162504E4BBA8C570EB7B8CF1864FEA418428728D8CA9D630ECDBC523
|
|
|
|
|
<h5><a class="anchor" href="#7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message" id="7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message" name="7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message"><i class="anchor-icon"></i></a>7) Client computes random 2048-bit number <em>b</em> (using a sufficient amount of entropy) and sends the server a message</h5>
|
|
|
|
|
<p>First, generate a secure random 2048-bit number b:</p>
|
|
|
|
|
<!-- start b -->
|
|
|
|
|
<pre><code>b = B1B3BC0B3264A0D4C9A193E2D3496026F951611569AE794A3A84BC6B656BDA85C9CB50CEEBF3743A966E8432D43E800A18B65A4AD93A2BABC762EF2D38A7903D645A8FA1E2948D285DEF4C85C8550B2DF0B7F0738FA20291D90725335D054A0BCF783BCA7A54F8DCF03175BFCC1FB2B067FF0E8793EC943D8478869793F39B36A66D957947F1F130A9FEE8CC2139265AE0B9259EEE2219AE456F9C7ABEF17F56432C132772A44C0DEB96F9D7D668B7441414ADE97E487ACC80B7AF4FD53081DBE3D5BE6DFDE16750E2FC7A043172401C0F0B30457B321E6DF369C9D7C0CE256BB9C984E1986F71EE9AD329F53ABF85B433B4576C459D4E5E4591533D415700D6</code></pre>
|
|
|
|
|
<pre><code>b = 66CDC1B15B4644A246D6F9C3481CD7A047AD1F0F207D4C6DF4B2E175ECD286FBBA88397DDC7447D7EF3E74BDD8D4E094FC7E646F4EC017E9D0B5B1891954F28C3FC8A2F0B94FC11B246B3714401ECD4A96894ECE5764B63B8DF2D5B4838B095771D53713675B6CF7D763F9B81C84682A0385D535C1709FADC2635A280F461A764258A0FDA95628C318D442C430268FD735850892316BD416A41E37AE60D532003D0ED7B050A1FC68CCE0183DC56C8B312F1819BB66CD8A8A3EF0CE41864B0B81BE5A701BC87D78C54B095ADB6B1B27AC016D2C9C46DE6AD1E2BB124F981612B5D1202F6F261F208E3EAA750306084A4FF0E6935C1EF938A197DC1FAD1870F3B5</code></pre>
|
|
|
|
|
<!-- end b -->
|
|
|
|
|
<p>Then compute <code>g_b = pow(g, b) mod dh_prime</code></p>
|
|
|
|
|
<!-- start g_b -->
|
|
|
|
|
<pre><code>g_b = 4D5782517BE929F212B01BFA621CE3363695D273B88BC2D2964CC590518CD1E9DC767CD533B4C8E277D5297BA44FF3D2F8EC07C26A26B0F9040E9DFD7D1E920AD59A19A6F198BD1E33A8563C844171E25DF8A97ACD78BFDD78D5FB46015F030E1E1AB602CF48D3154D3A0C677EC9A49B4F7F94CD2DC22432949EA19440E92AD98B26DA62FCBEA06F4728EC8004912ACDFD65B3019BC21FB79E8FBB0924E1C37C982550BAACFE36BC5CCB0C276BD0C67384C3E75FB307B8DD3F651A9A1F5CCE991F9C912A7F1B6D1AB66C2468EB8E2730C0003C7D63BC2C60E2F5257B1F7CD6116AEEB2B002C321B662A270B77215DEE109944CF82B8A1C1ADB18CBB2A3F3BCFC</code></pre>
|
|
|
|
|
<pre><code>g_b = 4B7743DA735677C3B32E6602490A3E07A6B60BB664C7390A029AF42471073584672354682781FB81CAA086FD16C75FE2B92884C8374D3C39524FEEBCE7E2D2E30FC9F3964D32E83A3F1B4FC20508488ADC08E971A485018F5272EBCC4206D852C00D704D2B7DCCBF64F25AF4E449325E91859C98ED8A3329DCC78E7C4EFD173198628BC06588878B16F5F7E35A021D7886FE689150C54C35897F1C72F9C6A969C07A2C15D6A23323E313F469BBD2FE2DAE8EFF73AC300F0C3CBC4CEBF4016BC8EDC288F28D7813165ED715A7AF3DEB8055ED709E6DF05AB2D0859750149403D87EF1DA7D87066AFA2D18A356A8464AF2DD81CC7F6099660CEE530E6B9A99AFD7</code></pre>
|
|
|
|
|
<!-- end g_b -->
|
|
|
|
|
<h6>7.1) generation of encrypted_data</h6>
|
|
|
|
|
<!-- start client_DH_inner_data -->
|
|
|
|
|
<p>Generated payload (excluding transport headers/trailers):</p>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 8C CF CC F1 62 50 4E 4B BA 8C 57 0E
|
|
|
|
|
0010 | B7 B8 CF 18 64 FE A4 18 42 87 28 D8 CA 9D 63 0E
|
|
|
|
|
0020 | CD BC 52 3B 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 4D 57 82 51 7B E9 29 F2 12 B0 1B FA 62 1C E3 36
|
|
|
|
|
0040 | 36 95 D2 73 B8 8B C2 D2 96 4C C5 90 51 8C D1 E9
|
|
|
|
|
0050 | DC 76 7C D5 33 B4 C8 E2 77 D5 29 7B A4 4F F3 D2
|
|
|
|
|
0060 | F8 EC 07 C2 6A 26 B0 F9 04 0E 9D FD 7D 1E 92 0A
|
|
|
|
|
0070 | D5 9A 19 A6 F1 98 BD 1E 33 A8 56 3C 84 41 71 E2
|
|
|
|
|
0080 | 5D F8 A9 7A CD 78 BF DD 78 D5 FB 46 01 5F 03 0E
|
|
|
|
|
0090 | 1E 1A B6 02 CF 48 D3 15 4D 3A 0C 67 7E C9 A4 9B
|
|
|
|
|
00A0 | 4F 7F 94 CD 2D C2 24 32 94 9E A1 94 40 E9 2A D9
|
|
|
|
|
00B0 | 8B 26 DA 62 FC BE A0 6F 47 28 EC 80 04 91 2A CD
|
|
|
|
|
00C0 | FD 65 B3 01 9B C2 1F B7 9E 8F BB 09 24 E1 C3 7C
|
|
|
|
|
00D0 | 98 25 50 BA AC FE 36 BC 5C CB 0C 27 6B D0 C6 73
|
|
|
|
|
00E0 | 84 C3 E7 5F B3 07 B8 DD 3F 65 1A 9A 1F 5C CE 99
|
|
|
|
|
00F0 | 1F 9C 91 2A 7F 1B 6D 1A B6 6C 24 68 EB 8E 27 30
|
|
|
|
|
0100 | C0 00 3C 7D 63 BC 2C 60 E2 F5 25 7B 1F 7C D6 11
|
|
|
|
|
0110 | 6A EE B2 B0 02 C3 21 B6 62 A2 70 B7 72 15 DE E1
|
|
|
|
|
0120 | 09 94 4C F8 2B 8A 1C 1A DB 18 CB B2 A3 F3 BC FC</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 4A 1F 70 78 42 61 33 91 FB E9 02 12
|
|
|
|
|
0010 | 4D 75 30 58 E5 A9 5A FB 78 BB 37 48 52 CE 9F 64
|
|
|
|
|
0020 | 23 3E 92 3B 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 4B 77 43 DA 73 56 77 C3 B3 2E 66 02 49 0A 3E 07
|
|
|
|
|
0040 | A6 B6 0B B6 64 C7 39 0A 02 9A F4 24 71 07 35 84
|
|
|
|
|
0050 | 67 23 54 68 27 81 FB 81 CA A0 86 FD 16 C7 5F E2
|
|
|
|
|
0060 | B9 28 84 C8 37 4D 3C 39 52 4F EE BC E7 E2 D2 E3
|
|
|
|
|
0070 | 0F C9 F3 96 4D 32 E8 3A 3F 1B 4F C2 05 08 48 8A
|
|
|
|
|
0080 | DC 08 E9 71 A4 85 01 8F 52 72 EB CC 42 06 D8 52
|
|
|
|
|
0090 | C0 0D 70 4D 2B 7D CC BF 64 F2 5A F4 E4 49 32 5E
|
|
|
|
|
00A0 | 91 85 9C 98 ED 8A 33 29 DC C7 8E 7C 4E FD 17 31
|
|
|
|
|
00B0 | 98 62 8B C0 65 88 87 8B 16 F5 F7 E3 5A 02 1D 78
|
|
|
|
|
00C0 | 86 FE 68 91 50 C5 4C 35 89 7F 1C 72 F9 C6 A9 69
|
|
|
|
|
00D0 | C0 7A 2C 15 D6 A2 33 23 E3 13 F4 69 BB D2 FE 2D
|
|
|
|
|
00E0 | AE 8E FF 73 AC 30 0F 0C 3C BC 4C EB F4 01 6B C8
|
|
|
|
|
00F0 | ED C2 88 F2 8D 78 13 16 5E D7 15 A7 AF 3D EB 80
|
|
|
|
|
0100 | 55 ED 70 9E 6D F0 5A B2 D0 85 97 50 14 94 03 D8
|
|
|
|
|
0110 | 7E F1 DA 7D 87 06 6A FA 2D 18 A3 56 A8 46 4A F2
|
|
|
|
|
0120 | DD 81 CC 7F 60 99 66 0C EE 53 0E 6B 9A 99 AF D7</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
|
<pre><code>client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data;</code></pre>
|
|
|
|
|
<table class="table">
|
|
|
|
@ -658,19 +658,19 @@ answer = BA0D89B58CCFCCF162504E4BBA8C570EB7B8CF1864FEA418428728D8CA9D630ECDBC523
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>8CCFCCF162504E4BBA8C570EB7B8CF18</code></td>
|
|
|
|
|
<td><code>4A1F707842613391FBE902124D753058</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>64FEA418428728D8CA9D630ECDBC523B</code></td>
|
|
|
|
|
<td><code>E5A95AFB78BB374852CE9F64233E923B</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FE0001004D5782517BE929F212B01BFA</code> <code>621CE3363695D273B88BC2D2964CC590</code> <code>518CD1E9DC767CD533B4C8E277D5297B</code> <code>A44FF3D2F8EC07C26A26B0F9040E9DFD</code> <code>7D1E920AD59A19A6F198BD1E33A8563C</code> <code>844171E25DF8A97ACD78BFDD78D5FB46</code> <code>015F030E1E1AB602CF48D3154D3A0C67</code> <code>7EC9A49B4F7F94CD2DC22432949EA194</code> <code>40E92AD98B26DA62FCBEA06F4728EC80</code> <code>04912ACDFD65B3019BC21FB79E8FBB09</code> <code>24E1C37C982550BAACFE36BC5CCB0C27</code> <code>6BD0C67384C3E75FB307B8DD3F651A9A</code> <code>1F5CCE991F9C912A7F1B6D1AB66C2468</code> <code>EB8E2730C0003C7D63BC2C60E2F5257B</code> <code>1F7CD6116AEEB2B002C321B662A270B7</code> <code>7215DEE109944CF82B8A1C1ADB18CBB2</code><br> <code>A3F3BCFC</code></td>
|
|
|
|
|
<td><code>FE0001004B7743DA735677C3B32E6602</code> <code>490A3E07A6B60BB664C7390A029AF424</code> <code>71073584672354682781FB81CAA086FD</code> <code>16C75FE2B92884C8374D3C39524FEEBC</code> <code>E7E2D2E30FC9F3964D32E83A3F1B4FC2</code> <code>0508488ADC08E971A485018F5272EBCC</code> <code>4206D852C00D704D2B7DCCBF64F25AF4</code> <code>E449325E91859C98ED8A3329DCC78E7C</code> <code>4EFD173198628BC06588878B16F5F7E3</code> <code>5A021D7886FE689150C54C35897F1C72</code> <code>F9C6A969C07A2C15D6A23323E313F469</code> <code>BBD2FE2DAE8EFF73AC300F0C3CBC4CEB</code> <code>F4016BC8EDC288F28D7813165ED715A7</code> <code>AF3DEB8055ED709E6DF05AB2D0859750</code> <code>149403D87EF1DA7D87066AFA2D18A356</code> <code>A8464AF2DD81CC7F6099660CEE530E6B</code><br> <code>9A99AFD7</code></td>
|
|
|
|
|
<td>Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -684,47 +684,47 @@ answer = BA0D89B58CCFCCF162504E4BBA8C570EB7B8CF1864FEA418428728D8CA9D630ECDBC523
|
|
|
|
|
<!-- end client_DH_inner_data -->
|
|
|
|
|
<p>The serialization of <em>Client_DH_Inner_Data</em> produces a string <strong>data</strong>. This is used to generate <strong>encrypted_data</strong> as specified in <a href="#7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message">step 6</a>, using the following inputs:</p>
|
|
|
|
|
<!-- start client_DH_inner_data_input -->
|
|
|
|
|
<pre><code>data = 54B643668CCFCCF162504E4BBA8C570EB7B8CF1864FEA418428728D8CA9D630ECDBC523B0000000000000000FE0001004D5782517BE929F212B01BFA621CE3363695D273B88BC2D2964CC590518CD1E9DC767CD533B4C8E277D5297BA44FF3D2F8EC07C26A26B0F9040E9DFD7D1E920AD59A19A6F198BD1E33A8563C844171E25DF8A97ACD78BFDD78D5FB46015F030E1E1AB602CF48D3154D3A0C677EC9A49B4F7F94CD2DC22432949EA19440E92AD98B26DA62FCBEA06F4728EC8004912ACDFD65B3019BC21FB79E8FBB0924E1C37C982550BAACFE36BC5CCB0C276BD0C67384C3E75FB307B8DD3F651A9A1F5CCE991F9C912A7F1B6D1AB66C2468EB8E2730C0003C7D63BC2C60E2F5257B1F7CD6116AEEB2B002C321B662A270B77215DEE109944CF82B8A1C1ADB18CBB2A3F3BCFC
|
|
|
|
|
padding = EE13E62BA073CF2B9B11C402
|
|
|
|
|
tmp_aes_key = EBFFA142D68C0F1503C20C45C4D179E7460DF109896999FBFD37BEF94566A459
|
|
|
|
|
tmp_aes_iv = A06E5F48A35781F6A357B942CEB7C8B0CAABEA062940D51D8BF497CE83E4D08E</code></pre>
|
|
|
|
|
<pre><code>data = 54B643664A1F707842613391FBE902124D753058E5A95AFB78BB374852CE9F64233E923B0000000000000000FE0001004B7743DA735677C3B32E6602490A3E07A6B60BB664C7390A029AF42471073584672354682781FB81CAA086FD16C75FE2B92884C8374D3C39524FEEBCE7E2D2E30FC9F3964D32E83A3F1B4FC20508488ADC08E971A485018F5272EBCC4206D852C00D704D2B7DCCBF64F25AF4E449325E91859C98ED8A3329DCC78E7C4EFD173198628BC06588878B16F5F7E35A021D7886FE689150C54C35897F1C72F9C6A969C07A2C15D6A23323E313F469BBD2FE2DAE8EFF73AC300F0C3CBC4CEBF4016BC8EDC288F28D7813165ED715A7AF3DEB8055ED709E6DF05AB2D0859750149403D87EF1DA7D87066AFA2D18A356A8464AF2DD81CC7F6099660CEE530E6B9A99AFD7
|
|
|
|
|
padding = FCCD8183562D73D311E2914E
|
|
|
|
|
tmp_aes_key = 7B93A1F00EEADD10F04CF6DD379827C82E46E2AB1B813D85BC3FE78EE5E76006
|
|
|
|
|
tmp_aes_iv = A51690E02EEE7F10D8BDC322A8D6D1DE66CE3D019A392506BDCC1191F7A5E500</code></pre>
|
|
|
|
|
<!-- end client_DH_inner_data_input -->
|
|
|
|
|
<p>Process:</p>
|
|
|
|
|
<pre><code>data_with_hash := SHA1(data) + data + padding (0-15 random bytes such that total length is divisible by 16)
|
|
|
|
|
encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);</code></pre>
|
|
|
|
|
<p>Output:</p>
|
|
|
|
|
<!-- start client_DH_inner_data_output -->
|
|
|
|
|
<pre><code>encrypted_data = C1928594ECC81CED598C146C4D5E1A9A8B390639373DE4BD63B1C3A7CA1068565E20584B34FCBF2E7F0006FC4E71A18F3A24D6890170A3094960F4D732213E1C9838460B48790BC4BDA83F17C90CCC680BD9296CD05212FBBFEA958E1054E8C2E084CFA7DEAA22C1242F69AEB6DCB73C0D7592BABB79A0047E780C3645CFB5682CAFDD7C746741AFA8C3D3D93382BB6BC6727DCBCE4B1AFF7E182583CB4559E83B6047C5B14193D017FFD0F0C59048785F3CDB171BC7144445519C49C54849A48DD159DBAD352E25090E7789B43371D762E45F833600B7995D0D2EE3C5A81D51F607113348A5ECB2A5B3A7AC49B7742A268D6B1BED14B61C32B1D71036B0BA0F838BE88BE68A10E285B586D411BE21B6BA3A31ECD9DD734688EF5FBEE80F2165FFCB2EDB34BBFFE9BF54000BC631F5F0CE587DF0846988A472E89472C768B9910BE660372591F06A75FF5B352C8766FD</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = D1554B36ECCA5472D65131F114DB4A8FADD32E44899CA0CE66AD15FB950BA15294F4F2F734C2BFA05F1CCDE066345C5981DB5B0140B5C2CD8C62DFE4AADBE4188BA5EE5079711801D25386034EE2E1E56EB21C802A04F622BF74727D4139B46B27D2C7DE05B8417E3C1E4D3F8E6940031B6CB983044D8673DB67D1C89B62D83200E3425171B3B6A1AA0E4119233E4AB4B903383ACC83519F69230CE91D2350DD7E897E236087B3127A16F5C6C3B3DB8F3DF5B3EA1208AFED04E46752709107C0BB87123D2C3FD2D0037299AD63AE5172365A2FAAA321664AEE6743A5F192A73407C160E09FDAED2018FD6C58E8BD45C53A774380AC71F330C314B66B3E9DAB4FEE4BD4C63928B147F13A5C21B57D070BEB051DC17917C6E4E9070ECA680999130E4AFCFB64F39CD786D074808DEA226533AFE8CB9F91C458BE5F2E81B6FB74D911A2151585FF95CDA659A48E1805AF17</code></pre>
|
|
|
|
|
<!-- end client_DH_inner_data_output -->
|
|
|
|
|
<p>The length of the final string is 336 bytes.</p>
|
|
|
|
|
<h6>7.2) set_client_DH_params query</h6>
|
|
|
|
|
<!-- start set_client_DH_params -->
|
|
|
|
|
<p>Sent payload (excluding transport headers/trailers):</p>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 24 67 0D 00 31 50 A0 65
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 8C CF CC F1 62 50 4E 4B
|
|
|
|
|
0020 | BA 8C 57 0E B7 B8 CF 18 64 FE A4 18 42 87 28 D8
|
|
|
|
|
0030 | CA 9D 63 0E CD BC 52 3B FE 50 01 00 C1 92 85 94
|
|
|
|
|
0040 | EC C8 1C ED 59 8C 14 6C 4D 5E 1A 9A 8B 39 06 39
|
|
|
|
|
0050 | 37 3D E4 BD 63 B1 C3 A7 CA 10 68 56 5E 20 58 4B
|
|
|
|
|
0060 | 34 FC BF 2E 7F 00 06 FC 4E 71 A1 8F 3A 24 D6 89
|
|
|
|
|
0070 | 01 70 A3 09 49 60 F4 D7 32 21 3E 1C 98 38 46 0B
|
|
|
|
|
0080 | 48 79 0B C4 BD A8 3F 17 C9 0C CC 68 0B D9 29 6C
|
|
|
|
|
0090 | D0 52 12 FB BF EA 95 8E 10 54 E8 C2 E0 84 CF A7
|
|
|
|
|
00A0 | DE AA 22 C1 24 2F 69 AE B6 DC B7 3C 0D 75 92 BA
|
|
|
|
|
00B0 | BB 79 A0 04 7E 78 0C 36 45 CF B5 68 2C AF DD 7C
|
|
|
|
|
00C0 | 74 67 41 AF A8 C3 D3 D9 33 82 BB 6B C6 72 7D CB
|
|
|
|
|
00D0 | CE 4B 1A FF 7E 18 25 83 CB 45 59 E8 3B 60 47 C5
|
|
|
|
|
00E0 | B1 41 93 D0 17 FF D0 F0 C5 90 48 78 5F 3C DB 17
|
|
|
|
|
00F0 | 1B C7 14 44 45 51 9C 49 C5 48 49 A4 8D D1 59 DB
|
|
|
|
|
0100 | AD 35 2E 25 09 0E 77 89 B4 33 71 D7 62 E4 5F 83
|
|
|
|
|
0110 | 36 00 B7 99 5D 0D 2E E3 C5 A8 1D 51 F6 07 11 33
|
|
|
|
|
0120 | 48 A5 EC B2 A5 B3 A7 AC 49 B7 74 2A 26 8D 6B 1B
|
|
|
|
|
0130 | ED 14 B6 1C 32 B1 D7 10 36 B0 BA 0F 83 8B E8 8B
|
|
|
|
|
0140 | E6 8A 10 E2 85 B5 86 D4 11 BE 21 B6 BA 3A 31 EC
|
|
|
|
|
0150 | D9 DD 73 46 88 EF 5F BE E8 0F 21 65 FF CB 2E DB
|
|
|
|
|
0160 | 34 BB FF E9 BF 54 00 0B C6 31 F5 F0 CE 58 7D F0
|
|
|
|
|
0170 | 84 69 88 A4 72 E8 94 72 C7 68 B9 91 0B E6 60 37
|
|
|
|
|
0180 | 25 91 F0 6A 75 FF 5B 35 2C 87 66 FD</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 04 0F 0A 00 AE DB A6 65
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 4A 1F 70 78 42 61 33 91
|
|
|
|
|
0020 | FB E9 02 12 4D 75 30 58 E5 A9 5A FB 78 BB 37 48
|
|
|
|
|
0030 | 52 CE 9F 64 23 3E 92 3B FE 50 01 00 D1 55 4B 36
|
|
|
|
|
0040 | EC CA 54 72 D6 51 31 F1 14 DB 4A 8F AD D3 2E 44
|
|
|
|
|
0050 | 89 9C A0 CE 66 AD 15 FB 95 0B A1 52 94 F4 F2 F7
|
|
|
|
|
0060 | 34 C2 BF A0 5F 1C CD E0 66 34 5C 59 81 DB 5B 01
|
|
|
|
|
0070 | 40 B5 C2 CD 8C 62 DF E4 AA DB E4 18 8B A5 EE 50
|
|
|
|
|
0080 | 79 71 18 01 D2 53 86 03 4E E2 E1 E5 6E B2 1C 80
|
|
|
|
|
0090 | 2A 04 F6 22 BF 74 72 7D 41 39 B4 6B 27 D2 C7 DE
|
|
|
|
|
00A0 | 05 B8 41 7E 3C 1E 4D 3F 8E 69 40 03 1B 6C B9 83
|
|
|
|
|
00B0 | 04 4D 86 73 DB 67 D1 C8 9B 62 D8 32 00 E3 42 51
|
|
|
|
|
00C0 | 71 B3 B6 A1 AA 0E 41 19 23 3E 4A B4 B9 03 38 3A
|
|
|
|
|
00D0 | CC 83 51 9F 69 23 0C E9 1D 23 50 DD 7E 89 7E 23
|
|
|
|
|
00E0 | 60 87 B3 12 7A 16 F5 C6 C3 B3 DB 8F 3D F5 B3 EA
|
|
|
|
|
00F0 | 12 08 AF ED 04 E4 67 52 70 91 07 C0 BB 87 12 3D
|
|
|
|
|
0100 | 2C 3F D2 D0 03 72 99 AD 63 AE 51 72 36 5A 2F AA
|
|
|
|
|
0110 | A3 21 66 4A EE 67 43 A5 F1 92 A7 34 07 C1 60 E0
|
|
|
|
|
0120 | 9F DA ED 20 18 FD 6C 58 E8 BD 45 C5 3A 77 43 80
|
|
|
|
|
0130 | AC 71 F3 30 C3 14 B6 6B 3E 9D AB 4F EE 4B D4 C6
|
|
|
|
|
0140 | 39 28 B1 47 F1 3A 5C 21 B5 7D 07 0B EB 05 1D C1
|
|
|
|
|
0150 | 79 17 C6 E4 E9 07 0E CA 68 09 99 13 0E 4A FC FB
|
|
|
|
|
0160 | 64 F3 9C D7 86 D0 74 80 8D EA 22 65 33 AF E8 CB
|
|
|
|
|
0170 | 9F 91 C4 58 BE 5F 2E 81 B6 FB 74 D9 11 A2 15 15
|
|
|
|
|
0180 | 85 FF 95 CD A6 59 A4 8E 18 05 AF 17</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
|
<pre><code>set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;</code></pre>
|
|
|
|
|
<table class="table">
|
|
|
|
@ -746,7 +746,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>24670D003150A065</code></td>
|
|
|
|
|
<td><code>040F0A00AEDBA665</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -764,19 +764,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>8CCFCCF162504E4BBA8C570EB7B8CF18</code></td>
|
|
|
|
|
<td><code>4A1F707842613391FBE902124D753058</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>64FEA418428728D8CA9D630ECDBC523B</code></td>
|
|
|
|
|
<td><code>E5A95AFB78BB374852CE9F64233E923B</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE500100C1928594ECC81CED598C146C</code> <code>4D5E1A9A8B390639373DE4BD63B1C3A7</code> <code>CA1068565E20584B34FCBF2E7F0006FC</code> <code>4E71A18F3A24D6890170A3094960F4D7</code> <code>32213E1C9838460B48790BC4BDA83F17</code> <code>C90CCC680BD9296CD05212FBBFEA958E</code> <code>1054E8C2E084CFA7DEAA22C1242F69AE</code> <code>B6DCB73C0D7592BABB79A0047E780C36</code> <code>45CFB5682CAFDD7C746741AFA8C3D3D9</code> <code>3382BB6BC6727DCBCE4B1AFF7E182583</code> <code>CB4559E83B6047C5B14193D017FFD0F0</code> <code>C59048785F3CDB171BC7144445519C49</code> <code>C54849A48DD159DBAD352E25090E7789</code> <code>B43371D762E45F833600B7995D0D2EE3</code> <code>C5A81D51F607113348A5ECB2A5B3A7AC</code> <code>49B7742A268D6B1BED14B61C32B1D710</code> <code>36B0BA0F838BE88BE68A10E285B586D4</code> <code>11BE21B6BA3A31ECD9DD734688EF5FBE</code> <code>E80F2165FFCB2EDB34BBFFE9BF54000B</code> <code>C631F5F0CE587DF0846988A472E89472</code> <code>C768B9910BE660372591F06A75FF5B35</code><br> <code>2C8766FD</code></td>
|
|
|
|
|
<td><code>FE500100D1554B36ECCA5472D65131F1</code> <code>14DB4A8FADD32E44899CA0CE66AD15FB</code> <code>950BA15294F4F2F734C2BFA05F1CCDE0</code> <code>66345C5981DB5B0140B5C2CD8C62DFE4</code> <code>AADBE4188BA5EE5079711801D2538603</code> <code>4EE2E1E56EB21C802A04F622BF74727D</code> <code>4139B46B27D2C7DE05B8417E3C1E4D3F</code> <code>8E6940031B6CB983044D8673DB67D1C8</code> <code>9B62D83200E3425171B3B6A1AA0E4119</code> <code>233E4AB4B903383ACC83519F69230CE9</code> <code>1D2350DD7E897E236087B3127A16F5C6</code> <code>C3B3DB8F3DF5B3EA1208AFED04E46752</code> <code>709107C0BB87123D2C3FD2D0037299AD</code> <code>63AE5172365A2FAAA321664AEE6743A5</code> <code>F192A73407C160E09FDAED2018FD6C58</code> <code>E8BD45C53A774380AC71F330C314B66B</code> <code>3E9DAB4FEE4BD4C63928B147F13A5C21</code> <code>B57D070BEB051DC17917C6E4E9070ECA</code> <code>680999130E4AFCFB64F39CD786D07480</code> <code>8DEA226533AFE8CB9F91C458BE5F2E81</code> <code>B6FB74D911A2151585FF95CDA659A48E</code><br> <code>1805AF17</code></td>
|
|
|
|
|
<td>Encrypted client_DH_inner_data generated previously, serialized as a TL byte string</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -785,17 +785,17 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|
|
|
|
<h5><a class="anchor" href="#8-auth-key-generation" id="8-auth-key-generation" name="8-auth-key-generation"><i class="anchor-icon"></i></a>8) Auth key generation</h5>
|
|
|
|
|
<p>The client computes the auth_key using formula <code>g_a^b mod dh_prime</code>:</p>
|
|
|
|
|
<!-- start auth_key -->
|
|
|
|
|
<pre><code>auth_key = 30B3E3CEB356DA80991667240EAD8699C5BF327FBF03DE70F85BE3BFCD293A7719DAFE05B3D4E75B41B0A321BF2C4D9C7383DD63B32F7ED4AB3A1264D3929FBE840CC705CEE36984CD41223A55EC2B264FC3D20A2359349DBD1BB6CA903482A7DAF0A925A8ED5598C6BDC6E92D25E6E159484A10D792C11FF4BD2C7932DD3EA7C09CA4E2605C53EB9B0FF7513520F0289853DEB61BC9674282C5C3ACA60D7B95FB9443FFA2C27D20CDBB5CC3CD541534C06A05206CAED0B870BE84E50F1F2F5D79537D4E1FAE1384B916D10824F3CE2C393358A692E56E6214349F347470B15D8759A4F8CE05966F91FB03F7CF66C1F51C3ABE91DB9811DB63F53094391C95A7</code></pre>
|
|
|
|
|
<pre><code>auth_key = 463DFADD541773956A3B8D566A6BB5C394E00EE3BAEB601327231378508ACC2D43128D76D800BB11BCBCD920D6B82FB3D9E913650C143567E953F71CE950920A913D9F358A441C86FDCDEF808D560F81F2DB3FF655412A0906160978FB311E2CDBDB8311261A0DB93247536870DB4C5407DE334E60719F971376CBBC18754DC201062922B3784CA38EC2961BEA96DFF839D4A33FC80B7C9BBA48E20C43F2881BA5752403F603F9E9AB3E8FB8CC41237AB8EB4AE972B85A2192822027A79F15F09AD47FD5D02ACD5739F028EEEBE9DF3AE18DD37CFB8F5938B3DA6FB682E1D6515DBD4D3DCF6380BCB03B428694A55E22D270DC6DCFF4FF85862576C4AB94E589</code></pre>
|
|
|
|
|
<!-- end auth_key -->
|
|
|
|
|
<h5><a class="anchor" href="#9-final-server-reply" id="9-final-server-reply" name="9-final-server-reply"><i class="anchor-icon"></i></a>9) Final server reply</h5>
|
|
|
|
|
<p>The server verifies and confirms that auth_key_hash is unique: since it's unique, it replies with the following:</p>
|
|
|
|
|
<!-- start dh_gen_ok -->
|
|
|
|
|
<p>Received payload (excluding transport headers/trailers):</p>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 00 92 85 31 50 A0 65
|
|
|
|
|
0010 | 6C 00 00 00 34 F7 CB 3B 8C CF CC F1 62 50 4E 4B
|
|
|
|
|
0020 | BA 8C 57 0E B7 B8 CF 18 64 FE A4 18 42 87 28 D8
|
|
|
|
|
0030 | CA 9D 63 0E CD BC 52 3B D4 95 7C A3 57 31 8C 91
|
|
|
|
|
0040 | E3 16 8A 3A CE BE 0F 98</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 5C 7B 67 AE DB A6 65
|
|
|
|
|
0010 | A8 00 00 00 34 F7 CB 3B 4A 1F 70 78 42 61 33 91
|
|
|
|
|
0020 | FB E9 02 12 4D 75 30 58 E5 A9 5A FB 78 BB 37 48
|
|
|
|
|
0030 | 52 CE 9F 64 23 3E 92 3B 56 6A 21 4B F7 8C 64 B2
|
|
|
|
|
0040 | 88 07 32 FA 16 52 73 4E</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
|
<pre><code>dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;</code></pre>
|
|
|
|
|
<table class="table">
|
|
|
|
@ -817,13 +817,13 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>010092853150A065</code></td>
|
|
|
|
|
<td><code>015C7B67AEDBA665</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_length</td>
|
|
|
|
|
<td>16, 4</td>
|
|
|
|
|
<td><code>6C000000</code> (108 in decimal)</td>
|
|
|
|
|
<td><code>A8000000</code> (168 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>8CCFCCF162504E4BBA8C570EB7B8CF18</code></td>
|
|
|
|
|
<td><code>4A1F707842613391FBE902124D753058</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>64FEA418428728D8CA9D630ECDBC523B</code></td>
|
|
|
|
|
<td><code>E5A95AFB78BB374852CE9F64233E923B</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>D4957CA357318C91E3168A3ACEBE0F98</code></td>
|
|
|
|
|
<td><code>566A214BF78C64B2880732FA1652734E</code></td>
|
|
|
|
|
<td>The 128 lower-order bits of SHA1 of the byte string derived from the <code>new_nonce</code> string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with <code>auth_key_aux_hash</code>. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|