|
|
|
@ -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 CC C4 07 00 09 A9 38 67
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 88 A0 0C B2 64 2E 0D CC
|
|
|
|
|
0020 | D6 BD 55 3F 42 43 30 B4</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 F4 B7 0D 00 9D AB 38 67
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE E8 FF D0 70 C6 56 0F C1
|
|
|
|
|
0020 | 91 A6 69 5C BB 3D 69 6B</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>CCC4070009A93867</code></td>
|
|
|
|
|
<td><code>F4B70D009DAB3867</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>88A00CB2642E0DCCD6BD553F424330B4</code></td>
|
|
|
|
|
<td><code>E8FFD070C6560FC191A6695CBB3D696B</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 78 D6 E3 09 A9 38 67
|
|
|
|
|
0010 | 50 00 00 00 63 24 16 05 88 A0 0C B2 64 2E 0D CC
|
|
|
|
|
0020 | D6 BD 55 3F 42 43 30 B4 8A 33 80 8D 1D 5B AE E2
|
|
|
|
|
0030 | 7E 2D 08 4D AB 67 CE D0 08 19 EE AA 4A 04 90 58
|
|
|
|
|
0040 | BD 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 00 CA E9 9D AB 38 67
|
|
|
|
|
0010 | 50 00 00 00 63 24 16 05 E8 FF D0 70 C6 56 0F C1
|
|
|
|
|
0020 | 91 A6 69 5C BB 3D 69 6B 50 52 07 36 D6 05 6F 36
|
|
|
|
|
0030 | F7 B5 AE 82 38 C4 61 93 08 29 16 D5 CA 3E 83 65
|
|
|
|
|
0040 | 25 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
|
|
|
|
|
0050 | 85 1D 9D D0 A5 B7 F7 09 35 5F C3 0B 21 6B E8 6C
|
|
|
|
|
0060 | 02 2B B4 C3</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
@ -132,7 +132,7 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>0178D6E309A93867</code></td>
|
|
|
|
|
<td><code>0100CAE99DAB3867</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>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>88A00CB2642E0DCCD6BD553F424330B4</code></td>
|
|
|
|
|
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>8A33808D1D5BAEE27E2D084DAB67CED0</code></td>
|
|
|
|
|
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>0819EEAA4A049058BD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1868618130286205117</td>
|
|
|
|
|
<td><code>082916D5CA3E836525000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2960788869651588389</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 = 1868618130286205117</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1868618130286205117 = 1093105483 * 1709458199</code></p>
|
|
|
|
|
<pre><code>p = 1093105483
|
|
|
|
|
q = 1709458199</code></pre>
|
|
|
|
|
<pre><code>pq = 2960788869651588389</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2960788869651588389 = 1553479331 * 1905908119</code></p>
|
|
|
|
|
<pre><code>p = 1553479331
|
|
|
|
|
q = 1905908119</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 19 EE AA 4A 04 90 58 BD 00 00 00
|
|
|
|
|
0010 | 04 41 27 77 4B 00 00 00 04 65 E4 43 17 00 00 00
|
|
|
|
|
0020 | 88 A0 0C B2 64 2E 0D CC D6 BD 55 3F 42 43 30 B4
|
|
|
|
|
0030 | 8A 33 80 8D 1D 5B AE E2 7E 2D 08 4D AB 67 CE D0
|
|
|
|
|
0040 | C6 1C 4C B1 76 7F D6 E5 66 1D 48 E8 30 35 96 85
|
|
|
|
|
0050 | BB E4 FD 66 9F 97 F4 20 34 05 82 EE CF 6A 39 84
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 29 16 D5 CA 3E 83 65 25 00 00 00
|
|
|
|
|
0010 | 04 5C 98 36 A3 00 00 00 04 71 99 D9 97 00 00 00
|
|
|
|
|
0020 | E8 FF D0 70 C6 56 0F C1 91 A6 69 5C BB 3D 69 6B
|
|
|
|
|
0030 | 50 52 07 36 D6 05 6F 36 F7 B5 AE 82 38 C4 61 93
|
|
|
|
|
0040 | C7 34 2A 00 E4 97 51 C3 44 E9 8D AC A4 98 E3 D5
|
|
|
|
|
0050 | 3D 7E 99 B2 10 17 84 E5 20 FF 38 07 E0 96 EE 1B
|
|
|
|
|
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 = 1709458199</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>0819EEAA4A049058BD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1868618130286205117</td>
|
|
|
|
|
<td><code>082916D5CA3E836525000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2960788869651588389</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>044127774B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1093105483</td>
|
|
|
|
|
<td><code>045C9836A3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1553479331</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>0465E44317000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1709458199</td>
|
|
|
|
|
<td><code>047199D997000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1905908119</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>88A00CB2642E0DCCD6BD553F424330B4</code></td>
|
|
|
|
|
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>8A33808D1D5BAEE27E2D084DAB67CED0</code></td>
|
|
|
|
|
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>C61C4CB1767FD6E5661D48E830359685</code> <code>BBE4FD669F97F420340582EECF6A3984</code></td>
|
|
|
|
|
<td><code>C7342A00E49751C344E98DACA498E3D5</code> <code>3D7E99B2101784E520FF3807E096EE1B</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1709458199</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 = 955FF5A90819EEAA4A049058BD000000044127774B0000000465E4431700000088A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED0C61C4CB1767FD6E5661D48E830359685BBE4FD669F97F420340582EECF6A398402000000
|
|
|
|
|
random_padding_bytes = 4FD6DF70DAC10A80FB882E175ED130769E47ACA62330CFA8098708C10A765264176E3391DBC1E80CDEADD8C4A4EC3CBA7CA7C08FBBD4881A4435EC7B6A4A5CF5897E970AAA0330FA4C188BA83A02620EBC82AF9426FD88829A5683AD</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A9082916D5CA3E836525000000045C9836A3000000047199D997000000E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C46193C7342A00E49751C344E98DACA498E3D53D7E99B2101784E520FF3807E096EE1B02000000
|
|
|
|
|
random_padding_bytes = B466F6A58F3A78359B82AA87C98DE9847CEB0886FBDA78154B395957431373B4500A7AC595FEBA67680E2CD50DA72ACC9D2827A04F25EE681438E0B7F09BF73864BD6D7532CEC7D4611A86AAB23E4F3C715C25C1B04D336BBA28231F</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 = 619B4727009001B44082013B8731011A984F708CD5D0C253FF48BDB3DFAFA2637FFA25B40B4C4BFB28504DE7B3F0066D6895B79B7C29B3F74A5358493E28D73D3B0D14D531EF6A1A4270C593E8D10EB3B246AE668DA94B2F65F3CC4E63BD6AA543B543E51327D426B983BD2E1A64CDB6E697C9BA4671DDCCCAFEC541716862CBDA37A8A1F3678CC75CE9E564F0A6A19EABDFB94EFB41CBDB586611757F7EEFFAD47B62C9A65931079DFD9ECAF4A451D8470491FEC1E5EAC6BB92D2F6E7D4B7418527C486478159F867591422ED7130CA98D5B274EBEBB139EA3579A6A81113A3A70921388898D18A4F5B56E8931D422108292B1BE3E8DD4FEB59E6C8B530AE54</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 25CF84E953F562707ACECDB185CF5052BC4D1E82330FD395A840EEB13806941EE95CA63EF2774F0625EB358DCAEAE5FAE06366779FDED68F10E204DDDAEEF3B93AC93C81DE0383C5E7C72C296E8E7E1C9A92E5A2181C82FABE0097F3DEC77CF788D2AD65D9FC3D70573B7E4010AFFC0AF6019FEDBE509B654E06A0BF26CF3446F5D1BE057E18E103B25B76FF30C6893D466EE930474298AC44039870BB97839D63902926E41F326CEFA577B5E6BF1AD2D6D00A08DABA9041559C78540C4E8BD82CCFAC98B322E1531CEC7D1C783C459B325CA7A41E04E24FB30319BB3F8817E88F2642D0EDD87925259B8DAB8AC0225293543C7A3DF5256E20F5747E53C6A4E9</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 D0 C4 07 00 09 A9 38 67
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 88 A0 0C B2 64 2E 0D CC
|
|
|
|
|
0020 | D6 BD 55 3F 42 43 30 B4 8A 33 80 8D 1D 5B AE E2
|
|
|
|
|
0030 | 7E 2D 08 4D AB 67 CE D0 04 41 27 77 4B 00 00 00
|
|
|
|
|
0040 | 04 65 E4 43 17 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 61 9B 47 27 00 90 01 B4 40 82 01 3B
|
|
|
|
|
0060 | 87 31 01 1A 98 4F 70 8C D5 D0 C2 53 FF 48 BD B3
|
|
|
|
|
0070 | DF AF A2 63 7F FA 25 B4 0B 4C 4B FB 28 50 4D E7
|
|
|
|
|
0080 | B3 F0 06 6D 68 95 B7 9B 7C 29 B3 F7 4A 53 58 49
|
|
|
|
|
0090 | 3E 28 D7 3D 3B 0D 14 D5 31 EF 6A 1A 42 70 C5 93
|
|
|
|
|
00A0 | E8 D1 0E B3 B2 46 AE 66 8D A9 4B 2F 65 F3 CC 4E
|
|
|
|
|
00B0 | 63 BD 6A A5 43 B5 43 E5 13 27 D4 26 B9 83 BD 2E
|
|
|
|
|
00C0 | 1A 64 CD B6 E6 97 C9 BA 46 71 DD CC CA FE C5 41
|
|
|
|
|
00D0 | 71 68 62 CB DA 37 A8 A1 F3 67 8C C7 5C E9 E5 64
|
|
|
|
|
00E0 | F0 A6 A1 9E AB DF B9 4E FB 41 CB DB 58 66 11 75
|
|
|
|
|
00F0 | 7F 7E EF FA D4 7B 62 C9 A6 59 31 07 9D FD 9E CA
|
|
|
|
|
0100 | F4 A4 51 D8 47 04 91 FE C1 E5 EA C6 BB 92 D2 F6
|
|
|
|
|
0110 | E7 D4 B7 41 85 27 C4 86 47 81 59 F8 67 59 14 22
|
|
|
|
|
0120 | ED 71 30 CA 98 D5 B2 74 EB EB B1 39 EA 35 79 A6
|
|
|
|
|
0130 | A8 11 13 A3 A7 09 21 38 88 98 D1 8A 4F 5B 56 E8
|
|
|
|
|
0140 | 93 1D 42 21 08 29 2B 1B E3 E8 DD 4F EB 59 E6 C8
|
|
|
|
|
0150 | B5 30 AE 54</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 F8 B7 0D 00 9D AB 38 67
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 E8 FF D0 70 C6 56 0F C1
|
|
|
|
|
0020 | 91 A6 69 5C BB 3D 69 6B 50 52 07 36 D6 05 6F 36
|
|
|
|
|
0030 | F7 B5 AE 82 38 C4 61 93 04 5C 98 36 A3 00 00 00
|
|
|
|
|
0040 | 04 71 99 D9 97 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 25 CF 84 E9 53 F5 62 70 7A CE CD B1
|
|
|
|
|
0060 | 85 CF 50 52 BC 4D 1E 82 33 0F D3 95 A8 40 EE B1
|
|
|
|
|
0070 | 38 06 94 1E E9 5C A6 3E F2 77 4F 06 25 EB 35 8D
|
|
|
|
|
0080 | CA EA E5 FA E0 63 66 77 9F DE D6 8F 10 E2 04 DD
|
|
|
|
|
0090 | DA EE F3 B9 3A C9 3C 81 DE 03 83 C5 E7 C7 2C 29
|
|
|
|
|
00A0 | 6E 8E 7E 1C 9A 92 E5 A2 18 1C 82 FA BE 00 97 F3
|
|
|
|
|
00B0 | DE C7 7C F7 88 D2 AD 65 D9 FC 3D 70 57 3B 7E 40
|
|
|
|
|
00C0 | 10 AF FC 0A F6 01 9F ED BE 50 9B 65 4E 06 A0 BF
|
|
|
|
|
00D0 | 26 CF 34 46 F5 D1 BE 05 7E 18 E1 03 B2 5B 76 FF
|
|
|
|
|
00E0 | 30 C6 89 3D 46 6E E9 30 47 42 98 AC 44 03 98 70
|
|
|
|
|
00F0 | BB 97 83 9D 63 90 29 26 E4 1F 32 6C EF A5 77 B5
|
|
|
|
|
0100 | E6 BF 1A D2 D6 D0 0A 08 DA BA 90 41 55 9C 78 54
|
|
|
|
|
0110 | 0C 4E 8B D8 2C CF AC 98 B3 22 E1 53 1C EC 7D 1C
|
|
|
|
|
0120 | 78 3C 45 9B 32 5C A7 A4 1E 04 E2 4F B3 03 19 BB
|
|
|
|
|
0130 | 3F 88 17 E8 8F 26 42 D0 ED D8 79 25 25 9B 8D AB
|
|
|
|
|
0140 | 8A C0 22 52 93 54 3C 7A 3D F5 25 6E 20 F5 74 7E
|
|
|
|
|
0150 | 53 C6 A4 E9</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 = 4FD6DF70DAC10A80FB882E175ED130769E47ACA62330CFA8098708C10
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>D0C4070009A93867</code></td>
|
|
|
|
|
<td><code>F8B70D009DAB3867</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 = 4FD6DF70DAC10A80FB882E175ED130769E47ACA62330CFA8098708C10
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>88A00CB2642E0DCCD6BD553F424330B4</code></td>
|
|
|
|
|
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>8A33808D1D5BAEE27E2D084DAB67CED0</code></td>
|
|
|
|
|
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>044127774B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1093105483</td>
|
|
|
|
|
<td><code>045C9836A3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1553479331</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>0465E44317000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1709458199</td>
|
|
|
|
|
<td><code>047199D997000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1905908119</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 = 4FD6DF70DAC10A80FB882E175ED130769E47ACA62330CFA8098708C10
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE000100619B4727009001B44082013B</code> <code>8731011A984F708CD5D0C253FF48BDB3</code> <code>DFAFA2637FFA25B40B4C4BFB28504DE7</code> <code>B3F0066D6895B79B7C29B3F74A535849</code> <code>3E28D73D3B0D14D531EF6A1A4270C593</code> <code>E8D10EB3B246AE668DA94B2F65F3CC4E</code> <code>63BD6AA543B543E51327D426B983BD2E</code> <code>1A64CDB6E697C9BA4671DDCCCAFEC541</code> <code>716862CBDA37A8A1F3678CC75CE9E564</code> <code>F0A6A19EABDFB94EFB41CBDB58661175</code> <code>7F7EEFFAD47B62C9A65931079DFD9ECA</code> <code>F4A451D8470491FEC1E5EAC6BB92D2F6</code> <code>E7D4B7418527C486478159F867591422</code> <code>ED7130CA98D5B274EBEBB139EA3579A6</code> <code>A81113A3A70921388898D18A4F5B56E8</code> <code>931D422108292B1BE3E8DD4FEB59E6C8</code><br> <code>B530AE54</code></td>
|
|
|
|
|
<td><code>FE00010025CF84E953F562707ACECDB1</code> <code>85CF5052BC4D1E82330FD395A840EEB1</code> <code>3806941EE95CA63EF2774F0625EB358D</code> <code>CAEAE5FAE06366779FDED68F10E204DD</code> <code>DAEEF3B93AC93C81DE0383C5E7C72C29</code> <code>6E8E7E1C9A92E5A2181C82FABE0097F3</code> <code>DEC77CF788D2AD65D9FC3D70573B7E40</code> <code>10AFFC0AF6019FEDBE509B654E06A0BF</code> <code>26CF3446F5D1BE057E18E103B25B76FF</code> <code>30C6893D466EE930474298AC44039870</code> <code>BB97839D63902926E41F326CEFA577B5</code> <code>E6BF1AD2D6D00A08DABA9041559C7854</code> <code>0C4E8BD82CCFAC98B322E1531CEC7D1C</code> <code>783C459B325CA7A41E04E24FB30319BB</code> <code>3F8817E88F2642D0EDD87925259B8DAB</code> <code>8AC0225293543C7A3DF5256E20F5747E</code><br> <code>53C6A4E9</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = 4FD6DF70DAC10A80FB882E175ED130769E47ACA62330CFA8098708C10
|
|
|
|
|
<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 80 DD F7 09 A9 38 67
|
|
|
|
|
0010 | 78 02 00 00 5C 07 E8 D0 88 A0 0C B2 64 2E 0D CC
|
|
|
|
|
0020 | D6 BD 55 3F 42 43 30 B4 8A 33 80 8D 1D 5B AE E2
|
|
|
|
|
0030 | 7E 2D 08 4D AB 67 CE D0 FE 50 02 00 DB 11 E8 39
|
|
|
|
|
0040 | 12 F4 51 CC E9 CC B5 A4 E2 71 95 CE 8D 9C 5E 74
|
|
|
|
|
0050 | E8 79 AF 4B 91 80 40 0A 83 69 D0 27 7E 0A B8 DF
|
|
|
|
|
0060 | 51 B5 3A EC 1C 2C 6E D2 D4 DA D5 40 FA 7E E1 B4
|
|
|
|
|
0070 | B7 55 A1 E8 BA 3D BF 75 4D 81 6D 46 90 6B B5 4E
|
|
|
|
|
0080 | 26 CD 79 8D 2A 33 CB 3B 3C FD 32 23 19 5F CD AB
|
|
|
|
|
0090 | D5 74 3A B4 2E D4 26 62 35 50 38 FE 07 A9 2B 4A
|
|
|
|
|
00A0 | 60 21 ED F2 A7 0A 86 5A DF DD 55 6A 93 23 EE 52
|
|
|
|
|
00B0 | 6B 77 52 9D CA 6E CC 60 21 AB 76 B6 B2 9B 8D 42
|
|
|
|
|
00C0 | 32 35 49 CF 73 81 96 55 87 FF EC C1 B4 23 43 A6
|
|
|
|
|
00D0 | 90 B0 4A 4B FA 53 C3 B3 BF 61 80 AD 85 CB B4 72
|
|
|
|
|
00E0 | BA 83 60 70 70 4F 54 07 A3 50 CC E6 E9 43 76 FE
|
|
|
|
|
00F0 | BE 9D 92 F9 04 D5 1E 04 9A 12 F6 63 4E 0E A7 75
|
|
|
|
|
0100 | 2C B2 AD 56 06 70 1F CD 2A CF 43 3A 7A 78 20 F6
|
|
|
|
|
0110 | B9 4D 44 C0 FB 3D 9D EF 73 F6 AD 93 E4 A3 6C 2F
|
|
|
|
|
0120 | AA 3E 22 40 C8 2C E2 A4 2D 72 21 28 E6 89 01 5D
|
|
|
|
|
0130 | C9 5B 41 42 CD 09 BA 46 4D 9E A6 79 AA 70 86 0E
|
|
|
|
|
0140 | A7 BC 95 93 15 3C 6F E4 20 83 2F A7 8C 2C C4 31
|
|
|
|
|
0150 | 2F A6 A8 1E BD BD 61 22 43 B5 27 1B B2 ED CB 2F
|
|
|
|
|
0160 | 64 29 28 90 25 2E AE C0 F6 E7 3C 5D A0 CF D8 A2
|
|
|
|
|
0170 | 20 BB E2 F6 5A C3 CA E6 59 82 95 B5 42 30 CD 85
|
|
|
|
|
0180 | F3 26 9A 95 FD FE E3 AE 04 C7 FE AC 11 34 BE 51
|
|
|
|
|
0190 | 8E C7 BC AB 99 72 B4 9A 58 DB F3 8F D2 FF 60 92
|
|
|
|
|
01A0 | 9E 6C BB 3A 95 CE 10 15 FD 92 77 59 A8 0D 69 D2
|
|
|
|
|
01B0 | 8B 90 43 05 98 62 F7 3B 17 14 11 6A 4D 48 08 29
|
|
|
|
|
01C0 | C8 C4 20 3F 6F 9D DD 34 AE 9F 5F A9 5A 0B 1F 64
|
|
|
|
|
01D0 | D6 34 AB 3B BF 18 EC 74 66 D5 24 DA D7 35 4D 2E
|
|
|
|
|
01E0 | 95 7E 3B 30 92 06 A8 EA 67 41 92 F5 6B 5E A3 C6
|
|
|
|
|
01F0 | 3B B5 F4 56 62 80 1D 42 26 1E D8 0F 40 12 59 25
|
|
|
|
|
0200 | 11 8D 6A 4D 56 0D 24 30 C8 BA 3E 89 FF E5 3B 29
|
|
|
|
|
0210 | 20 52 B9 49 26 4C C9 87 23 BF F1 50 DC 65 E5 FF
|
|
|
|
|
0220 | 2A F6 06 3A 7B E5 20 50 D7 10 9C F3 31 01 6F 6B
|
|
|
|
|
0230 | E2 E9 E8 FE 32 19 1C 4D B9 A5 B3 FB C1 6A B5 A2
|
|
|
|
|
0240 | 87 F9 D2 5C 69 22 5B 4B 89 40 A0 D4 A3 E6 2D DB
|
|
|
|
|
0250 | 67 8B B1 A4 42 FB 71 55 1D 6B 43 F7 49 AD 46 EB
|
|
|
|
|
0260 | F5 3D 32 27 41 83 4B 5C 2E D3 EA 3A 14 A5 5C AC
|
|
|
|
|
0270 | E0 21 4D 1C E5 25 CD C9 39 9B 1C A2 40 8C BF BC
|
|
|
|
|
0280 | 70 83 63 2F BD 93 45 E5 DD 25 B7 A3</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 BC 6F FF 9D AB 38 67
|
|
|
|
|
0010 | 78 02 00 00 5C 07 E8 D0 E8 FF D0 70 C6 56 0F C1
|
|
|
|
|
0020 | 91 A6 69 5C BB 3D 69 6B 50 52 07 36 D6 05 6F 36
|
|
|
|
|
0030 | F7 B5 AE 82 38 C4 61 93 FE 50 02 00 E3 A5 84 CC
|
|
|
|
|
0040 | 81 10 CA 19 0F 8A C7 3B 79 7E ED 86 A9 B3 64 49
|
|
|
|
|
0050 | 07 1D 89 C1 13 4D 44 30 37 9F DA F7 06 83 6E 21
|
|
|
|
|
0060 | 58 C0 BA BA E3 44 00 B9 92 8D 6E 58 6F D9 47 23
|
|
|
|
|
0070 | 4C 81 85 B0 CE 61 2E 7B 36 6E F3 B5 5D 11 D9 0D
|
|
|
|
|
0080 | 37 7B 1E 25 C6 C9 BD D4 89 42 A6 ED 1F 39 1B 5F
|
|
|
|
|
0090 | 03 02 BD 56 91 C3 06 08 18 83 56 BC 69 82 67 3F
|
|
|
|
|
00A0 | BD E9 49 26 18 49 B1 D8 A8 B5 41 38 FE 2B 7C 69
|
|
|
|
|
00B0 | D4 0C 5A 08 99 28 0E F5 12 E3 FA E6 A4 96 94 AA
|
|
|
|
|
00C0 | 70 BF 13 33 A5 3F FA CD B6 D3 B8 38 C1 47 52 50
|
|
|
|
|
00D0 | 5F 27 66 14 D1 1E F1 14 C8 33 AF 06 91 92 E8 5D
|
|
|
|
|
00E0 | 53 74 8B F1 11 F6 D0 34 32 A9 EA E9 A9 BB 7A 3E
|
|
|
|
|
00F0 | 63 90 4C 73 66 8D 7D 3A AC B3 9A C2 BF EB 36 DC
|
|
|
|
|
0100 | 8B 3D 18 B7 B6 7B CB 5B 82 DA F5 15 0C A2 3C 07
|
|
|
|
|
0110 | 7A AC 8E D2 70 3C BF D2 C9 37 6A AF CD 4B A4 D3
|
|
|
|
|
0120 | 0E 5C 26 01 E7 6D 19 F4 81 5A B1 EA 1A 1E 8C 98
|
|
|
|
|
0130 | 5B 5D E8 9E C4 D5 22 D6 15 1B D8 B1 58 B9 FE CF
|
|
|
|
|
0140 | 53 2E DC B2 31 C8 43 FF 35 9A D5 48 78 9C F3 EE
|
|
|
|
|
0150 | 1A 4D DC 66 5F 3D 9B D6 22 99 DF 0C 72 25 71 6D
|
|
|
|
|
0160 | 60 B6 17 D1 EA 7C 0F 4C 1D 8A 56 43 87 5D 58 E2
|
|
|
|
|
0170 | CB 12 42 27 C3 98 6F EA CD 0C 3F 0C CA 4C 1F 8F
|
|
|
|
|
0180 | D6 B2 D4 97 2B E4 AA 1D B8 89 AC 9C 21 CF 26 3F
|
|
|
|
|
0190 | CF 2A 65 BB F2 B7 20 AD 74 E1 90 EA D9 AB 72 56
|
|
|
|
|
01A0 | 48 63 FE 75 47 46 FA 13 13 B1 93 D2 73 CF C4 F5
|
|
|
|
|
01B0 | 57 C2 05 CB 7F 6F 22 7B ED 33 8B 42 72 7D 3B 9C
|
|
|
|
|
01C0 | 77 DE 3B A9 A8 D5 43 E1 30 44 90 E8 56 B6 B8 FC
|
|
|
|
|
01D0 | BE 7D 78 F5 73 8B 43 47 BA EE A2 8C CD BC BB 42
|
|
|
|
|
01E0 | 8B 72 F4 35 47 47 50 73 DF 47 04 F1 89 39 03 52
|
|
|
|
|
01F0 | C6 F1 95 4A 79 60 C5 89 D3 FA EF 15 A6 06 59 8F
|
|
|
|
|
0200 | 43 18 6D 4D E2 AD 47 FD EE 57 C7 2C 90 97 72 D5
|
|
|
|
|
0210 | E8 59 75 44 3B 54 C0 BE CD 7D EB 33 33 E7 78 3F
|
|
|
|
|
0220 | 3D E6 83 E1 5E E7 D0 E4 3C AE 8D 98 67 9B CF 70
|
|
|
|
|
0230 | D2 D5 5F F7 ED BE CA D8 4C 67 E6 5A 3F F1 16 23
|
|
|
|
|
0240 | A5 14 68 A1 FB ED AD 11 F0 D5 07 64 F6 08 2E B7
|
|
|
|
|
0250 | FE C4 E5 DB 3E 00 B4 68 5D 9D 49 13 27 2B EF 1B
|
|
|
|
|
0260 | AB DC 16 04 A1 15 DF BC 0D F5 04 05 5F 2E E8 BA
|
|
|
|
|
0270 | EF AF F2 85 DF 8D 6E AA 5E DC DB F9 2A 98 3B 5E
|
|
|
|
|
0280 | 21 57 44 56 6C 75 9B 7D B4 0C 40 2E</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,7 +464,7 @@ random_padding_bytes = 4FD6DF70DAC10A80FB882E175ED130769E47ACA62330CFA8098708C10
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>0180DDF709A93867</code></td>
|
|
|
|
|
<td><code>01BC6FFF9DAB3867</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>
|
|
|
|
@ -482,19 +482,19 @@ random_padding_bytes = 4FD6DF70DAC10A80FB882E175ED130769E47ACA62330CFA8098708C10
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>88A00CB2642E0DCCD6BD553F424330B4</code></td>
|
|
|
|
|
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>8A33808D1D5BAEE27E2D084DAB67CED0</code></td>
|
|
|
|
|
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE500200DB11E83912F451CCE9CCB5A4</code> <code>E27195CE8D9C5E74E879AF4B9180400A</code> <code>8369D0277E0AB8DF51B53AEC1C2C6ED2</code> <code>D4DAD540FA7EE1B4B755A1E8BA3DBF75</code> <code>4D816D46906BB54E26CD798D2A33CB3B</code> <code>3CFD3223195FCDABD5743AB42ED42662</code> <code>355038FE07A92B4A6021EDF2A70A865A</code> <code>DFDD556A9323EE526B77529DCA6ECC60</code> <code>21AB76B6B29B8D42323549CF73819655</code> <code>87FFECC1B42343A690B04A4BFA53C3B3</code> <code>BF6180AD85CBB472BA836070704F5407</code> <code>A350CCE6E94376FEBE9D92F904D51E04</code> <code>9A12F6634E0EA7752CB2AD5606701FCD</code> <code>2ACF433A7A7820F6B94D44C0FB3D9DEF</code> <code>73F6AD93E4A36C2FAA3E2240C82CE2A4</code> <code>2D722128E689015DC95B4142CD09BA46</code> <code>4D9EA679AA70860EA7BC9593153C6FE4</code> <code>20832FA78C2CC4312FA6A81EBDBD6122</code> <code>43B5271BB2EDCB2F64292890252EAEC0</code> <code>F6E73C5DA0CFD8A220BBE2F65AC3CAE6</code> <code>598295B54230CD85F3269A95FDFEE3AE</code> <code>04C7FEAC1134BE518EC7BCAB9972B49A</code> <code>58DBF38FD2FF60929E6CBB3A95CE1015</code> <code>FD927759A80D69D28B9043059862F73B</code> <code>1714116A4D480829C8C4203F6F9DDD34</code> <code>AE9F5FA95A0B1F64D634AB3BBF18EC74</code> <code>66D524DAD7354D2E957E3B309206A8EA</code> <code>674192F56B5EA3C63BB5F45662801D42</code> <code>261ED80F40125925118D6A4D560D2430</code> <code>C8BA3E89FFE53B292052B949264CC987</code> <code>23BFF150DC65E5FF2AF6063A7BE52050</code> <code>D7109CF331016F6BE2E9E8FE32191C4D</code> <code>B9A5B3FBC16AB5A287F9D25C69225B4B</code> <code>8940A0D4A3E62DDB678BB1A442FB7155</code> <code>1D6B43F749AD46EBF53D322741834B5C</code> <code>2ED3EA3A14A55CACE0214D1CE525CDC9</code> <code>399B1CA2408CBFBC7083632FBD9345E5</code><br> <code>DD25B7A3</code></td>
|
|
|
|
|
<td><code>FE500200E3A584CC8110CA190F8AC73B</code> <code>797EED86A9B36449071D89C1134D4430</code> <code>379FDAF706836E2158C0BABAE34400B9</code> <code>928D6E586FD947234C8185B0CE612E7B</code> <code>366EF3B55D11D90D377B1E25C6C9BDD4</code> <code>8942A6ED1F391B5F0302BD5691C30608</code> <code>188356BC6982673FBDE949261849B1D8</code> <code>A8B54138FE2B7C69D40C5A0899280EF5</code> <code>12E3FAE6A49694AA70BF1333A53FFACD</code> <code>B6D3B838C14752505F276614D11EF114</code> <code>C833AF069192E85D53748BF111F6D034</code> <code>32A9EAE9A9BB7A3E63904C73668D7D3A</code> <code>ACB39AC2BFEB36DC8B3D18B7B67BCB5B</code> <code>82DAF5150CA23C077AAC8ED2703CBFD2</code> <code>C9376AAFCD4BA4D30E5C2601E76D19F4</code> <code>815AB1EA1A1E8C985B5DE89EC4D522D6</code> <code>151BD8B158B9FECF532EDCB231C843FF</code> <code>359AD548789CF3EE1A4DDC665F3D9BD6</code> <code>2299DF0C7225716D60B617D1EA7C0F4C</code> <code>1D8A5643875D58E2CB124227C3986FEA</code> <code>CD0C3F0CCA4C1F8FD6B2D4972BE4AA1D</code> <code>B889AC9C21CF263FCF2A65BBF2B720AD</code> <code>74E190EAD9AB72564863FE754746FA13</code> <code>13B193D273CFC4F557C205CB7F6F227B</code> <code>ED338B42727D3B9C77DE3BA9A8D543E1</code> <code>304490E856B6B8FCBE7D78F5738B4347</code> <code>BAEEA28CCDBCBB428B72F43547475073</code> <code>DF4704F189390352C6F1954A7960C589</code> <code>D3FAEF15A606598F43186D4DE2AD47FD</code> <code>EE57C72C909772D5E85975443B54C0BE</code> <code>CD7DEB3333E7783F3DE683E15EE7D0E4</code> <code>3CAE8D98679BCF70D2D55FF7EDBECAD8</code> <code>4C67E65A3FF11623A51468A1FBEDAD11</code> <code>F0D50764F6082EB7FEC4E5DB3E00B468</code> <code>5D9D4913272BEF1BABDC1604A115DFBC</code> <code>0DF504055F2EE8BAEFAFF285DF8D6EAA</code> <code>5EDCDBF92A983B5E215744566C759B7D</code><br> <code>B40C402E</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = 4FD6DF70DAC10A80FB882E175ED130769E47ACA62330CFA8098708C10
|
|
|
|
|
<!-- 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 = DB11E83912F451CCE9CCB5A4E27195CE8D9C5E74E879AF4B9180400A8369D0277E0AB8DF51B53AEC1C2C6ED2D4DAD540FA7EE1B4B755A1E8BA3DBF754D816D46906BB54E26CD798D2A33CB3B3CFD3223195FCDABD5743AB42ED42662355038FE07A92B4A6021EDF2A70A865ADFDD556A9323EE526B77529DCA6ECC6021AB76B6B29B8D42323549CF7381965587FFECC1B42343A690B04A4BFA53C3B3BF6180AD85CBB472BA836070704F5407A350CCE6E94376FEBE9D92F904D51E049A12F6634E0EA7752CB2AD5606701FCD2ACF433A7A7820F6B94D44C0FB3D9DEF73F6AD93E4A36C2FAA3E2240C82CE2A42D722128E689015DC95B4142CD09BA464D9EA679AA70860EA7BC9593153C6FE420832FA78C2CC4312FA6A81EBDBD612243B5271BB2EDCB2F64292890252EAEC0F6E73C5DA0CFD8A220BBE2F65AC3CAE6598295B54230CD85F3269A95FDFEE3AE04C7FEAC1134BE518EC7BCAB9972B49A58DBF38FD2FF60929E6CBB3A95CE1015FD927759A80D69D28B9043059862F73B1714116A4D480829C8C4203F6F9DDD34AE9F5FA95A0B1F64D634AB3BBF18EC7466D524DAD7354D2E957E3B309206A8EA674192F56B5EA3C63BB5F45662801D42261ED80F40125925118D6A4D560D2430C8BA3E89FFE53B292052B949264CC98723BFF150DC65E5FF2AF6063A7BE52050D7109CF331016F6BE2E9E8FE32191C4DB9A5B3FBC16AB5A287F9D25C69225B4B8940A0D4A3E62DDB678BB1A442FB71551D6B43F749AD46EBF53D322741834B5C2ED3EA3A14A55CACE0214D1CE525CDC9399B1CA2408CBFBC7083632FBD9345E5DD25B7A3
|
|
|
|
|
tmp_aes_key = 010C0C9B7A484D3A0D5BE8A9D860F7037247338A949243ABFD2598EA8BAFE4D1
|
|
|
|
|
tmp_aes_iv = E9737E2AA80D0D0FC0161512F6069DF0654F7B84D8A2C4679359DF78C61C4CB1</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = E3A584CC8110CA190F8AC73B797EED86A9B36449071D89C1134D4430379FDAF706836E2158C0BABAE34400B9928D6E586FD947234C8185B0CE612E7B366EF3B55D11D90D377B1E25C6C9BDD48942A6ED1F391B5F0302BD5691C30608188356BC6982673FBDE949261849B1D8A8B54138FE2B7C69D40C5A0899280EF512E3FAE6A49694AA70BF1333A53FFACDB6D3B838C14752505F276614D11EF114C833AF069192E85D53748BF111F6D03432A9EAE9A9BB7A3E63904C73668D7D3AACB39AC2BFEB36DC8B3D18B7B67BCB5B82DAF5150CA23C077AAC8ED2703CBFD2C9376AAFCD4BA4D30E5C2601E76D19F4815AB1EA1A1E8C985B5DE89EC4D522D6151BD8B158B9FECF532EDCB231C843FF359AD548789CF3EE1A4DDC665F3D9BD62299DF0C7225716D60B617D1EA7C0F4C1D8A5643875D58E2CB124227C3986FEACD0C3F0CCA4C1F8FD6B2D4972BE4AA1DB889AC9C21CF263FCF2A65BBF2B720AD74E190EAD9AB72564863FE754746FA1313B193D273CFC4F557C205CB7F6F227BED338B42727D3B9C77DE3BA9A8D543E1304490E856B6B8FCBE7D78F5738B4347BAEEA28CCDBCBB428B72F43547475073DF4704F189390352C6F1954A7960C589D3FAEF15A606598F43186D4DE2AD47FDEE57C72C909772D5E85975443B54C0BECD7DEB3333E7783F3DE683E15EE7D0E43CAE8D98679BCF70D2D55FF7EDBECAD84C67E65A3FF11623A51468A1FBEDAD11F0D50764F6082EB7FEC4E5DB3E00B4685D9D4913272BEF1BABDC1604A115DFBC0DF504055F2EE8BAEFAFF285DF8D6EAA5EDCDBF92A983B5E215744566C759B7DB40C402E
|
|
|
|
|
tmp_aes_key = 56A62D764A5E8973B19859D80559EB24EA089A0ED17D7660973EACBAB5B455C2
|
|
|
|
|
tmp_aes_iv = F1EE1C15FD64CF2E5E94EB7D322D30F65CC45E6E0E13F88E3D4EB4F2C7342A00</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = 7FC0273CC2008BCABACC587CFFDEA36CC61A2195BA0D89B588A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100793E8C3BC9C45F094D11A4277C747A11D65D3B6F5C97D8320D4BE76ABF41C4D8EFB57AFE6B0C1C7E7A5F073BA509FADE1E20DEFE69CBEC0864C94A9778B40FD57EEBBCEDA4E088AA20C71F5F289E8CC4D202DF73C621BBDFA750255F05518CAE0E58EE6EA7A0319A5B23CBDE0B146EABE42B7022AA71074D6E9164063ABA342920779D5D253FB48EB9B9BDA2A9EF56833829FE1FB199ACDC85C853D97FE9D0B69159A4826777C28AB3024D1C41F9FF53815ACB7E3105D3E21AAB984CC110498298E55BEDE751A3E7ECD357D884ACA32F6E2E0CA121FDD7792B9C3E9D19B685AEE66EA166BCED647F2BF6F036C9B6513B2D95BD6E411B46EC9F21916CD1259B5809A938674022F989DA20AE22
|
|
|
|
|
answer = BA0D89B588A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100793E8C3BC9C45F094D11A4277C747A11D65D3B6F5C97D8320D4BE76ABF41C4D8EFB57AFE6B0C1C7E7A5F073BA509FADE1E20DEFE69CBEC0864C94A9778B40FD57EEBBCEDA4E088AA20C71F5F289E8CC4D202DF73C621BBDFA750255F05518CAE0E58EE6EA7A0319A5B23CBDE0B146EABE42B7022AA71074D6E9164063ABA342920779D5D253FB48EB9B9BDA2A9EF56833829FE1FB199ACDC85C853D97FE9D0B69159A4826777C28AB3024D1C41F9FF53815ACB7E3105D3E21AAB984CC110498298E55BEDE751A3E7ECD357D884ACA32F6E2E0CA121FDD7792B9C3E9D19B685AEE66EA166BCED647F2BF6F036C9B6513B2D95BD6E411B46EC9F21916CD1259B5809A938674022F989DA20AE22</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = A4E385F1BD53C09C2E2B31009BF677B46A42FD57BA0D89B5E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C4619303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100533958476D50770C106E1DAC83C192DA63B2E82CEB8B9FCE4BEB41D3005C68BA399B87F89C6FDDB7B6969C705F9B901AE5CA9C88AA770E3BFD5925A25B15551B176650E5C7AACCBC2F843682B045CFA98EB00D3C3EFA13E3B4BD3D5B2E800DE079B8215CC47F98ED62B62C6C5EEFC7BB7D212BE8356BFF7B68597D467AB4AFF0C4F470669598FEA8BDE594CAA0A3B7D949B983230EA53AD3744F38B4F3AD21366D461EF8B06526F4AEDA287D875C3532AD92F55940EF1E56C7FB5251A2D134C6ED9F857C18A1A13D17FDE9E62A2C1F7ED9F3600405C66C12C1D5418D2A4CAB59C0662C38C79CE728838A7A3FC7798A06797BDAEDC487CCED3088E7ADE98FC70F9DAB386727DB97A494109B39
|
|
|
|
|
answer = BA0D89B5E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C4619303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100533958476D50770C106E1DAC83C192DA63B2E82CEB8B9FCE4BEB41D3005C68BA399B87F89C6FDDB7B6969C705F9B901AE5CA9C88AA770E3BFD5925A25B15551B176650E5C7AACCBC2F843682B045CFA98EB00D3C3EFA13E3B4BD3D5B2E800DE079B8215CC47F98ED62B62C6C5EEFC7BB7D212BE8356BFF7B68597D467AB4AFF0C4F470669598FEA8BDE594CAA0A3B7D949B983230EA53AD3744F38B4F3AD21366D461EF8B06526F4AEDA287D875C3532AD92F55940EF1E56C7FB5251A2D134C6ED9F857C18A1A13D17FDE9E62A2C1F7ED9F3600405C66C12C1D5418D2A4CAB59C0662C38C79CE728838A7A3FC7798A06797BDAEDC487CCED3088E7ADE98FC70F9DAB386727DB97A494109B39</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 88 A0 0C B2 64 2E 0D CC D6 BD 55 3F
|
|
|
|
|
0010 | 42 43 30 B4 8A 33 80 8D 1D 5B AE E2 7E 2D 08 4D
|
|
|
|
|
0020 | AB 67 CE D0 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 E8 FF D0 70 C6 56 0F C1 91 A6 69 5C
|
|
|
|
|
0010 | BB 3D 69 6B 50 52 07 36 D6 05 6F 36 F7 B5 AE 82
|
|
|
|
|
0020 | 38 C4 61 93 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 = BA0D89B588A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED
|
|
|
|
|
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 | 79 3E 8C 3B C9 C4 5F 09 4D 11 A4 27 7C 74 7A 11
|
|
|
|
|
0140 | D6 5D 3B 6F 5C 97 D8 32 0D 4B E7 6A BF 41 C4 D8
|
|
|
|
|
0150 | EF B5 7A FE 6B 0C 1C 7E 7A 5F 07 3B A5 09 FA DE
|
|
|
|
|
0160 | 1E 20 DE FE 69 CB EC 08 64 C9 4A 97 78 B4 0F D5
|
|
|
|
|
0170 | 7E EB BC ED A4 E0 88 AA 20 C7 1F 5F 28 9E 8C C4
|
|
|
|
|
0180 | D2 02 DF 73 C6 21 BB DF A7 50 25 5F 05 51 8C AE
|
|
|
|
|
0190 | 0E 58 EE 6E A7 A0 31 9A 5B 23 CB DE 0B 14 6E AB
|
|
|
|
|
01A0 | E4 2B 70 22 AA 71 07 4D 6E 91 64 06 3A BA 34 29
|
|
|
|
|
01B0 | 20 77 9D 5D 25 3F B4 8E B9 B9 BD A2 A9 EF 56 83
|
|
|
|
|
01C0 | 38 29 FE 1F B1 99 AC DC 85 C8 53 D9 7F E9 D0 B6
|
|
|
|
|
01D0 | 91 59 A4 82 67 77 C2 8A B3 02 4D 1C 41 F9 FF 53
|
|
|
|
|
01E0 | 81 5A CB 7E 31 05 D3 E2 1A AB 98 4C C1 10 49 82
|
|
|
|
|
01F0 | 98 E5 5B ED E7 51 A3 E7 EC D3 57 D8 84 AC A3 2F
|
|
|
|
|
0200 | 6E 2E 0C A1 21 FD D7 79 2B 9C 3E 9D 19 B6 85 AE
|
|
|
|
|
0210 | E6 6E A1 66 BC ED 64 7F 2B F6 F0 36 C9 B6 51 3B
|
|
|
|
|
0220 | 2D 95 BD 6E 41 1B 46 EC 9F 21 91 6C D1 25 9B 58
|
|
|
|
|
0230 | 09 A9 38 67</code></pre>
|
|
|
|
|
0130 | 53 39 58 47 6D 50 77 0C 10 6E 1D AC 83 C1 92 DA
|
|
|
|
|
0140 | 63 B2 E8 2C EB 8B 9F CE 4B EB 41 D3 00 5C 68 BA
|
|
|
|
|
0150 | 39 9B 87 F8 9C 6F DD B7 B6 96 9C 70 5F 9B 90 1A
|
|
|
|
|
0160 | E5 CA 9C 88 AA 77 0E 3B FD 59 25 A2 5B 15 55 1B
|
|
|
|
|
0170 | 17 66 50 E5 C7 AA CC BC 2F 84 36 82 B0 45 CF A9
|
|
|
|
|
0180 | 8E B0 0D 3C 3E FA 13 E3 B4 BD 3D 5B 2E 80 0D E0
|
|
|
|
|
0190 | 79 B8 21 5C C4 7F 98 ED 62 B6 2C 6C 5E EF C7 BB
|
|
|
|
|
01A0 | 7D 21 2B E8 35 6B FF 7B 68 59 7D 46 7A B4 AF F0
|
|
|
|
|
01B0 | C4 F4 70 66 95 98 FE A8 BD E5 94 CA A0 A3 B7 D9
|
|
|
|
|
01C0 | 49 B9 83 23 0E A5 3A D3 74 4F 38 B4 F3 AD 21 36
|
|
|
|
|
01D0 | 6D 46 1E F8 B0 65 26 F4 AE DA 28 7D 87 5C 35 32
|
|
|
|
|
01E0 | AD 92 F5 59 40 EF 1E 56 C7 FB 52 51 A2 D1 34 C6
|
|
|
|
|
01F0 | ED 9F 85 7C 18 A1 A1 3D 17 FD E9 E6 2A 2C 1F 7E
|
|
|
|
|
0200 | D9 F3 60 04 05 C6 6C 12 C1 D5 41 8D 2A 4C AB 59
|
|
|
|
|
0210 | C0 66 2C 38 C7 9C E7 28 83 8A 7A 3F C7 79 8A 06
|
|
|
|
|
0220 | 79 7B DA ED C4 87 CC ED 30 88 E7 AD E9 8F C7 0F
|
|
|
|
|
0230 | 9D AB 38 67</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 = BA0D89B588A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>88A00CB2642E0DCCD6BD553F424330B4</code></td>
|
|
|
|
|
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>8A33808D1D5BAEE27E2D084DAB67CED0</code></td>
|
|
|
|
|
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B588A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE000100793E8C3BC9C45F094D11A427</code> <code>7C747A11D65D3B6F5C97D8320D4BE76A</code> <code>BF41C4D8EFB57AFE6B0C1C7E7A5F073B</code> <code>A509FADE1E20DEFE69CBEC0864C94A97</code> <code>78B40FD57EEBBCEDA4E088AA20C71F5F</code> <code>289E8CC4D202DF73C621BBDFA750255F</code> <code>05518CAE0E58EE6EA7A0319A5B23CBDE</code> <code>0B146EABE42B7022AA71074D6E916406</code> <code>3ABA342920779D5D253FB48EB9B9BDA2</code> <code>A9EF56833829FE1FB199ACDC85C853D9</code> <code>7FE9D0B69159A4826777C28AB3024D1C</code> <code>41F9FF53815ACB7E3105D3E21AAB984C</code> <code>C110498298E55BEDE751A3E7ECD357D8</code> <code>84ACA32F6E2E0CA121FDD7792B9C3E9D</code> <code>19B685AEE66EA166BCED647F2BF6F036</code> <code>C9B6513B2D95BD6E411B46EC9F21916C</code><br> <code>D1259B58</code></td>
|
|
|
|
|
<td><code>FE000100533958476D50770C106E1DAC</code> <code>83C192DA63B2E82CEB8B9FCE4BEB41D3</code> <code>005C68BA399B87F89C6FDDB7B6969C70</code> <code>5F9B901AE5CA9C88AA770E3BFD5925A2</code> <code>5B15551B176650E5C7AACCBC2F843682</code> <code>B045CFA98EB00D3C3EFA13E3B4BD3D5B</code> <code>2E800DE079B8215CC47F98ED62B62C6C</code> <code>5EEFC7BB7D212BE8356BFF7B68597D46</code> <code>7AB4AFF0C4F470669598FEA8BDE594CA</code> <code>A0A3B7D949B983230EA53AD3744F38B4</code> <code>F3AD21366D461EF8B06526F4AEDA287D</code> <code>875C3532AD92F55940EF1E56C7FB5251</code> <code>A2D134C6ED9F857C18A1A13D17FDE9E6</code> <code>2A2C1F7ED9F3600405C66C12C1D5418D</code> <code>2A4CAB59C0662C38C79CE728838A7A3F</code> <code>C7798A06797BDAEDC487CCED3088E7AD</code><br> <code>E98FC70F</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>09A93867</code> (1731766537 in decimal)</td>
|
|
|
|
|
<td><code>9DAB3867</code> (1731767197 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B588A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED
|
|
|
|
|
<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 = 8487CEEC95B08B349E56A2EACC775D5DB3AC7B0E231A6EFEB194B2305C10385F0DC79C589C5C38A446BB353DF4BBECFF96E2EDE7EEAC4384FBCD82CB8BC31C65FC38D69796691FDF314501CB010F486A677BB4638344DCC3A0A307F6A2F38AE1DF7B43D6BD00FF42121D15FE30B7FE307816771ECB9BCDF97E08CD0FFF783191B1FAEFECF533050252921FEA2D6DF31FFBBD62B5F836A07BCA342F2EE325D6D70706477D0E22234F25A427E561D2E276C9204E484A6F184C7462AB56DEB18A16EC4668EBCE28569275A36F59D05CD4D1D731531DD0B8633E87801DCAF5736E6BEE06C7A3AE7E47EAE3B53D35D4BB23EB1597048FFBC38A28F2B7E72D60147401</code></pre>
|
|
|
|
|
<pre><code>b = 4628EDE8659332AC2458B5BFA148148FC59516410B705E471E97B4C39EFA850FA30691DE8167453A9B75212BC5B804F32201A7E31FAD54C6472AA60001B3C5186E37DFD8B3E96B8049993BCF03D818E9C60F3E49218B03C6A37E56618E149EE1AEA577304DC843F85DA6BEA079AEBE5622804A1BE5E28F2E8CB3CEC7ABC8DE17C99268898FFBA317465F6BB03E610356EA68245C88EA226B79A44F98327B2300B3CB4C4BB9CDAA704338641B3DE35936E81630A60A78711F7E7A3E5A1296389D05B5F2BF1D8EF8BFA7950CEB8E286C6AC4773CB72A550FA1C73B447D3B5D4D227520109258BC548EE2B44B06E251A39A24F56613EA775955A2BCDF0BF853D4C9</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 = 6E9707456F57D1A5BA110E879B97A146952B760195EEE9B09A4416D13A60C4F3DC4F267EFB3EF6009D2E08B31E8097391583C3D63C9938D376D10A1934F2514F4C2938B7B76E3F59DA8C5B20FF08F1922A37808104CAE3DA3A395AF2EF5D4C1C9690BCE32066A1A082B88CFC5086F999AB7E847B4518EEFA8E6C2AB4E5988C93EC2EED9D264F3D297E7225921F87A70A7292F564E55F22C21116C3120ECA708B8171A690CE5E85676695669F581F702B8D99A42BBD927677AB6AEC82F714DB0C8096654171A913D91602D458F2E53BB2689F1D75BAECFAD5702447F679C2D326A67FD5A356E236018A4DC1A8315F5BD35ADDCA421A0DE3BDB4B55E2B8DA578E4</code></pre>
|
|
|
|
|
<pre><code>g_b = 9624B1C1AA5BE4CC057636BCB57E6D8E739076FF622720BCA484A7B77EAEF63772FF22AE2EFBCACAE3B5E47824AB8DDF914AE4E0837076A94861DE2EBE89C208B7E7DBFBCD158801CABD16BB9C645BD37844415AC2BC2C34BF1825CBD1468F20C38E76CBE1DA8EC6EC8FF57F327E846D14932AD68933F34F18F4151BFC43E55FE50B5016F0B0870F4519AB73F0F94122AA41C1AB00C133870DA9A2A83ACA2F5EE45E02497DCA3FBEE53AC11CCBAF3447FA1CD816A07D82492FD67136FBD1C3C612594D9844C0F95520399149327A765E62BBD2A390EF3708360D94EC9F9DE3C7992D9FA6C4E325D2D419EDC4B260BE4AABE8506B3F978FFE3A4C50266F048D80</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 88 A0 0C B2 64 2E 0D CC D6 BD 55 3F
|
|
|
|
|
0010 | 42 43 30 B4 8A 33 80 8D 1D 5B AE E2 7E 2D 08 4D
|
|
|
|
|
0020 | AB 67 CE D0 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 6E 97 07 45 6F 57 D1 A5 BA 11 0E 87 9B 97 A1 46
|
|
|
|
|
0040 | 95 2B 76 01 95 EE E9 B0 9A 44 16 D1 3A 60 C4 F3
|
|
|
|
|
0050 | DC 4F 26 7E FB 3E F6 00 9D 2E 08 B3 1E 80 97 39
|
|
|
|
|
0060 | 15 83 C3 D6 3C 99 38 D3 76 D1 0A 19 34 F2 51 4F
|
|
|
|
|
0070 | 4C 29 38 B7 B7 6E 3F 59 DA 8C 5B 20 FF 08 F1 92
|
|
|
|
|
0080 | 2A 37 80 81 04 CA E3 DA 3A 39 5A F2 EF 5D 4C 1C
|
|
|
|
|
0090 | 96 90 BC E3 20 66 A1 A0 82 B8 8C FC 50 86 F9 99
|
|
|
|
|
00A0 | AB 7E 84 7B 45 18 EE FA 8E 6C 2A B4 E5 98 8C 93
|
|
|
|
|
00B0 | EC 2E ED 9D 26 4F 3D 29 7E 72 25 92 1F 87 A7 0A
|
|
|
|
|
00C0 | 72 92 F5 64 E5 5F 22 C2 11 16 C3 12 0E CA 70 8B
|
|
|
|
|
00D0 | 81 71 A6 90 CE 5E 85 67 66 95 66 9F 58 1F 70 2B
|
|
|
|
|
00E0 | 8D 99 A4 2B BD 92 76 77 AB 6A EC 82 F7 14 DB 0C
|
|
|
|
|
00F0 | 80 96 65 41 71 A9 13 D9 16 02 D4 58 F2 E5 3B B2
|
|
|
|
|
0100 | 68 9F 1D 75 BA EC FA D5 70 24 47 F6 79 C2 D3 26
|
|
|
|
|
0110 | A6 7F D5 A3 56 E2 36 01 8A 4D C1 A8 31 5F 5B D3
|
|
|
|
|
0120 | 5A DD CA 42 1A 0D E3 BD B4 B5 5E 2B 8D A5 78 E4</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 E8 FF D0 70 C6 56 0F C1 91 A6 69 5C
|
|
|
|
|
0010 | BB 3D 69 6B 50 52 07 36 D6 05 6F 36 F7 B5 AE 82
|
|
|
|
|
0020 | 38 C4 61 93 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 96 24 B1 C1 AA 5B E4 CC 05 76 36 BC B5 7E 6D 8E
|
|
|
|
|
0040 | 73 90 76 FF 62 27 20 BC A4 84 A7 B7 7E AE F6 37
|
|
|
|
|
0050 | 72 FF 22 AE 2E FB CA CA E3 B5 E4 78 24 AB 8D DF
|
|
|
|
|
0060 | 91 4A E4 E0 83 70 76 A9 48 61 DE 2E BE 89 C2 08
|
|
|
|
|
0070 | B7 E7 DB FB CD 15 88 01 CA BD 16 BB 9C 64 5B D3
|
|
|
|
|
0080 | 78 44 41 5A C2 BC 2C 34 BF 18 25 CB D1 46 8F 20
|
|
|
|
|
0090 | C3 8E 76 CB E1 DA 8E C6 EC 8F F5 7F 32 7E 84 6D
|
|
|
|
|
00A0 | 14 93 2A D6 89 33 F3 4F 18 F4 15 1B FC 43 E5 5F
|
|
|
|
|
00B0 | E5 0B 50 16 F0 B0 87 0F 45 19 AB 73 F0 F9 41 22
|
|
|
|
|
00C0 | AA 41 C1 AB 00 C1 33 87 0D A9 A2 A8 3A CA 2F 5E
|
|
|
|
|
00D0 | E4 5E 02 49 7D CA 3F BE E5 3A C1 1C CB AF 34 47
|
|
|
|
|
00E0 | FA 1C D8 16 A0 7D 82 49 2F D6 71 36 FB D1 C3 C6
|
|
|
|
|
00F0 | 12 59 4D 98 44 C0 F9 55 20 39 91 49 32 7A 76 5E
|
|
|
|
|
0100 | 62 BB D2 A3 90 EF 37 08 36 0D 94 EC 9F 9D E3 C7
|
|
|
|
|
0110 | 99 2D 9F A6 C4 E3 25 D2 D4 19 ED C4 B2 60 BE 4A
|
|
|
|
|
0120 | AB E8 50 6B 3F 97 8F FE 3A 4C 50 26 6F 04 8D 80</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 = BA0D89B588A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>88A00CB2642E0DCCD6BD553F424330B4</code></td>
|
|
|
|
|
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>8A33808D1D5BAEE27E2D084DAB67CED0</code></td>
|
|
|
|
|
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FE0001006E9707456F57D1A5BA110E87</code> <code>9B97A146952B760195EEE9B09A4416D1</code> <code>3A60C4F3DC4F267EFB3EF6009D2E08B3</code> <code>1E8097391583C3D63C9938D376D10A19</code> <code>34F2514F4C2938B7B76E3F59DA8C5B20</code> <code>FF08F1922A37808104CAE3DA3A395AF2</code> <code>EF5D4C1C9690BCE32066A1A082B88CFC</code> <code>5086F999AB7E847B4518EEFA8E6C2AB4</code> <code>E5988C93EC2EED9D264F3D297E722592</code> <code>1F87A70A7292F564E55F22C21116C312</code> <code>0ECA708B8171A690CE5E85676695669F</code> <code>581F702B8D99A42BBD927677AB6AEC82</code> <code>F714DB0C8096654171A913D91602D458</code> <code>F2E53BB2689F1D75BAECFAD5702447F6</code> <code>79C2D326A67FD5A356E236018A4DC1A8</code> <code>315F5BD35ADDCA421A0DE3BDB4B55E2B</code><br> <code>8DA578E4</code></td>
|
|
|
|
|
<td><code>FE0001009624B1C1AA5BE4CC057636BC</code> <code>B57E6D8E739076FF622720BCA484A7B7</code> <code>7EAEF63772FF22AE2EFBCACAE3B5E478</code> <code>24AB8DDF914AE4E0837076A94861DE2E</code> <code>BE89C208B7E7DBFBCD158801CABD16BB</code> <code>9C645BD37844415AC2BC2C34BF1825CB</code> <code>D1468F20C38E76CBE1DA8EC6EC8FF57F</code> <code>327E846D14932AD68933F34F18F4151B</code> <code>FC43E55FE50B5016F0B0870F4519AB73</code> <code>F0F94122AA41C1AB00C133870DA9A2A8</code> <code>3ACA2F5EE45E02497DCA3FBEE53AC11C</code> <code>CBAF3447FA1CD816A07D82492FD67136</code> <code>FBD1C3C612594D9844C0F95520399149</code> <code>327A765E62BBD2A390EF3708360D94EC</code> <code>9F9DE3C7992D9FA6C4E325D2D419EDC4</code> <code>B260BE4AABE8506B3F978FFE3A4C5026</code><br> <code>6F048D80</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 = BA0D89B588A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED
|
|
|
|
|
<!-- 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 = 54B6436688A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED00000000000000000FE0001006E9707456F57D1A5BA110E879B97A146952B760195EEE9B09A4416D13A60C4F3DC4F267EFB3EF6009D2E08B31E8097391583C3D63C9938D376D10A1934F2514F4C2938B7B76E3F59DA8C5B20FF08F1922A37808104CAE3DA3A395AF2EF5D4C1C9690BCE32066A1A082B88CFC5086F999AB7E847B4518EEFA8E6C2AB4E5988C93EC2EED9D264F3D297E7225921F87A70A7292F564E55F22C21116C3120ECA708B8171A690CE5E85676695669F581F702B8D99A42BBD927677AB6AEC82F714DB0C8096654171A913D91602D458F2E53BB2689F1D75BAECFAD5702447F679C2D326A67FD5A356E236018A4DC1A8315F5BD35ADDCA421A0DE3BDB4B55E2B8DA578E4
|
|
|
|
|
padding = F06EBED4D1D4AB175BE9CC8E
|
|
|
|
|
tmp_aes_key = 010C0C9B7A484D3A0D5BE8A9D860F7037247338A949243ABFD2598EA8BAFE4D1
|
|
|
|
|
tmp_aes_iv = E9737E2AA80D0D0FC0161512F6069DF0654F7B84D8A2C4679359DF78C61C4CB1</code></pre>
|
|
|
|
|
<pre><code>data = 54B64366E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C461930000000000000000FE0001009624B1C1AA5BE4CC057636BCB57E6D8E739076FF622720BCA484A7B77EAEF63772FF22AE2EFBCACAE3B5E47824AB8DDF914AE4E0837076A94861DE2EBE89C208B7E7DBFBCD158801CABD16BB9C645BD37844415AC2BC2C34BF1825CBD1468F20C38E76CBE1DA8EC6EC8FF57F327E846D14932AD68933F34F18F4151BFC43E55FE50B5016F0B0870F4519AB73F0F94122AA41C1AB00C133870DA9A2A83ACA2F5EE45E02497DCA3FBEE53AC11CCBAF3447FA1CD816A07D82492FD67136FBD1C3C612594D9844C0F95520399149327A765E62BBD2A390EF3708360D94EC9F9DE3C7992D9FA6C4E325D2D419EDC4B260BE4AABE8506B3F978FFE3A4C50266F048D80
|
|
|
|
|
padding = 6BEB9B8D16F85CFA554D0342
|
|
|
|
|
tmp_aes_key = 56A62D764A5E8973B19859D80559EB24EA089A0ED17D7660973EACBAB5B455C2
|
|
|
|
|
tmp_aes_iv = F1EE1C15FD64CF2E5E94EB7D322D30F65CC45E6E0E13F88E3D4EB4F2C7342A00</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 = 6CA5FA6974FB55D595863B586A284FE5A15AD986F67F1C5A07491EBABBE64A244E45F46CAF47786FCCD17C3AC5CFD571BAF80F5E4986BB7BAF0AD66E82B1E6E9FA03E6D296F5F77BEB8BEB1A979B1517B5AF46E423F39E38628F06208E6CAD6D38B2C0279A84B7182300DBD2F934B243A78BB5508DDAC482868B2F8B06D8F098BA1BB156C5CB8BEE86EBE4403EAB6DDA387A55D101F1B29216C219ADEE29A637F69178C960B74CBC7D779319D0A660FA2C1855F55BD7D03E03C3E591CDD8174E2B147E15592009F1229098C58D639714D8F63A64F8E3CA699118D5C4472523F22ACE75017DC325A01B93BF983D787285AFD56D80D671677F8BAF3B4A62633FEC3EB4AB9FFC6B80358D7DF6420364BF04628C7CC4485D9A472741E6B88CE100C80B5DB173EBA4B44CD4574E7B052083021D64E8F1D142ECB6EB6255CA9739C6D3475550FF6E30A7D1E0B19A23FA2342DB</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 52AA7D684C4D0330BE5ADCA8D8C6272F1AE969A9C988A2423E5D92E25F09EB94E1CE80A686B60CE3AF675E911119E0C38D00DADFB6EF3D39B4F3B576E6AC0F94664068BB5E346BCBEF1BEB5A981356CFFD6949EB06F11A58E7DA4505F9A2FB9E6F037CD04F1CDBED0C9CD822589922F97D27200492315B99446F36EFB501C6A4090D5EF5CD1195038C1C52E5E185C8BF67B4B81B0CC39247741770724055A005C86C4BA9715383B2E1DED85202D54792C888B318B6C6655A109AA5281CF8EEDD37744E914C789A1648B19B21B346565F226C2F15DF746DF3497FDFB5A91E179EF7A1EB61C1E371974F297414F4CC20A9161FFA9EDC7BB08CA219EB4F521120C27A5391130C5A0D90059179CBE19CADC2B6A988E49A93A01D938CBD55B2725D938556A78B0F12C48012E438EF38B7C5DDD9A1AB4E6A97084E917CCCFB67AC42764F8F81C366170735817A4737BAF0962E</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 F4 D4 09 00 09 A9 38 67
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 88 A0 0C B2 64 2E 0D CC
|
|
|
|
|
0020 | D6 BD 55 3F 42 43 30 B4 8A 33 80 8D 1D 5B AE E2
|
|
|
|
|
0030 | 7E 2D 08 4D AB 67 CE D0 FE 50 01 00 6C A5 FA 69
|
|
|
|
|
0040 | 74 FB 55 D5 95 86 3B 58 6A 28 4F E5 A1 5A D9 86
|
|
|
|
|
0050 | F6 7F 1C 5A 07 49 1E BA BB E6 4A 24 4E 45 F4 6C
|
|
|
|
|
0060 | AF 47 78 6F CC D1 7C 3A C5 CF D5 71 BA F8 0F 5E
|
|
|
|
|
0070 | 49 86 BB 7B AF 0A D6 6E 82 B1 E6 E9 FA 03 E6 D2
|
|
|
|
|
0080 | 96 F5 F7 7B EB 8B EB 1A 97 9B 15 17 B5 AF 46 E4
|
|
|
|
|
0090 | 23 F3 9E 38 62 8F 06 20 8E 6C AD 6D 38 B2 C0 27
|
|
|
|
|
00A0 | 9A 84 B7 18 23 00 DB D2 F9 34 B2 43 A7 8B B5 50
|
|
|
|
|
00B0 | 8D DA C4 82 86 8B 2F 8B 06 D8 F0 98 BA 1B B1 56
|
|
|
|
|
00C0 | C5 CB 8B EE 86 EB E4 40 3E AB 6D DA 38 7A 55 D1
|
|
|
|
|
00D0 | 01 F1 B2 92 16 C2 19 AD EE 29 A6 37 F6 91 78 C9
|
|
|
|
|
00E0 | 60 B7 4C BC 7D 77 93 19 D0 A6 60 FA 2C 18 55 F5
|
|
|
|
|
00F0 | 5B D7 D0 3E 03 C3 E5 91 CD D8 17 4E 2B 14 7E 15
|
|
|
|
|
0100 | 59 20 09 F1 22 90 98 C5 8D 63 97 14 D8 F6 3A 64
|
|
|
|
|
0110 | F8 E3 CA 69 91 18 D5 C4 47 25 23 F2 2A CE 75 01
|
|
|
|
|
0120 | 7D C3 25 A0 1B 93 BF 98 3D 78 72 85 AF D5 6D 80
|
|
|
|
|
0130 | D6 71 67 7F 8B AF 3B 4A 62 63 3F EC 3E B4 AB 9F
|
|
|
|
|
0140 | FC 6B 80 35 8D 7D F6 42 03 64 BF 04 62 8C 7C C4
|
|
|
|
|
0150 | 48 5D 9A 47 27 41 E6 B8 8C E1 00 C8 0B 5D B1 73
|
|
|
|
|
0160 | EB A4 B4 4C D4 57 4E 7B 05 20 83 02 1D 64 E8 F1
|
|
|
|
|
0170 | D1 42 EC B6 EB 62 55 CA 97 39 C6 D3 47 55 50 FF
|
|
|
|
|
0180 | 6E 30 A7 D1 E0 B1 9A 23 FA 23 42 DB</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 FC B7 0D 00 9D AB 38 67
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 E8 FF D0 70 C6 56 0F C1
|
|
|
|
|
0020 | 91 A6 69 5C BB 3D 69 6B 50 52 07 36 D6 05 6F 36
|
|
|
|
|
0030 | F7 B5 AE 82 38 C4 61 93 FE 50 01 00 52 AA 7D 68
|
|
|
|
|
0040 | 4C 4D 03 30 BE 5A DC A8 D8 C6 27 2F 1A E9 69 A9
|
|
|
|
|
0050 | C9 88 A2 42 3E 5D 92 E2 5F 09 EB 94 E1 CE 80 A6
|
|
|
|
|
0060 | 86 B6 0C E3 AF 67 5E 91 11 19 E0 C3 8D 00 DA DF
|
|
|
|
|
0070 | B6 EF 3D 39 B4 F3 B5 76 E6 AC 0F 94 66 40 68 BB
|
|
|
|
|
0080 | 5E 34 6B CB EF 1B EB 5A 98 13 56 CF FD 69 49 EB
|
|
|
|
|
0090 | 06 F1 1A 58 E7 DA 45 05 F9 A2 FB 9E 6F 03 7C D0
|
|
|
|
|
00A0 | 4F 1C DB ED 0C 9C D8 22 58 99 22 F9 7D 27 20 04
|
|
|
|
|
00B0 | 92 31 5B 99 44 6F 36 EF B5 01 C6 A4 09 0D 5E F5
|
|
|
|
|
00C0 | CD 11 95 03 8C 1C 52 E5 E1 85 C8 BF 67 B4 B8 1B
|
|
|
|
|
00D0 | 0C C3 92 47 74 17 70 72 40 55 A0 05 C8 6C 4B A9
|
|
|
|
|
00E0 | 71 53 83 B2 E1 DE D8 52 02 D5 47 92 C8 88 B3 18
|
|
|
|
|
00F0 | B6 C6 65 5A 10 9A A5 28 1C F8 EE DD 37 74 4E 91
|
|
|
|
|
0100 | 4C 78 9A 16 48 B1 9B 21 B3 46 56 5F 22 6C 2F 15
|
|
|
|
|
0110 | DF 74 6D F3 49 7F DF B5 A9 1E 17 9E F7 A1 EB 61
|
|
|
|
|
0120 | C1 E3 71 97 4F 29 74 14 F4 CC 20 A9 16 1F FA 9E
|
|
|
|
|
0130 | DC 7B B0 8C A2 19 EB 4F 52 11 20 C2 7A 53 91 13
|
|
|
|
|
0140 | 0C 5A 0D 90 05 91 79 CB E1 9C AD C2 B6 A9 88 E4
|
|
|
|
|
0150 | 9A 93 A0 1D 93 8C BD 55 B2 72 5D 93 85 56 A7 8B
|
|
|
|
|
0160 | 0F 12 C4 80 12 E4 38 EF 38 B7 C5 DD D9 A1 AB 4E
|
|
|
|
|
0170 | 6A 97 08 4E 91 7C CC FB 67 AC 42 76 4F 8F 81 C3
|
|
|
|
|
0180 | 66 17 07 35 81 7A 47 37 BA F0 96 2E</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>F4D4090009A93867</code></td>
|
|
|
|
|
<td><code>FCB70D009DAB3867</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>88A00CB2642E0DCCD6BD553F424330B4</code></td>
|
|
|
|
|
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>8A33808D1D5BAEE27E2D084DAB67CED0</code></td>
|
|
|
|
|
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE5001006CA5FA6974FB55D595863B58</code> <code>6A284FE5A15AD986F67F1C5A07491EBA</code> <code>BBE64A244E45F46CAF47786FCCD17C3A</code> <code>C5CFD571BAF80F5E4986BB7BAF0AD66E</code> <code>82B1E6E9FA03E6D296F5F77BEB8BEB1A</code> <code>979B1517B5AF46E423F39E38628F0620</code> <code>8E6CAD6D38B2C0279A84B7182300DBD2</code> <code>F934B243A78BB5508DDAC482868B2F8B</code> <code>06D8F098BA1BB156C5CB8BEE86EBE440</code> <code>3EAB6DDA387A55D101F1B29216C219AD</code> <code>EE29A637F69178C960B74CBC7D779319</code> <code>D0A660FA2C1855F55BD7D03E03C3E591</code> <code>CDD8174E2B147E15592009F1229098C5</code> <code>8D639714D8F63A64F8E3CA699118D5C4</code> <code>472523F22ACE75017DC325A01B93BF98</code> <code>3D787285AFD56D80D671677F8BAF3B4A</code> <code>62633FEC3EB4AB9FFC6B80358D7DF642</code> <code>0364BF04628C7CC4485D9A472741E6B8</code> <code>8CE100C80B5DB173EBA4B44CD4574E7B</code> <code>052083021D64E8F1D142ECB6EB6255CA</code> <code>9739C6D3475550FF6E30A7D1E0B19A23</code><br> <code>FA2342DB</code></td>
|
|
|
|
|
<td><code>FE50010052AA7D684C4D0330BE5ADCA8</code> <code>D8C6272F1AE969A9C988A2423E5D92E2</code> <code>5F09EB94E1CE80A686B60CE3AF675E91</code> <code>1119E0C38D00DADFB6EF3D39B4F3B576</code> <code>E6AC0F94664068BB5E346BCBEF1BEB5A</code> <code>981356CFFD6949EB06F11A58E7DA4505</code> <code>F9A2FB9E6F037CD04F1CDBED0C9CD822</code> <code>589922F97D27200492315B99446F36EF</code> <code>B501C6A4090D5EF5CD1195038C1C52E5</code> <code>E185C8BF67B4B81B0CC3924774177072</code> <code>4055A005C86C4BA9715383B2E1DED852</code> <code>02D54792C888B318B6C6655A109AA528</code> <code>1CF8EEDD37744E914C789A1648B19B21</code> <code>B346565F226C2F15DF746DF3497FDFB5</code> <code>A91E179EF7A1EB61C1E371974F297414</code> <code>F4CC20A9161FFA9EDC7BB08CA219EB4F</code> <code>521120C27A5391130C5A0D90059179CB</code> <code>E19CADC2B6A988E49A93A01D938CBD55</code> <code>B2725D938556A78B0F12C48012E438EF</code> <code>38B7C5DDD9A1AB4E6A97084E917CCCFB</code> <code>67AC42764F8F81C366170735817A4737</code><br> <code>BAF0962E</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 = BCEC8676D1BF9942E58451FB59B077B4E1CED8BEA189910E9C4759551612EE1EF1C33ED8DC685B5D2ADD46F4C04DD62A8884F0DA77FE8FA1FD973063F7535AA22D5BF85FAD0D6B856911272DAAE6E8ADA29E2679D2879696AA711F95A225C896DE07F72BF1342ED04F528943537F68C4E12AAEFC79A05BC1ACFB7DE4CCC9B694977D98ED4BDD7971B2CCED07B4F760366A5FAE69121DEB9A79A127B30A965E438831F731EEB0616EC5EB40158F669878E28F54482D859E458B8A3C0DEEA3B817A4236AE729A6A147379F7E98737D00E17BEC1DFF0896F9C11D18394F64F2548E877F7623D7845587FEA12F02FFE2479DBCCB688C2248E036CD0D74C82B956A25</code></pre>
|
|
|
|
|
<pre><code>auth_key = 4437E1C81E2FC5AE12C81E8D81E658072CA6160D8FA0345D8EE2ED2A6E9892DEB3CD0DE8B44CC9D6DE9E5ED98A41BBD29BAE6CABC8CDA36C3D958E5D04E3A144724C4A5011D73E772E0ADEAE3AE0C2093050DDA19C2BB931BF896D3D584B5F443E114D8EAECED9C52EBD1B71306101E7ABBC98E9F48E6C30C3301E33E162B4CA16FF517A07B40BADB1D3D4F358AD759CD3A35EBACB599171A2C32F9AE5B7F86294733C39083E7156B9E12B511869CA9FB296A9AFE7F569DE8E4B97729B22C37DA7027DCAB354E41A10A45B1EDC91CA2982F2774108DAD91817D32EB1E1EA720E98D0F381D3C6275D7353C0CF121EFB1C7719F7ECFA948052071C2AECA2743578</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 6C 44 58 0B A9 38 67
|
|
|
|
|
0010 | 34 00 00 00 34 F7 CB 3B 88 A0 0C B2 64 2E 0D CC
|
|
|
|
|
0020 | D6 BD 55 3F 42 43 30 B4 8A 33 80 8D 1D 5B AE E2
|
|
|
|
|
0030 | 7E 2D 08 4D AB 67 CE D0 EC 44 2B 71 0B 93 7F 95
|
|
|
|
|
0040 | 1F 3F 2D 57 D0 B3 38 2E</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 10 4B 01 9F AB 38 67
|
|
|
|
|
0010 | 34 00 00 00 34 F7 CB 3B E8 FF D0 70 C6 56 0F C1
|
|
|
|
|
0020 | 91 A6 69 5C BB 3D 69 6B 50 52 07 36 D6 05 6F 36
|
|
|
|
|
0030 | F7 B5 AE 82 38 C4 61 93 04 DE FD 1F 17 F3 6F CE
|
|
|
|
|
0040 | 7E DD 37 3E B2 91 C6 2C</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,7 +817,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>016C44580BA93867</code></td>
|
|
|
|
|
<td><code>01104B019FAB3867</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>
|
|
|
|
@ -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>88A00CB2642E0DCCD6BD553F424330B4</code></td>
|
|
|
|
|
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>8A33808D1D5BAEE27E2D084DAB67CED0</code></td>
|
|
|
|
|
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>EC442B710B937F951F3F2D57D0B3382E</code></td>
|
|
|
|
|
<td><code>04DEFD1F17F36FCE7EDD373EB291C62C</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>
|
|
|
|
|