|
|
|
@ -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 18 87 0E 00 04 B7 AF 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE A4 3A FF 1B 9E 83 A6 AD
|
|
|
|
|
0020 | 77 D3 9B D7 71 9C 47 2B</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 58 86 0D 00 57 C2 AF 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 11 B9 C2 84 50 81 17 76
|
|
|
|
|
0020 | D4 24 CA 45 CD D0 38 74</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>18870E0004B7AF66</code></td>
|
|
|
|
|
<td><code>58860D0057C2AF66</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>A43AFF1B9E83A6AD77D39BD7719C472B</code></td>
|
|
|
|
|
<td><code>11B9C28450811776D424CA45CDD03874</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 94 B5 C8 04 B7 AF 66
|
|
|
|
|
0010 | 60 00 00 00 63 24 16 05 A4 3A FF 1B 9E 83 A6 AD
|
|
|
|
|
0020 | 77 D3 9B D7 71 9C 47 2B 06 88 68 83 56 65 87 5F
|
|
|
|
|
0030 | AD 81 E7 F4 04 B1 34 49 08 19 67 68 F7 04 AA 5B
|
|
|
|
|
0040 | 3B 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 B8 09 7C 57 C2 AF 66
|
|
|
|
|
0010 | 54 00 00 00 63 24 16 05 11 B9 C2 84 50 81 17 76
|
|
|
|
|
0020 | D4 24 CA 45 CD D0 38 74 46 0A 42 F7 E8 9B 5F 4E
|
|
|
|
|
0030 | 9B 13 1B 62 6D CD 43 14 08 1E CA 00 88 61 80 8B
|
|
|
|
|
0040 | D1 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>0194B5C804B7AF66</code></td>
|
|
|
|
|
<td><code>01B8097C57C2AF66</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>60000000</code> (96 in decimal)</td>
|
|
|
|
|
<td><code>54000000</code> (84 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A43AFF1B9E83A6AD77D39BD7719C472B</code></td>
|
|
|
|
|
<td><code>11B9C28450811776D424CA45CDD03874</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>068868835665875FAD81E7F404B13449</code></td>
|
|
|
|
|
<td><code>460A42F7E89B5F4E9B131B626DCD4314</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>08196768F704AA5B3B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1830547183693880123</td>
|
|
|
|
|
<td><code>081ECA008861808BD1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2218586352184757201</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 = 1830547183693880123</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1830547183693880123 = 1209263557 * 1513770239</code></p>
|
|
|
|
|
<pre><code>p = 1209263557
|
|
|
|
|
q = 1513770239</code></pre>
|
|
|
|
|
<pre><code>pq = 2218586352184757201</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2218586352184757201 = 1308465869 * 1695563029</code></p>
|
|
|
|
|
<pre><code>p = 1308465869
|
|
|
|
|
q = 1695563029</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 67 68 F7 04 AA 5B 3B 00 00 00
|
|
|
|
|
0010 | 04 48 13 E5 C5 00 00 00 04 5A 3A 4C FF 00 00 00
|
|
|
|
|
0020 | A4 3A FF 1B 9E 83 A6 AD 77 D3 9B D7 71 9C 47 2B
|
|
|
|
|
0030 | 06 88 68 83 56 65 87 5F AD 81 E7 F4 04 B1 34 49
|
|
|
|
|
0040 | 8F 7A F9 FA D9 65 33 11 7F 1B E0 90 4A F5 77 B7
|
|
|
|
|
0050 | 86 B7 1F 65 29 44 1B 61 45 9F E3 8E 15 A9 05 0D
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 1E CA 00 88 61 80 8B D1 00 00 00
|
|
|
|
|
0010 | 04 4D FD 9A CD 00 00 00 04 65 10 3D 15 00 00 00
|
|
|
|
|
0020 | 11 B9 C2 84 50 81 17 76 D4 24 CA 45 CD D0 38 74
|
|
|
|
|
0030 | 46 0A 42 F7 E8 9B 5F 4E 9B 13 1B 62 6D CD 43 14
|
|
|
|
|
0040 | D1 44 94 66 E7 24 4E D4 A1 94 E6 6E FB 19 20 AC
|
|
|
|
|
0050 | B7 8B 50 A6 DA 5C 66 E4 D9 CF 9B 47 25 63 E9 A1
|
|
|
|
|
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 = 1513770239</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>08196768F704AA5B3B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1830547183693880123</td>
|
|
|
|
|
<td><code>081ECA008861808BD1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2218586352184757201</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>044813E5C5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1209263557</td>
|
|
|
|
|
<td><code>044DFD9ACD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1308465869</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>045A3A4CFF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1513770239</td>
|
|
|
|
|
<td><code>0465103D15000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1695563029</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>A43AFF1B9E83A6AD77D39BD7719C472B</code></td>
|
|
|
|
|
<td><code>11B9C28450811776D424CA45CDD03874</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>068868835665875FAD81E7F404B13449</code></td>
|
|
|
|
|
<td><code>460A42F7E89B5F4E9B131B626DCD4314</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>8F7AF9FAD96533117F1BE0904AF577B7</code> <code>86B71F6529441B61459FE38E15A9050D</code></td>
|
|
|
|
|
<td><code>D1449466E7244ED4A194E66EFB1920AC</code> <code>B78B50A6DA5C66E4D9CF9B472563E9A1</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1513770239</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 = 955FF5A908196768F704AA5B3B000000044813E5C5000000045A3A4CFF000000A43AFF1B9E83A6AD77D39BD7719C472B068868835665875FAD81E7F404B134498F7AF9FAD96533117F1BE0904AF577B786B71F6529441B61459FE38E15A9050D02000000
|
|
|
|
|
random_padding_bytes = 12C744246DB1B024B109325CF2435DF3D3D31CA468726A81E9728DC78911876DA57A16A025932B003B377B61A8AB3CFF1F6F2AE5D7099E90FD4B7A581CC6A704731C256DF87E390E824289C5317D28B24CC010A002975CC125DC49F3</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A9081ECA008861808BD1000000044DFD9ACD0000000465103D1500000011B9C28450811776D424CA45CDD03874460A42F7E89B5F4E9B131B626DCD4314D1449466E7244ED4A194E66EFB1920ACB78B50A6DA5C66E4D9CF9B472563E9A102000000
|
|
|
|
|
random_padding_bytes = D928E03E2D182003FDD073198CAFC5C9FF4FF398D108A82863F2F99253AB267EE4BC2B0E8C9CE3A3AADC03C6B56BF0D11AB702FA7DDAA012F216FD61FAEC30D3A8BA03F970B9AB7882AF1A5F6AD457E38DA4C08E13D8C61A66F1A41A</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 = 8CD25F4DD74619242B35C416C5A3AD500CB5EE17D812B972DB20D18FD89E696723422CAE29EBA4A5CAFA45F9DD48BD526C25CBA107C454AB8AB943A165121C212B892EA9775D21A8940E2E055C8FB7D4252DEFB311B5956F1063E78FCA8142A5113DA55DCCACDB1EC8F8DBA8FE31C197632FE11EBD84827EF4604D48DAF60DE1C68F3ABC0AAC4C8EC55AAA25EB33DAEC19EB9DE9E44E2899D5703A8520E1928BD7FBA0DB43F055899873FA5E3603A1C04EEFDE48BCE107E72A2A168FA4456F4E62029CD6140C7574E0CBD9082EE394EE2CB28CB7C3F388291FCE1E54E08766E3FCFB7737D789B8D88C0B1BF09F47C33329334F0544895BDFC8E28F3D5484D9EC</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 66B4C08174C9A630BFE83A625C4C34EF67D5B3096E5CBE9CD09447676A7E3F4A6C194889A89CE4EE1C801A8823C25EE9AFAA339DB24726E7B6BF65D9C86064BF2AD687CE883C7FCAED4C3A2B378E99799DE7A9170E1A3B58EA403A3F597132C2F33073A411AF733568B7E1B0F8AC66121725AE8355FA43CB63E05D6D710132F4336EB8A0CE40792D13FBACB7E87F3E887453FF422301D2B4EAAF007D9BE739B920C20F485551136ACDA6C943583A158C62DEE5AECBDFCC3F88F705EB1F350193ACE8E007AF33275A0489BF1FFF8422BE9B9315AC79160166F9CFE96C971AB74FED0CDAC515FC7CBB1598EBEBCECF7E6500106C5BE4FFB9E2CEA0E4E651A6AD52</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 1C 87 0E 00 04 B7 AF 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 A4 3A FF 1B 9E 83 A6 AD
|
|
|
|
|
0020 | 77 D3 9B D7 71 9C 47 2B 06 88 68 83 56 65 87 5F
|
|
|
|
|
0030 | AD 81 E7 F4 04 B1 34 49 04 48 13 E5 C5 00 00 00
|
|
|
|
|
0040 | 04 5A 3A 4C FF 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 8C D2 5F 4D D7 46 19 24 2B 35 C4 16
|
|
|
|
|
0060 | C5 A3 AD 50 0C B5 EE 17 D8 12 B9 72 DB 20 D1 8F
|
|
|
|
|
0070 | D8 9E 69 67 23 42 2C AE 29 EB A4 A5 CA FA 45 F9
|
|
|
|
|
0080 | DD 48 BD 52 6C 25 CB A1 07 C4 54 AB 8A B9 43 A1
|
|
|
|
|
0090 | 65 12 1C 21 2B 89 2E A9 77 5D 21 A8 94 0E 2E 05
|
|
|
|
|
00A0 | 5C 8F B7 D4 25 2D EF B3 11 B5 95 6F 10 63 E7 8F
|
|
|
|
|
00B0 | CA 81 42 A5 11 3D A5 5D CC AC DB 1E C8 F8 DB A8
|
|
|
|
|
00C0 | FE 31 C1 97 63 2F E1 1E BD 84 82 7E F4 60 4D 48
|
|
|
|
|
00D0 | DA F6 0D E1 C6 8F 3A BC 0A AC 4C 8E C5 5A AA 25
|
|
|
|
|
00E0 | EB 33 DA EC 19 EB 9D E9 E4 4E 28 99 D5 70 3A 85
|
|
|
|
|
00F0 | 20 E1 92 8B D7 FB A0 DB 43 F0 55 89 98 73 FA 5E
|
|
|
|
|
0100 | 36 03 A1 C0 4E EF DE 48 BC E1 07 E7 2A 2A 16 8F
|
|
|
|
|
0110 | A4 45 6F 4E 62 02 9C D6 14 0C 75 74 E0 CB D9 08
|
|
|
|
|
0120 | 2E E3 94 EE 2C B2 8C B7 C3 F3 88 29 1F CE 1E 54
|
|
|
|
|
0130 | E0 87 66 E3 FC FB 77 37 D7 89 B8 D8 8C 0B 1B F0
|
|
|
|
|
0140 | 9F 47 C3 33 29 33 4F 05 44 89 5B DF C8 E2 8F 3D
|
|
|
|
|
0150 | 54 84 D9 EC</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 5C 86 0D 00 57 C2 AF 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 11 B9 C2 84 50 81 17 76
|
|
|
|
|
0020 | D4 24 CA 45 CD D0 38 74 46 0A 42 F7 E8 9B 5F 4E
|
|
|
|
|
0030 | 9B 13 1B 62 6D CD 43 14 04 4D FD 9A CD 00 00 00
|
|
|
|
|
0040 | 04 65 10 3D 15 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 66 B4 C0 81 74 C9 A6 30 BF E8 3A 62
|
|
|
|
|
0060 | 5C 4C 34 EF 67 D5 B3 09 6E 5C BE 9C D0 94 47 67
|
|
|
|
|
0070 | 6A 7E 3F 4A 6C 19 48 89 A8 9C E4 EE 1C 80 1A 88
|
|
|
|
|
0080 | 23 C2 5E E9 AF AA 33 9D B2 47 26 E7 B6 BF 65 D9
|
|
|
|
|
0090 | C8 60 64 BF 2A D6 87 CE 88 3C 7F CA ED 4C 3A 2B
|
|
|
|
|
00A0 | 37 8E 99 79 9D E7 A9 17 0E 1A 3B 58 EA 40 3A 3F
|
|
|
|
|
00B0 | 59 71 32 C2 F3 30 73 A4 11 AF 73 35 68 B7 E1 B0
|
|
|
|
|
00C0 | F8 AC 66 12 17 25 AE 83 55 FA 43 CB 63 E0 5D 6D
|
|
|
|
|
00D0 | 71 01 32 F4 33 6E B8 A0 CE 40 79 2D 13 FB AC B7
|
|
|
|
|
00E0 | E8 7F 3E 88 74 53 FF 42 23 01 D2 B4 EA AF 00 7D
|
|
|
|
|
00F0 | 9B E7 39 B9 20 C2 0F 48 55 51 13 6A CD A6 C9 43
|
|
|
|
|
0100 | 58 3A 15 8C 62 DE E5 AE CB DF CC 3F 88 F7 05 EB
|
|
|
|
|
0110 | 1F 35 01 93 AC E8 E0 07 AF 33 27 5A 04 89 BF 1F
|
|
|
|
|
0120 | FF 84 22 BE 9B 93 15 AC 79 16 01 66 F9 CF E9 6C
|
|
|
|
|
0130 | 97 1A B7 4F ED 0C DA C5 15 FC 7C BB 15 98 EB EB
|
|
|
|
|
0140 | CE CF 7E 65 00 10 6C 5B E4 FF B9 E2 CE A0 E4 E6
|
|
|
|
|
0150 | 51 A6 AD 52</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 = 12C744246DB1B024B109325CF2435DF3D3D31CA468726A81E9728DC78
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>1C870E0004B7AF66</code></td>
|
|
|
|
|
<td><code>5C860D0057C2AF66</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 = 12C744246DB1B024B109325CF2435DF3D3D31CA468726A81E9728DC78
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A43AFF1B9E83A6AD77D39BD7719C472B</code></td>
|
|
|
|
|
<td><code>11B9C28450811776D424CA45CDD03874</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>068868835665875FAD81E7F404B13449</code></td>
|
|
|
|
|
<td><code>460A42F7E89B5F4E9B131B626DCD4314</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>044813E5C5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1209263557</td>
|
|
|
|
|
<td><code>044DFD9ACD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1308465869</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>045A3A4CFF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1513770239</td>
|
|
|
|
|
<td><code>0465103D15000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1695563029</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 = 12C744246DB1B024B109325CF2435DF3D3D31CA468726A81E9728DC78
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE0001008CD25F4DD74619242B35C416</code> <code>C5A3AD500CB5EE17D812B972DB20D18F</code> <code>D89E696723422CAE29EBA4A5CAFA45F9</code> <code>DD48BD526C25CBA107C454AB8AB943A1</code> <code>65121C212B892EA9775D21A8940E2E05</code> <code>5C8FB7D4252DEFB311B5956F1063E78F</code> <code>CA8142A5113DA55DCCACDB1EC8F8DBA8</code> <code>FE31C197632FE11EBD84827EF4604D48</code> <code>DAF60DE1C68F3ABC0AAC4C8EC55AAA25</code> <code>EB33DAEC19EB9DE9E44E2899D5703A85</code> <code>20E1928BD7FBA0DB43F055899873FA5E</code> <code>3603A1C04EEFDE48BCE107E72A2A168F</code> <code>A4456F4E62029CD6140C7574E0CBD908</code> <code>2EE394EE2CB28CB7C3F388291FCE1E54</code> <code>E08766E3FCFB7737D789B8D88C0B1BF0</code> <code>9F47C33329334F0544895BDFC8E28F3D</code><br> <code>5484D9EC</code></td>
|
|
|
|
|
<td><code>FE00010066B4C08174C9A630BFE83A62</code> <code>5C4C34EF67D5B3096E5CBE9CD0944767</code> <code>6A7E3F4A6C194889A89CE4EE1C801A88</code> <code>23C25EE9AFAA339DB24726E7B6BF65D9</code> <code>C86064BF2AD687CE883C7FCAED4C3A2B</code> <code>378E99799DE7A9170E1A3B58EA403A3F</code> <code>597132C2F33073A411AF733568B7E1B0</code> <code>F8AC66121725AE8355FA43CB63E05D6D</code> <code>710132F4336EB8A0CE40792D13FBACB7</code> <code>E87F3E887453FF422301D2B4EAAF007D</code> <code>9BE739B920C20F485551136ACDA6C943</code> <code>583A158C62DEE5AECBDFCC3F88F705EB</code> <code>1F350193ACE8E007AF33275A0489BF1F</code> <code>FF8422BE9B9315AC79160166F9CFE96C</code> <code>971AB74FED0CDAC515FC7CBB1598EBEB</code> <code>CECF7E6500106C5BE4FFB9E2CEA0E4E6</code><br> <code>51A6AD52</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = 12C744246DB1B024B109325CF2435DF3D3D31CA468726A81E9728DC78
|
|
|
|
|
<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 B4 87 6A 05 B7 AF 66
|
|
|
|
|
0010 | A4 02 00 00 5C 07 E8 D0 A4 3A FF 1B 9E 83 A6 AD
|
|
|
|
|
0020 | 77 D3 9B D7 71 9C 47 2B 06 88 68 83 56 65 87 5F
|
|
|
|
|
0030 | AD 81 E7 F4 04 B1 34 49 FE 50 02 00 25 1F FB F5
|
|
|
|
|
0040 | 00 9F E9 70 75 2B 5D 65 85 05 D8 97 61 31 75 C4
|
|
|
|
|
0050 | 1B ED 03 95 21 EC 40 0D 27 10 B4 BE 97 CF A2 60
|
|
|
|
|
0060 | AF C7 80 EB 04 97 00 B4 D6 63 EC F5 84 15 88 6A
|
|
|
|
|
0070 | 96 64 38 10 E6 3C 89 51 59 53 99 9C AD FC 5B EC
|
|
|
|
|
0080 | A2 EF E9 D8 E7 5E 3F BE EF E4 29 DF FE 5A 5A 9A
|
|
|
|
|
0090 | 47 3E 18 35 64 A6 F9 04 5A FE EB 30 42 03 12 B8
|
|
|
|
|
00A0 | EE D7 51 4E C9 FB F3 D0 60 D8 2D F0 AA DB CA F1
|
|
|
|
|
00B0 | B6 26 58 F8 82 8D 0B CE 4D 08 6D 5F 2A 17 62 30
|
|
|
|
|
00C0 | E3 6C 3A 47 F0 27 7B 06 B1 13 AA 03 51 3F 90 64
|
|
|
|
|
00D0 | 5F F5 9C 24 6C A7 93 28 C9 94 7E AD BF 12 A8 2E
|
|
|
|
|
00E0 | 54 D3 D9 EB E8 ED A2 E8 DF 19 B3 BF 86 F5 27 03
|
|
|
|
|
00F0 | ED 4E 21 8A 06 06 9F F6 51 4B 83 11 68 6A 4D 8A
|
|
|
|
|
0100 | 45 81 B5 21 11 93 9A C8 72 79 2F C1 B1 AA 71 D9
|
|
|
|
|
0110 | 4F 4C FA 6D 32 A4 39 4E 8A 78 2B 09 6A D1 BC E9
|
|
|
|
|
0120 | 40 EF 77 35 22 44 65 1E 0A C7 1C AD 34 9C FD 56
|
|
|
|
|
0130 | EC 29 59 2F 78 04 AC 8E 1C 14 6B 22 F4 C8 81 55
|
|
|
|
|
0140 | F0 E0 B0 3B 2D 01 5F 32 9A B7 DF C1 05 47 FE C9
|
|
|
|
|
0150 | A9 0E F0 CD A9 BF 6D 26 B6 46 3A 73 B0 84 2B 5F
|
|
|
|
|
0160 | 46 DC 99 93 59 DA 38 C4 62 F8 46 5F A7 F4 E2 B2
|
|
|
|
|
0170 | 8F C4 2F 04 F9 3B 01 BF 67 74 F8 34 EA 9E 96 D8
|
|
|
|
|
0180 | 55 24 87 21 E1 2C E6 F5 1B 63 EB 19 14 73 4E 65
|
|
|
|
|
0190 | 17 37 15 23 AB 82 66 D0 FA DC E2 9F EF BD CE 17
|
|
|
|
|
01A0 | 64 82 26 7F D5 6A 4C C7 9A 00 5D D9 7D 0C 04 E7
|
|
|
|
|
01B0 | CF DF D3 1B AC 03 0E 19 72 54 00 6A F9 EE 7B 57
|
|
|
|
|
01C0 | A4 B1 6F C6 8F CC 26 B5 7F A1 4C A7 CB 9D 8B 7A
|
|
|
|
|
01D0 | A8 B5 5B 10 38 31 1B D7 40 A9 7A 18 2D 3B 75 57
|
|
|
|
|
01E0 | CF 17 00 B7 4A 98 92 7E 72 01 61 AD 78 A3 65 2D
|
|
|
|
|
01F0 | 95 E9 CE 07 AE 73 EC 9B D1 B6 EB 7A EA B2 88 63
|
|
|
|
|
0200 | 84 8A FC 16 4D A1 D6 E6 00 16 FB BC F4 0B 3A 38
|
|
|
|
|
0210 | 41 B8 C1 4D 98 88 BE F2 81 B8 25 E9 51 D4 93 E7
|
|
|
|
|
0220 | EF 09 BA 8E E7 DB 65 B6 D2 5A AC A2 75 19 86 0B
|
|
|
|
|
0230 | B7 F1 4E 63 77 A6 1C 14 96 88 22 59 2E BF 89 61
|
|
|
|
|
0240 | 84 5E 06 16 98 25 34 96 0E C8 FE 42 A3 BE 67 94
|
|
|
|
|
0250 | B4 CC 13 16 C6 48 8C A7 68 7E 04 2B 81 C5 14 E0
|
|
|
|
|
0260 | F6 7B 07 41 F7 CF 10 0F D1 A4 7F F8 7F 8C 2B E0
|
|
|
|
|
0270 | 25 4C A2 4C 70 95 FD 6D 26 78 F2 FB CB EF 49 D1
|
|
|
|
|
0280 | 43 12 18 95 B1 A5 FD 08 51 26 A2 E8</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 B8 1D 3E 58 C2 AF 66
|
|
|
|
|
0010 | F0 02 00 00 5C 07 E8 D0 11 B9 C2 84 50 81 17 76
|
|
|
|
|
0020 | D4 24 CA 45 CD D0 38 74 46 0A 42 F7 E8 9B 5F 4E
|
|
|
|
|
0030 | 9B 13 1B 62 6D CD 43 14 FE 50 02 00 EE BE 28 88
|
|
|
|
|
0040 | 0E AC F2 EB 57 DC E9 60 8F 51 DE 85 62 5E 9B 0A
|
|
|
|
|
0050 | FA B8 E0 BA 26 8F 29 E7 38 94 32 79 A8 15 73 84
|
|
|
|
|
0060 | ED A1 01 D2 4E 6B 2C 98 01 26 E2 60 F9 FF B6 02
|
|
|
|
|
0070 | 3B CB 27 18 20 0F BD 1F 78 A1 65 32 79 AD 19 C6
|
|
|
|
|
0080 | 2B CB 98 83 B2 EB 3B 13 BC A8 71 67 95 4D 70 54
|
|
|
|
|
0090 | AD EA 5A B9 36 D2 89 94 EC A1 4F AE 6E BF 21 B6
|
|
|
|
|
00A0 | 8E 73 78 08 59 29 74 F2 E3 EA EE 7D 5A ED 69 39
|
|
|
|
|
00B0 | C1 02 F1 6D C6 66 6F 51 79 32 93 0E F8 2A DD 90
|
|
|
|
|
00C0 | 48 45 D8 BB EB B8 F7 3A AC 3B 00 B3 81 5C AA 19
|
|
|
|
|
00D0 | C9 6A C7 C0 29 8E E0 CE BB FB B8 1C 06 6F 62 C6
|
|
|
|
|
00E0 | 03 0D AC 62 59 A7 E9 6D 9E 9C AF 50 D1 8A F2 37
|
|
|
|
|
00F0 | 21 56 77 D2 97 17 23 10 AA F5 62 CA 1C 50 BA 92
|
|
|
|
|
0100 | B1 7B B7 DD 61 4D 78 56 51 C2 7C B1 93 BC AD 7B
|
|
|
|
|
0110 | DA DC A3 71 29 28 9D C4 5F 3D D1 76 8F 18 9F 48
|
|
|
|
|
0120 | 7C 0D EB 8F 0D 72 EE F2 BC DF D2 38 C6 77 60 D1
|
|
|
|
|
0130 | A8 3B 4A 2D 2A D7 7A 36 40 73 5B B6 15 92 EF 46
|
|
|
|
|
0140 | 51 47 F2 E6 B7 0D EA 1C E3 68 6F CC 26 12 47 AC
|
|
|
|
|
0150 | 5D 9D F7 9F D2 E8 91 8D 04 C5 B6 5F 9C A9 70 D4
|
|
|
|
|
0160 | EB 55 E1 D5 BD 45 F9 9C 60 13 AC 5B 50 0E 3D C4
|
|
|
|
|
0170 | 6A 2C F8 DA 3D 99 03 24 D2 61 57 D1 8F 18 76 92
|
|
|
|
|
0180 | 31 21 3E E3 48 D8 91 59 E3 09 36 81 AC D6 A0 1E
|
|
|
|
|
0190 | 6D 23 04 C2 93 87 D0 1B E9 58 31 9D 85 21 95 74
|
|
|
|
|
01A0 | AF A3 EE B9 A3 AB EB 8E 73 61 65 93 75 57 35 BC
|
|
|
|
|
01B0 | 6E DB 81 49 EC 30 AC C5 37 37 3D 21 87 8A 6F 09
|
|
|
|
|
01C0 | 3E BA FA C5 2B 26 44 60 FF 1A 96 7E 37 A6 76 DC
|
|
|
|
|
01D0 | E8 44 CB 64 11 B5 B2 09 36 F0 4D 07 3D 04 6F 07
|
|
|
|
|
01E0 | 03 E1 3E FE 8A 99 60 53 20 61 50 85 D7 BF 77 A7
|
|
|
|
|
01F0 | 97 30 D3 45 0A 7A 83 3B E6 4D 05 14 35 34 F7 7F
|
|
|
|
|
0200 | 12 DF 8F 0E BF 68 9C 8C C8 27 15 02 13 C5 00 45
|
|
|
|
|
0210 | 35 01 0E 72 30 44 49 2D 5F 43 22 67 39 24 3D 62
|
|
|
|
|
0220 | 13 12 15 1E 90 C1 84 16 C0 14 05 5E BE A0 B9 96
|
|
|
|
|
0230 | 46 F4 E7 FB 07 6F 02 37 12 A1 64 8D 1B 72 99 9D
|
|
|
|
|
0240 | A7 36 79 C6 5A F6 87 C0 DC 31 BD A7 66 25 E2 08
|
|
|
|
|
0250 | AE 96 E3 5A 82 7F 2E 7B 4B 89 1D BE 2F 3C BE 45
|
|
|
|
|
0260 | EA 02 EC 9C 8C B2 5C 09 81 4E 9F FD 3A C8 12 10
|
|
|
|
|
0270 | 7D B8 75 21 FB 07 C2 B8 29 53 E2 4A F4 CC 5E C1
|
|
|
|
|
0280 | 3F 94 58 C2 D1 9D 44 0F 2D 76 D6 6B</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 = 12C744246DB1B024B109325CF2435DF3D3D31CA468726A81E9728DC78
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>01B4876A05B7AF66</code></td>
|
|
|
|
|
<td><code>01B81D3E58C2AF66</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>A4020000</code> (676 in decimal)</td>
|
|
|
|
|
<td><code>F0020000</code> (752 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -482,19 +482,19 @@ random_padding_bytes = 12C744246DB1B024B109325CF2435DF3D3D31CA468726A81E9728DC78
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A43AFF1B9E83A6AD77D39BD7719C472B</code></td>
|
|
|
|
|
<td><code>11B9C28450811776D424CA45CDD03874</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>068868835665875FAD81E7F404B13449</code></td>
|
|
|
|
|
<td><code>460A42F7E89B5F4E9B131B626DCD4314</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE500200251FFBF5009FE970752B5D65</code> <code>8505D897613175C41BED039521EC400D</code> <code>2710B4BE97CFA260AFC780EB049700B4</code> <code>D663ECF58415886A96643810E63C8951</code> <code>5953999CADFC5BECA2EFE9D8E75E3FBE</code> <code>EFE429DFFE5A5A9A473E183564A6F904</code> <code>5AFEEB30420312B8EED7514EC9FBF3D0</code> <code>60D82DF0AADBCAF1B62658F8828D0BCE</code> <code>4D086D5F2A176230E36C3A47F0277B06</code> <code>B113AA03513F90645FF59C246CA79328</code> <code>C9947EADBF12A82E54D3D9EBE8EDA2E8</code> <code>DF19B3BF86F52703ED4E218A06069FF6</code> <code>514B8311686A4D8A4581B52111939AC8</code> <code>72792FC1B1AA71D94F4CFA6D32A4394E</code> <code>8A782B096AD1BCE940EF77352244651E</code> <code>0AC71CAD349CFD56EC29592F7804AC8E</code> <code>1C146B22F4C88155F0E0B03B2D015F32</code> <code>9AB7DFC10547FEC9A90EF0CDA9BF6D26</code> <code>B6463A73B0842B5F46DC999359DA38C4</code> <code>62F8465FA7F4E2B28FC42F04F93B01BF</code> <code>6774F834EA9E96D855248721E12CE6F5</code> <code>1B63EB1914734E6517371523AB8266D0</code> <code>FADCE29FEFBDCE176482267FD56A4CC7</code> <code>9A005DD97D0C04E7CFDFD31BAC030E19</code> <code>7254006AF9EE7B57A4B16FC68FCC26B5</code> <code>7FA14CA7CB9D8B7AA8B55B1038311BD7</code> <code>40A97A182D3B7557CF1700B74A98927E</code> <code>720161AD78A3652D95E9CE07AE73EC9B</code> <code>D1B6EB7AEAB28863848AFC164DA1D6E6</code> <code>0016FBBCF40B3A3841B8C14D9888BEF2</code> <code>81B825E951D493E7EF09BA8EE7DB65B6</code> <code>D25AACA27519860BB7F14E6377A61C14</code> <code>968822592EBF8961845E061698253496</code> <code>0EC8FE42A3BE6794B4CC1316C6488CA7</code> <code>687E042B81C514E0F67B0741F7CF100F</code> <code>D1A47FF87F8C2BE0254CA24C7095FD6D</code> <code>2678F2FBCBEF49D143121895B1A5FD08</code><br> <code>5126A2E8</code></td>
|
|
|
|
|
<td><code>FE500200EEBE28880EACF2EB57DCE960</code> <code>8F51DE85625E9B0AFAB8E0BA268F29E7</code> <code>38943279A8157384EDA101D24E6B2C98</code> <code>0126E260F9FFB6023BCB2718200FBD1F</code> <code>78A1653279AD19C62BCB9883B2EB3B13</code> <code>BCA87167954D7054ADEA5AB936D28994</code> <code>ECA14FAE6EBF21B68E737808592974F2</code> <code>E3EAEE7D5AED6939C102F16DC6666F51</code> <code>7932930EF82ADD904845D8BBEBB8F73A</code> <code>AC3B00B3815CAA19C96AC7C0298EE0CE</code> <code>BBFBB81C066F62C6030DAC6259A7E96D</code> <code>9E9CAF50D18AF237215677D297172310</code> <code>AAF562CA1C50BA92B17BB7DD614D7856</code> <code>51C27CB193BCAD7BDADCA37129289DC4</code> <code>5F3DD1768F189F487C0DEB8F0D72EEF2</code> <code>BCDFD238C67760D1A83B4A2D2AD77A36</code> <code>40735BB61592EF465147F2E6B70DEA1C</code> <code>E3686FCC261247AC5D9DF79FD2E8918D</code> <code>04C5B65F9CA970D4EB55E1D5BD45F99C</code> <code>6013AC5B500E3DC46A2CF8DA3D990324</code> <code>D26157D18F18769231213EE348D89159</code> <code>E3093681ACD6A01E6D2304C29387D01B</code> <code>E958319D85219574AFA3EEB9A3ABEB8E</code> <code>73616593755735BC6EDB8149EC30ACC5</code> <code>37373D21878A6F093EBAFAC52B264460</code> <code>FF1A967E37A676DCE844CB6411B5B209</code> <code>36F04D073D046F0703E13EFE8A996053</code> <code>20615085D7BF77A79730D3450A7A833B</code> <code>E64D05143534F77F12DF8F0EBF689C8C</code> <code>C827150213C5004535010E723044492D</code> <code>5F43226739243D621312151E90C18416</code> <code>C014055EBEA0B99646F4E7FB076F0237</code> <code>12A1648D1B72999DA73679C65AF687C0</code> <code>DC31BDA76625E208AE96E35A827F2E7B</code> <code>4B891DBE2F3CBE45EA02EC9C8CB25C09</code> <code>814E9FFD3AC812107DB87521FB07C2B8</code> <code>2953E24AF4CC5EC13F9458C2D19D440F</code><br> <code>2D76D66B</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = 12C744246DB1B024B109325CF2435DF3D3D31CA468726A81E9728DC78
|
|
|
|
|
<!-- 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 = 251FFBF5009FE970752B5D658505D897613175C41BED039521EC400D2710B4BE97CFA260AFC780EB049700B4D663ECF58415886A96643810E63C89515953999CADFC5BECA2EFE9D8E75E3FBEEFE429DFFE5A5A9A473E183564A6F9045AFEEB30420312B8EED7514EC9FBF3D060D82DF0AADBCAF1B62658F8828D0BCE4D086D5F2A176230E36C3A47F0277B06B113AA03513F90645FF59C246CA79328C9947EADBF12A82E54D3D9EBE8EDA2E8DF19B3BF86F52703ED4E218A06069FF6514B8311686A4D8A4581B52111939AC872792FC1B1AA71D94F4CFA6D32A4394E8A782B096AD1BCE940EF77352244651E0AC71CAD349CFD56EC29592F7804AC8E1C146B22F4C88155F0E0B03B2D015F329AB7DFC10547FEC9A90EF0CDA9BF6D26B6463A73B0842B5F46DC999359DA38C462F8465FA7F4E2B28FC42F04F93B01BF6774F834EA9E96D855248721E12CE6F51B63EB1914734E6517371523AB8266D0FADCE29FEFBDCE176482267FD56A4CC79A005DD97D0C04E7CFDFD31BAC030E197254006AF9EE7B57A4B16FC68FCC26B57FA14CA7CB9D8B7AA8B55B1038311BD740A97A182D3B7557CF1700B74A98927E720161AD78A3652D95E9CE07AE73EC9BD1B6EB7AEAB28863848AFC164DA1D6E60016FBBCF40B3A3841B8C14D9888BEF281B825E951D493E7EF09BA8EE7DB65B6D25AACA27519860BB7F14E6377A61C14968822592EBF8961845E0616982534960EC8FE42A3BE6794B4CC1316C6488CA7687E042B81C514E0F67B0741F7CF100FD1A47FF87F8C2BE0254CA24C7095FD6D2678F2FBCBEF49D143121895B1A5FD085126A2E8
|
|
|
|
|
tmp_aes_key = EC4E12DCF054836B8BB7329AF7FF3962E001AD7C6C1A4B8F78FE7445AFE4DCB7
|
|
|
|
|
tmp_aes_iv = 7DAA180F4D9898201C4C4B2D6950ABDB7A100B485939BB757BAA364A8F7AF9FA</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = EEBE28880EACF2EB57DCE9608F51DE85625E9B0AFAB8E0BA268F29E738943279A8157384EDA101D24E6B2C980126E260F9FFB6023BCB2718200FBD1F78A1653279AD19C62BCB9883B2EB3B13BCA87167954D7054ADEA5AB936D28994ECA14FAE6EBF21B68E737808592974F2E3EAEE7D5AED6939C102F16DC6666F517932930EF82ADD904845D8BBEBB8F73AAC3B00B3815CAA19C96AC7C0298EE0CEBBFBB81C066F62C6030DAC6259A7E96D9E9CAF50D18AF237215677D297172310AAF562CA1C50BA92B17BB7DD614D785651C27CB193BCAD7BDADCA37129289DC45F3DD1768F189F487C0DEB8F0D72EEF2BCDFD238C67760D1A83B4A2D2AD77A3640735BB61592EF465147F2E6B70DEA1CE3686FCC261247AC5D9DF79FD2E8918D04C5B65F9CA970D4EB55E1D5BD45F99C6013AC5B500E3DC46A2CF8DA3D990324D26157D18F18769231213EE348D89159E3093681ACD6A01E6D2304C29387D01BE958319D85219574AFA3EEB9A3ABEB8E73616593755735BC6EDB8149EC30ACC537373D21878A6F093EBAFAC52B264460FF1A967E37A676DCE844CB6411B5B20936F04D073D046F0703E13EFE8A99605320615085D7BF77A79730D3450A7A833BE64D05143534F77F12DF8F0EBF689C8CC827150213C5004535010E723044492D5F43226739243D621312151E90C18416C014055EBEA0B99646F4E7FB076F023712A1648D1B72999DA73679C65AF687C0DC31BDA76625E208AE96E35A827F2E7B4B891DBE2F3CBE45EA02EC9C8CB25C09814E9FFD3AC812107DB87521FB07C2B82953E24AF4CC5EC13F9458C2D19D440F2D76D66B
|
|
|
|
|
tmp_aes_key = 1A1FED6F7BFBAF3F9F937DB0FADB2AE244441F2AA4B79FE561E76C94CCD0CC9A
|
|
|
|
|
tmp_aes_iv = DC2BB68E57BB645A96CF81879767AFC8AF52883C3B1971F7B5B3A0E5D1449466</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = 76A39DD764F19825531613C998AE0BEE0D2D4D0FBA0D89B5A43AFF1B9E83A6AD77D39BD7719C472B068868835665875FAD81E7F404B1344903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010015337FDEC8BE9D39D4A29944AFAE4E5DB213FF7941568835420B0944FEF4A64628FDB2E3D517CBDC78FE01543D279FDC8188384725503CE07A1B0CB5A59CA6F212B4214C234692CEEBF98E1A2B9BE30CE09B08298078C0740608D06C5CB07A6CBBE380011908ED935A37C8387F607C1085AF307523CE08ACC162A616C5370CA9429708261BA5992B27F3CC9E535A4745FA046B4924EFD25817C18866EBDDF2CB0D71479B46694A4155F3F5E5403251457CEB0FF793FAB4F252E4FEAEBC095C449277640C53CC6CC331EFA004E00F86144B26A062B361EC7DC28049186F48F093CE86036E2991E8BD07684595423717D2CC70D59F678116555F5C4459D24A1C6205B7AF663297B50D06E99A0A
|
|
|
|
|
answer = BA0D89B5A43AFF1B9E83A6AD77D39BD7719C472B068868835665875FAD81E7F404B1344903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010015337FDEC8BE9D39D4A29944AFAE4E5DB213FF7941568835420B0944FEF4A64628FDB2E3D517CBDC78FE01543D279FDC8188384725503CE07A1B0CB5A59CA6F212B4214C234692CEEBF98E1A2B9BE30CE09B08298078C0740608D06C5CB07A6CBBE380011908ED935A37C8387F607C1085AF307523CE08ACC162A616C5370CA9429708261BA5992B27F3CC9E535A4745FA046B4924EFD25817C18866EBDDF2CB0D71479B46694A4155F3F5E5403251457CEB0FF793FAB4F252E4FEAEBC095C449277640C53CC6CC331EFA004E00F86144B26A062B361EC7DC28049186F48F093CE86036E2991E8BD07684595423717D2CC70D59F678116555F5C4459D24A1C6205B7AF663297B50D06E99A0A</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = B475F96199BF36A3B95731308F7DC78B7B7C6988BA0D89B511B9C28450811776D424CA45CDD03874460A42F7E89B5F4E9B131B626DCD431403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001003BD926F73D68817843BFC4963D3B97C0CACFC97C270F89E781C71F19E4C46FF8D52D5CF329BADEC610B27A80641E4D9E05CE8A04ACC5A1818DF53222A59931D182D87CEC135B53D3A2E6989B65B6DA1B258662D01054CF4BE2EFD19B85D9856D5A2C763AF0126883063A23D21C90A9434E7B6C0DA56033E6BB2DFE83A6E3D6BC018FEF853C2685AA4872BFC0C93BC4438D096C4A8E6A7DB880DAB669EC56A947B9C2782BAEA78F580FE97DB88B18CBEF0FB0BD4DFFAA074B7B86A99CF12E2E7716B03443D9BAB7D2B9AE1543AC158DEE559EC4C961BF9562791020F6E137E827E0D57372D97E3240844B6E592877DD31BC81B0A5F356564A5A5832F6285D52E058C2AF66E970BF0B9F3B0E20
|
|
|
|
|
answer = BA0D89B511B9C28450811776D424CA45CDD03874460A42F7E89B5F4E9B131B626DCD431403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001003BD926F73D68817843BFC4963D3B97C0CACFC97C270F89E781C71F19E4C46FF8D52D5CF329BADEC610B27A80641E4D9E05CE8A04ACC5A1818DF53222A59931D182D87CEC135B53D3A2E6989B65B6DA1B258662D01054CF4BE2EFD19B85D9856D5A2C763AF0126883063A23D21C90A9434E7B6C0DA56033E6BB2DFE83A6E3D6BC018FEF853C2685AA4872BFC0C93BC4438D096C4A8E6A7DB880DAB669EC56A947B9C2782BAEA78F580FE97DB88B18CBEF0FB0BD4DFFAA074B7B86A99CF12E2E7716B03443D9BAB7D2B9AE1543AC158DEE559EC4C961BF9562791020F6E137E827E0D57372D97E3240844B6E592877DD31BC81B0A5F356564A5A5832F6285D52E058C2AF66E970BF0B9F3B0E20</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 A4 3A FF 1B 9E 83 A6 AD 77 D3 9B D7
|
|
|
|
|
0010 | 71 9C 47 2B 06 88 68 83 56 65 87 5F AD 81 E7 F4
|
|
|
|
|
0020 | 04 B1 34 49 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 11 B9 C2 84 50 81 17 76 D4 24 CA 45
|
|
|
|
|
0010 | CD D0 38 74 46 0A 42 F7 E8 9B 5F 4E 9B 13 1B 62
|
|
|
|
|
0020 | 6D CD 43 14 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 = BA0D89B5A43AFF1B9E83A6AD77D39BD7719C472B068868835665875FAD81E7F404B1344
|
|
|
|
|
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 | 15 33 7F DE C8 BE 9D 39 D4 A2 99 44 AF AE 4E 5D
|
|
|
|
|
0140 | B2 13 FF 79 41 56 88 35 42 0B 09 44 FE F4 A6 46
|
|
|
|
|
0150 | 28 FD B2 E3 D5 17 CB DC 78 FE 01 54 3D 27 9F DC
|
|
|
|
|
0160 | 81 88 38 47 25 50 3C E0 7A 1B 0C B5 A5 9C A6 F2
|
|
|
|
|
0170 | 12 B4 21 4C 23 46 92 CE EB F9 8E 1A 2B 9B E3 0C
|
|
|
|
|
0180 | E0 9B 08 29 80 78 C0 74 06 08 D0 6C 5C B0 7A 6C
|
|
|
|
|
0190 | BB E3 80 01 19 08 ED 93 5A 37 C8 38 7F 60 7C 10
|
|
|
|
|
01A0 | 85 AF 30 75 23 CE 08 AC C1 62 A6 16 C5 37 0C A9
|
|
|
|
|
01B0 | 42 97 08 26 1B A5 99 2B 27 F3 CC 9E 53 5A 47 45
|
|
|
|
|
01C0 | FA 04 6B 49 24 EF D2 58 17 C1 88 66 EB DD F2 CB
|
|
|
|
|
01D0 | 0D 71 47 9B 46 69 4A 41 55 F3 F5 E5 40 32 51 45
|
|
|
|
|
01E0 | 7C EB 0F F7 93 FA B4 F2 52 E4 FE AE BC 09 5C 44
|
|
|
|
|
01F0 | 92 77 64 0C 53 CC 6C C3 31 EF A0 04 E0 0F 86 14
|
|
|
|
|
0200 | 4B 26 A0 62 B3 61 EC 7D C2 80 49 18 6F 48 F0 93
|
|
|
|
|
0210 | CE 86 03 6E 29 91 E8 BD 07 68 45 95 42 37 17 D2
|
|
|
|
|
0220 | CC 70 D5 9F 67 81 16 55 5F 5C 44 59 D2 4A 1C 62
|
|
|
|
|
0230 | 05 B7 AF 66</code></pre>
|
|
|
|
|
0130 | 3B D9 26 F7 3D 68 81 78 43 BF C4 96 3D 3B 97 C0
|
|
|
|
|
0140 | CA CF C9 7C 27 0F 89 E7 81 C7 1F 19 E4 C4 6F F8
|
|
|
|
|
0150 | D5 2D 5C F3 29 BA DE C6 10 B2 7A 80 64 1E 4D 9E
|
|
|
|
|
0160 | 05 CE 8A 04 AC C5 A1 81 8D F5 32 22 A5 99 31 D1
|
|
|
|
|
0170 | 82 D8 7C EC 13 5B 53 D3 A2 E6 98 9B 65 B6 DA 1B
|
|
|
|
|
0180 | 25 86 62 D0 10 54 CF 4B E2 EF D1 9B 85 D9 85 6D
|
|
|
|
|
0190 | 5A 2C 76 3A F0 12 68 83 06 3A 23 D2 1C 90 A9 43
|
|
|
|
|
01A0 | 4E 7B 6C 0D A5 60 33 E6 BB 2D FE 83 A6 E3 D6 BC
|
|
|
|
|
01B0 | 01 8F EF 85 3C 26 85 AA 48 72 BF C0 C9 3B C4 43
|
|
|
|
|
01C0 | 8D 09 6C 4A 8E 6A 7D B8 80 DA B6 69 EC 56 A9 47
|
|
|
|
|
01D0 | B9 C2 78 2B AE A7 8F 58 0F E9 7D B8 8B 18 CB EF
|
|
|
|
|
01E0 | 0F B0 BD 4D FF AA 07 4B 7B 86 A9 9C F1 2E 2E 77
|
|
|
|
|
01F0 | 16 B0 34 43 D9 BA B7 D2 B9 AE 15 43 AC 15 8D EE
|
|
|
|
|
0200 | 55 9E C4 C9 61 BF 95 62 79 10 20 F6 E1 37 E8 27
|
|
|
|
|
0210 | E0 D5 73 72 D9 7E 32 40 84 4B 6E 59 28 77 DD 31
|
|
|
|
|
0220 | BC 81 B0 A5 F3 56 56 4A 5A 58 32 F6 28 5D 52 E0
|
|
|
|
|
0230 | 58 C2 AF 66</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 = BA0D89B5A43AFF1B9E83A6AD77D39BD7719C472B068868835665875FAD81E7F404B1344
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>A43AFF1B9E83A6AD77D39BD7719C472B</code></td>
|
|
|
|
|
<td><code>11B9C28450811776D424CA45CDD03874</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>068868835665875FAD81E7F404B13449</code></td>
|
|
|
|
|
<td><code>460A42F7E89B5F4E9B131B626DCD4314</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B5A43AFF1B9E83A6AD77D39BD7719C472B068868835665875FAD81E7F404B1344
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE00010015337FDEC8BE9D39D4A29944</code> <code>AFAE4E5DB213FF7941568835420B0944</code> <code>FEF4A64628FDB2E3D517CBDC78FE0154</code> <code>3D279FDC8188384725503CE07A1B0CB5</code> <code>A59CA6F212B4214C234692CEEBF98E1A</code> <code>2B9BE30CE09B08298078C0740608D06C</code> <code>5CB07A6CBBE380011908ED935A37C838</code> <code>7F607C1085AF307523CE08ACC162A616</code> <code>C5370CA9429708261BA5992B27F3CC9E</code> <code>535A4745FA046B4924EFD25817C18866</code> <code>EBDDF2CB0D71479B46694A4155F3F5E5</code> <code>403251457CEB0FF793FAB4F252E4FEAE</code> <code>BC095C449277640C53CC6CC331EFA004</code> <code>E00F86144B26A062B361EC7DC2804918</code> <code>6F48F093CE86036E2991E8BD07684595</code> <code>423717D2CC70D59F678116555F5C4459</code><br> <code>D24A1C62</code></td>
|
|
|
|
|
<td><code>FE0001003BD926F73D68817843BFC496</code> <code>3D3B97C0CACFC97C270F89E781C71F19</code> <code>E4C46FF8D52D5CF329BADEC610B27A80</code> <code>641E4D9E05CE8A04ACC5A1818DF53222</code> <code>A59931D182D87CEC135B53D3A2E6989B</code> <code>65B6DA1B258662D01054CF4BE2EFD19B</code> <code>85D9856D5A2C763AF0126883063A23D2</code> <code>1C90A9434E7B6C0DA56033E6BB2DFE83</code> <code>A6E3D6BC018FEF853C2685AA4872BFC0</code> <code>C93BC4438D096C4A8E6A7DB880DAB669</code> <code>EC56A947B9C2782BAEA78F580FE97DB8</code> <code>8B18CBEF0FB0BD4DFFAA074B7B86A99C</code> <code>F12E2E7716B03443D9BAB7D2B9AE1543</code> <code>AC158DEE559EC4C961BF9562791020F6</code> <code>E137E827E0D57372D97E3240844B6E59</code> <code>2877DD31BC81B0A5F356564A5A5832F6</code><br> <code>285D52E0</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>05B7AF66</code> (1722791685 in decimal)</td>
|
|
|
|
|
<td><code>58C2AF66</code> (1722794584 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B5A43AFF1B9E83A6AD77D39BD7719C472B068868835665875FAD81E7F404B1344
|
|
|
|
|
<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 = 372FF6CC59083F34C934EE5CC3060E32A7EA4A681661FF905290A4C768E8BCA7A45F741BFA32A30D1315583D6BA8559D61AFC022EEFB9B535983E86CFF8D3DE1C2EAC6AA4D890C059B503D412C53D7119F9998735A0270DAE4908836CF90F1CCBFC4AE17F67CA39D00CE52D50AA86CD3DB8E7833F70D090ACFBBC7F57234CACEF23288326BAA2E2A25A650B2F5E1D8E80BC44DE80B7CDC8E81C04E46D395C3F0F1E9F69439AE1FDF404693141C6B39118B73B2754BA4286A39930D97311EB9A0545C928B09EB3688F5811C2CAF1D51240A602FD206B25B8D20302CFB1CF3762E2F1C0527553A1503EF410B84DEF237078E1E199A915A2418AB8ED0432D5387F8</code></pre>
|
|
|
|
|
<pre><code>b = F28C0CCF5F5938919943588FADD6370D14E58BC4FF7CF896091C68F4C201ED022F7E0056611EA0A29E7953333B56DB1BF033F51905479825BB2F8353C35A4024202779479FDE54C341344F71B3729026BCD33DD044405F0C38E04F36737305E98209E432E3DD00EC0D5EA8DA3885BAD711BCBFE50EF93B8B71C2DD37627DDE47FF1AD06330F43CB5BC93F287B5E570A54B356460CCA6365543FD73324A7863CDA2C6EF5D06A88C1ECA211075AEAB4B5DC4D2C037442B558CAEA10008DC583C559D114DA2DD7D6ED583FA93764947B0B14E8D8BAD4EDE77CA1FCCE5DA7170CB67AC9F080FFE7B33732BBA68A6230AD1E504506E47CEECC4BAB8EC45478F06D247</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 = B5FC4DEFF51E8FBD6F96E8419F9BDD1D9A4BE8FF1D743AA75A4DDC4E507CBAC01C922E0FAB1D64B499418323D43B0C59337AC7DF54F6B4A684D799369C7A7DBE576E953CA03232BE34D697A07A26ED4E8D1EE2FAA18E7344FD7880839576A7E2036378F1C10E83E1EB4674D1BC2ED35F0C3CBB2D9341044EDCF9512946CC1453C0A0870B75FD0F129C6AA87C1D8AC4FA0E9652300368C6D9BF9B0376E2D613656E274AD02B516F40D66B6698C4EF10C1A0BFD328838CB73EA37EBF065E45F4656D710212F26209282E7881227774DFAFDCACEE9B40BC8BA6BD28B67206B4BDD2A911900E4B25F897CFABE6FB3C32D7AC3C46047F40760ED42F44C17393A10E33</code></pre>
|
|
|
|
|
<pre><code>g_b = 1DF4FC94AADE7F83CA2A60697350FB28BD0C574CC4FB74264A4C435D5C2011AC914839A95FE8451DBE8E3201F904465D99E72B0D072E4BE4D1461452B3521ADED3E957ECABA6252FFBA6FC72F7838AF3B2CE79FABC4E9F8943A6FB848A86818107D4E15720B3059ABDF3D1E594B14F9329ADA57A898E2818FB8974B81D6AABC22E3AFECA6224329C4EA74754063502098161D57D5A364FF643585A0F1B0BAAEDDFD69388740AF5D0DB8D735256955EBC1BAAE4CF1CF14EAB5E801280A0996BA62B6496D040689C86FD0B61FB2C35DE6061A8BE27073F26B865837DC3C224C7DB42BF1ACE8E4E883FAFF8770B1F3A09AF485071BC06B12AFD6B6F57989A3B3582</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 A4 3A FF 1B 9E 83 A6 AD 77 D3 9B D7
|
|
|
|
|
0010 | 71 9C 47 2B 06 88 68 83 56 65 87 5F AD 81 E7 F4
|
|
|
|
|
0020 | 04 B1 34 49 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | B5 FC 4D EF F5 1E 8F BD 6F 96 E8 41 9F 9B DD 1D
|
|
|
|
|
0040 | 9A 4B E8 FF 1D 74 3A A7 5A 4D DC 4E 50 7C BA C0
|
|
|
|
|
0050 | 1C 92 2E 0F AB 1D 64 B4 99 41 83 23 D4 3B 0C 59
|
|
|
|
|
0060 | 33 7A C7 DF 54 F6 B4 A6 84 D7 99 36 9C 7A 7D BE
|
|
|
|
|
0070 | 57 6E 95 3C A0 32 32 BE 34 D6 97 A0 7A 26 ED 4E
|
|
|
|
|
0080 | 8D 1E E2 FA A1 8E 73 44 FD 78 80 83 95 76 A7 E2
|
|
|
|
|
0090 | 03 63 78 F1 C1 0E 83 E1 EB 46 74 D1 BC 2E D3 5F
|
|
|
|
|
00A0 | 0C 3C BB 2D 93 41 04 4E DC F9 51 29 46 CC 14 53
|
|
|
|
|
00B0 | C0 A0 87 0B 75 FD 0F 12 9C 6A A8 7C 1D 8A C4 FA
|
|
|
|
|
00C0 | 0E 96 52 30 03 68 C6 D9 BF 9B 03 76 E2 D6 13 65
|
|
|
|
|
00D0 | 6E 27 4A D0 2B 51 6F 40 D6 6B 66 98 C4 EF 10 C1
|
|
|
|
|
00E0 | A0 BF D3 28 83 8C B7 3E A3 7E BF 06 5E 45 F4 65
|
|
|
|
|
00F0 | 6D 71 02 12 F2 62 09 28 2E 78 81 22 77 74 DF AF
|
|
|
|
|
0100 | DC AC EE 9B 40 BC 8B A6 BD 28 B6 72 06 B4 BD D2
|
|
|
|
|
0110 | A9 11 90 0E 4B 25 F8 97 CF AB E6 FB 3C 32 D7 AC
|
|
|
|
|
0120 | 3C 46 04 7F 40 76 0E D4 2F 44 C1 73 93 A1 0E 33</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 11 B9 C2 84 50 81 17 76 D4 24 CA 45
|
|
|
|
|
0010 | CD D0 38 74 46 0A 42 F7 E8 9B 5F 4E 9B 13 1B 62
|
|
|
|
|
0020 | 6D CD 43 14 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 1D F4 FC 94 AA DE 7F 83 CA 2A 60 69 73 50 FB 28
|
|
|
|
|
0040 | BD 0C 57 4C C4 FB 74 26 4A 4C 43 5D 5C 20 11 AC
|
|
|
|
|
0050 | 91 48 39 A9 5F E8 45 1D BE 8E 32 01 F9 04 46 5D
|
|
|
|
|
0060 | 99 E7 2B 0D 07 2E 4B E4 D1 46 14 52 B3 52 1A DE
|
|
|
|
|
0070 | D3 E9 57 EC AB A6 25 2F FB A6 FC 72 F7 83 8A F3
|
|
|
|
|
0080 | B2 CE 79 FA BC 4E 9F 89 43 A6 FB 84 8A 86 81 81
|
|
|
|
|
0090 | 07 D4 E1 57 20 B3 05 9A BD F3 D1 E5 94 B1 4F 93
|
|
|
|
|
00A0 | 29 AD A5 7A 89 8E 28 18 FB 89 74 B8 1D 6A AB C2
|
|
|
|
|
00B0 | 2E 3A FE CA 62 24 32 9C 4E A7 47 54 06 35 02 09
|
|
|
|
|
00C0 | 81 61 D5 7D 5A 36 4F F6 43 58 5A 0F 1B 0B AA ED
|
|
|
|
|
00D0 | DF D6 93 88 74 0A F5 D0 DB 8D 73 52 56 95 5E BC
|
|
|
|
|
00E0 | 1B AA E4 CF 1C F1 4E AB 5E 80 12 80 A0 99 6B A6
|
|
|
|
|
00F0 | 2B 64 96 D0 40 68 9C 86 FD 0B 61 FB 2C 35 DE 60
|
|
|
|
|
0100 | 61 A8 BE 27 07 3F 26 B8 65 83 7D C3 C2 24 C7 DB
|
|
|
|
|
0110 | 42 BF 1A CE 8E 4E 88 3F AF F8 77 0B 1F 3A 09 AF
|
|
|
|
|
0120 | 48 50 71 BC 06 B1 2A FD 6B 6F 57 98 9A 3B 35 82</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 = BA0D89B5A43AFF1B9E83A6AD77D39BD7719C472B068868835665875FAD81E7F404B1344
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>A43AFF1B9E83A6AD77D39BD7719C472B</code></td>
|
|
|
|
|
<td><code>11B9C28450811776D424CA45CDD03874</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>068868835665875FAD81E7F404B13449</code></td>
|
|
|
|
|
<td><code>460A42F7E89B5F4E9B131B626DCD4314</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FE000100B5FC4DEFF51E8FBD6F96E841</code> <code>9F9BDD1D9A4BE8FF1D743AA75A4DDC4E</code> <code>507CBAC01C922E0FAB1D64B499418323</code> <code>D43B0C59337AC7DF54F6B4A684D79936</code> <code>9C7A7DBE576E953CA03232BE34D697A0</code> <code>7A26ED4E8D1EE2FAA18E7344FD788083</code> <code>9576A7E2036378F1C10E83E1EB4674D1</code> <code>BC2ED35F0C3CBB2D9341044EDCF95129</code> <code>46CC1453C0A0870B75FD0F129C6AA87C</code> <code>1D8AC4FA0E9652300368C6D9BF9B0376</code> <code>E2D613656E274AD02B516F40D66B6698</code> <code>C4EF10C1A0BFD328838CB73EA37EBF06</code> <code>5E45F4656D710212F26209282E788122</code> <code>7774DFAFDCACEE9B40BC8BA6BD28B672</code> <code>06B4BDD2A911900E4B25F897CFABE6FB</code> <code>3C32D7AC3C46047F40760ED42F44C173</code><br> <code>93A10E33</code></td>
|
|
|
|
|
<td><code>FE0001001DF4FC94AADE7F83CA2A6069</code> <code>7350FB28BD0C574CC4FB74264A4C435D</code> <code>5C2011AC914839A95FE8451DBE8E3201</code> <code>F904465D99E72B0D072E4BE4D1461452</code> <code>B3521ADED3E957ECABA6252FFBA6FC72</code> <code>F7838AF3B2CE79FABC4E9F8943A6FB84</code> <code>8A86818107D4E15720B3059ABDF3D1E5</code> <code>94B14F9329ADA57A898E2818FB8974B8</code> <code>1D6AABC22E3AFECA6224329C4EA74754</code> <code>063502098161D57D5A364FF643585A0F</code> <code>1B0BAAEDDFD69388740AF5D0DB8D7352</code> <code>56955EBC1BAAE4CF1CF14EAB5E801280</code> <code>A0996BA62B6496D040689C86FD0B61FB</code> <code>2C35DE6061A8BE27073F26B865837DC3</code> <code>C224C7DB42BF1ACE8E4E883FAFF8770B</code> <code>1F3A09AF485071BC06B12AFD6B6F5798</code><br> <code>9A3B3582</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 = BA0D89B5A43AFF1B9E83A6AD77D39BD7719C472B068868835665875FAD81E7F404B1344
|
|
|
|
|
<!-- 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 = 54B64366A43AFF1B9E83A6AD77D39BD7719C472B068868835665875FAD81E7F404B134490000000000000000FE000100B5FC4DEFF51E8FBD6F96E8419F9BDD1D9A4BE8FF1D743AA75A4DDC4E507CBAC01C922E0FAB1D64B499418323D43B0C59337AC7DF54F6B4A684D799369C7A7DBE576E953CA03232BE34D697A07A26ED4E8D1EE2FAA18E7344FD7880839576A7E2036378F1C10E83E1EB4674D1BC2ED35F0C3CBB2D9341044EDCF9512946CC1453C0A0870B75FD0F129C6AA87C1D8AC4FA0E9652300368C6D9BF9B0376E2D613656E274AD02B516F40D66B6698C4EF10C1A0BFD328838CB73EA37EBF065E45F4656D710212F26209282E7881227774DFAFDCACEE9B40BC8BA6BD28B67206B4BDD2A911900E4B25F897CFABE6FB3C32D7AC3C46047F40760ED42F44C17393A10E33
|
|
|
|
|
padding = 599F61580D6D95D0338CA2D6
|
|
|
|
|
tmp_aes_key = EC4E12DCF054836B8BB7329AF7FF3962E001AD7C6C1A4B8F78FE7445AFE4DCB7
|
|
|
|
|
tmp_aes_iv = 7DAA180F4D9898201C4C4B2D6950ABDB7A100B485939BB757BAA364A8F7AF9FA</code></pre>
|
|
|
|
|
<pre><code>data = 54B6436611B9C28450811776D424CA45CDD03874460A42F7E89B5F4E9B131B626DCD43140000000000000000FE0001001DF4FC94AADE7F83CA2A60697350FB28BD0C574CC4FB74264A4C435D5C2011AC914839A95FE8451DBE8E3201F904465D99E72B0D072E4BE4D1461452B3521ADED3E957ECABA6252FFBA6FC72F7838AF3B2CE79FABC4E9F8943A6FB848A86818107D4E15720B3059ABDF3D1E594B14F9329ADA57A898E2818FB8974B81D6AABC22E3AFECA6224329C4EA74754063502098161D57D5A364FF643585A0F1B0BAAEDDFD69388740AF5D0DB8D735256955EBC1BAAE4CF1CF14EAB5E801280A0996BA62B6496D040689C86FD0B61FB2C35DE6061A8BE27073F26B865837DC3C224C7DB42BF1ACE8E4E883FAFF8770B1F3A09AF485071BC06B12AFD6B6F57989A3B3582
|
|
|
|
|
padding = E9C4D2B19A570E24FA7B42EF
|
|
|
|
|
tmp_aes_key = 1A1FED6F7BFBAF3F9F937DB0FADB2AE244441F2AA4B79FE561E76C94CCD0CC9A
|
|
|
|
|
tmp_aes_iv = DC2BB68E57BB645A96CF81879767AFC8AF52883C3B1971F7B5B3A0E5D1449466</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 = AF5BCCB6310F4BF0DCA7091B014254CE3234FEEC5D368E414C6835C0D754A71426A88F5A4702CAECE62783EB2AB6B5639612A98D9E7EE1FA2E1162AC79682C7B5648E45EC592A6B7FF7AF6D153D41F678B8DFE2AF9AE5A705C3640C5D4751AD94400B5FE46E4149136A0DDA34863A8F37D705483FD72A499C82FC6B6F469D7BD0941907F035802DDFA1A50904A63F3506E4C8BF7BCD886DCBC812FDF1F12ABCBE3827EDEEB051C278ABC4443B781F51FCC6EE4B395FD6F70E0B714B8561C0D405D7FCBE6227B5BCB7DE08DFE1A4C5DD0B362AD8E79A48145BF4BE1D65090C4965727C658E35DF7AA8D24F1621D3F6DEF8F044BDACF6121E65048D950235B8FACB4AAE5505FA664E7F3308F402F0F54AC2774B2D12D067C71437D3DDDF74073E92473FB1FE6562BCEB90B0BF2ECE8C01DE54C887EEA93F10A25B7970E67682713A4D566EEC59493A17BC96C447EF0EA27</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = C9B1B0550BC9E68CD811FCFBA555E4C457342DF4F81D14F1C8DD8385AE71AB272594173139DA637AE60E834F45ED18C8B1269B81387A22F1BA015E7A63A403E22FB5DA641D6116B8945ADF0DC5AADC86370E4A7CBE65208FFDB4F84A806FEB290E72D671D58FD7635CF86DE5ABA024DDFC84E7B28456E20D73B8F7BAA1C868E1F6EF3F1B592392E0B364BE3400786CCD9D7955EFD970732B22375C246CFB419D3E5684A1BC926E9787A4027690919793794D2501052D017143495443312BA12AC75B2992A76A165E38D008CF38BFF491FA383D384BC4FFC7DD274ED904A68DBD4B23CD4F1C78238BBC429C420AA0AA3A3B3AAA3C41E75125987CEDC5741DB76E95C5D2BB2F62AD79F97CC2EB7A6130EF6A1264B1E8270E22AA6EAE72B4EDCAC0422E40402D67ECF5445585462D49B70F47725E2CC7857055487675062C343A2463E3C26042C1F74DC57B5D40F043F960</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 4C 38 05 00 05 B7 AF 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 A4 3A FF 1B 9E 83 A6 AD
|
|
|
|
|
0020 | 77 D3 9B D7 71 9C 47 2B 06 88 68 83 56 65 87 5F
|
|
|
|
|
0030 | AD 81 E7 F4 04 B1 34 49 FE 50 01 00 AF 5B CC B6
|
|
|
|
|
0040 | 31 0F 4B F0 DC A7 09 1B 01 42 54 CE 32 34 FE EC
|
|
|
|
|
0050 | 5D 36 8E 41 4C 68 35 C0 D7 54 A7 14 26 A8 8F 5A
|
|
|
|
|
0060 | 47 02 CA EC E6 27 83 EB 2A B6 B5 63 96 12 A9 8D
|
|
|
|
|
0070 | 9E 7E E1 FA 2E 11 62 AC 79 68 2C 7B 56 48 E4 5E
|
|
|
|
|
0080 | C5 92 A6 B7 FF 7A F6 D1 53 D4 1F 67 8B 8D FE 2A
|
|
|
|
|
0090 | F9 AE 5A 70 5C 36 40 C5 D4 75 1A D9 44 00 B5 FE
|
|
|
|
|
00A0 | 46 E4 14 91 36 A0 DD A3 48 63 A8 F3 7D 70 54 83
|
|
|
|
|
00B0 | FD 72 A4 99 C8 2F C6 B6 F4 69 D7 BD 09 41 90 7F
|
|
|
|
|
00C0 | 03 58 02 DD FA 1A 50 90 4A 63 F3 50 6E 4C 8B F7
|
|
|
|
|
00D0 | BC D8 86 DC BC 81 2F DF 1F 12 AB CB E3 82 7E DE
|
|
|
|
|
00E0 | EB 05 1C 27 8A BC 44 43 B7 81 F5 1F CC 6E E4 B3
|
|
|
|
|
00F0 | 95 FD 6F 70 E0 B7 14 B8 56 1C 0D 40 5D 7F CB E6
|
|
|
|
|
0100 | 22 7B 5B CB 7D E0 8D FE 1A 4C 5D D0 B3 62 AD 8E
|
|
|
|
|
0110 | 79 A4 81 45 BF 4B E1 D6 50 90 C4 96 57 27 C6 58
|
|
|
|
|
0120 | E3 5D F7 AA 8D 24 F1 62 1D 3F 6D EF 8F 04 4B DA
|
|
|
|
|
0130 | CF 61 21 E6 50 48 D9 50 23 5B 8F AC B4 AA E5 50
|
|
|
|
|
0140 | 5F A6 64 E7 F3 30 8F 40 2F 0F 54 AC 27 74 B2 D1
|
|
|
|
|
0150 | 2D 06 7C 71 43 7D 3D DD F7 40 73 E9 24 73 FB 1F
|
|
|
|
|
0160 | E6 56 2B CE B9 0B 0B F2 EC E8 C0 1D E5 4C 88 7E
|
|
|
|
|
0170 | EA 93 F1 0A 25 B7 97 0E 67 68 27 13 A4 D5 66 EE
|
|
|
|
|
0180 | C5 94 93 A1 7B C9 6C 44 7E F0 EA 27</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 B4 8B 0C 00 58 C2 AF 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 11 B9 C2 84 50 81 17 76
|
|
|
|
|
0020 | D4 24 CA 45 CD D0 38 74 46 0A 42 F7 E8 9B 5F 4E
|
|
|
|
|
0030 | 9B 13 1B 62 6D CD 43 14 FE 50 01 00 C9 B1 B0 55
|
|
|
|
|
0040 | 0B C9 E6 8C D8 11 FC FB A5 55 E4 C4 57 34 2D F4
|
|
|
|
|
0050 | F8 1D 14 F1 C8 DD 83 85 AE 71 AB 27 25 94 17 31
|
|
|
|
|
0060 | 39 DA 63 7A E6 0E 83 4F 45 ED 18 C8 B1 26 9B 81
|
|
|
|
|
0070 | 38 7A 22 F1 BA 01 5E 7A 63 A4 03 E2 2F B5 DA 64
|
|
|
|
|
0080 | 1D 61 16 B8 94 5A DF 0D C5 AA DC 86 37 0E 4A 7C
|
|
|
|
|
0090 | BE 65 20 8F FD B4 F8 4A 80 6F EB 29 0E 72 D6 71
|
|
|
|
|
00A0 | D5 8F D7 63 5C F8 6D E5 AB A0 24 DD FC 84 E7 B2
|
|
|
|
|
00B0 | 84 56 E2 0D 73 B8 F7 BA A1 C8 68 E1 F6 EF 3F 1B
|
|
|
|
|
00C0 | 59 23 92 E0 B3 64 BE 34 00 78 6C CD 9D 79 55 EF
|
|
|
|
|
00D0 | D9 70 73 2B 22 37 5C 24 6C FB 41 9D 3E 56 84 A1
|
|
|
|
|
00E0 | BC 92 6E 97 87 A4 02 76 90 91 97 93 79 4D 25 01
|
|
|
|
|
00F0 | 05 2D 01 71 43 49 54 43 31 2B A1 2A C7 5B 29 92
|
|
|
|
|
0100 | A7 6A 16 5E 38 D0 08 CF 38 BF F4 91 FA 38 3D 38
|
|
|
|
|
0110 | 4B C4 FF C7 DD 27 4E D9 04 A6 8D BD 4B 23 CD 4F
|
|
|
|
|
0120 | 1C 78 23 8B BC 42 9C 42 0A A0 AA 3A 3B 3A AA 3C
|
|
|
|
|
0130 | 41 E7 51 25 98 7C ED C5 74 1D B7 6E 95 C5 D2 BB
|
|
|
|
|
0140 | 2F 62 AD 79 F9 7C C2 EB 7A 61 30 EF 6A 12 64 B1
|
|
|
|
|
0150 | E8 27 0E 22 AA 6E AE 72 B4 ED CA C0 42 2E 40 40
|
|
|
|
|
0160 | 2D 67 EC F5 44 55 85 46 2D 49 B7 0F 47 72 5E 2C
|
|
|
|
|
0170 | C7 85 70 55 48 76 75 06 2C 34 3A 24 63 E3 C2 60
|
|
|
|
|
0180 | 42 C1 F7 4D C5 7B 5D 40 F0 43 F9 60</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>4C38050005B7AF66</code></td>
|
|
|
|
|
<td><code>B48B0C0058C2AF66</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>A43AFF1B9E83A6AD77D39BD7719C472B</code></td>
|
|
|
|
|
<td><code>11B9C28450811776D424CA45CDD03874</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>068868835665875FAD81E7F404B13449</code></td>
|
|
|
|
|
<td><code>460A42F7E89B5F4E9B131B626DCD4314</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE500100AF5BCCB6310F4BF0DCA7091B</code> <code>014254CE3234FEEC5D368E414C6835C0</code> <code>D754A71426A88F5A4702CAECE62783EB</code> <code>2AB6B5639612A98D9E7EE1FA2E1162AC</code> <code>79682C7B5648E45EC592A6B7FF7AF6D1</code> <code>53D41F678B8DFE2AF9AE5A705C3640C5</code> <code>D4751AD94400B5FE46E4149136A0DDA3</code> <code>4863A8F37D705483FD72A499C82FC6B6</code> <code>F469D7BD0941907F035802DDFA1A5090</code> <code>4A63F3506E4C8BF7BCD886DCBC812FDF</code> <code>1F12ABCBE3827EDEEB051C278ABC4443</code> <code>B781F51FCC6EE4B395FD6F70E0B714B8</code> <code>561C0D405D7FCBE6227B5BCB7DE08DFE</code> <code>1A4C5DD0B362AD8E79A48145BF4BE1D6</code> <code>5090C4965727C658E35DF7AA8D24F162</code> <code>1D3F6DEF8F044BDACF6121E65048D950</code> <code>235B8FACB4AAE5505FA664E7F3308F40</code> <code>2F0F54AC2774B2D12D067C71437D3DDD</code> <code>F74073E92473FB1FE6562BCEB90B0BF2</code> <code>ECE8C01DE54C887EEA93F10A25B7970E</code> <code>67682713A4D566EEC59493A17BC96C44</code><br> <code>7EF0EA27</code></td>
|
|
|
|
|
<td><code>FE500100C9B1B0550BC9E68CD811FCFB</code> <code>A555E4C457342DF4F81D14F1C8DD8385</code> <code>AE71AB272594173139DA637AE60E834F</code> <code>45ED18C8B1269B81387A22F1BA015E7A</code> <code>63A403E22FB5DA641D6116B8945ADF0D</code> <code>C5AADC86370E4A7CBE65208FFDB4F84A</code> <code>806FEB290E72D671D58FD7635CF86DE5</code> <code>ABA024DDFC84E7B28456E20D73B8F7BA</code> <code>A1C868E1F6EF3F1B592392E0B364BE34</code> <code>00786CCD9D7955EFD970732B22375C24</code> <code>6CFB419D3E5684A1BC926E9787A40276</code> <code>90919793794D2501052D017143495443</code> <code>312BA12AC75B2992A76A165E38D008CF</code> <code>38BFF491FA383D384BC4FFC7DD274ED9</code> <code>04A68DBD4B23CD4F1C78238BBC429C42</code> <code>0AA0AA3A3B3AAA3C41E75125987CEDC5</code> <code>741DB76E95C5D2BB2F62AD79F97CC2EB</code> <code>7A6130EF6A1264B1E8270E22AA6EAE72</code> <code>B4EDCAC0422E40402D67ECF544558546</code> <code>2D49B70F47725E2CC785705548767506</code> <code>2C343A2463E3C26042C1F74DC57B5D40</code><br> <code>F043F960</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 = 1B7EBC1B3727D12612FB22B4869318F6F564A07E4087BB7E319438504A4C421823117700974A88E4AB09B941E61936C90FFB921F5676114859A5A293B81CF7618EF5AE26C3939DC3405566350098CE930EB24264FC89C114DF50EDDDE2955851D68130784CBA21F3E2D9745B382F3B829F29AC13A302209D4EA28DD6215836748BBC2EDC766FD3A0149A89D923223B97E90AE4405017565B9093169BFDA1AAF805731808BCDDA2ED7A687DC20888BEFD30F0B78F6FB4F2BDB2321F75FD65DF2D9CA706368DE25C72860668E82F903DA9AE474CDD1C24B8222BDF0BCC4958F8A853BA540183BF156BDF046057F586C610597D0E99D09E8A0BC7013696A054E6C4</code></pre>
|
|
|
|
|
<pre><code>auth_key = 1CFDBEA303AB6C8180759A13C41F300315A8B30C8558D9A6CB96E872015B01295F19FF164E3DA25D813B88A0C80C8171E69FEA06863BEE5BFA2096ABB411BF845D3BF4BF73C8F5387C73ADC8D5123F5182F578ACA9CA0A86D1A133287AF40EFF2EC0D1BC0A376ADA222888D5D6AAF870FDE65849D0FFC13336E43DF1194F62D6BBAA5361AB85B3DDC04EE6E63C33954E5A39B1A550FD1E747E11DCB4C54CE074395BDA6FF5882DE6E367DFC851FC5721B64E8BC0B0BE2951B7FB32A0EC3A2D91832688E913C8EDA1F3788918426A46CD3AEA2347AE9CEA089BFBA4E7FEF56FB09FD99CB8298BDEDC8193E446E9900C6CC0D13D4561A03BB2F3777C6F38C7E9AF</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 FC 72 62 06 B7 AF 66
|
|
|
|
|
0010 | 98 00 00 00 34 F7 CB 3B A4 3A FF 1B 9E 83 A6 AD
|
|
|
|
|
0020 | 77 D3 9B D7 71 9C 47 2B 06 88 68 83 56 65 87 5F
|
|
|
|
|
0030 | AD 81 E7 F4 04 B1 34 49 B6 2E 31 EC 36 CB 92 BD
|
|
|
|
|
0040 | AC 4C F5 85 75 2B 0E 9C</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 78 4C 3A 59 C2 AF 66
|
|
|
|
|
0010 | A8 00 00 00 34 F7 CB 3B 11 B9 C2 84 50 81 17 76
|
|
|
|
|
0020 | D4 24 CA 45 CD D0 38 74 46 0A 42 F7 E8 9B 5F 4E
|
|
|
|
|
0030 | 9B 13 1B 62 6D CD 43 14 DC F6 6C 4B A4 7E E9 B6
|
|
|
|
|
0040 | 19 A1 0F 79 1C 39 C8 E0</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>01FC726206B7AF66</code></td>
|
|
|
|
|
<td><code>01784C3A59C2AF66</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>98000000</code> (152 in decimal)</td>
|
|
|
|
|
<td><code>A8000000</code> (168 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A43AFF1B9E83A6AD77D39BD7719C472B</code></td>
|
|
|
|
|
<td><code>11B9C28450811776D424CA45CDD03874</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>068868835665875FAD81E7F404B13449</code></td>
|
|
|
|
|
<td><code>460A42F7E89B5F4E9B131B626DCD4314</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>B62E31EC36CB92BDAC4CF585752B0E9C</code></td>
|
|
|
|
|
<td><code>DCF66C4BA47EE9B619A10F791C39C8E0</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>
|
|
|
|
|