|
|
|
@ -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 0C 06 0B 00 A6 40 88 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE AF A3 70 A4 FE 31 46 9B
|
|
|
|
|
0020 | 77 38 37 EF BA CC 4A D1</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 F0 1A 00 00 44 42 88 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 39 8D DB F9 93 7A 80 D8
|
|
|
|
|
0020 | 74 6E E6 4E D3 88 0D 2D</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>0C060B00A6408866</code></td>
|
|
|
|
|
<td><code>F01A000044428866</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>AFA370A4FE31469B773837EFBACC4AD1</code></td>
|
|
|
|
|
<td><code>398DDBF9937A80D8746EE64ED3880D2D</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 7C 5F 90 A6 40 88 66
|
|
|
|
|
0010 | 58 00 00 00 63 24 16 05 AF A3 70 A4 FE 31 46 9B
|
|
|
|
|
0020 | 77 38 37 EF BA CC 4A D1 4E A9 BD B5 C9 43 F4 66
|
|
|
|
|
0030 | CF AC 16 F5 FE 55 C4 6B 08 1E 9D 60 7F 4E DC DE
|
|
|
|
|
0040 | A1 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 A0 DC F6 44 42 88 66
|
|
|
|
|
0010 | BC 00 00 00 63 24 16 05 39 8D DB F9 93 7A 80 D8
|
|
|
|
|
0020 | 74 6E E6 4E D3 88 0D 2D 8C A2 EC 8F F5 A5 25 3E
|
|
|
|
|
0030 | 0D 8B FE 82 57 8B 87 29 08 22 4C D8 2F 93 75 24
|
|
|
|
|
0040 | CD 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
|
|
|
|
|
0050 | 35 5F C3 0B 21 6B E8 6C 02 2B B4 C3 85 FD 64 DE
|
|
|
|
|
0060 | 85 1D 9D D0</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
@ -132,13 +132,13 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>017C5F90A6408866</code></td>
|
|
|
|
|
<td><code>01A0DCF644428866</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_length</td>
|
|
|
|
|
<td>16, 4</td>
|
|
|
|
|
<td><code>58000000</code> (88 in decimal)</td>
|
|
|
|
|
<td><code>BC000000</code> (188 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>AFA370A4FE31469B773837EFBACC4AD1</code></td>
|
|
|
|
|
<td><code>398DDBF9937A80D8746EE64ED3880D2D</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>4EA9BDB5C943F466CFAC16F5FE55C46B</code></td>
|
|
|
|
|
<td><code>8CA2EC8FF5A5253E0D8BFE82578B8729</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>081E9D607F4EDCDEA1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2206025492381621921</td>
|
|
|
|
|
<td><code>08224CD82F937524CD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2471587994368550093</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 = 2206025492381621921</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2206025492381621921 = 1139452757 * 1936039453</code></p>
|
|
|
|
|
<pre><code>p = 1139452757
|
|
|
|
|
q = 1936039453</code></pre>
|
|
|
|
|
<pre><code>pq = 2471587994368550093</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2471587994368550093 = 1520934161 * 1625046013</code></p>
|
|
|
|
|
<pre><code>p = 1520934161
|
|
|
|
|
q = 1625046013</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 1E 9D 60 7F 4E DC DE A1 00 00 00
|
|
|
|
|
0010 | 04 43 EA AB 55 00 00 00 04 73 65 9E 1D 00 00 00
|
|
|
|
|
0020 | AF A3 70 A4 FE 31 46 9B 77 38 37 EF BA CC 4A D1
|
|
|
|
|
0030 | 4E A9 BD B5 C9 43 F4 66 CF AC 16 F5 FE 55 C4 6B
|
|
|
|
|
0040 | EA 41 D4 82 C0 17 9A 5C 68 CC F6 AC 0C 69 12 D7
|
|
|
|
|
0050 | C6 0E 96 48 0C 5C 33 02 AF C8 05 76 97 53 C7 BB
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 22 4C D8 2F 93 75 24 CD 00 00 00
|
|
|
|
|
0010 | 04 5A A7 9D 11 00 00 00 04 60 DC 3B FD 00 00 00
|
|
|
|
|
0020 | 39 8D DB F9 93 7A 80 D8 74 6E E6 4E D3 88 0D 2D
|
|
|
|
|
0030 | 8C A2 EC 8F F5 A5 25 3E 0D 8B FE 82 57 8B 87 29
|
|
|
|
|
0040 | 4D 95 A3 EC 01 E4 DF E2 0A 32 9E F3 DB 4E 10 8D
|
|
|
|
|
0050 | D0 41 BD AB 38 31 7A E6 D2 6C E0 73 EE FE 88 F3
|
|
|
|
|
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 = 1936039453</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>081E9D607F4EDCDEA1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2206025492381621921</td>
|
|
|
|
|
<td><code>08224CD82F937524CD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2471587994368550093</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>0443EAAB55000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1139452757</td>
|
|
|
|
|
<td><code>045AA79D11000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1520934161</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>0473659E1D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1936039453</td>
|
|
|
|
|
<td><code>0460DC3BFD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1625046013</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>AFA370A4FE31469B773837EFBACC4AD1</code></td>
|
|
|
|
|
<td><code>398DDBF9937A80D8746EE64ED3880D2D</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>4EA9BDB5C943F466CFAC16F5FE55C46B</code></td>
|
|
|
|
|
<td><code>8CA2EC8FF5A5253E0D8BFE82578B8729</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>EA41D482C0179A5C68CCF6AC0C6912D7</code> <code>C60E96480C5C3302AFC805769753C7BB</code></td>
|
|
|
|
|
<td><code>4D95A3EC01E4DFE20A329EF3DB4E108D</code> <code>D041BDAB38317AE6D26CE073EEFE88F3</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1936039453</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 = 955FF5A9081E9D607F4EDCDEA10000000443EAAB550000000473659E1D000000AFA370A4FE31469B773837EFBACC4AD14EA9BDB5C943F466CFAC16F5FE55C46BEA41D482C0179A5C68CCF6AC0C6912D7C60E96480C5C3302AFC805769753C7BB02000000
|
|
|
|
|
random_padding_bytes = 59916879694158B4F6140AA84A2935F46F25DDA5EAF4846004E0E79AB4F8AE278881BC07A457331142EEF71EC4BB7F118B8B0A9A402EC717FF399F2DFFBBFFECE261C2560F4A2B8BFA1DDDD29EFD180E7181FE30BC426B9EC759DB45</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A908224CD82F937524CD000000045AA79D110000000460DC3BFD000000398DDBF9937A80D8746EE64ED3880D2D8CA2EC8FF5A5253E0D8BFE82578B87294D95A3EC01E4DFE20A329EF3DB4E108DD041BDAB38317AE6D26CE073EEFE88F302000000
|
|
|
|
|
random_padding_bytes = F77AF76C95C4825D826A01EA03CC093CA92ABF3EAA0D8157785FD74ADB6F0611265AE58726F4FF0F526DDED5C65109EFC7307D9E7E9A6393204C28071C0D3ADC492F8BF9CA01BA2FD65FFF1573869C2B807F032CE4A1C5720BFFE585</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 = 10255A06E95189164DDA7CD6285904EC15738E774F9A1CD54C4DE711F9603B6732CF00F4C23D3980241F6BE2BDF8C2ABF3B8C705518F9C31B4A07157304D0D98D5631B647550F7A4389DA2F79074B4666204479C69C138A207C552D0C6891002EC08D8F77C5CE36F38BC26CABEC3AA69BED4F1383D41C77E705E4C8AC7A810F46A536664B52F35A5C37CBAF64D4B91976F53EFD0F1C2155D35B53F738956529416557C4BEC0ADB65412FA2B8E765776DEDBE5C8B9D7810C8D1B455A0090FB4DAB520812C37BF6E62190CC1EC493882FC7D6A0547405EADC11C9BB931C31DF7A5D9B07D960937EDEE71769BA559B2FF19A18E90360705C1DF3539B86116D9BEE6</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 2B03C37FB170269F14E9E57B92691A6C30F113E3CD92F07E0157F2EDA9A6F1E0F531F8B35E96497C089C6D35A5F94CC80E1BE2235412291063CACF940BD2A1159FB092443C9C75159EE86F94B528F979C85B42E7AB15617078F3F2B9566389BA527346A794898530CC64C5BD96DAE27467612E6EAA57CED8B817D151604EA682F08DB37D517CF16BB45F1D0DCBF542F6E9640C3C58015412656C83BED0733F7DC9EE956C8B7C46A3D170BCBF5425E3EB612D9C4BBCC931F376AE2F3A6D388E254C8ACF9F3F742C5D3032C92657BCCC1103974DF25ECC2AA7A912820687A49A6BE987E8F7420FB20E55D806B9C83598C454741011BCA1023A6945D75076EFF0F3</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 74 3E 0E 00 A6 40 88 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 AF A3 70 A4 FE 31 46 9B
|
|
|
|
|
0020 | 77 38 37 EF BA CC 4A D1 4E A9 BD B5 C9 43 F4 66
|
|
|
|
|
0030 | CF AC 16 F5 FE 55 C4 6B 04 43 EA AB 55 00 00 00
|
|
|
|
|
0040 | 04 73 65 9E 1D 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 10 25 5A 06 E9 51 89 16 4D DA 7C D6
|
|
|
|
|
0060 | 28 59 04 EC 15 73 8E 77 4F 9A 1C D5 4C 4D E7 11
|
|
|
|
|
0070 | F9 60 3B 67 32 CF 00 F4 C2 3D 39 80 24 1F 6B E2
|
|
|
|
|
0080 | BD F8 C2 AB F3 B8 C7 05 51 8F 9C 31 B4 A0 71 57
|
|
|
|
|
0090 | 30 4D 0D 98 D5 63 1B 64 75 50 F7 A4 38 9D A2 F7
|
|
|
|
|
00A0 | 90 74 B4 66 62 04 47 9C 69 C1 38 A2 07 C5 52 D0
|
|
|
|
|
00B0 | C6 89 10 02 EC 08 D8 F7 7C 5C E3 6F 38 BC 26 CA
|
|
|
|
|
00C0 | BE C3 AA 69 BE D4 F1 38 3D 41 C7 7E 70 5E 4C 8A
|
|
|
|
|
00D0 | C7 A8 10 F4 6A 53 66 64 B5 2F 35 A5 C3 7C BA F6
|
|
|
|
|
00E0 | 4D 4B 91 97 6F 53 EF D0 F1 C2 15 5D 35 B5 3F 73
|
|
|
|
|
00F0 | 89 56 52 94 16 55 7C 4B EC 0A DB 65 41 2F A2 B8
|
|
|
|
|
0100 | E7 65 77 6D ED BE 5C 8B 9D 78 10 C8 D1 B4 55 A0
|
|
|
|
|
0110 | 09 0F B4 DA B5 20 81 2C 37 BF 6E 62 19 0C C1 EC
|
|
|
|
|
0120 | 49 38 82 FC 7D 6A 05 47 40 5E AD C1 1C 9B B9 31
|
|
|
|
|
0130 | C3 1D F7 A5 D9 B0 7D 96 09 37 ED EE 71 76 9B A5
|
|
|
|
|
0140 | 59 B2 FF 19 A1 8E 90 36 07 05 C1 DF 35 39 B8 61
|
|
|
|
|
0150 | 16 D9 BE E6</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 48 CB 02 00 45 42 88 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 39 8D DB F9 93 7A 80 D8
|
|
|
|
|
0020 | 74 6E E6 4E D3 88 0D 2D 8C A2 EC 8F F5 A5 25 3E
|
|
|
|
|
0030 | 0D 8B FE 82 57 8B 87 29 04 5A A7 9D 11 00 00 00
|
|
|
|
|
0040 | 04 60 DC 3B FD 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 2B 03 C3 7F B1 70 26 9F 14 E9 E5 7B
|
|
|
|
|
0060 | 92 69 1A 6C 30 F1 13 E3 CD 92 F0 7E 01 57 F2 ED
|
|
|
|
|
0070 | A9 A6 F1 E0 F5 31 F8 B3 5E 96 49 7C 08 9C 6D 35
|
|
|
|
|
0080 | A5 F9 4C C8 0E 1B E2 23 54 12 29 10 63 CA CF 94
|
|
|
|
|
0090 | 0B D2 A1 15 9F B0 92 44 3C 9C 75 15 9E E8 6F 94
|
|
|
|
|
00A0 | B5 28 F9 79 C8 5B 42 E7 AB 15 61 70 78 F3 F2 B9
|
|
|
|
|
00B0 | 56 63 89 BA 52 73 46 A7 94 89 85 30 CC 64 C5 BD
|
|
|
|
|
00C0 | 96 DA E2 74 67 61 2E 6E AA 57 CE D8 B8 17 D1 51
|
|
|
|
|
00D0 | 60 4E A6 82 F0 8D B3 7D 51 7C F1 6B B4 5F 1D 0D
|
|
|
|
|
00E0 | CB F5 42 F6 E9 64 0C 3C 58 01 54 12 65 6C 83 BE
|
|
|
|
|
00F0 | D0 73 3F 7D C9 EE 95 6C 8B 7C 46 A3 D1 70 BC BF
|
|
|
|
|
0100 | 54 25 E3 EB 61 2D 9C 4B BC C9 31 F3 76 AE 2F 3A
|
|
|
|
|
0110 | 6D 38 8E 25 4C 8A CF 9F 3F 74 2C 5D 30 32 C9 26
|
|
|
|
|
0120 | 57 BC CC 11 03 97 4D F2 5E CC 2A A7 A9 12 82 06
|
|
|
|
|
0130 | 87 A4 9A 6B E9 87 E8 F7 42 0F B2 0E 55 D8 06 B9
|
|
|
|
|
0140 | C8 35 98 C4 54 74 10 11 BC A1 02 3A 69 45 D7 50
|
|
|
|
|
0150 | 76 EF F0 F3</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 = 59916879694158B4F6140AA84A2935F46F25DDA5EAF4846004E0E79AB
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>743E0E00A6408866</code></td>
|
|
|
|
|
<td><code>48CB020045428866</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 = 59916879694158B4F6140AA84A2935F46F25DDA5EAF4846004E0E79AB
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>AFA370A4FE31469B773837EFBACC4AD1</code></td>
|
|
|
|
|
<td><code>398DDBF9937A80D8746EE64ED3880D2D</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>4EA9BDB5C943F466CFAC16F5FE55C46B</code></td>
|
|
|
|
|
<td><code>8CA2EC8FF5A5253E0D8BFE82578B8729</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>0443EAAB55000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1139452757</td>
|
|
|
|
|
<td><code>045AA79D11000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1520934161</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>0473659E1D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1936039453</td>
|
|
|
|
|
<td><code>0460DC3BFD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1625046013</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 = 59916879694158B4F6140AA84A2935F46F25DDA5EAF4846004E0E79AB
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE00010010255A06E95189164DDA7CD6</code> <code>285904EC15738E774F9A1CD54C4DE711</code> <code>F9603B6732CF00F4C23D3980241F6BE2</code> <code>BDF8C2ABF3B8C705518F9C31B4A07157</code> <code>304D0D98D5631B647550F7A4389DA2F7</code> <code>9074B4666204479C69C138A207C552D0</code> <code>C6891002EC08D8F77C5CE36F38BC26CA</code> <code>BEC3AA69BED4F1383D41C77E705E4C8A</code> <code>C7A810F46A536664B52F35A5C37CBAF6</code> <code>4D4B91976F53EFD0F1C2155D35B53F73</code> <code>8956529416557C4BEC0ADB65412FA2B8</code> <code>E765776DEDBE5C8B9D7810C8D1B455A0</code> <code>090FB4DAB520812C37BF6E62190CC1EC</code> <code>493882FC7D6A0547405EADC11C9BB931</code> <code>C31DF7A5D9B07D960937EDEE71769BA5</code> <code>59B2FF19A18E90360705C1DF3539B861</code><br> <code>16D9BEE6</code></td>
|
|
|
|
|
<td><code>FE0001002B03C37FB170269F14E9E57B</code> <code>92691A6C30F113E3CD92F07E0157F2ED</code> <code>A9A6F1E0F531F8B35E96497C089C6D35</code> <code>A5F94CC80E1BE2235412291063CACF94</code> <code>0BD2A1159FB092443C9C75159EE86F94</code> <code>B528F979C85B42E7AB15617078F3F2B9</code> <code>566389BA527346A794898530CC64C5BD</code> <code>96DAE27467612E6EAA57CED8B817D151</code> <code>604EA682F08DB37D517CF16BB45F1D0D</code> <code>CBF542F6E9640C3C58015412656C83BE</code> <code>D0733F7DC9EE956C8B7C46A3D170BCBF</code> <code>5425E3EB612D9C4BBCC931F376AE2F3A</code> <code>6D388E254C8ACF9F3F742C5D3032C926</code> <code>57BCCC1103974DF25ECC2AA7A9128206</code> <code>87A49A6BE987E8F7420FB20E55D806B9</code> <code>C83598C454741011BCA1023A6945D750</code><br> <code>76EFF0F3</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = 59916879694158B4F6140AA84A2935F46F25DDA5EAF4846004E0E79AB
|
|
|
|
|
<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 C0 93 4D A7 40 88 66
|
|
|
|
|
0010 | EC 02 00 00 5C 07 E8 D0 AF A3 70 A4 FE 31 46 9B
|
|
|
|
|
0020 | 77 38 37 EF BA CC 4A D1 4E A9 BD B5 C9 43 F4 66
|
|
|
|
|
0030 | CF AC 16 F5 FE 55 C4 6B FE 50 02 00 F8 8E 57 A9
|
|
|
|
|
0040 | DA 06 BB 5D AE 7C BA 84 5F 60 33 CB A1 16 93 FC
|
|
|
|
|
0050 | F3 19 8E CD A7 35 93 9B 20 F3 86 A0 3A C5 20 98
|
|
|
|
|
0060 | 0D 70 D8 0E 6B 9B C8 53 D6 27 F1 6E F1 EF 01 32
|
|
|
|
|
0070 | 32 01 72 BD 27 11 AE 26 32 6A 07 D2 2E 44 73 DB
|
|
|
|
|
0080 | 9E AA A3 E8 02 93 B0 31 8B 82 67 9A E2 C8 FA E7
|
|
|
|
|
0090 | 10 52 94 DB 6B 13 C7 90 EA 55 45 9C 57 F2 9B 37
|
|
|
|
|
00A0 | 92 1D DC 15 33 5B 0E 94 39 21 70 95 1F 0E 04 22
|
|
|
|
|
00B0 | 38 88 4C 14 02 69 35 9B A0 5C 83 3A 32 D8 67 9C
|
|
|
|
|
00C0 | BD B9 F9 A5 D0 E3 BB E6 F6 27 9F 44 86 42 0A 8A
|
|
|
|
|
00D0 | 18 48 63 68 08 C9 48 FF D4 1A 03 44 36 49 31 A4
|
|
|
|
|
00E0 | 69 6C 0F F2 7C EC 8D 60 8E E9 BD 8F 69 86 06 D4
|
|
|
|
|
00F0 | 6F C5 35 B8 EF FD C2 54 9A 8C A0 D1 0F 72 96 A1
|
|
|
|
|
0100 | 81 52 E3 F5 07 3A 90 D3 52 08 2B 6C 8B CF C1 DE
|
|
|
|
|
0110 | C9 9A 7D 35 CE 49 41 0A 1A 43 25 47 8E 50 49 FE
|
|
|
|
|
0120 | 66 25 80 AB A2 35 BF 12 B6 28 4E 90 FF 92 16 1B
|
|
|
|
|
0130 | 68 3C E0 27 0D FD 79 2F 70 66 1E E7 99 87 4E 15
|
|
|
|
|
0140 | 1F 33 79 50 E4 A8 41 8D 87 B1 04 B7 74 20 A0 F9
|
|
|
|
|
0150 | 6E 53 41 EA 20 8D B6 FD 89 90 4C 2A 28 A8 66 3A
|
|
|
|
|
0160 | 75 F4 04 A8 4F 1E 02 3E 04 1F 4D AE 1E A0 C4 F5
|
|
|
|
|
0170 | FD EE 5C 8D CF 69 09 ED E7 BB 2B 85 C8 7B CA 85
|
|
|
|
|
0180 | 70 10 A6 45 7D 5B 79 EB E7 42 24 22 79 D0 78 6C
|
|
|
|
|
0190 | 8D 85 F7 4C E1 76 B2 FE B9 85 AC A7 98 B3 FF EB
|
|
|
|
|
01A0 | 16 B0 34 FF 2E F4 48 40 66 C5 35 6D B9 7A 1C F3
|
|
|
|
|
01B0 | 1E CB B5 AB 8A 70 6E 75 AA 24 72 CD FF 8E 88 2A
|
|
|
|
|
01C0 | 1C 3F E1 6F 5F EC 5D 3E A5 22 3B 43 AF DB C7 38
|
|
|
|
|
01D0 | 3D B0 B4 EB 65 CD 54 49 52 4A A5 BC 3B 4A 8C E8
|
|
|
|
|
01E0 | 3A DB CF 39 28 D8 12 AA C7 64 B1 4A 40 0D B9 3B
|
|
|
|
|
01F0 | AB FE 63 84 10 E3 25 30 DF DB EF 84 67 50 64 8E
|
|
|
|
|
0200 | 48 78 6C 7E 67 CC C7 0B 6E 99 D2 8B 0D B7 09 36
|
|
|
|
|
0210 | 37 A0 17 18 52 0E F7 57 D6 D2 0D 4F A2 79 F4 66
|
|
|
|
|
0220 | AF F9 14 DE 9F 8D F7 FF 86 CE CA 1C 7A CB 45 A8
|
|
|
|
|
0230 | EC 29 74 76 46 2A 1C E6 7D 7E F6 E2 DF 63 E6 59
|
|
|
|
|
0240 | 74 59 BC C2 75 16 3A A5 DD 07 26 C9 58 EC 8D 46
|
|
|
|
|
0250 | 2A 83 BD EC C5 6D 80 B7 2A B4 1D 02 AF 94 AE DF
|
|
|
|
|
0260 | 73 AF 83 E4 AA 70 61 74 98 8C 40 43 E7 FF E2 EA
|
|
|
|
|
0270 | 20 DF 6C 22 BD 87 37 A2 D3 90 F6 FC 74 8C F9 18
|
|
|
|
|
0280 | D9 73 C3 BE 96 2A 53 80 89 7A 34 F8</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 F0 25 A4 45 42 88 66
|
|
|
|
|
0010 | B8 02 00 00 5C 07 E8 D0 39 8D DB F9 93 7A 80 D8
|
|
|
|
|
0020 | 74 6E E6 4E D3 88 0D 2D 8C A2 EC 8F F5 A5 25 3E
|
|
|
|
|
0030 | 0D 8B FE 82 57 8B 87 29 FE 50 02 00 EC 1E 36 D7
|
|
|
|
|
0040 | 8B FB 9C 1E 7E 9E 1A AF 0E D1 5D 8D 9C 1A A1 43
|
|
|
|
|
0050 | C0 56 AA 64 92 1D AF FE 75 EA 2B F0 B6 D7 C6 D3
|
|
|
|
|
0060 | FF 99 AB B1 55 4C 97 79 BB 33 5F 1A 74 9F C7 3A
|
|
|
|
|
0070 | 8F E6 4D 2D 11 D7 62 B3 4C 74 CB D7 82 64 0D E6
|
|
|
|
|
0080 | B1 9B C3 AA C0 D4 80 BF 89 52 32 6C 6D C8 A4 C1
|
|
|
|
|
0090 | CF 37 85 48 0D AD AD CA 6D 52 46 F4 28 D9 74 05
|
|
|
|
|
00A0 | 71 FE 25 00 93 FF 39 11 10 9D 13 90 C0 89 89 91
|
|
|
|
|
00B0 | 67 89 4D 6D B9 30 BC 93 3F 48 F8 7C FA 95 75 C9
|
|
|
|
|
00C0 | 5F 96 F6 D4 4D E8 26 17 EA C3 5B E2 F6 EC A5 5B
|
|
|
|
|
00D0 | 2C 55 59 38 27 9E AF 39 EC 40 13 A5 D4 DD 53 90
|
|
|
|
|
00E0 | F6 65 E3 06 15 68 52 9D 98 78 B5 40 6E 58 23 92
|
|
|
|
|
00F0 | 65 F7 0D F9 67 12 8D 00 C6 D1 79 A0 50 B1 2A 79
|
|
|
|
|
0100 | AA 43 14 4F 45 0C BE 5A E3 C0 A2 75 38 C7 1B AD
|
|
|
|
|
0110 | 59 5B 11 A7 E6 66 62 79 03 F1 89 7A FD FC 40 1A
|
|
|
|
|
0120 | 36 EF 3B 3E 8E 83 85 49 D7 5F A1 69 85 0F 6F 79
|
|
|
|
|
0130 | A1 06 05 06 4F D2 21 D5 E5 98 74 37 7A 42 8E 94
|
|
|
|
|
0140 | 93 60 68 BC B2 26 97 8A 81 24 A7 20 9C 6C C9 7D
|
|
|
|
|
0150 | 64 30 BE DC 0D 11 3F 34 BB E9 88 FC BD 8C 9E FE
|
|
|
|
|
0160 | 3D 20 99 A8 05 2D F6 74 8D 9B 55 EC 3D 6F F9 63
|
|
|
|
|
0170 | 6E 55 81 0C 37 E2 77 6A 7C 60 DB B7 6C 3D 14 3E
|
|
|
|
|
0180 | B5 E2 6E 0F 67 D2 C1 2F CF FE 6A F1 A5 BC 90 5D
|
|
|
|
|
0190 | 64 B3 74 17 55 02 E5 B9 10 9B 26 28 72 30 43 5E
|
|
|
|
|
01A0 | 80 9F 17 DF 67 B1 49 59 F5 D2 15 A9 BE 49 18 A3
|
|
|
|
|
01B0 | F9 D3 5F 88 01 7C 5D 07 91 63 CA B3 C2 73 A6 18
|
|
|
|
|
01C0 | 70 E8 CA 2A CB 81 20 AA D4 97 AA 24 0E 44 BA 59
|
|
|
|
|
01D0 | 2E AD 4B B7 6F 9D 74 AB 29 EB 98 3D CD 53 81 AC
|
|
|
|
|
01E0 | 09 F6 2F AE 23 25 4C B9 E3 64 B7 00 3C 21 81 7B
|
|
|
|
|
01F0 | 81 FA 4E B7 7E FD E9 1F A1 4A EA C8 9C 19 7A AB
|
|
|
|
|
0200 | 12 17 78 03 65 53 9D DA 43 6E 86 5F 43 B1 4C 92
|
|
|
|
|
0210 | 75 EE 77 E7 67 30 9A 22 AA A0 6D C6 FC FF 9E 1C
|
|
|
|
|
0220 | CD 05 13 EF F8 A3 7D 57 1C 28 0D 09 44 5E 78 DA
|
|
|
|
|
0230 | 3B 7B 5B 79 A8 7A A6 F6 4F 8E 48 E3 31 02 B6 03
|
|
|
|
|
0240 | 06 1C CD CA 7C 57 5F E0 73 BB 94 23 6B 72 36 76
|
|
|
|
|
0250 | 03 48 1B 9E A8 B3 1F 79 AF 90 50 FF E4 26 BA 35
|
|
|
|
|
0260 | B3 4F A9 16 C1 80 37 16 55 73 48 86 13 8D 44 BA
|
|
|
|
|
0270 | 53 CE 77 93 F7 03 08 51 9E F4 E8 4C A1 64 89 E8
|
|
|
|
|
0280 | 32 13 E9 9D 08 BE 24 7A D2 11 A7 EA</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 = 59916879694158B4F6140AA84A2935F46F25DDA5EAF4846004E0E79AB
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>01C0934DA7408866</code></td>
|
|
|
|
|
<td><code>01F025A445428866</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>EC020000</code> (748 in decimal)</td>
|
|
|
|
|
<td><code>B8020000</code> (696 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -482,19 +482,19 @@ random_padding_bytes = 59916879694158B4F6140AA84A2935F46F25DDA5EAF4846004E0E79AB
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>AFA370A4FE31469B773837EFBACC4AD1</code></td>
|
|
|
|
|
<td><code>398DDBF9937A80D8746EE64ED3880D2D</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>4EA9BDB5C943F466CFAC16F5FE55C46B</code></td>
|
|
|
|
|
<td><code>8CA2EC8FF5A5253E0D8BFE82578B8729</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE500200F88E57A9DA06BB5DAE7CBA84</code> <code>5F6033CBA11693FCF3198ECDA735939B</code> <code>20F386A03AC520980D70D80E6B9BC853</code> <code>D627F16EF1EF0132320172BD2711AE26</code> <code>326A07D22E4473DB9EAAA3E80293B031</code> <code>8B82679AE2C8FAE7105294DB6B13C790</code> <code>EA55459C57F29B37921DDC15335B0E94</code> <code>392170951F0E042238884C140269359B</code> <code>A05C833A32D8679CBDB9F9A5D0E3BBE6</code> <code>F6279F4486420A8A1848636808C948FF</code> <code>D41A0344364931A4696C0FF27CEC8D60</code> <code>8EE9BD8F698606D46FC535B8EFFDC254</code> <code>9A8CA0D10F7296A18152E3F5073A90D3</code> <code>52082B6C8BCFC1DEC99A7D35CE49410A</code> <code>1A4325478E5049FE662580ABA235BF12</code> <code>B6284E90FF92161B683CE0270DFD792F</code> <code>70661EE799874E151F337950E4A8418D</code> <code>87B104B77420A0F96E5341EA208DB6FD</code> <code>89904C2A28A8663A75F404A84F1E023E</code> <code>041F4DAE1EA0C4F5FDEE5C8DCF6909ED</code> <code>E7BB2B85C87BCA857010A6457D5B79EB</code> <code>E742242279D0786C8D85F74CE176B2FE</code> <code>B985ACA798B3FFEB16B034FF2EF44840</code> <code>66C5356DB97A1CF31ECBB5AB8A706E75</code> <code>AA2472CDFF8E882A1C3FE16F5FEC5D3E</code> <code>A5223B43AFDBC7383DB0B4EB65CD5449</code> <code>524AA5BC3B4A8CE83ADBCF3928D812AA</code> <code>C764B14A400DB93BABFE638410E32530</code> <code>DFDBEF846750648E48786C7E67CCC70B</code> <code>6E99D28B0DB7093637A01718520EF757</code> <code>D6D20D4FA279F466AFF914DE9F8DF7FF</code> <code>86CECA1C7ACB45A8EC297476462A1CE6</code> <code>7D7EF6E2DF63E6597459BCC275163AA5</code> <code>DD0726C958EC8D462A83BDECC56D80B7</code> <code>2AB41D02AF94AEDF73AF83E4AA706174</code> <code>988C4043E7FFE2EA20DF6C22BD8737A2</code> <code>D390F6FC748CF918D973C3BE962A5380</code><br> <code>897A34F8</code></td>
|
|
|
|
|
<td><code>FE500200EC1E36D78BFB9C1E7E9E1AAF</code> <code>0ED15D8D9C1AA143C056AA64921DAFFE</code> <code>75EA2BF0B6D7C6D3FF99ABB1554C9779</code> <code>BB335F1A749FC73A8FE64D2D11D762B3</code> <code>4C74CBD782640DE6B19BC3AAC0D480BF</code> <code>8952326C6DC8A4C1CF3785480DADADCA</code> <code>6D5246F428D9740571FE250093FF3911</code> <code>109D1390C089899167894D6DB930BC93</code> <code>3F48F87CFA9575C95F96F6D44DE82617</code> <code>EAC35BE2F6ECA55B2C555938279EAF39</code> <code>EC4013A5D4DD5390F665E3061568529D</code> <code>9878B5406E58239265F70DF967128D00</code> <code>C6D179A050B12A79AA43144F450CBE5A</code> <code>E3C0A27538C71BAD595B11A7E6666279</code> <code>03F1897AFDFC401A36EF3B3E8E838549</code> <code>D75FA169850F6F79A10605064FD221D5</code> <code>E59874377A428E94936068BCB226978A</code> <code>8124A7209C6CC97D6430BEDC0D113F34</code> <code>BBE988FCBD8C9EFE3D2099A8052DF674</code> <code>8D9B55EC3D6FF9636E55810C37E2776A</code> <code>7C60DBB76C3D143EB5E26E0F67D2C12F</code> <code>CFFE6AF1A5BC905D64B374175502E5B9</code> <code>109B26287230435E809F17DF67B14959</code> <code>F5D215A9BE4918A3F9D35F88017C5D07</code> <code>9163CAB3C273A61870E8CA2ACB8120AA</code> <code>D497AA240E44BA592EAD4BB76F9D74AB</code> <code>29EB983DCD5381AC09F62FAE23254CB9</code> <code>E364B7003C21817B81FA4EB77EFDE91F</code> <code>A14AEAC89C197AAB1217780365539DDA</code> <code>436E865F43B14C9275EE77E767309A22</code> <code>AAA06DC6FCFF9E1CCD0513EFF8A37D57</code> <code>1C280D09445E78DA3B7B5B79A87AA6F6</code> <code>4F8E48E33102B603061CCDCA7C575FE0</code> <code>73BB94236B72367603481B9EA8B31F79</code> <code>AF9050FFE426BA35B34FA916C1803716</code> <code>55734886138D44BA53CE7793F7030851</code> <code>9EF4E84CA16489E83213E99D08BE247A</code><br> <code>D211A7EA</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = 59916879694158B4F6140AA84A2935F46F25DDA5EAF4846004E0E79AB
|
|
|
|
|
<!-- 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 = F88E57A9DA06BB5DAE7CBA845F6033CBA11693FCF3198ECDA735939B20F386A03AC520980D70D80E6B9BC853D627F16EF1EF0132320172BD2711AE26326A07D22E4473DB9EAAA3E80293B0318B82679AE2C8FAE7105294DB6B13C790EA55459C57F29B37921DDC15335B0E94392170951F0E042238884C140269359BA05C833A32D8679CBDB9F9A5D0E3BBE6F6279F4486420A8A1848636808C948FFD41A0344364931A4696C0FF27CEC8D608EE9BD8F698606D46FC535B8EFFDC2549A8CA0D10F7296A18152E3F5073A90D352082B6C8BCFC1DEC99A7D35CE49410A1A4325478E5049FE662580ABA235BF12B6284E90FF92161B683CE0270DFD792F70661EE799874E151F337950E4A8418D87B104B77420A0F96E5341EA208DB6FD89904C2A28A8663A75F404A84F1E023E041F4DAE1EA0C4F5FDEE5C8DCF6909EDE7BB2B85C87BCA857010A6457D5B79EBE742242279D0786C8D85F74CE176B2FEB985ACA798B3FFEB16B034FF2EF4484066C5356DB97A1CF31ECBB5AB8A706E75AA2472CDFF8E882A1C3FE16F5FEC5D3EA5223B43AFDBC7383DB0B4EB65CD5449524AA5BC3B4A8CE83ADBCF3928D812AAC764B14A400DB93BABFE638410E32530DFDBEF846750648E48786C7E67CCC70B6E99D28B0DB7093637A01718520EF757D6D20D4FA279F466AFF914DE9F8DF7FF86CECA1C7ACB45A8EC297476462A1CE67D7EF6E2DF63E6597459BCC275163AA5DD0726C958EC8D462A83BDECC56D80B72AB41D02AF94AEDF73AF83E4AA706174988C4043E7FFE2EA20DF6C22BD8737A2D390F6FC748CF918D973C3BE962A5380897A34F8
|
|
|
|
|
tmp_aes_key = 994C8CDB14BD79852644A3A0AC2F17F0BBA74739B50510F89FB24C1AF3359C62
|
|
|
|
|
tmp_aes_iv = 6F34827F604727F0E58EDA63622F7EB017970D8045601D2BF57D24B8EA41D482</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = EC1E36D78BFB9C1E7E9E1AAF0ED15D8D9C1AA143C056AA64921DAFFE75EA2BF0B6D7C6D3FF99ABB1554C9779BB335F1A749FC73A8FE64D2D11D762B34C74CBD782640DE6B19BC3AAC0D480BF8952326C6DC8A4C1CF3785480DADADCA6D5246F428D9740571FE250093FF3911109D1390C089899167894D6DB930BC933F48F87CFA9575C95F96F6D44DE82617EAC35BE2F6ECA55B2C555938279EAF39EC4013A5D4DD5390F665E3061568529D9878B5406E58239265F70DF967128D00C6D179A050B12A79AA43144F450CBE5AE3C0A27538C71BAD595B11A7E666627903F1897AFDFC401A36EF3B3E8E838549D75FA169850F6F79A10605064FD221D5E59874377A428E94936068BCB226978A8124A7209C6CC97D6430BEDC0D113F34BBE988FCBD8C9EFE3D2099A8052DF6748D9B55EC3D6FF9636E55810C37E2776A7C60DBB76C3D143EB5E26E0F67D2C12FCFFE6AF1A5BC905D64B374175502E5B9109B26287230435E809F17DF67B14959F5D215A9BE4918A3F9D35F88017C5D079163CAB3C273A61870E8CA2ACB8120AAD497AA240E44BA592EAD4BB76F9D74AB29EB983DCD5381AC09F62FAE23254CB9E364B7003C21817B81FA4EB77EFDE91FA14AEAC89C197AAB1217780365539DDA436E865F43B14C9275EE77E767309A22AAA06DC6FCFF9E1CCD0513EFF8A37D571C280D09445E78DA3B7B5B79A87AA6F64F8E48E33102B603061CCDCA7C575FE073BB94236B72367603481B9EA8B31F79AF9050FFE426BA35B34FA916C180371655734886138D44BA53CE7793F70308519EF4E84CA16489E83213E99D08BE247AD211A7EA
|
|
|
|
|
tmp_aes_key = 8E9BCDF0570238EA68479EC856957F1758D2D464493C1655D577FFBB524DEB9E
|
|
|
|
|
tmp_aes_iv = 6048C38AF2E0E70B3B1A24148ED603EB80F8C30743CDE5CC500F84864D95A3EC</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = E675AB25FF60478B378CCC246F32A45B204CA9D5BA0D89B5AFA370A4FE31469B773837EFBACC4AD14EA9BDB5C943F466CFAC16F5FE55C46B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010044E9DAF43C286D6D9B3E67B91A23FE3BB1548AB83AD3337B6A7C839C9521EF3E31008E8B18973A57E9DF25B7201B67BA1C30BDD8ED752C09233B284956F13896F56B9DF98F1F048838CB38036659804C9B14F0F952BF93AA13841F76485810FF431D190FB911F855BB64F8E7BCC406B74806D11F7319D75326A0882745E5FE2301FF35ACF23D7885FBA194A29FF18D0C366949B3957FC3D0ED701F1A2015D583C0AEF32D912EE8C7C42E77E6536EB4451EBCF1BC80921C149B2298EC0C9F86690DEE19B4BD0798B11D31B488B38F356539B4605036ADFEF5F6CAE450AC0878CB75364FEAAA7196B475B93F953EB20BBDF2432E1BDF48EDC71A19F6EB55D2440DA7408866C9DD81F3289BFB77
|
|
|
|
|
answer = BA0D89B5AFA370A4FE31469B773837EFBACC4AD14EA9BDB5C943F466CFAC16F5FE55C46B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010044E9DAF43C286D6D9B3E67B91A23FE3BB1548AB83AD3337B6A7C839C9521EF3E31008E8B18973A57E9DF25B7201B67BA1C30BDD8ED752C09233B284956F13896F56B9DF98F1F048838CB38036659804C9B14F0F952BF93AA13841F76485810FF431D190FB911F855BB64F8E7BCC406B74806D11F7319D75326A0882745E5FE2301FF35ACF23D7885FBA194A29FF18D0C366949B3957FC3D0ED701F1A2015D583C0AEF32D912EE8C7C42E77E6536EB4451EBCF1BC80921C149B2298EC0C9F86690DEE19B4BD0798B11D31B488B38F356539B4605036ADFEF5F6CAE450AC0878CB75364FEAAA7196B475B93F953EB20BBDF2432E1BDF48EDC71A19F6EB55D2440DA7408866C9DD81F3289BFB77</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = 2DB08BB8873822F728C4FA96357A707FB0204926BA0D89B5398DDBF9937A80D8746EE64ED3880D2D8CA2EC8FF5A5253E0D8BFE82578B872903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001007F563DC14E0FE403C3288CB7112AA9BEE9C9A03DD9B57F443BC66A96276FA6B6794613EAB032F7A564AECF24431742D5FAADB3FD264DD4C994513FCFD5F7A8A16A3852137B43C123934D4173C30D434BB29867F1330872B59DBDB063CF0435CC0A82D2F79E1A6247F8986C6508A852B52058877869D511FEC686F6401799ADCB4C26921F07B136B55C1A065453CEE825F6665706CEF3720FB6EB2F4DD30E1A78985F8F0F0AE81D58C8E2E97C5C16207F46CDE176D33E2C7B066FFEDB36CFE497130D337CFB20FD100DC4ACB143895E3D0CA0E9F66514DA2E2208C6B80357F884A882DA869FAFA1A65B7BD946A47F654015C3C2E5E47A03C660DA6EAE95AFB896454288661FEC3703B3688E94
|
|
|
|
|
answer = BA0D89B5398DDBF9937A80D8746EE64ED3880D2D8CA2EC8FF5A5253E0D8BFE82578B872903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001007F563DC14E0FE403C3288CB7112AA9BEE9C9A03DD9B57F443BC66A96276FA6B6794613EAB032F7A564AECF24431742D5FAADB3FD264DD4C994513FCFD5F7A8A16A3852137B43C123934D4173C30D434BB29867F1330872B59DBDB063CF0435CC0A82D2F79E1A6247F8986C6508A852B52058877869D511FEC686F6401799ADCB4C26921F07B136B55C1A065453CEE825F6665706CEF3720FB6EB2F4DD30E1A78985F8F0F0AE81D58C8E2E97C5C16207F46CDE176D33E2C7B066FFEDB36CFE497130D337CFB20FD100DC4ACB143895E3D0CA0E9F66514DA2E2208C6B80357F884A882DA869FAFA1A65B7BD946A47F654015C3C2E5E47A03C660DA6EAE95AFB896454288661FEC3703B3688E94</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 AF A3 70 A4 FE 31 46 9B 77 38 37 EF
|
|
|
|
|
0010 | BA CC 4A D1 4E A9 BD B5 C9 43 F4 66 CF AC 16 F5
|
|
|
|
|
0020 | FE 55 C4 6B 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 39 8D DB F9 93 7A 80 D8 74 6E E6 4E
|
|
|
|
|
0010 | D3 88 0D 2D 8C A2 EC 8F F5 A5 25 3E 0D 8B FE 82
|
|
|
|
|
0020 | 57 8B 87 29 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 = BA0D89B5AFA370A4FE31469B773837EFBACC4AD14EA9BDB5C943F466CFAC16F5FE55C46
|
|
|
|
|
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 | 44 E9 DA F4 3C 28 6D 6D 9B 3E 67 B9 1A 23 FE 3B
|
|
|
|
|
0140 | B1 54 8A B8 3A D3 33 7B 6A 7C 83 9C 95 21 EF 3E
|
|
|
|
|
0150 | 31 00 8E 8B 18 97 3A 57 E9 DF 25 B7 20 1B 67 BA
|
|
|
|
|
0160 | 1C 30 BD D8 ED 75 2C 09 23 3B 28 49 56 F1 38 96
|
|
|
|
|
0170 | F5 6B 9D F9 8F 1F 04 88 38 CB 38 03 66 59 80 4C
|
|
|
|
|
0180 | 9B 14 F0 F9 52 BF 93 AA 13 84 1F 76 48 58 10 FF
|
|
|
|
|
0190 | 43 1D 19 0F B9 11 F8 55 BB 64 F8 E7 BC C4 06 B7
|
|
|
|
|
01A0 | 48 06 D1 1F 73 19 D7 53 26 A0 88 27 45 E5 FE 23
|
|
|
|
|
01B0 | 01 FF 35 AC F2 3D 78 85 FB A1 94 A2 9F F1 8D 0C
|
|
|
|
|
01C0 | 36 69 49 B3 95 7F C3 D0 ED 70 1F 1A 20 15 D5 83
|
|
|
|
|
01D0 | C0 AE F3 2D 91 2E E8 C7 C4 2E 77 E6 53 6E B4 45
|
|
|
|
|
01E0 | 1E BC F1 BC 80 92 1C 14 9B 22 98 EC 0C 9F 86 69
|
|
|
|
|
01F0 | 0D EE 19 B4 BD 07 98 B1 1D 31 B4 88 B3 8F 35 65
|
|
|
|
|
0200 | 39 B4 60 50 36 AD FE F5 F6 CA E4 50 AC 08 78 CB
|
|
|
|
|
0210 | 75 36 4F EA AA 71 96 B4 75 B9 3F 95 3E B2 0B BD
|
|
|
|
|
0220 | F2 43 2E 1B DF 48 ED C7 1A 19 F6 EB 55 D2 44 0D
|
|
|
|
|
0230 | A7 40 88 66</code></pre>
|
|
|
|
|
0130 | 7F 56 3D C1 4E 0F E4 03 C3 28 8C B7 11 2A A9 BE
|
|
|
|
|
0140 | E9 C9 A0 3D D9 B5 7F 44 3B C6 6A 96 27 6F A6 B6
|
|
|
|
|
0150 | 79 46 13 EA B0 32 F7 A5 64 AE CF 24 43 17 42 D5
|
|
|
|
|
0160 | FA AD B3 FD 26 4D D4 C9 94 51 3F CF D5 F7 A8 A1
|
|
|
|
|
0170 | 6A 38 52 13 7B 43 C1 23 93 4D 41 73 C3 0D 43 4B
|
|
|
|
|
0180 | B2 98 67 F1 33 08 72 B5 9D BD B0 63 CF 04 35 CC
|
|
|
|
|
0190 | 0A 82 D2 F7 9E 1A 62 47 F8 98 6C 65 08 A8 52 B5
|
|
|
|
|
01A0 | 20 58 87 78 69 D5 11 FE C6 86 F6 40 17 99 AD CB
|
|
|
|
|
01B0 | 4C 26 92 1F 07 B1 36 B5 5C 1A 06 54 53 CE E8 25
|
|
|
|
|
01C0 | F6 66 57 06 CE F3 72 0F B6 EB 2F 4D D3 0E 1A 78
|
|
|
|
|
01D0 | 98 5F 8F 0F 0A E8 1D 58 C8 E2 E9 7C 5C 16 20 7F
|
|
|
|
|
01E0 | 46 CD E1 76 D3 3E 2C 7B 06 6F FE DB 36 CF E4 97
|
|
|
|
|
01F0 | 13 0D 33 7C FB 20 FD 10 0D C4 AC B1 43 89 5E 3D
|
|
|
|
|
0200 | 0C A0 E9 F6 65 14 DA 2E 22 08 C6 B8 03 57 F8 84
|
|
|
|
|
0210 | A8 82 DA 86 9F AF A1 A6 5B 7B D9 46 A4 7F 65 40
|
|
|
|
|
0220 | 15 C3 C2 E5 E4 7A 03 C6 60 DA 6E AE 95 AF B8 96
|
|
|
|
|
0230 | 45 42 88 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 = BA0D89B5AFA370A4FE31469B773837EFBACC4AD14EA9BDB5C943F466CFAC16F5FE55C46
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>AFA370A4FE31469B773837EFBACC4AD1</code></td>
|
|
|
|
|
<td><code>398DDBF9937A80D8746EE64ED3880D2D</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>4EA9BDB5C943F466CFAC16F5FE55C46B</code></td>
|
|
|
|
|
<td><code>8CA2EC8FF5A5253E0D8BFE82578B8729</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B5AFA370A4FE31469B773837EFBACC4AD14EA9BDB5C943F466CFAC16F5FE55C46
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE00010044E9DAF43C286D6D9B3E67B9</code> <code>1A23FE3BB1548AB83AD3337B6A7C839C</code> <code>9521EF3E31008E8B18973A57E9DF25B7</code> <code>201B67BA1C30BDD8ED752C09233B2849</code> <code>56F13896F56B9DF98F1F048838CB3803</code> <code>6659804C9B14F0F952BF93AA13841F76</code> <code>485810FF431D190FB911F855BB64F8E7</code> <code>BCC406B74806D11F7319D75326A08827</code> <code>45E5FE2301FF35ACF23D7885FBA194A2</code> <code>9FF18D0C366949B3957FC3D0ED701F1A</code> <code>2015D583C0AEF32D912EE8C7C42E77E6</code> <code>536EB4451EBCF1BC80921C149B2298EC</code> <code>0C9F86690DEE19B4BD0798B11D31B488</code> <code>B38F356539B4605036ADFEF5F6CAE450</code> <code>AC0878CB75364FEAAA7196B475B93F95</code> <code>3EB20BBDF2432E1BDF48EDC71A19F6EB</code><br> <code>55D2440D</code></td>
|
|
|
|
|
<td><code>FE0001007F563DC14E0FE403C3288CB7</code> <code>112AA9BEE9C9A03DD9B57F443BC66A96</code> <code>276FA6B6794613EAB032F7A564AECF24</code> <code>431742D5FAADB3FD264DD4C994513FCF</code> <code>D5F7A8A16A3852137B43C123934D4173</code> <code>C30D434BB29867F1330872B59DBDB063</code> <code>CF0435CC0A82D2F79E1A6247F8986C65</code> <code>08A852B52058877869D511FEC686F640</code> <code>1799ADCB4C26921F07B136B55C1A0654</code> <code>53CEE825F6665706CEF3720FB6EB2F4D</code> <code>D30E1A78985F8F0F0AE81D58C8E2E97C</code> <code>5C16207F46CDE176D33E2C7B066FFEDB</code> <code>36CFE497130D337CFB20FD100DC4ACB1</code> <code>43895E3D0CA0E9F66514DA2E2208C6B8</code> <code>0357F884A882DA869FAFA1A65B7BD946</code> <code>A47F654015C3C2E5E47A03C660DA6EAE</code><br> <code>95AFB896</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>A7408866</code> (1720205479 in decimal)</td>
|
|
|
|
|
<td><code>45428866</code> (1720205893 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B5AFA370A4FE31469B773837EFBACC4AD14EA9BDB5C943F466CFAC16F5FE55C46
|
|
|
|
|
<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 = D3AD7CDAD9E59262FED48F057A4428A0E56558F68EFE903B1B9CB2011D3C52C5625BB781614FC536D22143B3577EC7956DB67F3D9DB75282936E5D0F08FBCA25F4370DDE8952AD768FD9EA5C51B99F0BBFF3AD182242D3675427EAEBD9E94A67A9CC86BA4A20E2034821240234670A4BF3051F19CCCC5B3544E225777724BBF50379A71DC9F7FCB39F4E98BD75D30BE149A9138E510A282B51D511992BE91B30F7075673E644462D4AF1FC1474B8EBE296D5878378CBD10EB752301A114FC95AE9FB2C48AC0EB1EE7E464F2551C48ED5EF6E143CAB01B1DD160622DD97ADF8C789F5BE99E6CD075C12047CDBE8344398DE80C15721B1CF05BD4C9208194DDE6C</code></pre>
|
|
|
|
|
<pre><code>b = 9CF93ACC8B60673E2BD956177B30AA952C03776A38A0F8F40A0A79C4F9B652D8F1DAD9EA226FFB92CFC68C51BF990C9FEA53295E0B33B60ED6B46F752CB27930B5DDBEED273E018CE369C7B7CDCF8CC9740436FF9C29ADA6FF7530B3F0933489EF1E882C68810B523A5F41335260B995CB8300E212F5DC3D34DB4AA0A1AA1FD83ED122EAB72F250414CCD1BC9FA4EB5A20E10CE3FE165A214C78850B1E5D5EA387B5B046E412AC967422A94B7ECEEAFC56038FF7F4CC370633A5C54BC8E1B16CB84BC5F277827A1AC0B67E2C3AD4EDEEEFAFF95ADBF395C148746F7BE4AC55E03E921C83B066A1FD51F2441563A7B6DBB2DC85A32420FD922C76C8F3DBA75382</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 = 056B646B1F5E4FFDC4F64B45E102AAEBE9E1448DC9E11C38D780463C49E00898DD86C69751CEE28FAAAC243E9BA005E44BFF8E7FB395942D8799E49E27D50D512AF041FB40C989D73A676C49210B0AF166138A6CC030C7FE0E914BE990A254F0924150A60DA77D23614F3B9694CF148C33B4F1F605499FB1B7F3143E3DB6A76BA209FF92A3964F6636BE41527C42458676BD79E4D81A13C48496AD5AB5B444B6716BB70EEEA36235F4E5D25268836B04CA2CE82C2E273B17A08BF93C742CEA3A7921D770A54CEE65968D52EAA1E370DBB1267881F895AA173B7123794EFB24B31D60F1686D1569649DCBAE4769E1538736BA2DA0F50E5311EE0604D0667997F8</code></pre>
|
|
|
|
|
<pre><code>g_b = 9B6F1D157BE53750FAD2CF4D35E3BC680EA14D0BF22B1F37D871CAE627537BFE483C12E27D079808235103E3D826C29E66EB79E0EB0B497617FD8797EE98B24325940CDE8C03CBE9ACDA18F7DCC93A1252465816F1AB54252B35BC8F7BCC4459E764432F0A9B351F97BED47A907BFD3913230D1FE3499FC8C31E6B33BCA597724F89C194D342591094B533D978646A68AAC2FFE912C06198CF1A6FDA2A51FE423A9BC784AD2E99FF40C7FC33F69E0A5E3762252B0B97BE75F64977C8A329F986E75FD0266E48D1649DB7017CFEDD58AA1EF8F808D9AF3DB28F9A96ABFAFB43E2473576D29A5DF805525172DDE83E7DEE3EDD01F0B5496E6F5EDA6F992DF6B8DE</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 AF A3 70 A4 FE 31 46 9B 77 38 37 EF
|
|
|
|
|
0010 | BA CC 4A D1 4E A9 BD B5 C9 43 F4 66 CF AC 16 F5
|
|
|
|
|
0020 | FE 55 C4 6B 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 05 6B 64 6B 1F 5E 4F FD C4 F6 4B 45 E1 02 AA EB
|
|
|
|
|
0040 | E9 E1 44 8D C9 E1 1C 38 D7 80 46 3C 49 E0 08 98
|
|
|
|
|
0050 | DD 86 C6 97 51 CE E2 8F AA AC 24 3E 9B A0 05 E4
|
|
|
|
|
0060 | 4B FF 8E 7F B3 95 94 2D 87 99 E4 9E 27 D5 0D 51
|
|
|
|
|
0070 | 2A F0 41 FB 40 C9 89 D7 3A 67 6C 49 21 0B 0A F1
|
|
|
|
|
0080 | 66 13 8A 6C C0 30 C7 FE 0E 91 4B E9 90 A2 54 F0
|
|
|
|
|
0090 | 92 41 50 A6 0D A7 7D 23 61 4F 3B 96 94 CF 14 8C
|
|
|
|
|
00A0 | 33 B4 F1 F6 05 49 9F B1 B7 F3 14 3E 3D B6 A7 6B
|
|
|
|
|
00B0 | A2 09 FF 92 A3 96 4F 66 36 BE 41 52 7C 42 45 86
|
|
|
|
|
00C0 | 76 BD 79 E4 D8 1A 13 C4 84 96 AD 5A B5 B4 44 B6
|
|
|
|
|
00D0 | 71 6B B7 0E EE A3 62 35 F4 E5 D2 52 68 83 6B 04
|
|
|
|
|
00E0 | CA 2C E8 2C 2E 27 3B 17 A0 8B F9 3C 74 2C EA 3A
|
|
|
|
|
00F0 | 79 21 D7 70 A5 4C EE 65 96 8D 52 EA A1 E3 70 DB
|
|
|
|
|
0100 | B1 26 78 81 F8 95 AA 17 3B 71 23 79 4E FB 24 B3
|
|
|
|
|
0110 | 1D 60 F1 68 6D 15 69 64 9D CB AE 47 69 E1 53 87
|
|
|
|
|
0120 | 36 BA 2D A0 F5 0E 53 11 EE 06 04 D0 66 79 97 F8</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 39 8D DB F9 93 7A 80 D8 74 6E E6 4E
|
|
|
|
|
0010 | D3 88 0D 2D 8C A2 EC 8F F5 A5 25 3E 0D 8B FE 82
|
|
|
|
|
0020 | 57 8B 87 29 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 9B 6F 1D 15 7B E5 37 50 FA D2 CF 4D 35 E3 BC 68
|
|
|
|
|
0040 | 0E A1 4D 0B F2 2B 1F 37 D8 71 CA E6 27 53 7B FE
|
|
|
|
|
0050 | 48 3C 12 E2 7D 07 98 08 23 51 03 E3 D8 26 C2 9E
|
|
|
|
|
0060 | 66 EB 79 E0 EB 0B 49 76 17 FD 87 97 EE 98 B2 43
|
|
|
|
|
0070 | 25 94 0C DE 8C 03 CB E9 AC DA 18 F7 DC C9 3A 12
|
|
|
|
|
0080 | 52 46 58 16 F1 AB 54 25 2B 35 BC 8F 7B CC 44 59
|
|
|
|
|
0090 | E7 64 43 2F 0A 9B 35 1F 97 BE D4 7A 90 7B FD 39
|
|
|
|
|
00A0 | 13 23 0D 1F E3 49 9F C8 C3 1E 6B 33 BC A5 97 72
|
|
|
|
|
00B0 | 4F 89 C1 94 D3 42 59 10 94 B5 33 D9 78 64 6A 68
|
|
|
|
|
00C0 | AA C2 FF E9 12 C0 61 98 CF 1A 6F DA 2A 51 FE 42
|
|
|
|
|
00D0 | 3A 9B C7 84 AD 2E 99 FF 40 C7 FC 33 F6 9E 0A 5E
|
|
|
|
|
00E0 | 37 62 25 2B 0B 97 BE 75 F6 49 77 C8 A3 29 F9 86
|
|
|
|
|
00F0 | E7 5F D0 26 6E 48 D1 64 9D B7 01 7C FE DD 58 AA
|
|
|
|
|
0100 | 1E F8 F8 08 D9 AF 3D B2 8F 9A 96 AB FA FB 43 E2
|
|
|
|
|
0110 | 47 35 76 D2 9A 5D F8 05 52 51 72 DD E8 3E 7D EE
|
|
|
|
|
0120 | 3E DD 01 F0 B5 49 6E 6F 5E DA 6F 99 2D F6 B8 DE</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 = BA0D89B5AFA370A4FE31469B773837EFBACC4AD14EA9BDB5C943F466CFAC16F5FE55C46
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>AFA370A4FE31469B773837EFBACC4AD1</code></td>
|
|
|
|
|
<td><code>398DDBF9937A80D8746EE64ED3880D2D</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>4EA9BDB5C943F466CFAC16F5FE55C46B</code></td>
|
|
|
|
|
<td><code>8CA2EC8FF5A5253E0D8BFE82578B8729</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FE000100056B646B1F5E4FFDC4F64B45</code> <code>E102AAEBE9E1448DC9E11C38D780463C</code> <code>49E00898DD86C69751CEE28FAAAC243E</code> <code>9BA005E44BFF8E7FB395942D8799E49E</code> <code>27D50D512AF041FB40C989D73A676C49</code> <code>210B0AF166138A6CC030C7FE0E914BE9</code> <code>90A254F0924150A60DA77D23614F3B96</code> <code>94CF148C33B4F1F605499FB1B7F3143E</code> <code>3DB6A76BA209FF92A3964F6636BE4152</code> <code>7C42458676BD79E4D81A13C48496AD5A</code> <code>B5B444B6716BB70EEEA36235F4E5D252</code> <code>68836B04CA2CE82C2E273B17A08BF93C</code> <code>742CEA3A7921D770A54CEE65968D52EA</code> <code>A1E370DBB1267881F895AA173B712379</code> <code>4EFB24B31D60F1686D1569649DCBAE47</code> <code>69E1538736BA2DA0F50E5311EE0604D0</code><br> <code>667997F8</code></td>
|
|
|
|
|
<td><code>FE0001009B6F1D157BE53750FAD2CF4D</code> <code>35E3BC680EA14D0BF22B1F37D871CAE6</code> <code>27537BFE483C12E27D079808235103E3</code> <code>D826C29E66EB79E0EB0B497617FD8797</code> <code>EE98B24325940CDE8C03CBE9ACDA18F7</code> <code>DCC93A1252465816F1AB54252B35BC8F</code> <code>7BCC4459E764432F0A9B351F97BED47A</code> <code>907BFD3913230D1FE3499FC8C31E6B33</code> <code>BCA597724F89C194D342591094B533D9</code> <code>78646A68AAC2FFE912C06198CF1A6FDA</code> <code>2A51FE423A9BC784AD2E99FF40C7FC33</code> <code>F69E0A5E3762252B0B97BE75F64977C8</code> <code>A329F986E75FD0266E48D1649DB7017C</code> <code>FEDD58AA1EF8F808D9AF3DB28F9A96AB</code> <code>FAFB43E2473576D29A5DF805525172DD</code> <code>E83E7DEE3EDD01F0B5496E6F5EDA6F99</code><br> <code>2DF6B8DE</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 = BA0D89B5AFA370A4FE31469B773837EFBACC4AD14EA9BDB5C943F466CFAC16F5FE55C46
|
|
|
|
|
<!-- 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 = 54B64366AFA370A4FE31469B773837EFBACC4AD14EA9BDB5C943F466CFAC16F5FE55C46B0000000000000000FE000100056B646B1F5E4FFDC4F64B45E102AAEBE9E1448DC9E11C38D780463C49E00898DD86C69751CEE28FAAAC243E9BA005E44BFF8E7FB395942D8799E49E27D50D512AF041FB40C989D73A676C49210B0AF166138A6CC030C7FE0E914BE990A254F0924150A60DA77D23614F3B9694CF148C33B4F1F605499FB1B7F3143E3DB6A76BA209FF92A3964F6636BE41527C42458676BD79E4D81A13C48496AD5AB5B444B6716BB70EEEA36235F4E5D25268836B04CA2CE82C2E273B17A08BF93C742CEA3A7921D770A54CEE65968D52EAA1E370DBB1267881F895AA173B7123794EFB24B31D60F1686D1569649DCBAE4769E1538736BA2DA0F50E5311EE0604D0667997F8
|
|
|
|
|
padding = E2F754D7B03235FB90F69DB2
|
|
|
|
|
tmp_aes_key = 994C8CDB14BD79852644A3A0AC2F17F0BBA74739B50510F89FB24C1AF3359C62
|
|
|
|
|
tmp_aes_iv = 6F34827F604727F0E58EDA63622F7EB017970D8045601D2BF57D24B8EA41D482</code></pre>
|
|
|
|
|
<pre><code>data = 54B64366398DDBF9937A80D8746EE64ED3880D2D8CA2EC8FF5A5253E0D8BFE82578B87290000000000000000FE0001009B6F1D157BE53750FAD2CF4D35E3BC680EA14D0BF22B1F37D871CAE627537BFE483C12E27D079808235103E3D826C29E66EB79E0EB0B497617FD8797EE98B24325940CDE8C03CBE9ACDA18F7DCC93A1252465816F1AB54252B35BC8F7BCC4459E764432F0A9B351F97BED47A907BFD3913230D1FE3499FC8C31E6B33BCA597724F89C194D342591094B533D978646A68AAC2FFE912C06198CF1A6FDA2A51FE423A9BC784AD2E99FF40C7FC33F69E0A5E3762252B0B97BE75F64977C8A329F986E75FD0266E48D1649DB7017CFEDD58AA1EF8F808D9AF3DB28F9A96ABFAFB43E2473576D29A5DF805525172DDE83E7DEE3EDD01F0B5496E6F5EDA6F992DF6B8DE
|
|
|
|
|
padding = 0A1EB899A22DE53DA9B39222
|
|
|
|
|
tmp_aes_key = 8E9BCDF0570238EA68479EC856957F1758D2D464493C1655D577FFBB524DEB9E
|
|
|
|
|
tmp_aes_iv = 6048C38AF2E0E70B3B1A24148ED603EB80F8C30743CDE5CC500F84864D95A3EC</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 = 3FC2D37E869E29FF182A2AB7D7CC4B3EA02DA5C3B54BCF01FE08B452827031A2B68B78460CB1F9CEEC2BB7F4E1D228F518FCC86DA73F93830E18DD67DE9B88DDD3DF5C53E26D2840BC828D1810DAA65EE0C3803395B424B82CA3CEC2579AA553A147A54BDC7380088B2C739626C147AAADB80DF409197BBDDC581FE9199CCAE39F96C7BCF00A7652240C9565BDEE9049DCC315903B703FC19F84F944738271CED509E34DBABCA15D973D991263BCE7210E82B5FEA947EA1109E4A1D8E051417D540D0853133559B3FEE79FBC2AE8D2E092E2EFC9CD690113B5899174C126963958A7CFD5B731E8DFEB94B6E1625393FC3CFE4345B1B02C7A31655BC86B9693BC5DEE75204E2F49B9569744CD6727E997EDBEF2B6C88F48443B319095BA8F5E26433B08761FD4D2EB08C742072C4C3F04C3AED3B9BA17A78FDFF52623DE7EFEC1E8DC01B81D6CC155544ABCF5F5030E10</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 55F11A0026B5AD5AC5828AB9829C89CBBD55B813972A35B19BE41D7C650F49409322E718E3D17E19853D107021D4907CB821DE489FC8A282110AE38A523B385446283976B7A05838317543A4098E7E7A62301D93B362DF107B2C22CB22D7C2531C4FCA2D16762CE978C97B5DF3B3E60BE01087E32D7D70BD1B8433B58F01126D0C56F98C9D77777B5E4EB57CE3EE17AF033E81B19E1E281F13CBCE3BA19639A31E0BD9FAC8E24D5ACB2928C8998AB60D95035D439EAECE695E6E278173A8A933587F0E5D09F0BAB18FA1B9A04AEC3BAF3F3EE99E33F69129283E161FA464D9E7A6B35F4BDAE1644C84EBC405165F370FE68EAB5A6FFB99F27BCEF9DD3B6B2EF91FBD76D00C92A8C10B992A07050DE57E4A5523A0C0E3F217D27D7F1B3AD9A5AEA45EC31C89352C0727152E1A8CC99A805ECC6601F8AA6F92613BCF8504588E6B7592F73990E4C456E39680C997EBB396</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 30 78 08 00 A7 40 88 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 AF A3 70 A4 FE 31 46 9B
|
|
|
|
|
0020 | 77 38 37 EF BA CC 4A D1 4E A9 BD B5 C9 43 F4 66
|
|
|
|
|
0030 | CF AC 16 F5 FE 55 C4 6B FE 50 01 00 3F C2 D3 7E
|
|
|
|
|
0040 | 86 9E 29 FF 18 2A 2A B7 D7 CC 4B 3E A0 2D A5 C3
|
|
|
|
|
0050 | B5 4B CF 01 FE 08 B4 52 82 70 31 A2 B6 8B 78 46
|
|
|
|
|
0060 | 0C B1 F9 CE EC 2B B7 F4 E1 D2 28 F5 18 FC C8 6D
|
|
|
|
|
0070 | A7 3F 93 83 0E 18 DD 67 DE 9B 88 DD D3 DF 5C 53
|
|
|
|
|
0080 | E2 6D 28 40 BC 82 8D 18 10 DA A6 5E E0 C3 80 33
|
|
|
|
|
0090 | 95 B4 24 B8 2C A3 CE C2 57 9A A5 53 A1 47 A5 4B
|
|
|
|
|
00A0 | DC 73 80 08 8B 2C 73 96 26 C1 47 AA AD B8 0D F4
|
|
|
|
|
00B0 | 09 19 7B BD DC 58 1F E9 19 9C CA E3 9F 96 C7 BC
|
|
|
|
|
00C0 | F0 0A 76 52 24 0C 95 65 BD EE 90 49 DC C3 15 90
|
|
|
|
|
00D0 | 3B 70 3F C1 9F 84 F9 44 73 82 71 CE D5 09 E3 4D
|
|
|
|
|
00E0 | BA BC A1 5D 97 3D 99 12 63 BC E7 21 0E 82 B5 FE
|
|
|
|
|
00F0 | A9 47 EA 11 09 E4 A1 D8 E0 51 41 7D 54 0D 08 53
|
|
|
|
|
0100 | 13 35 59 B3 FE E7 9F BC 2A E8 D2 E0 92 E2 EF C9
|
|
|
|
|
0110 | CD 69 01 13 B5 89 91 74 C1 26 96 39 58 A7 CF D5
|
|
|
|
|
0120 | B7 31 E8 DF EB 94 B6 E1 62 53 93 FC 3C FE 43 45
|
|
|
|
|
0130 | B1 B0 2C 7A 31 65 5B C8 6B 96 93 BC 5D EE 75 20
|
|
|
|
|
0140 | 4E 2F 49 B9 56 97 44 CD 67 27 E9 97 ED BE F2 B6
|
|
|
|
|
0150 | C8 8F 48 44 3B 31 90 95 BA 8F 5E 26 43 3B 08 76
|
|
|
|
|
0160 | 1F D4 D2 EB 08 C7 42 07 2C 4C 3F 04 C3 AE D3 B9
|
|
|
|
|
0170 | BA 17 A7 8F DF F5 26 23 DE 7E FE C1 E8 DC 01 B8
|
|
|
|
|
0180 | 1D 6C C1 55 54 4A BC F5 F5 03 0E 10</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 B0 0C 0A 00 45 42 88 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 39 8D DB F9 93 7A 80 D8
|
|
|
|
|
0020 | 74 6E E6 4E D3 88 0D 2D 8C A2 EC 8F F5 A5 25 3E
|
|
|
|
|
0030 | 0D 8B FE 82 57 8B 87 29 FE 50 01 00 55 F1 1A 00
|
|
|
|
|
0040 | 26 B5 AD 5A C5 82 8A B9 82 9C 89 CB BD 55 B8 13
|
|
|
|
|
0050 | 97 2A 35 B1 9B E4 1D 7C 65 0F 49 40 93 22 E7 18
|
|
|
|
|
0060 | E3 D1 7E 19 85 3D 10 70 21 D4 90 7C B8 21 DE 48
|
|
|
|
|
0070 | 9F C8 A2 82 11 0A E3 8A 52 3B 38 54 46 28 39 76
|
|
|
|
|
0080 | B7 A0 58 38 31 75 43 A4 09 8E 7E 7A 62 30 1D 93
|
|
|
|
|
0090 | B3 62 DF 10 7B 2C 22 CB 22 D7 C2 53 1C 4F CA 2D
|
|
|
|
|
00A0 | 16 76 2C E9 78 C9 7B 5D F3 B3 E6 0B E0 10 87 E3
|
|
|
|
|
00B0 | 2D 7D 70 BD 1B 84 33 B5 8F 01 12 6D 0C 56 F9 8C
|
|
|
|
|
00C0 | 9D 77 77 7B 5E 4E B5 7C E3 EE 17 AF 03 3E 81 B1
|
|
|
|
|
00D0 | 9E 1E 28 1F 13 CB CE 3B A1 96 39 A3 1E 0B D9 FA
|
|
|
|
|
00E0 | C8 E2 4D 5A CB 29 28 C8 99 8A B6 0D 95 03 5D 43
|
|
|
|
|
00F0 | 9E AE CE 69 5E 6E 27 81 73 A8 A9 33 58 7F 0E 5D
|
|
|
|
|
0100 | 09 F0 BA B1 8F A1 B9 A0 4A EC 3B AF 3F 3E E9 9E
|
|
|
|
|
0110 | 33 F6 91 29 28 3E 16 1F A4 64 D9 E7 A6 B3 5F 4B
|
|
|
|
|
0120 | DA E1 64 4C 84 EB C4 05 16 5F 37 0F E6 8E AB 5A
|
|
|
|
|
0130 | 6F FB 99 F2 7B CE F9 DD 3B 6B 2E F9 1F BD 76 D0
|
|
|
|
|
0140 | 0C 92 A8 C1 0B 99 2A 07 05 0D E5 7E 4A 55 23 A0
|
|
|
|
|
0150 | C0 E3 F2 17 D2 7D 7F 1B 3A D9 A5 AE A4 5E C3 1C
|
|
|
|
|
0160 | 89 35 2C 07 27 15 2E 1A 8C C9 9A 80 5E CC 66 01
|
|
|
|
|
0170 | F8 AA 6F 92 61 3B CF 85 04 58 8E 6B 75 92 F7 39
|
|
|
|
|
0180 | 90 E4 C4 56 E3 96 80 C9 97 EB B3 96</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>30780800A7408866</code></td>
|
|
|
|
|
<td><code>B00C0A0045428866</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>AFA370A4FE31469B773837EFBACC4AD1</code></td>
|
|
|
|
|
<td><code>398DDBF9937A80D8746EE64ED3880D2D</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>4EA9BDB5C943F466CFAC16F5FE55C46B</code></td>
|
|
|
|
|
<td><code>8CA2EC8FF5A5253E0D8BFE82578B8729</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE5001003FC2D37E869E29FF182A2AB7</code> <code>D7CC4B3EA02DA5C3B54BCF01FE08B452</code> <code>827031A2B68B78460CB1F9CEEC2BB7F4</code> <code>E1D228F518FCC86DA73F93830E18DD67</code> <code>DE9B88DDD3DF5C53E26D2840BC828D18</code> <code>10DAA65EE0C3803395B424B82CA3CEC2</code> <code>579AA553A147A54BDC7380088B2C7396</code> <code>26C147AAADB80DF409197BBDDC581FE9</code> <code>199CCAE39F96C7BCF00A7652240C9565</code> <code>BDEE9049DCC315903B703FC19F84F944</code> <code>738271CED509E34DBABCA15D973D9912</code> <code>63BCE7210E82B5FEA947EA1109E4A1D8</code> <code>E051417D540D0853133559B3FEE79FBC</code> <code>2AE8D2E092E2EFC9CD690113B5899174</code> <code>C126963958A7CFD5B731E8DFEB94B6E1</code> <code>625393FC3CFE4345B1B02C7A31655BC8</code> <code>6B9693BC5DEE75204E2F49B9569744CD</code> <code>6727E997EDBEF2B6C88F48443B319095</code> <code>BA8F5E26433B08761FD4D2EB08C74207</code> <code>2C4C3F04C3AED3B9BA17A78FDFF52623</code> <code>DE7EFEC1E8DC01B81D6CC155544ABCF5</code><br> <code>F5030E10</code></td>
|
|
|
|
|
<td><code>FE50010055F11A0026B5AD5AC5828AB9</code> <code>829C89CBBD55B813972A35B19BE41D7C</code> <code>650F49409322E718E3D17E19853D1070</code> <code>21D4907CB821DE489FC8A282110AE38A</code> <code>523B385446283976B7A05838317543A4</code> <code>098E7E7A62301D93B362DF107B2C22CB</code> <code>22D7C2531C4FCA2D16762CE978C97B5D</code> <code>F3B3E60BE01087E32D7D70BD1B8433B5</code> <code>8F01126D0C56F98C9D77777B5E4EB57C</code> <code>E3EE17AF033E81B19E1E281F13CBCE3B</code> <code>A19639A31E0BD9FAC8E24D5ACB2928C8</code> <code>998AB60D95035D439EAECE695E6E2781</code> <code>73A8A933587F0E5D09F0BAB18FA1B9A0</code> <code>4AEC3BAF3F3EE99E33F69129283E161F</code> <code>A464D9E7A6B35F4BDAE1644C84EBC405</code> <code>165F370FE68EAB5A6FFB99F27BCEF9DD</code> <code>3B6B2EF91FBD76D00C92A8C10B992A07</code> <code>050DE57E4A5523A0C0E3F217D27D7F1B</code> <code>3AD9A5AEA45EC31C89352C0727152E1A</code> <code>8CC99A805ECC6601F8AA6F92613BCF85</code> <code>04588E6B7592F73990E4C456E39680C9</code><br> <code>97EBB396</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 = 15AEAD3578DC7E1F842D2A7D9E415C91E7C13E769BF72B4822887D4554F7B0C10F1EFC3E5AB0A24939A4E0D9DCB5F17E7AC95A3D7AD626DF3AA4D6FCD43C932F04D969153A817EAD22BD7AD761D8DB33657EB4B519A65B4A9F5403D1C3A78FB1391383227799F61584309C6F27BB246749F294ED8F556D3F0F3FFB7567FAD2C913251892F8FD7A34158E9A024EF7E6B149371AF4B8C94A6A4228C0C8BC156837DF01D1852EEB271466DFB02DAECC251FA6CD5B4D7B6124432C792EB9E5B9EC164FD466996386C602BE92F920730260C277BADBA451BCD9A424EE44B0EA9F4FDFD85ACF72BB467CE0BADA3351CEA199173AA360F19B84F6DFD26A3313D7661D1D</code></pre>
|
|
|
|
|
<pre><code>auth_key = 840B908CA64E0FB6225CA44BC886D7BAF8810183920E925BD3DC713A19B6A6D8360B3DCA4653D967036BC7ED84C7EDE32DF633E7A9443EA00905D6E25FA4916A2BBC3A4025A6679A9097E8B208839C220DFCE2A3ACFFA24E84E4F23A57D47DE39AE79D391ECBD8EF3EB7796C9FAC18B4CEDF972AEA3FAC98D33C1A7BA988AB35E0861FA930343244614AD36EB39775999DF7BDEEF3D3DCAC2D7E5A43923ACB87E8201733EF95C1C74F544F2977E8892DDDB5537F16337C41E7F6094827C9F6D04D06167651FF2F63240855C17F9449F88D95F767828C1601D74B170EF6E90DFD6DFF6C462C977B2C5A069D9425427F618D7251C100DEC085C50ABE50366395B5</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 08 D0 D7 A8 40 88 66
|
|
|
|
|
0010 | 54 00 00 00 34 F7 CB 3B AF A3 70 A4 FE 31 46 9B
|
|
|
|
|
0020 | 77 38 37 EF BA CC 4A D1 4E A9 BD B5 C9 43 F4 66
|
|
|
|
|
0030 | CF AC 16 F5 FE 55 C4 6B 29 16 7E 17 26 A9 45 22
|
|
|
|
|
0040 | 53 60 85 E9 26 3B 88 CD</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 48 45 29 46 42 88 66
|
|
|
|
|
0010 | 7C 00 00 00 34 F7 CB 3B 39 8D DB F9 93 7A 80 D8
|
|
|
|
|
0020 | 74 6E E6 4E D3 88 0D 2D 8C A2 EC 8F F5 A5 25 3E
|
|
|
|
|
0030 | 0D 8B FE 82 57 8B 87 29 04 58 BD 97 70 9D BD 78
|
|
|
|
|
0040 | 01 4D 57 70 9D 79 04 45</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>0108D0D7A8408866</code></td>
|
|
|
|
|
<td><code>0148452946428866</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>54000000</code> (84 in decimal)</td>
|
|
|
|
|
<td><code>7C000000</code> (124 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>AFA370A4FE31469B773837EFBACC4AD1</code></td>
|
|
|
|
|
<td><code>398DDBF9937A80D8746EE64ED3880D2D</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>4EA9BDB5C943F466CFAC16F5FE55C46B</code></td>
|
|
|
|
|
<td><code>8CA2EC8FF5A5253E0D8BFE82578B8729</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>29167E1726A94522536085E9263B88CD</code></td>
|
|
|
|
|
<td><code>0458BD97709DBD78014D57709D790445</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>
|
|
|
|
|