|
|
|
@ -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 C4 03 0F 00 3A BB 74 65
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 12 D2 52 A6 52 49 2F 98
|
|
|
|
|
0020 | B3 E7 AC 76 FE FA 89 A4</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 FC 1A 0B 00 C2 BD 74 65
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 59 DE DF 5B B5 F9 3F E0
|
|
|
|
|
0020 | B8 6A A6 22 1D 70 B0 B9</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>C4030F003ABB7465</code></td>
|
|
|
|
|
<td><code>FC1A0B00C2BD7465</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>12D252A652492F98B3E7AC76FEFA89A4</code></td>
|
|
|
|
|
<td><code>59DEDF5BB5F93FE0B86AA6221D70B0B9</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 F3 23 3A BB 74 65
|
|
|
|
|
0010 | 58 00 00 00 63 24 16 05 12 D2 52 A6 52 49 2F 98
|
|
|
|
|
0020 | B3 E7 AC 76 FE FA 89 A4 6C E7 5A 07 8D 3B DA EC
|
|
|
|
|
0030 | 6C D2 D6 3A D8 67 9D DA 08 23 8D 10 D1 5D AC AD
|
|
|
|
|
0040 | 17 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 88 60 DF C2 BD 74 65
|
|
|
|
|
0010 | 74 00 00 00 63 24 16 05 59 DE DF 5B B5 F9 3F E0
|
|
|
|
|
0020 | B8 6A A6 22 1D 70 B0 B9 A1 E0 68 88 4F 45 FD C9
|
|
|
|
|
0030 | 74 BA A8 22 30 11 21 C3 08 1E 11 D1 2C 1F 19 BE
|
|
|
|
|
0040 | 5F 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>0138F3233ABB7465</code></td>
|
|
|
|
|
<td><code>018860DFC2BD7465</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>58000000</code> (88 in decimal)</td>
|
|
|
|
|
<td><code>74000000</code> (116 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>12D252A652492F98B3E7AC76FEFA89A4</code></td>
|
|
|
|
|
<td><code>59DEDF5BB5F93FE0B86AA6221D70B0B9</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>6CE75A078D3BDAEC6CD2D63AD8679DDA</code></td>
|
|
|
|
|
<td><code>A1E068884F45FDC974BAA822301121C3</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>08238D10D15DACAD17000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2561722254449487127</td>
|
|
|
|
|
<td><code>081E11D12C1F19BE5F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2166742883172466271</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 = 2561722254449487127</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2561722254449487127 = 1530421979 * 1673866613</code></p>
|
|
|
|
|
<pre><code>p = 1530421979
|
|
|
|
|
q = 1673866613</code></pre>
|
|
|
|
|
<pre><code>pq = 2166742883172466271</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2166742883172466271 = 1471902331 * 1472069741</code></p>
|
|
|
|
|
<pre><code>p = 1471902331
|
|
|
|
|
q = 1472069741</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 23 8D 10 D1 5D AC AD 17 00 00 00
|
|
|
|
|
0010 | 04 5B 38 62 DB 00 00 00 04 63 C5 2D 75 00 00 00
|
|
|
|
|
0020 | 12 D2 52 A6 52 49 2F 98 B3 E7 AC 76 FE FA 89 A4
|
|
|
|
|
0030 | 6C E7 5A 07 8D 3B DA EC 6C D2 D6 3A D8 67 9D DA
|
|
|
|
|
0040 | 56 01 8F A1 6B 1D 5A C2 AC 60 C6 0E A7 BB AD A5
|
|
|
|
|
0050 | EE 4A 6B BB 2B 6B 0C 29 F9 63 7F 1E EB DC 02 C9
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 1E 11 D1 2C 1F 19 BE 5F 00 00 00
|
|
|
|
|
0010 | 04 57 BB 72 7B 00 00 00 04 57 BE 00 6D 00 00 00
|
|
|
|
|
0020 | 59 DE DF 5B B5 F9 3F E0 B8 6A A6 22 1D 70 B0 B9
|
|
|
|
|
0030 | A1 E0 68 88 4F 45 FD C9 74 BA A8 22 30 11 21 C3
|
|
|
|
|
0040 | 82 12 94 E3 32 7D E3 34 6E EF FD 0C DE 04 44 B4
|
|
|
|
|
0050 | 35 BF 03 7F EA FA C9 1A AB 5D E9 5F 97 ED CA CA
|
|
|
|
|
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 = 1673866613</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>08238D10D15DACAD17000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2561722254449487127</td>
|
|
|
|
|
<td><code>081E11D12C1F19BE5F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2166742883172466271</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>045B3862DB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1530421979</td>
|
|
|
|
|
<td><code>0457BB727B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1471902331</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>0463C52D75000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1673866613</td>
|
|
|
|
|
<td><code>0457BE006D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1472069741</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>12D252A652492F98B3E7AC76FEFA89A4</code></td>
|
|
|
|
|
<td><code>59DEDF5BB5F93FE0B86AA6221D70B0B9</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>6CE75A078D3BDAEC6CD2D63AD8679DDA</code></td>
|
|
|
|
|
<td><code>A1E068884F45FDC974BAA822301121C3</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>56018FA16B1D5AC2AC60C60EA7BBADA5</code> <code>EE4A6BBB2B6B0C29F9637F1EEBDC02C9</code></td>
|
|
|
|
|
<td><code>821294E3327DE3346EEFFD0CDE0444B4</code> <code>35BF037FEAFAC91AAB5DE95F97EDCACA</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1673866613</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 = 955FF5A908238D10D15DACAD17000000045B3862DB0000000463C52D7500000012D252A652492F98B3E7AC76FEFA89A46CE75A078D3BDAEC6CD2D63AD8679DDA56018FA16B1D5AC2AC60C60EA7BBADA5EE4A6BBB2B6B0C29F9637F1EEBDC02C902000000
|
|
|
|
|
random_padding_bytes = 979109065C19335B68C0906AA669492BBDFD4930CC44A561EBA8470770E00BC833E64F4F78733CAB274365CE300CCB3103E3AC9B43E9FC026A98F7728E00628A953690E761A9EE10B9A984B34B0DBCF2BC8DAB15E91A6EEC9BFD8D25</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A9081E11D12C1F19BE5F0000000457BB727B0000000457BE006D00000059DEDF5BB5F93FE0B86AA6221D70B0B9A1E068884F45FDC974BAA822301121C3821294E3327DE3346EEFFD0CDE0444B435BF037FEAFAC91AAB5DE95F97EDCACA02000000
|
|
|
|
|
random_padding_bytes = C55B9974477A10A7027C992B4BA5294202137AD6A670EC64185288591D167A0CC5ED15F531E110AF842CC23E6B22BB831F95DA61214A0E97326876BE3FE0C35A34FB9D8599397DFB4CC35048AFA6A7D00C4D6054A46C15DC936C418A</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 = D9CBB19DB9128A9A39832DD1E904E38D4C2B2BF8C713736FDEFA3C340FA2186DC41B66E51C0B99FA9B1DFFA40293E7FCFFD10AF21ADBB21BAEF77C9DD103C39B26F7BB15C57D5384CE3686397318C3D6711259300DB30095160DC84A3B06AD8F491EB226861A9D01F8C4C8C846C0E4789CB023CD2AE265C175B5A0F9BE446CBD66FB11A9AF59DE03065EFE98D3F99D6DCC6DB0E2D37271D12B78F98F7D38DFF35CC7B4DEABFED8272E0D4C72736118263DE2EEE60641C36969B23D3678E9009DE7CF410AE85706937C520319474C39648FB8F7BD37EE85F71CFFB880EA17880EF99DE262E9D5F405FD1998F689B44BFBF4F8DEBA3B0B0190A7C642883D623EE9</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 5140F776F0F0FAEE120254ED061871F5BB4608C0DA34E65A342C7968B407D8CBF841A7696ADC9CF6E45458D6981621232F59CB53EE98F5FD834F2531DD65CDA6AD59A4F9601B7A8F590FA182A39C80D3A7C2C1ED75192B1DB9E72D727F06CF4468B237EDF01C63D73763F961406B9A33DE0BB896F5E09623641F00CAEFBB8A50839D658991E7D86B3DF238E00C987C1446B746BAC21373DD0A93D2CBD4B0BE57BBE670E5AD00EEA0C0F30BA989EA6BF37FFEEC75D59BB932C010A8E5AC9572E9F86857763A47F226E8E2034D457697628350D21ED96A71F8172C2AF3086BADEBAAD85C776AC194F48A59F750DA63FA1CF4BCAA0587DE688C8FF9E84F5753C01D</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 C8 03 0F 00 3A BB 74 65
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 12 D2 52 A6 52 49 2F 98
|
|
|
|
|
0020 | B3 E7 AC 76 FE FA 89 A4 6C E7 5A 07 8D 3B DA EC
|
|
|
|
|
0030 | 6C D2 D6 3A D8 67 9D DA 04 5B 38 62 DB 00 00 00
|
|
|
|
|
0040 | 04 63 C5 2D 75 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 D9 CB B1 9D B9 12 8A 9A 39 83 2D D1
|
|
|
|
|
0060 | E9 04 E3 8D 4C 2B 2B F8 C7 13 73 6F DE FA 3C 34
|
|
|
|
|
0070 | 0F A2 18 6D C4 1B 66 E5 1C 0B 99 FA 9B 1D FF A4
|
|
|
|
|
0080 | 02 93 E7 FC FF D1 0A F2 1A DB B2 1B AE F7 7C 9D
|
|
|
|
|
0090 | D1 03 C3 9B 26 F7 BB 15 C5 7D 53 84 CE 36 86 39
|
|
|
|
|
00A0 | 73 18 C3 D6 71 12 59 30 0D B3 00 95 16 0D C8 4A
|
|
|
|
|
00B0 | 3B 06 AD 8F 49 1E B2 26 86 1A 9D 01 F8 C4 C8 C8
|
|
|
|
|
00C0 | 46 C0 E4 78 9C B0 23 CD 2A E2 65 C1 75 B5 A0 F9
|
|
|
|
|
00D0 | BE 44 6C BD 66 FB 11 A9 AF 59 DE 03 06 5E FE 98
|
|
|
|
|
00E0 | D3 F9 9D 6D CC 6D B0 E2 D3 72 71 D1 2B 78 F9 8F
|
|
|
|
|
00F0 | 7D 38 DF F3 5C C7 B4 DE AB FE D8 27 2E 0D 4C 72
|
|
|
|
|
0100 | 73 61 18 26 3D E2 EE E6 06 41 C3 69 69 B2 3D 36
|
|
|
|
|
0110 | 78 E9 00 9D E7 CF 41 0A E8 57 06 93 7C 52 03 19
|
|
|
|
|
0120 | 47 4C 39 64 8F B8 F7 BD 37 EE 85 F7 1C FF B8 80
|
|
|
|
|
0130 | EA 17 88 0E F9 9D E2 62 E9 D5 F4 05 FD 19 98 F6
|
|
|
|
|
0140 | 89 B4 4B FB F4 F8 DE BA 3B 0B 01 90 A7 C6 42 88
|
|
|
|
|
0150 | 3D 62 3E E9</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 80 7B 08 00 C3 BD 74 65
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 59 DE DF 5B B5 F9 3F E0
|
|
|
|
|
0020 | B8 6A A6 22 1D 70 B0 B9 A1 E0 68 88 4F 45 FD C9
|
|
|
|
|
0030 | 74 BA A8 22 30 11 21 C3 04 57 BB 72 7B 00 00 00
|
|
|
|
|
0040 | 04 57 BE 00 6D 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 51 40 F7 76 F0 F0 FA EE 12 02 54 ED
|
|
|
|
|
0060 | 06 18 71 F5 BB 46 08 C0 DA 34 E6 5A 34 2C 79 68
|
|
|
|
|
0070 | B4 07 D8 CB F8 41 A7 69 6A DC 9C F6 E4 54 58 D6
|
|
|
|
|
0080 | 98 16 21 23 2F 59 CB 53 EE 98 F5 FD 83 4F 25 31
|
|
|
|
|
0090 | DD 65 CD A6 AD 59 A4 F9 60 1B 7A 8F 59 0F A1 82
|
|
|
|
|
00A0 | A3 9C 80 D3 A7 C2 C1 ED 75 19 2B 1D B9 E7 2D 72
|
|
|
|
|
00B0 | 7F 06 CF 44 68 B2 37 ED F0 1C 63 D7 37 63 F9 61
|
|
|
|
|
00C0 | 40 6B 9A 33 DE 0B B8 96 F5 E0 96 23 64 1F 00 CA
|
|
|
|
|
00D0 | EF BB 8A 50 83 9D 65 89 91 E7 D8 6B 3D F2 38 E0
|
|
|
|
|
00E0 | 0C 98 7C 14 46 B7 46 BA C2 13 73 DD 0A 93 D2 CB
|
|
|
|
|
00F0 | D4 B0 BE 57 BB E6 70 E5 AD 00 EE A0 C0 F3 0B A9
|
|
|
|
|
0100 | 89 EA 6B F3 7F FE EC 75 D5 9B B9 32 C0 10 A8 E5
|
|
|
|
|
0110 | AC 95 72 E9 F8 68 57 76 3A 47 F2 26 E8 E2 03 4D
|
|
|
|
|
0120 | 45 76 97 62 83 50 D2 1E D9 6A 71 F8 17 2C 2A F3
|
|
|
|
|
0130 | 08 6B AD EB AA D8 5C 77 6A C1 94 F4 8A 59 F7 50
|
|
|
|
|
0140 | DA 63 FA 1C F4 BC AA 05 87 DE 68 8C 8F F9 E8 4F
|
|
|
|
|
0150 | 57 53 C0 1D</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 = 979109065C19335B68C0906AA669492BBDFD4930CC44A561EBA847077
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>C8030F003ABB7465</code></td>
|
|
|
|
|
<td><code>807B0800C3BD7465</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 = 979109065C19335B68C0906AA669492BBDFD4930CC44A561EBA847077
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>12D252A652492F98B3E7AC76FEFA89A4</code></td>
|
|
|
|
|
<td><code>59DEDF5BB5F93FE0B86AA6221D70B0B9</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>6CE75A078D3BDAEC6CD2D63AD8679DDA</code></td>
|
|
|
|
|
<td><code>A1E068884F45FDC974BAA822301121C3</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>045B3862DB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1530421979</td>
|
|
|
|
|
<td><code>0457BB727B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1471902331</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>0463C52D75000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1673866613</td>
|
|
|
|
|
<td><code>0457BE006D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1472069741</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 = 979109065C19335B68C0906AA669492BBDFD4930CC44A561EBA847077
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE000100D9CBB19DB9128A9A39832DD1</code> <code>E904E38D4C2B2BF8C713736FDEFA3C34</code> <code>0FA2186DC41B66E51C0B99FA9B1DFFA4</code> <code>0293E7FCFFD10AF21ADBB21BAEF77C9D</code> <code>D103C39B26F7BB15C57D5384CE368639</code> <code>7318C3D6711259300DB30095160DC84A</code> <code>3B06AD8F491EB226861A9D01F8C4C8C8</code> <code>46C0E4789CB023CD2AE265C175B5A0F9</code> <code>BE446CBD66FB11A9AF59DE03065EFE98</code> <code>D3F99D6DCC6DB0E2D37271D12B78F98F</code> <code>7D38DFF35CC7B4DEABFED8272E0D4C72</code> <code>736118263DE2EEE60641C36969B23D36</code> <code>78E9009DE7CF410AE85706937C520319</code> <code>474C39648FB8F7BD37EE85F71CFFB880</code> <code>EA17880EF99DE262E9D5F405FD1998F6</code> <code>89B44BFBF4F8DEBA3B0B0190A7C64288</code><br> <code>3D623EE9</code></td>
|
|
|
|
|
<td><code>FE0001005140F776F0F0FAEE120254ED</code> <code>061871F5BB4608C0DA34E65A342C7968</code> <code>B407D8CBF841A7696ADC9CF6E45458D6</code> <code>981621232F59CB53EE98F5FD834F2531</code> <code>DD65CDA6AD59A4F9601B7A8F590FA182</code> <code>A39C80D3A7C2C1ED75192B1DB9E72D72</code> <code>7F06CF4468B237EDF01C63D73763F961</code> <code>406B9A33DE0BB896F5E09623641F00CA</code> <code>EFBB8A50839D658991E7D86B3DF238E0</code> <code>0C987C1446B746BAC21373DD0A93D2CB</code> <code>D4B0BE57BBE670E5AD00EEA0C0F30BA9</code> <code>89EA6BF37FFEEC75D59BB932C010A8E5</code> <code>AC9572E9F86857763A47F226E8E2034D</code> <code>457697628350D21ED96A71F8172C2AF3</code> <code>086BADEBAAD85C776AC194F48A59F750</code> <code>DA63FA1CF4BCAA0587DE688C8FF9E84F</code><br> <code>5753C01D</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = 979109065C19335B68C0906AA669492BBDFD4930CC44A561EBA847077
|
|
|
|
|
<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 FC D3 E6 3A BB 74 65
|
|
|
|
|
0010 | D4 02 00 00 5C 07 E8 D0 12 D2 52 A6 52 49 2F 98
|
|
|
|
|
0020 | B3 E7 AC 76 FE FA 89 A4 6C E7 5A 07 8D 3B DA EC
|
|
|
|
|
0030 | 6C D2 D6 3A D8 67 9D DA FE 50 02 00 0E 75 02 FC
|
|
|
|
|
0040 | 77 76 13 32 EB BF AC 5A 3D 6F 6B 79 99 5A AA 71
|
|
|
|
|
0050 | DD 7D DF 6E F7 4B 23 FE 72 2A D9 96 82 8F 85 28
|
|
|
|
|
0060 | 4A A7 6B BF 6D 58 60 51 BC 2E 7E 58 6A DE 76 A9
|
|
|
|
|
0070 | 80 E2 66 08 AF 09 E3 6C 83 95 BE 7F E1 E1 15 D2
|
|
|
|
|
0080 | 15 DD 16 52 2C 7D E8 84 E7 9D 47 01 BC 42 52 FB
|
|
|
|
|
0090 | 1E CC 75 53 23 9D 40 B8 3E 37 65 76 E3 DB 9B 26
|
|
|
|
|
00A0 | D2 D0 26 A4 91 33 F2 83 01 EC 76 0A ED 51 DF 08
|
|
|
|
|
00B0 | 2D BB 4F 3D 57 F5 30 E5 09 9B E9 51 7F E1 7E F1
|
|
|
|
|
00C0 | B7 E8 37 B6 F9 6D E4 E0 7A 24 C2 E5 97 6D 91 83
|
|
|
|
|
00D0 | CB 9C 0A 0D 56 26 B2 73 A0 C9 F3 CA CB D2 2F 3E
|
|
|
|
|
00E0 | 37 E9 74 84 4D 35 A6 D0 A3 99 AE 18 75 66 1D 08
|
|
|
|
|
00F0 | 4D E9 02 00 9B 36 58 1E 9A 26 9A 80 55 0E A8 2A
|
|
|
|
|
0100 | D1 DA CD C1 7C 9D 45 DD 64 A4 32 05 4C 67 7B D7
|
|
|
|
|
0110 | D8 A2 2B F5 5B 5E 42 26 40 E8 4A 41 DE 8F 32 89
|
|
|
|
|
0120 | 6F CB 28 EC 95 8B 6A 72 68 68 FA 50 95 1D 8A 79
|
|
|
|
|
0130 | AE C5 AE B8 79 8C 5C D2 F2 FD 23 14 BD 42 B6 FE
|
|
|
|
|
0140 | C5 89 C0 40 87 F9 0C 97 94 1F EA 8A F6 6A 7C D2
|
|
|
|
|
0150 | 10 B9 A5 46 2C 1C 73 40 39 9D 5B 14 6D BB 57 FC
|
|
|
|
|
0160 | 24 4D D0 EF 86 71 68 11 72 2D F1 3B 1B E3 1B 1E
|
|
|
|
|
0170 | 73 DD 0F 7A 94 74 34 DF 9D 1F 62 C3 D1 32 1E 48
|
|
|
|
|
0180 | 65 29 1B A4 CF 9B 74 27 95 E6 E1 BA 2E 30 AA 46
|
|
|
|
|
0190 | 40 9F 20 E9 FE 72 7A 92 1D 0C C9 C5 8B A5 46 81
|
|
|
|
|
01A0 | 90 39 0D 43 8F CF 20 98 BD 8F 2D 11 55 0C 20 7D
|
|
|
|
|
01B0 | C0 85 63 C9 04 08 0E 8C B7 4F E9 93 61 9B 0A 7C
|
|
|
|
|
01C0 | 30 FD 58 C2 C5 88 01 90 FE 91 FA 35 2D 1D EF 76
|
|
|
|
|
01D0 | CB 3C 9E FD BD 7C 57 EF C7 B1 E7 06 27 D6 20 CC
|
|
|
|
|
01E0 | 85 DF F6 01 A0 10 6E 9D 9E EA A6 3F B4 6D BA 8E
|
|
|
|
|
01F0 | 06 5F 4E D0 3A F7 92 E9 68 F0 BF E6 BF 84 6F DD
|
|
|
|
|
0200 | 84 09 6A D4 E0 4F 3A 0E 29 94 B1 4C B8 53 9F 88
|
|
|
|
|
0210 | 1D 17 32 20 10 0E A3 90 F9 D0 4F 47 B5 B5 97 82
|
|
|
|
|
0220 | FA CB E1 B8 54 DA 20 53 E3 13 FA 7A B1 C8 18 04
|
|
|
|
|
0230 | 6F E5 5A 31 33 72 86 F2 F1 01 7A 9C 9B 80 8B 78
|
|
|
|
|
0240 | C7 21 AA B4 B3 DA AA B6 0C E7 70 D1 91 E9 8F 6E
|
|
|
|
|
0250 | 3B FB 69 0A 37 D0 65 11 C2 A4 06 0E 4A E2 25 68
|
|
|
|
|
0260 | 97 A0 29 E5 FB 57 99 20 84 BA 0C E2 15 96 CA 78
|
|
|
|
|
0270 | E9 8F E4 F3 C4 8A 4D 8C F4 F3 D7 67 DA 6B A0 DC
|
|
|
|
|
0280 | 0B F8 30 35 A8 21 D0 3E 0B 9E 26 91</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 58 A7 9A C3 BD 74 65
|
|
|
|
|
0010 | 7C 02 00 00 5C 07 E8 D0 59 DE DF 5B B5 F9 3F E0
|
|
|
|
|
0020 | B8 6A A6 22 1D 70 B0 B9 A1 E0 68 88 4F 45 FD C9
|
|
|
|
|
0030 | 74 BA A8 22 30 11 21 C3 FE 50 02 00 4C 4E 4C A6
|
|
|
|
|
0040 | 13 FE 35 8D 63 35 DE 99 53 6B 1C 1F 07 AA 00 99
|
|
|
|
|
0050 | C1 EE 02 F9 CB 4D BE F2 E9 FC 75 39 43 6F 45 AE
|
|
|
|
|
0060 | D9 31 C9 62 A8 47 1F A1 26 C1 DA F2 9E 69 74 A0
|
|
|
|
|
0070 | D7 10 FA D5 60 DA 7E 89 B2 89 AE E5 CD 64 60 F7
|
|
|
|
|
0080 | 1B 8F A1 F3 66 04 16 BE E6 60 8C AE 10 39 FE 43
|
|
|
|
|
0090 | 0E C3 7B 61 64 95 67 51 CB 48 8C 47 33 1C CE AF
|
|
|
|
|
00A0 | 77 01 39 BD 96 B9 E8 2A A5 80 23 C8 60 14 95 8A
|
|
|
|
|
00B0 | C9 7C 42 8A 01 AD 79 7E AC 98 AE F0 92 E6 ED 77
|
|
|
|
|
00C0 | B7 22 2C 9C 3F 0F 30 62 3B 9B A6 C7 77 81 A5 FD
|
|
|
|
|
00D0 | 23 56 9E F9 56 6F 3B 15 9F 52 28 F1 1B 3C CE 5B
|
|
|
|
|
00E0 | 2C B3 04 B0 08 98 6B F1 AD 9B A6 83 2A EA 74 D1
|
|
|
|
|
00F0 | 1B 3F C8 80 13 36 7A 6A 65 7A F2 A1 40 6C 30 06
|
|
|
|
|
0100 | 7D 06 50 75 9A D9 C6 AB 0C E2 62 53 2A BD 3C 0E
|
|
|
|
|
0110 | A3 8C D8 58 E6 64 85 18 6B D0 4D E0 AD 29 FD 2F
|
|
|
|
|
0120 | C5 5F 30 C5 D3 AF A2 0D F5 34 A2 6D 7E F0 76 34
|
|
|
|
|
0130 | 84 17 BE E1 49 D6 91 F1 DA BE 87 63 C7 B9 E2 A0
|
|
|
|
|
0140 | C3 EE C2 28 15 EC 42 C1 C2 9F 80 A6 BA 73 87 E4
|
|
|
|
|
0150 | 26 60 12 09 4D 4B E8 38 7F AF 6E B9 86 49 A8 46
|
|
|
|
|
0160 | D8 9D B6 9E DA D7 9B 8A 0E D5 F2 56 2A 94 B9 06
|
|
|
|
|
0170 | 5B E8 82 A6 F0 D6 AB FE 96 44 61 4E 35 2E C3 73
|
|
|
|
|
0180 | 15 89 D3 CD 0C F3 96 0F 3D 9D C7 45 24 C8 34 84
|
|
|
|
|
0190 | A9 A2 5A E0 44 FE 1A 64 0D 1B E5 BD 23 82 88 76
|
|
|
|
|
01A0 | 60 37 55 56 68 D4 05 89 D2 3B E9 9E CE 04 80 2A
|
|
|
|
|
01B0 | 41 82 83 DE 27 83 CC 2E B2 41 BB E9 10 52 B5 19
|
|
|
|
|
01C0 | CC C4 A7 3F E0 52 F2 5A 77 45 16 A1 B7 CD 4D 5B
|
|
|
|
|
01D0 | 58 A1 F0 C4 C8 03 FF 45 63 77 8E 5F E3 72 C9 3D
|
|
|
|
|
01E0 | 3F AA 73 B8 E6 5D 59 9F 4B 15 1B 70 2E C8 26 DF
|
|
|
|
|
01F0 | 83 8F 90 64 21 14 19 D3 DD 93 90 EC 09 6F 79 13
|
|
|
|
|
0200 | 46 2B 36 A2 A2 FC 02 87 5A B0 9A BD F7 D9 BE 6E
|
|
|
|
|
0210 | 8B 29 E0 BC 42 25 ED 6A 45 63 DB A7 77 B4 98 C0
|
|
|
|
|
0220 | D5 90 59 46 A2 62 D4 C1 CE BB FD 3F 64 2B 17 35
|
|
|
|
|
0230 | 93 97 FC 0A A9 BA 38 F5 70 29 B4 F4 EC E8 8D 07
|
|
|
|
|
0240 | 79 45 C8 97 9C 8E 13 7A 98 68 B5 B3 7C 5A AF C4
|
|
|
|
|
0250 | EB 80 0F BD 27 49 4F A2 BE D9 17 78 F4 11 C4 F1
|
|
|
|
|
0260 | 08 B9 97 15 F8 F8 4D A8 9C CF 2D 84 D5 B2 F3 72
|
|
|
|
|
0270 | B0 2C 8F 1C D6 68 90 D3 D6 2B 80 7B E7 0C 25 E5
|
|
|
|
|
0280 | 78 D2 0B F6 14 4D 9C 49 BE B1 4C 35</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 = 979109065C19335B68C0906AA669492BBDFD4930CC44A561EBA847077
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>01FCD3E63ABB7465</code></td>
|
|
|
|
|
<td><code>0158A79AC3BD7465</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>D4020000</code> (724 in decimal)</td>
|
|
|
|
|
<td><code>7C020000</code> (636 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -482,19 +482,19 @@ random_padding_bytes = 979109065C19335B68C0906AA669492BBDFD4930CC44A561EBA847077
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>12D252A652492F98B3E7AC76FEFA89A4</code></td>
|
|
|
|
|
<td><code>59DEDF5BB5F93FE0B86AA6221D70B0B9</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>6CE75A078D3BDAEC6CD2D63AD8679DDA</code></td>
|
|
|
|
|
<td><code>A1E068884F45FDC974BAA822301121C3</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE5002000E7502FC77761332EBBFAC5A</code> <code>3D6F6B79995AAA71DD7DDF6EF74B23FE</code> <code>722AD996828F85284AA76BBF6D586051</code> <code>BC2E7E586ADE76A980E26608AF09E36C</code> <code>8395BE7FE1E115D215DD16522C7DE884</code> <code>E79D4701BC4252FB1ECC7553239D40B8</code> <code>3E376576E3DB9B26D2D026A49133F283</code> <code>01EC760AED51DF082DBB4F3D57F530E5</code> <code>099BE9517FE17EF1B7E837B6F96DE4E0</code> <code>7A24C2E5976D9183CB9C0A0D5626B273</code> <code>A0C9F3CACBD22F3E37E974844D35A6D0</code> <code>A399AE1875661D084DE902009B36581E</code> <code>9A269A80550EA82AD1DACDC17C9D45DD</code> <code>64A432054C677BD7D8A22BF55B5E4226</code> <code>40E84A41DE8F32896FCB28EC958B6A72</code> <code>6868FA50951D8A79AEC5AEB8798C5CD2</code> <code>F2FD2314BD42B6FEC589C04087F90C97</code> <code>941FEA8AF66A7CD210B9A5462C1C7340</code> <code>399D5B146DBB57FC244DD0EF86716811</code> <code>722DF13B1BE31B1E73DD0F7A947434DF</code> <code>9D1F62C3D1321E4865291BA4CF9B7427</code> <code>95E6E1BA2E30AA46409F20E9FE727A92</code> <code>1D0CC9C58BA5468190390D438FCF2098</code> <code>BD8F2D11550C207DC08563C904080E8C</code> <code>B74FE993619B0A7C30FD58C2C5880190</code> <code>FE91FA352D1DEF76CB3C9EFDBD7C57EF</code> <code>C7B1E70627D620CC85DFF601A0106E9D</code> <code>9EEAA63FB46DBA8E065F4ED03AF792E9</code> <code>68F0BFE6BF846FDD84096AD4E04F3A0E</code> <code>2994B14CB8539F881D173220100EA390</code> <code>F9D04F47B5B59782FACBE1B854DA2053</code> <code>E313FA7AB1C818046FE55A31337286F2</code> <code>F1017A9C9B808B78C721AAB4B3DAAAB6</code> <code>0CE770D191E98F6E3BFB690A37D06511</code> <code>C2A4060E4AE2256897A029E5FB579920</code> <code>84BA0CE21596CA78E98FE4F3C48A4D8C</code> <code>F4F3D767DA6BA0DC0BF83035A821D03E</code><br> <code>0B9E2691</code></td>
|
|
|
|
|
<td><code>FE5002004C4E4CA613FE358D6335DE99</code> <code>536B1C1F07AA0099C1EE02F9CB4DBEF2</code> <code>E9FC7539436F45AED931C962A8471FA1</code> <code>26C1DAF29E6974A0D710FAD560DA7E89</code> <code>B289AEE5CD6460F71B8FA1F3660416BE</code> <code>E6608CAE1039FE430EC37B6164956751</code> <code>CB488C47331CCEAF770139BD96B9E82A</code> <code>A58023C86014958AC97C428A01AD797E</code> <code>AC98AEF092E6ED77B7222C9C3F0F3062</code> <code>3B9BA6C77781A5FD23569EF9566F3B15</code> <code>9F5228F11B3CCE5B2CB304B008986BF1</code> <code>AD9BA6832AEA74D11B3FC88013367A6A</code> <code>657AF2A1406C30067D0650759AD9C6AB</code> <code>0CE262532ABD3C0EA38CD858E6648518</code> <code>6BD04DE0AD29FD2FC55F30C5D3AFA20D</code> <code>F534A26D7EF076348417BEE149D691F1</code> <code>DABE8763C7B9E2A0C3EEC22815EC42C1</code> <code>C29F80A6BA7387E4266012094D4BE838</code> <code>7FAF6EB98649A846D89DB69EDAD79B8A</code> <code>0ED5F2562A94B9065BE882A6F0D6ABFE</code> <code>9644614E352EC3731589D3CD0CF3960F</code> <code>3D9DC74524C83484A9A25AE044FE1A64</code> <code>0D1BE5BD238288766037555668D40589</code> <code>D23BE99ECE04802A418283DE2783CC2E</code> <code>B241BBE91052B519CCC4A73FE052F25A</code> <code>774516A1B7CD4D5B58A1F0C4C803FF45</code> <code>63778E5FE372C93D3FAA73B8E65D599F</code> <code>4B151B702EC826DF838F9064211419D3</code> <code>DD9390EC096F7913462B36A2A2FC0287</code> <code>5AB09ABDF7D9BE6E8B29E0BC4225ED6A</code> <code>4563DBA777B498C0D5905946A262D4C1</code> <code>CEBBFD3F642B17359397FC0AA9BA38F5</code> <code>7029B4F4ECE88D077945C8979C8E137A</code> <code>9868B5B37C5AAFC4EB800FBD27494FA2</code> <code>BED91778F411C4F108B99715F8F84DA8</code> <code>9CCF2D84D5B2F372B02C8F1CD66890D3</code> <code>D62B807BE70C25E578D20BF6144D9C49</code><br> <code>BEB14C35</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = 979109065C19335B68C0906AA669492BBDFD4930CC44A561EBA847077
|
|
|
|
|
<!-- 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 = 0E7502FC77761332EBBFAC5A3D6F6B79995AAA71DD7DDF6EF74B23FE722AD996828F85284AA76BBF6D586051BC2E7E586ADE76A980E26608AF09E36C8395BE7FE1E115D215DD16522C7DE884E79D4701BC4252FB1ECC7553239D40B83E376576E3DB9B26D2D026A49133F28301EC760AED51DF082DBB4F3D57F530E5099BE9517FE17EF1B7E837B6F96DE4E07A24C2E5976D9183CB9C0A0D5626B273A0C9F3CACBD22F3E37E974844D35A6D0A399AE1875661D084DE902009B36581E9A269A80550EA82AD1DACDC17C9D45DD64A432054C677BD7D8A22BF55B5E422640E84A41DE8F32896FCB28EC958B6A726868FA50951D8A79AEC5AEB8798C5CD2F2FD2314BD42B6FEC589C04087F90C97941FEA8AF66A7CD210B9A5462C1C7340399D5B146DBB57FC244DD0EF86716811722DF13B1BE31B1E73DD0F7A947434DF9D1F62C3D1321E4865291BA4CF9B742795E6E1BA2E30AA46409F20E9FE727A921D0CC9C58BA5468190390D438FCF2098BD8F2D11550C207DC08563C904080E8CB74FE993619B0A7C30FD58C2C5880190FE91FA352D1DEF76CB3C9EFDBD7C57EFC7B1E70627D620CC85DFF601A0106E9D9EEAA63FB46DBA8E065F4ED03AF792E968F0BFE6BF846FDD84096AD4E04F3A0E2994B14CB8539F881D173220100EA390F9D04F47B5B59782FACBE1B854DA2053E313FA7AB1C818046FE55A31337286F2F1017A9C9B808B78C721AAB4B3DAAAB60CE770D191E98F6E3BFB690A37D06511C2A4060E4AE2256897A029E5FB57992084BA0CE21596CA78E98FE4F3C48A4D8CF4F3D767DA6BA0DC0BF83035A821D03E0B9E2691
|
|
|
|
|
tmp_aes_key = F97885237250E1E2923A564401F69AA32F283C7A9C3448965DAB36A9481EE649
|
|
|
|
|
tmp_aes_iv = 954D4B646A8170F6C46CD9F709B2E4203595359E5AA26C84DA8918FB56018FA1</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = 4C4E4CA613FE358D6335DE99536B1C1F07AA0099C1EE02F9CB4DBEF2E9FC7539436F45AED931C962A8471FA126C1DAF29E6974A0D710FAD560DA7E89B289AEE5CD6460F71B8FA1F3660416BEE6608CAE1039FE430EC37B6164956751CB488C47331CCEAF770139BD96B9E82AA58023C86014958AC97C428A01AD797EAC98AEF092E6ED77B7222C9C3F0F30623B9BA6C77781A5FD23569EF9566F3B159F5228F11B3CCE5B2CB304B008986BF1AD9BA6832AEA74D11B3FC88013367A6A657AF2A1406C30067D0650759AD9C6AB0CE262532ABD3C0EA38CD858E66485186BD04DE0AD29FD2FC55F30C5D3AFA20DF534A26D7EF076348417BEE149D691F1DABE8763C7B9E2A0C3EEC22815EC42C1C29F80A6BA7387E4266012094D4BE8387FAF6EB98649A846D89DB69EDAD79B8A0ED5F2562A94B9065BE882A6F0D6ABFE9644614E352EC3731589D3CD0CF3960F3D9DC74524C83484A9A25AE044FE1A640D1BE5BD238288766037555668D40589D23BE99ECE04802A418283DE2783CC2EB241BBE91052B519CCC4A73FE052F25A774516A1B7CD4D5B58A1F0C4C803FF4563778E5FE372C93D3FAA73B8E65D599F4B151B702EC826DF838F9064211419D3DD9390EC096F7913462B36A2A2FC02875AB09ABDF7D9BE6E8B29E0BC4225ED6A4563DBA777B498C0D5905946A262D4C1CEBBFD3F642B17359397FC0AA9BA38F57029B4F4ECE88D077945C8979C8E137A9868B5B37C5AAFC4EB800FBD27494FA2BED91778F411C4F108B99715F8F84DA89CCF2D84D5B2F372B02C8F1CD66890D3D62B807BE70C25E578D20BF6144D9C49BEB14C35
|
|
|
|
|
tmp_aes_key = 56B2C3E6BB7FBD59CA9178DF4059D3BCA25157272819D34C149366D1E04D9851
|
|
|
|
|
tmp_aes_iv = E5D580D8753E8E3F6E6C714C25CB0017D99976612AE7E8689500A2CE821294E3</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = A5EBFA70800CECFE974D1B3F5368C9C143740722BA0D89B512D252A652492F98B3E7AC76FEFA89A46CE75A078D3BDAEC6CD2D63AD8679DDA03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100347BE521229C862F6DE3FB2DA9ECE4F5D77B8BBD389E8AF45F2377C6E1D3F6ACE73A2EDD1F24F638DD52BB46ED8C470EE3338EECF830DD88E1F64D33F2B64009B9D3F2DBB3092F0B47B4812B14B3790DB994DD7E672D2878BAE02AAB806831384252993D4E9461AD4D81AFF85267ADBE55CD68FF074E59C0F47E801C091F0C407C35176F17C3A3C5606C47EA9EAE2065F1FAA6BE24CD6F0855EFE9FD6F2DEE69F826ACACE3E21A62F6D9812433247959E9E65265FC9BB398CA860C7244832D08EF37ABC298BE190C8051808235859652EE1E29512F17FD6881074049ECC5FD9B05F24F9808244B5440D6394E7FE4ADA0CA9659A0A94020B0BBA2E1F582BCD3333ABB7465A33090C42DAFA01F
|
|
|
|
|
answer = BA0D89B512D252A652492F98B3E7AC76FEFA89A46CE75A078D3BDAEC6CD2D63AD8679DDA03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100347BE521229C862F6DE3FB2DA9ECE4F5D77B8BBD389E8AF45F2377C6E1D3F6ACE73A2EDD1F24F638DD52BB46ED8C470EE3338EECF830DD88E1F64D33F2B64009B9D3F2DBB3092F0B47B4812B14B3790DB994DD7E672D2878BAE02AAB806831384252993D4E9461AD4D81AFF85267ADBE55CD68FF074E59C0F47E801C091F0C407C35176F17C3A3C5606C47EA9EAE2065F1FAA6BE24CD6F0855EFE9FD6F2DEE69F826ACACE3E21A62F6D9812433247959E9E65265FC9BB398CA860C7244832D08EF37ABC298BE190C8051808235859652EE1E29512F17FD6881074049ECC5FD9B05F24F9808244B5440D6394E7FE4ADA0CA9659A0A94020B0BBA2E1F582BCD3333ABB7465A33090C42DAFA01F</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = 6319F0BBD5C9431E73D83D3DD38E68C71C3871E7BA0D89B559DEDF5BB5F93FE0B86AA6221D70B0B9A1E068884F45FDC974BAA822301121C303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010003D66EDC067FE7D78DA60C9B3EA72A31D544C02611193B1F46D47894079C6676B664B6E9BFBAA93E33FBCD8AB19C34A40C4978023860571761E70DE143FCA1B6636B77845055964A2D27AE775074635E9BA4B29FD90ECF2F92B0534ED3252937566F4C8AFCDD398E718AF4E9817BA92B00EC39239E47DADCE4AA2ED8390816D89135D7168DEEC4E8C963B4D73AB479EF6E82E0FBD354968908C15F5FEA444431C54F8347A1A42CDAB57934EB56BF4010FD363399DAF51F72AFFF72D6A6B8D651A530B686B797DE062C9E5101C451187909FAC6A37303ABCAD08EC7F27ED9D176A9CF86574A94633C9126917470FF81BB4E45E9C39EB5FDA81C5BD45A84F53035C3BD7465BE17B117A77C665D
|
|
|
|
|
answer = BA0D89B559DEDF5BB5F93FE0B86AA6221D70B0B9A1E068884F45FDC974BAA822301121C303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010003D66EDC067FE7D78DA60C9B3EA72A31D544C02611193B1F46D47894079C6676B664B6E9BFBAA93E33FBCD8AB19C34A40C4978023860571761E70DE143FCA1B6636B77845055964A2D27AE775074635E9BA4B29FD90ECF2F92B0534ED3252937566F4C8AFCDD398E718AF4E9817BA92B00EC39239E47DADCE4AA2ED8390816D89135D7168DEEC4E8C963B4D73AB479EF6E82E0FBD354968908C15F5FEA444431C54F8347A1A42CDAB57934EB56BF4010FD363399DAF51F72AFFF72D6A6B8D651A530B686B797DE062C9E5101C451187909FAC6A37303ABCAD08EC7F27ED9D176A9CF86574A94633C9126917470FF81BB4E45E9C39EB5FDA81C5BD45A84F53035C3BD7465BE17B117A77C665D</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 12 D2 52 A6 52 49 2F 98 B3 E7 AC 76
|
|
|
|
|
0010 | FE FA 89 A4 6C E7 5A 07 8D 3B DA EC 6C D2 D6 3A
|
|
|
|
|
0020 | D8 67 9D DA 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 59 DE DF 5B B5 F9 3F E0 B8 6A A6 22
|
|
|
|
|
0010 | 1D 70 B0 B9 A1 E0 68 88 4F 45 FD C9 74 BA A8 22
|
|
|
|
|
0020 | 30 11 21 C3 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 = BA0D89B512D252A652492F98B3E7AC76FEFA89A46CE75A078D3BDAEC6CD2D63AD8679DD
|
|
|
|
|
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 | 34 7B E5 21 22 9C 86 2F 6D E3 FB 2D A9 EC E4 F5
|
|
|
|
|
0140 | D7 7B 8B BD 38 9E 8A F4 5F 23 77 C6 E1 D3 F6 AC
|
|
|
|
|
0150 | E7 3A 2E DD 1F 24 F6 38 DD 52 BB 46 ED 8C 47 0E
|
|
|
|
|
0160 | E3 33 8E EC F8 30 DD 88 E1 F6 4D 33 F2 B6 40 09
|
|
|
|
|
0170 | B9 D3 F2 DB B3 09 2F 0B 47 B4 81 2B 14 B3 79 0D
|
|
|
|
|
0180 | B9 94 DD 7E 67 2D 28 78 BA E0 2A AB 80 68 31 38
|
|
|
|
|
0190 | 42 52 99 3D 4E 94 61 AD 4D 81 AF F8 52 67 AD BE
|
|
|
|
|
01A0 | 55 CD 68 FF 07 4E 59 C0 F4 7E 80 1C 09 1F 0C 40
|
|
|
|
|
01B0 | 7C 35 17 6F 17 C3 A3 C5 60 6C 47 EA 9E AE 20 65
|
|
|
|
|
01C0 | F1 FA A6 BE 24 CD 6F 08 55 EF E9 FD 6F 2D EE 69
|
|
|
|
|
01D0 | F8 26 AC AC E3 E2 1A 62 F6 D9 81 24 33 24 79 59
|
|
|
|
|
01E0 | E9 E6 52 65 FC 9B B3 98 CA 86 0C 72 44 83 2D 08
|
|
|
|
|
01F0 | EF 37 AB C2 98 BE 19 0C 80 51 80 82 35 85 96 52
|
|
|
|
|
0200 | EE 1E 29 51 2F 17 FD 68 81 07 40 49 EC C5 FD 9B
|
|
|
|
|
0210 | 05 F2 4F 98 08 24 4B 54 40 D6 39 4E 7F E4 AD A0
|
|
|
|
|
0220 | CA 96 59 A0 A9 40 20 B0 BB A2 E1 F5 82 BC D3 33
|
|
|
|
|
0230 | 3A BB 74 65</code></pre>
|
|
|
|
|
0130 | 03 D6 6E DC 06 7F E7 D7 8D A6 0C 9B 3E A7 2A 31
|
|
|
|
|
0140 | D5 44 C0 26 11 19 3B 1F 46 D4 78 94 07 9C 66 76
|
|
|
|
|
0150 | B6 64 B6 E9 BF BA A9 3E 33 FB CD 8A B1 9C 34 A4
|
|
|
|
|
0160 | 0C 49 78 02 38 60 57 17 61 E7 0D E1 43 FC A1 B6
|
|
|
|
|
0170 | 63 6B 77 84 50 55 96 4A 2D 27 AE 77 50 74 63 5E
|
|
|
|
|
0180 | 9B A4 B2 9F D9 0E CF 2F 92 B0 53 4E D3 25 29 37
|
|
|
|
|
0190 | 56 6F 4C 8A FC DD 39 8E 71 8A F4 E9 81 7B A9 2B
|
|
|
|
|
01A0 | 00 EC 39 23 9E 47 DA DC E4 AA 2E D8 39 08 16 D8
|
|
|
|
|
01B0 | 91 35 D7 16 8D EE C4 E8 C9 63 B4 D7 3A B4 79 EF
|
|
|
|
|
01C0 | 6E 82 E0 FB D3 54 96 89 08 C1 5F 5F EA 44 44 31
|
|
|
|
|
01D0 | C5 4F 83 47 A1 A4 2C DA B5 79 34 EB 56 BF 40 10
|
|
|
|
|
01E0 | FD 36 33 99 DA F5 1F 72 AF FF 72 D6 A6 B8 D6 51
|
|
|
|
|
01F0 | A5 30 B6 86 B7 97 DE 06 2C 9E 51 01 C4 51 18 79
|
|
|
|
|
0200 | 09 FA C6 A3 73 03 AB CA D0 8E C7 F2 7E D9 D1 76
|
|
|
|
|
0210 | A9 CF 86 57 4A 94 63 3C 91 26 91 74 70 FF 81 BB
|
|
|
|
|
0220 | 4E 45 E9 C3 9E B5 FD A8 1C 5B D4 5A 84 F5 30 35
|
|
|
|
|
0230 | C3 BD 74 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 = BA0D89B512D252A652492F98B3E7AC76FEFA89A46CE75A078D3BDAEC6CD2D63AD8679DD
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>12D252A652492F98B3E7AC76FEFA89A4</code></td>
|
|
|
|
|
<td><code>59DEDF5BB5F93FE0B86AA6221D70B0B9</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>6CE75A078D3BDAEC6CD2D63AD8679DDA</code></td>
|
|
|
|
|
<td><code>A1E068884F45FDC974BAA822301121C3</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B512D252A652492F98B3E7AC76FEFA89A46CE75A078D3BDAEC6CD2D63AD8679DD
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE000100347BE521229C862F6DE3FB2D</code> <code>A9ECE4F5D77B8BBD389E8AF45F2377C6</code> <code>E1D3F6ACE73A2EDD1F24F638DD52BB46</code> <code>ED8C470EE3338EECF830DD88E1F64D33</code> <code>F2B64009B9D3F2DBB3092F0B47B4812B</code> <code>14B3790DB994DD7E672D2878BAE02AAB</code> <code>806831384252993D4E9461AD4D81AFF8</code> <code>5267ADBE55CD68FF074E59C0F47E801C</code> <code>091F0C407C35176F17C3A3C5606C47EA</code> <code>9EAE2065F1FAA6BE24CD6F0855EFE9FD</code> <code>6F2DEE69F826ACACE3E21A62F6D98124</code> <code>33247959E9E65265FC9BB398CA860C72</code> <code>44832D08EF37ABC298BE190C80518082</code> <code>35859652EE1E29512F17FD6881074049</code> <code>ECC5FD9B05F24F9808244B5440D6394E</code> <code>7FE4ADA0CA9659A0A94020B0BBA2E1F5</code><br> <code>82BCD333</code></td>
|
|
|
|
|
<td><code>FE00010003D66EDC067FE7D78DA60C9B</code> <code>3EA72A31D544C02611193B1F46D47894</code> <code>079C6676B664B6E9BFBAA93E33FBCD8A</code> <code>B19C34A40C4978023860571761E70DE1</code> <code>43FCA1B6636B77845055964A2D27AE77</code> <code>5074635E9BA4B29FD90ECF2F92B0534E</code> <code>D3252937566F4C8AFCDD398E718AF4E9</code> <code>817BA92B00EC39239E47DADCE4AA2ED8</code> <code>390816D89135D7168DEEC4E8C963B4D7</code> <code>3AB479EF6E82E0FBD354968908C15F5F</code> <code>EA444431C54F8347A1A42CDAB57934EB</code> <code>56BF4010FD363399DAF51F72AFFF72D6</code> <code>A6B8D651A530B686B797DE062C9E5101</code> <code>C451187909FAC6A37303ABCAD08EC7F2</code> <code>7ED9D176A9CF86574A94633C91269174</code> <code>70FF81BB4E45E9C39EB5FDA81C5BD45A</code><br> <code>84F53035</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>3ABB7465</code> (1702148922 in decimal)</td>
|
|
|
|
|
<td><code>C3BD7465</code> (1702149571 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B512D252A652492F98B3E7AC76FEFA89A46CE75A078D3BDAEC6CD2D63AD8679DD
|
|
|
|
|
<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 = 47F55ABF75125D664CB42AC0484DD33B40314EACCD487BFAE50271930D1F83A9455DF1FC0F4013530DB5BC205371E79238EBFCB46755CC43AA762595FA8C4A1108A9B5EB992B13DA7D816BAB9F8098721A76EA38238EB52809BE487EFBA926E5C821461AC4DB4325880DE8A234EB6BD97743E6D099F941197D85EE92336B90AB6DE61732F1F59E42DC125F4A1C97938DC648564ABF0A36B3F487A165BF5B088158B61CD8EDDEE600943637E6C0F5D037F49D2D68440CF3E1276FDBF03D7C1939E737BAAB001C4F56CA6108DFFEC95EB1B842B065D461D13F617AD2A6D0FEB45EF37B947E7504133A423890E52A090F50138D381B797A149FAE7BAF771CB45DC1</code></pre>
|
|
|
|
|
<pre><code>b = 5878CC9BCEE0DE7CE9B439D6BE47F88C2B24F4F96ACE1F0C74143335813297DCC40BE82B54628A0C0C3623C0FCFA2453B255101ECD9C1226560F5F2BE832C726CF503B1AF394F557995F95B3EE94D965FFAF43FA862346E58FDC1D2802020E15BB97BE50F2FD7089832D4D0A6F54D4332444C817A4623A10438C633210D77E22AF91ACC18F6743D8E26840664C5B9EBD98ED5F1BED4CFD7439D8C5D872E76FA05AA5903A347262EC2D5D8948207DC0C6FF22A14DF9951CC6890BC9E7D8B51CDEEE509F2AE9DA418A155801B88EB87FF8A02A76159209FC4346EA27104996797D8D6090F7F6F4655C58F363C225E5BC532C1E278FC3C7E3EAD461893E37C66CD5</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 = 6D2DEC4316EE4A6C99B4637DEA60FBEC3FF3681142DDDF0766A9903FDF521BC1A5A1E96CB38596FC893FE5417A722F4F119542D3AB21DCB06783FE3E4C1E60C2FE225E8B631083A82E3C66AC3959564DFA4BC422DD870106A698726EBD30E152619EE13691355BA52408158C70F890B4CEEA6831CC7D9C357049A38B104BB1EAC19F21EB4F66F5FC63695C85F0DB7F3CB1E8FB0064EBB1EA8092832F1DA77476897FD269F3E9A8B41212ED78CA6EB0456E2DF7014F6D5C7671877E8997EABDECD0DC3F94E986B0EF32A1EA5F5F5563460E8E0D18571FEA329B3B36312B22D24590FFE27BF00F950853F0A837F1276ECC7A0524DEFC1B603BD3C274AA7691D0AD</code></pre>
|
|
|
|
|
<pre><code>g_b = B1952AB41F3302737E52EC2F611B34E444C09B1C21E4CF650E6C6683CB9E99F7EF0A2DB8B9C0268E857670D813E405C57D37C533699513F382D1579EC5B68182DB1C600B3665041247C98F05ADBFB44419CD8B986F268AD8E69993E0A6E9BB5AF9C8425BCDF5B8ADABFAA872D1B34195A8CE178C9353AEF8B8A59FC1C2616627842B86C83236B4E40EE86DCC960E4D08B3BAB54C183A9D8715DF0D9BF77EA110E08A6E9A11BDD93CE47C5059B2E9277A0CFC246B00896DCE82D3038E9033D92629643D63482BC5D1BA688A404A7D2753CFC0A4070B8845B505B233C22726D8A21C5E38760703746C245C7D35A3150724388798F4B8D86440D05EF43DE4BECB98</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 12 D2 52 A6 52 49 2F 98 B3 E7 AC 76
|
|
|
|
|
0010 | FE FA 89 A4 6C E7 5A 07 8D 3B DA EC 6C D2 D6 3A
|
|
|
|
|
0020 | D8 67 9D DA 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 6D 2D EC 43 16 EE 4A 6C 99 B4 63 7D EA 60 FB EC
|
|
|
|
|
0040 | 3F F3 68 11 42 DD DF 07 66 A9 90 3F DF 52 1B C1
|
|
|
|
|
0050 | A5 A1 E9 6C B3 85 96 FC 89 3F E5 41 7A 72 2F 4F
|
|
|
|
|
0060 | 11 95 42 D3 AB 21 DC B0 67 83 FE 3E 4C 1E 60 C2
|
|
|
|
|
0070 | FE 22 5E 8B 63 10 83 A8 2E 3C 66 AC 39 59 56 4D
|
|
|
|
|
0080 | FA 4B C4 22 DD 87 01 06 A6 98 72 6E BD 30 E1 52
|
|
|
|
|
0090 | 61 9E E1 36 91 35 5B A5 24 08 15 8C 70 F8 90 B4
|
|
|
|
|
00A0 | CE EA 68 31 CC 7D 9C 35 70 49 A3 8B 10 4B B1 EA
|
|
|
|
|
00B0 | C1 9F 21 EB 4F 66 F5 FC 63 69 5C 85 F0 DB 7F 3C
|
|
|
|
|
00C0 | B1 E8 FB 00 64 EB B1 EA 80 92 83 2F 1D A7 74 76
|
|
|
|
|
00D0 | 89 7F D2 69 F3 E9 A8 B4 12 12 ED 78 CA 6E B0 45
|
|
|
|
|
00E0 | 6E 2D F7 01 4F 6D 5C 76 71 87 7E 89 97 EA BD EC
|
|
|
|
|
00F0 | D0 DC 3F 94 E9 86 B0 EF 32 A1 EA 5F 5F 55 63 46
|
|
|
|
|
0100 | 0E 8E 0D 18 57 1F EA 32 9B 3B 36 31 2B 22 D2 45
|
|
|
|
|
0110 | 90 FF E2 7B F0 0F 95 08 53 F0 A8 37 F1 27 6E CC
|
|
|
|
|
0120 | 7A 05 24 DE FC 1B 60 3B D3 C2 74 AA 76 91 D0 AD</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 59 DE DF 5B B5 F9 3F E0 B8 6A A6 22
|
|
|
|
|
0010 | 1D 70 B0 B9 A1 E0 68 88 4F 45 FD C9 74 BA A8 22
|
|
|
|
|
0020 | 30 11 21 C3 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | B1 95 2A B4 1F 33 02 73 7E 52 EC 2F 61 1B 34 E4
|
|
|
|
|
0040 | 44 C0 9B 1C 21 E4 CF 65 0E 6C 66 83 CB 9E 99 F7
|
|
|
|
|
0050 | EF 0A 2D B8 B9 C0 26 8E 85 76 70 D8 13 E4 05 C5
|
|
|
|
|
0060 | 7D 37 C5 33 69 95 13 F3 82 D1 57 9E C5 B6 81 82
|
|
|
|
|
0070 | DB 1C 60 0B 36 65 04 12 47 C9 8F 05 AD BF B4 44
|
|
|
|
|
0080 | 19 CD 8B 98 6F 26 8A D8 E6 99 93 E0 A6 E9 BB 5A
|
|
|
|
|
0090 | F9 C8 42 5B CD F5 B8 AD AB FA A8 72 D1 B3 41 95
|
|
|
|
|
00A0 | A8 CE 17 8C 93 53 AE F8 B8 A5 9F C1 C2 61 66 27
|
|
|
|
|
00B0 | 84 2B 86 C8 32 36 B4 E4 0E E8 6D CC 96 0E 4D 08
|
|
|
|
|
00C0 | B3 BA B5 4C 18 3A 9D 87 15 DF 0D 9B F7 7E A1 10
|
|
|
|
|
00D0 | E0 8A 6E 9A 11 BD D9 3C E4 7C 50 59 B2 E9 27 7A
|
|
|
|
|
00E0 | 0C FC 24 6B 00 89 6D CE 82 D3 03 8E 90 33 D9 26
|
|
|
|
|
00F0 | 29 64 3D 63 48 2B C5 D1 BA 68 8A 40 4A 7D 27 53
|
|
|
|
|
0100 | CF C0 A4 07 0B 88 45 B5 05 B2 33 C2 27 26 D8 A2
|
|
|
|
|
0110 | 1C 5E 38 76 07 03 74 6C 24 5C 7D 35 A3 15 07 24
|
|
|
|
|
0120 | 38 87 98 F4 B8 D8 64 40 D0 5E F4 3D E4 BE CB 98</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 = BA0D89B512D252A652492F98B3E7AC76FEFA89A46CE75A078D3BDAEC6CD2D63AD8679DD
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>12D252A652492F98B3E7AC76FEFA89A4</code></td>
|
|
|
|
|
<td><code>59DEDF5BB5F93FE0B86AA6221D70B0B9</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>6CE75A078D3BDAEC6CD2D63AD8679DDA</code></td>
|
|
|
|
|
<td><code>A1E068884F45FDC974BAA822301121C3</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FE0001006D2DEC4316EE4A6C99B4637D</code> <code>EA60FBEC3FF3681142DDDF0766A9903F</code> <code>DF521BC1A5A1E96CB38596FC893FE541</code> <code>7A722F4F119542D3AB21DCB06783FE3E</code> <code>4C1E60C2FE225E8B631083A82E3C66AC</code> <code>3959564DFA4BC422DD870106A698726E</code> <code>BD30E152619EE13691355BA52408158C</code> <code>70F890B4CEEA6831CC7D9C357049A38B</code> <code>104BB1EAC19F21EB4F66F5FC63695C85</code> <code>F0DB7F3CB1E8FB0064EBB1EA8092832F</code> <code>1DA77476897FD269F3E9A8B41212ED78</code> <code>CA6EB0456E2DF7014F6D5C7671877E89</code> <code>97EABDECD0DC3F94E986B0EF32A1EA5F</code> <code>5F5563460E8E0D18571FEA329B3B3631</code> <code>2B22D24590FFE27BF00F950853F0A837</code> <code>F1276ECC7A0524DEFC1B603BD3C274AA</code><br> <code>7691D0AD</code></td>
|
|
|
|
|
<td><code>FE000100B1952AB41F3302737E52EC2F</code> <code>611B34E444C09B1C21E4CF650E6C6683</code> <code>CB9E99F7EF0A2DB8B9C0268E857670D8</code> <code>13E405C57D37C533699513F382D1579E</code> <code>C5B68182DB1C600B3665041247C98F05</code> <code>ADBFB44419CD8B986F268AD8E69993E0</code> <code>A6E9BB5AF9C8425BCDF5B8ADABFAA872</code> <code>D1B34195A8CE178C9353AEF8B8A59FC1</code> <code>C2616627842B86C83236B4E40EE86DCC</code> <code>960E4D08B3BAB54C183A9D8715DF0D9B</code> <code>F77EA110E08A6E9A11BDD93CE47C5059</code> <code>B2E9277A0CFC246B00896DCE82D3038E</code> <code>9033D92629643D63482BC5D1BA688A40</code> <code>4A7D2753CFC0A4070B8845B505B233C2</code> <code>2726D8A21C5E38760703746C245C7D35</code> <code>A3150724388798F4B8D86440D05EF43D</code><br> <code>E4BECB98</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 = BA0D89B512D252A652492F98B3E7AC76FEFA89A46CE75A078D3BDAEC6CD2D63AD8679DD
|
|
|
|
|
<!-- 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 = 54B6436612D252A652492F98B3E7AC76FEFA89A46CE75A078D3BDAEC6CD2D63AD8679DDA0000000000000000FE0001006D2DEC4316EE4A6C99B4637DEA60FBEC3FF3681142DDDF0766A9903FDF521BC1A5A1E96CB38596FC893FE5417A722F4F119542D3AB21DCB06783FE3E4C1E60C2FE225E8B631083A82E3C66AC3959564DFA4BC422DD870106A698726EBD30E152619EE13691355BA52408158C70F890B4CEEA6831CC7D9C357049A38B104BB1EAC19F21EB4F66F5FC63695C85F0DB7F3CB1E8FB0064EBB1EA8092832F1DA77476897FD269F3E9A8B41212ED78CA6EB0456E2DF7014F6D5C7671877E8997EABDECD0DC3F94E986B0EF32A1EA5F5F5563460E8E0D18571FEA329B3B36312B22D24590FFE27BF00F950853F0A837F1276ECC7A0524DEFC1B603BD3C274AA7691D0AD
|
|
|
|
|
padding = 7207D745977DE93E3241406F
|
|
|
|
|
tmp_aes_key = F97885237250E1E2923A564401F69AA32F283C7A9C3448965DAB36A9481EE649
|
|
|
|
|
tmp_aes_iv = 954D4B646A8170F6C46CD9F709B2E4203595359E5AA26C84DA8918FB56018FA1</code></pre>
|
|
|
|
|
<pre><code>data = 54B6436659DEDF5BB5F93FE0B86AA6221D70B0B9A1E068884F45FDC974BAA822301121C30000000000000000FE000100B1952AB41F3302737E52EC2F611B34E444C09B1C21E4CF650E6C6683CB9E99F7EF0A2DB8B9C0268E857670D813E405C57D37C533699513F382D1579EC5B68182DB1C600B3665041247C98F05ADBFB44419CD8B986F268AD8E69993E0A6E9BB5AF9C8425BCDF5B8ADABFAA872D1B34195A8CE178C9353AEF8B8A59FC1C2616627842B86C83236B4E40EE86DCC960E4D08B3BAB54C183A9D8715DF0D9BF77EA110E08A6E9A11BDD93CE47C5059B2E9277A0CFC246B00896DCE82D3038E9033D92629643D63482BC5D1BA688A404A7D2753CFC0A4070B8845B505B233C22726D8A21C5E38760703746C245C7D35A3150724388798F4B8D86440D05EF43DE4BECB98
|
|
|
|
|
padding = F69BBD80927115ACB89164D0
|
|
|
|
|
tmp_aes_key = 56B2C3E6BB7FBD59CA9178DF4059D3BCA25157272819D34C149366D1E04D9851
|
|
|
|
|
tmp_aes_iv = E5D580D8753E8E3F6E6C714C25CB0017D99976612AE7E8689500A2CE821294E3</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 = A503E6CD8B949E333CA530863336E66D42F26723883828EC831280772BCDF29C9770EFC917E6971C83830FA60F32C76696877EBE68620AD75CD5338777835E4CED6E3529CE4391C3FBD97E5E81B47FF060EED9CDFB91BE9DB9E82DE5E32187299DACB5FB667F409E4C2FC9118509CA68CB484B0F9597DE3707B31744DE2FAD949957B3FAA8A9D34CCD4399103704739E2B8620C4FE32737063D46D40833E79BF62A8062EEB5D518C38C02AA4CE85D9EF00B7B975144BEE80C1223A272E6B0EF4373AD6C6F86C30AC0FAA106DFEDDB8D15CA1752B960D39AAD9DB8BC19F1D89AF4DB0FDCE2E2CD407841446ECEF382984E3445096864F39DD9D3CCF1026D45888FE3E5E5864352087BCDC335587ED91E44263EB784C2B31B841A55803AC6A5572517BE118906FDFCFFA815C4B2F911351758117C07DEE4744109866657D281DDD1F6CDA0EDF72CDB43A0333320B12227C</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 23BC410D26E4C48F28548BC9B1590D266064D3F1E7CB4B06F34FBB73CE3B45713EDEFCECA538578403B8D06ED2CBA2B7EEB2B105CCF468AC8456B602B38602DB37AEF13D3CA9BCB9867BED2C1FA91B5D652D871D2EA71427640CA2BCE82D02578FE43DA39BAA56150D51EDBEACD86090840DABA6DC72265CB49616FB225F5DBB7E6E8C2C3543B7BBAB26B56C3931323C5BD47212B1F2B35471D4E304491A6D4EDC00049DC66176D670F69BB1E1442AD7C6110DCBE3A4AAFBB4A167BECAC2916B91F292C8084251DA204F83E9B3A2CE9E03456D472019F5555AC6BA4E9285FF96536FB7AB369BBBDA7D0AD5C493680EDAE8157DD4313DB2CC6DE351C04B355E39579757E0828598ECCB519E52B4D04AD6C73CE656EB2DC4D76A53F527DEC8ABAF3B71DA1F83D17EB7D0D430CBFE9ACAFA23565A3064EEEAEDCB24EBA89320FAF3F5B90FCEE999AF857EF25AA6E274972D</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 CC 03 0F 00 3A BB 74 65
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 12 D2 52 A6 52 49 2F 98
|
|
|
|
|
0020 | B3 E7 AC 76 FE FA 89 A4 6C E7 5A 07 8D 3B DA EC
|
|
|
|
|
0030 | 6C D2 D6 3A D8 67 9D DA FE 50 01 00 A5 03 E6 CD
|
|
|
|
|
0040 | 8B 94 9E 33 3C A5 30 86 33 36 E6 6D 42 F2 67 23
|
|
|
|
|
0050 | 88 38 28 EC 83 12 80 77 2B CD F2 9C 97 70 EF C9
|
|
|
|
|
0060 | 17 E6 97 1C 83 83 0F A6 0F 32 C7 66 96 87 7E BE
|
|
|
|
|
0070 | 68 62 0A D7 5C D5 33 87 77 83 5E 4C ED 6E 35 29
|
|
|
|
|
0080 | CE 43 91 C3 FB D9 7E 5E 81 B4 7F F0 60 EE D9 CD
|
|
|
|
|
0090 | FB 91 BE 9D B9 E8 2D E5 E3 21 87 29 9D AC B5 FB
|
|
|
|
|
00A0 | 66 7F 40 9E 4C 2F C9 11 85 09 CA 68 CB 48 4B 0F
|
|
|
|
|
00B0 | 95 97 DE 37 07 B3 17 44 DE 2F AD 94 99 57 B3 FA
|
|
|
|
|
00C0 | A8 A9 D3 4C CD 43 99 10 37 04 73 9E 2B 86 20 C4
|
|
|
|
|
00D0 | FE 32 73 70 63 D4 6D 40 83 3E 79 BF 62 A8 06 2E
|
|
|
|
|
00E0 | EB 5D 51 8C 38 C0 2A A4 CE 85 D9 EF 00 B7 B9 75
|
|
|
|
|
00F0 | 14 4B EE 80 C1 22 3A 27 2E 6B 0E F4 37 3A D6 C6
|
|
|
|
|
0100 | F8 6C 30 AC 0F AA 10 6D FE DD B8 D1 5C A1 75 2B
|
|
|
|
|
0110 | 96 0D 39 AA D9 DB 8B C1 9F 1D 89 AF 4D B0 FD CE
|
|
|
|
|
0120 | 2E 2C D4 07 84 14 46 EC EF 38 29 84 E3 44 50 96
|
|
|
|
|
0130 | 86 4F 39 DD 9D 3C CF 10 26 D4 58 88 FE 3E 5E 58
|
|
|
|
|
0140 | 64 35 20 87 BC DC 33 55 87 ED 91 E4 42 63 EB 78
|
|
|
|
|
0150 | 4C 2B 31 B8 41 A5 58 03 AC 6A 55 72 51 7B E1 18
|
|
|
|
|
0160 | 90 6F DF CF FA 81 5C 4B 2F 91 13 51 75 81 17 C0
|
|
|
|
|
0170 | 7D EE 47 44 10 98 66 65 7D 28 1D DD 1F 6C DA 0E
|
|
|
|
|
0180 | DF 72 CD B4 3A 03 33 32 0B 12 22 7C</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 04 3E 0B 00 C3 BD 74 65
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 59 DE DF 5B B5 F9 3F E0
|
|
|
|
|
0020 | B8 6A A6 22 1D 70 B0 B9 A1 E0 68 88 4F 45 FD C9
|
|
|
|
|
0030 | 74 BA A8 22 30 11 21 C3 FE 50 01 00 23 BC 41 0D
|
|
|
|
|
0040 | 26 E4 C4 8F 28 54 8B C9 B1 59 0D 26 60 64 D3 F1
|
|
|
|
|
0050 | E7 CB 4B 06 F3 4F BB 73 CE 3B 45 71 3E DE FC EC
|
|
|
|
|
0060 | A5 38 57 84 03 B8 D0 6E D2 CB A2 B7 EE B2 B1 05
|
|
|
|
|
0070 | CC F4 68 AC 84 56 B6 02 B3 86 02 DB 37 AE F1 3D
|
|
|
|
|
0080 | 3C A9 BC B9 86 7B ED 2C 1F A9 1B 5D 65 2D 87 1D
|
|
|
|
|
0090 | 2E A7 14 27 64 0C A2 BC E8 2D 02 57 8F E4 3D A3
|
|
|
|
|
00A0 | 9B AA 56 15 0D 51 ED BE AC D8 60 90 84 0D AB A6
|
|
|
|
|
00B0 | DC 72 26 5C B4 96 16 FB 22 5F 5D BB 7E 6E 8C 2C
|
|
|
|
|
00C0 | 35 43 B7 BB AB 26 B5 6C 39 31 32 3C 5B D4 72 12
|
|
|
|
|
00D0 | B1 F2 B3 54 71 D4 E3 04 49 1A 6D 4E DC 00 04 9D
|
|
|
|
|
00E0 | C6 61 76 D6 70 F6 9B B1 E1 44 2A D7 C6 11 0D CB
|
|
|
|
|
00F0 | E3 A4 AA FB B4 A1 67 BE CA C2 91 6B 91 F2 92 C8
|
|
|
|
|
0100 | 08 42 51 DA 20 4F 83 E9 B3 A2 CE 9E 03 45 6D 47
|
|
|
|
|
0110 | 20 19 F5 55 5A C6 BA 4E 92 85 FF 96 53 6F B7 AB
|
|
|
|
|
0120 | 36 9B BB DA 7D 0A D5 C4 93 68 0E DA E8 15 7D D4
|
|
|
|
|
0130 | 31 3D B2 CC 6D E3 51 C0 4B 35 5E 39 57 97 57 E0
|
|
|
|
|
0140 | 82 85 98 EC CB 51 9E 52 B4 D0 4A D6 C7 3C E6 56
|
|
|
|
|
0150 | EB 2D C4 D7 6A 53 F5 27 DE C8 AB AF 3B 71 DA 1F
|
|
|
|
|
0160 | 83 D1 7E B7 D0 D4 30 CB FE 9A CA FA 23 56 5A 30
|
|
|
|
|
0170 | 64 EE EA ED CB 24 EB A8 93 20 FA F3 F5 B9 0F CE
|
|
|
|
|
0180 | E9 99 AF 85 7E F2 5A A6 E2 74 97 2D</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>CC030F003ABB7465</code></td>
|
|
|
|
|
<td><code>043E0B00C3BD7465</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>12D252A652492F98B3E7AC76FEFA89A4</code></td>
|
|
|
|
|
<td><code>59DEDF5BB5F93FE0B86AA6221D70B0B9</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>6CE75A078D3BDAEC6CD2D63AD8679DDA</code></td>
|
|
|
|
|
<td><code>A1E068884F45FDC974BAA822301121C3</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE500100A503E6CD8B949E333CA53086</code> <code>3336E66D42F26723883828EC83128077</code> <code>2BCDF29C9770EFC917E6971C83830FA6</code> <code>0F32C76696877EBE68620AD75CD53387</code> <code>77835E4CED6E3529CE4391C3FBD97E5E</code> <code>81B47FF060EED9CDFB91BE9DB9E82DE5</code> <code>E32187299DACB5FB667F409E4C2FC911</code> <code>8509CA68CB484B0F9597DE3707B31744</code> <code>DE2FAD949957B3FAA8A9D34CCD439910</code> <code>3704739E2B8620C4FE32737063D46D40</code> <code>833E79BF62A8062EEB5D518C38C02AA4</code> <code>CE85D9EF00B7B975144BEE80C1223A27</code> <code>2E6B0EF4373AD6C6F86C30AC0FAA106D</code> <code>FEDDB8D15CA1752B960D39AAD9DB8BC1</code> <code>9F1D89AF4DB0FDCE2E2CD407841446EC</code> <code>EF382984E3445096864F39DD9D3CCF10</code> <code>26D45888FE3E5E5864352087BCDC3355</code> <code>87ED91E44263EB784C2B31B841A55803</code> <code>AC6A5572517BE118906FDFCFFA815C4B</code> <code>2F911351758117C07DEE474410986665</code> <code>7D281DDD1F6CDA0EDF72CDB43A033332</code><br> <code>0B12227C</code></td>
|
|
|
|
|
<td><code>FE50010023BC410D26E4C48F28548BC9</code> <code>B1590D266064D3F1E7CB4B06F34FBB73</code> <code>CE3B45713EDEFCECA538578403B8D06E</code> <code>D2CBA2B7EEB2B105CCF468AC8456B602</code> <code>B38602DB37AEF13D3CA9BCB9867BED2C</code> <code>1FA91B5D652D871D2EA71427640CA2BC</code> <code>E82D02578FE43DA39BAA56150D51EDBE</code> <code>ACD86090840DABA6DC72265CB49616FB</code> <code>225F5DBB7E6E8C2C3543B7BBAB26B56C</code> <code>3931323C5BD47212B1F2B35471D4E304</code> <code>491A6D4EDC00049DC66176D670F69BB1</code> <code>E1442AD7C6110DCBE3A4AAFBB4A167BE</code> <code>CAC2916B91F292C8084251DA204F83E9</code> <code>B3A2CE9E03456D472019F5555AC6BA4E</code> <code>9285FF96536FB7AB369BBBDA7D0AD5C4</code> <code>93680EDAE8157DD4313DB2CC6DE351C0</code> <code>4B355E39579757E0828598ECCB519E52</code> <code>B4D04AD6C73CE656EB2DC4D76A53F527</code> <code>DEC8ABAF3B71DA1F83D17EB7D0D430CB</code> <code>FE9ACAFA23565A3064EEEAEDCB24EBA8</code> <code>9320FAF3F5B90FCEE999AF857EF25AA6</code><br> <code>E274972D</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 = 244410BC9D177FCDB8EFFB35E66FFD061C5A1FC1B1B42490DDF5F621C348D9275513C5AD9E4869AA35BE3547282FAA822C1A55D63AF593EA23E09AED79F190DECDD0940CB86C0BA8A983CDC2D97F538D4109DD18955E99B881A95670710532F898C3406113CA35F658099DEA83EC0052272F7C1D0BEED401E3D6A6341499009B961DD2EA74F1875579A90E0F152A87A6853FE320EB27E76DAF367795086597F7160F7C392DEBE55E7AA8B3FB181999659E3B925283211FEEF0DE6FAC7866D43E22F2D5068E5D081C42D291316F750AB1304D13CCFBBB5094529B9E056A49F6C42B5689BBF5475B24C9EF200AF82E4ADF62FC3FA996DB99A4B80549B0C853FCCC</code></pre>
|
|
|
|
|
<pre><code>auth_key = 29D550452738C5D5243D21EEF71D21FFB93F3AB03938FACB83CFA34E19D9614E53A7780CA95FF9A9D94E2301DF8B5C06B1488F80B8CC20E1ABFC68DA7E85CA8893E778577D643CC2E615C186FE195B99A89A3C696D3525A3E186466AB768D246B1D16B360029B13DE4AC41550B97C44AAB0F81BF17AD50FBE38838631660BE90D714BDA7F93E2D8EBC0970D8A303C7F80E4953B58792675D93E59DB40FDAABA5D109B8FCF767E61729DE4712D5C7ACECF9E1ED065280970790394C27E9E1E9BDFDAF331E8646708ADB1502159D3138E77F66E12D9BAA05DA564E14A3694BE7059542819B8EF77CFC232F51DC9BE17BC9C6B099AC2536DB26F67F89C0FFF8E513</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 60 E0 33 3B BB 74 65
|
|
|
|
|
0010 | 9C 00 00 00 34 F7 CB 3B 12 D2 52 A6 52 49 2F 98
|
|
|
|
|
0020 | B3 E7 AC 76 FE FA 89 A4 6C E7 5A 07 8D 3B DA EC
|
|
|
|
|
0030 | 6C D2 D6 3A D8 67 9D DA 8B FA C8 03 5D A7 77 2B
|
|
|
|
|
0040 | 7F 58 18 E2 3A 86 65 79</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 D8 94 E3 C3 BD 74 65
|
|
|
|
|
0010 | 78 00 00 00 34 F7 CB 3B 59 DE DF 5B B5 F9 3F E0
|
|
|
|
|
0020 | B8 6A A6 22 1D 70 B0 B9 A1 E0 68 88 4F 45 FD C9
|
|
|
|
|
0030 | 74 BA A8 22 30 11 21 C3 75 CE EC A7 57 B5 1E 32
|
|
|
|
|
0040 | 54 6F 1A 52 29 5E 13 ED</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>0160E0333BBB7465</code></td>
|
|
|
|
|
<td><code>01D894E3C3BD7465</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>9C000000</code> (156 in decimal)</td>
|
|
|
|
|
<td><code>78000000</code> (120 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>12D252A652492F98B3E7AC76FEFA89A4</code></td>
|
|
|
|
|
<td><code>59DEDF5BB5F93FE0B86AA6221D70B0B9</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>6CE75A078D3BDAEC6CD2D63AD8679DDA</code></td>
|
|
|
|
|
<td><code>A1E068884F45FDC974BAA822301121C3</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>8BFAC8035DA7772B7F5818E23A866579</code></td>
|
|
|
|
|
<td><code>75CEECA757B51E32546F1A52295E13ED</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>
|
|
|
|
|