|
|
|
@ -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 B0 7C 0C 00 01 B9 AB 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE A7 DE B1 F0 60 93 B2 7E
|
|
|
|
|
0020 | 6E 98 40 24 9B D3 CC 00</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 5C CB 0D 00 4C C4 AB 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 58 C9 B5 64 FE 46 36 F6
|
|
|
|
|
0020 | F8 CE B1 1D 46 31 51 10</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>B07C0C0001B9AB66</code></td>
|
|
|
|
|
<td><code>5CCB0D004CC4AB66</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>A7DEB1F06093B27E6E9840249BD3CC00</code></td>
|
|
|
|
|
<td><code>58C9B564FE4636F6F8CEB11D46315110</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 60 33 47 01 B9 AB 66
|
|
|
|
|
0010 | 6C 00 00 00 63 24 16 05 A7 DE B1 F0 60 93 B2 7E
|
|
|
|
|
0020 | 6E 98 40 24 9B D3 CC 00 79 6D 6C 2F 93 79 BD C3
|
|
|
|
|
0030 | 3B 8E D0 94 91 64 C4 44 08 20 B3 A6 52 7B D9 8C
|
|
|
|
|
0040 | 5F 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 74 F4 65 4C C4 AB 66
|
|
|
|
|
0010 | 6C 00 00 00 63 24 16 05 58 C9 B5 64 FE 46 36 F6
|
|
|
|
|
0020 | F8 CE B1 1D 46 31 51 10 4C 0F DA E0 DE 9F D6 70
|
|
|
|
|
0030 | 39 C0 6C 90 26 E6 97 42 08 18 20 0A 18 62 DC 69
|
|
|
|
|
0040 | D7 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,7 +132,7 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>0160334701B9AB66</code></td>
|
|
|
|
|
<td><code>0174F4654CC4AB66</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A7DEB1F06093B27E6E9840249BD3CC00</code></td>
|
|
|
|
|
<td><code>58C9B564FE4636F6F8CEB11D46315110</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>796D6C2F9379BDC33B8ED0949164C444</code></td>
|
|
|
|
|
<td><code>4C0FDAE0DE9FD67039C06C9026E69742</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>0820B3A6527BD98C5F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2356409903240285279</td>
|
|
|
|
|
<td><code>0818200A1862DC69D7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1738400556019116503</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 = 2356409903240285279</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2356409903240285279 = 1465403767 * 1608027737</code></p>
|
|
|
|
|
<pre><code>p = 1465403767
|
|
|
|
|
q = 1608027737</code></pre>
|
|
|
|
|
<pre><code>pq = 1738400556019116503</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1738400556019116503 = 1125991333 * 1543884491</code></p>
|
|
|
|
|
<pre><code>p = 1125991333
|
|
|
|
|
q = 1543884491</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 20 B3 A6 52 7B D9 8C 5F 00 00 00
|
|
|
|
|
0010 | 04 57 58 49 77 00 00 00 04 5F D8 8E 59 00 00 00
|
|
|
|
|
0020 | A7 DE B1 F0 60 93 B2 7E 6E 98 40 24 9B D3 CC 00
|
|
|
|
|
0030 | 79 6D 6C 2F 93 79 BD C3 3B 8E D0 94 91 64 C4 44
|
|
|
|
|
0040 | 25 02 2B C0 F4 48 36 6E 6A 81 6A 00 37 54 20 C8
|
|
|
|
|
0050 | BF 1E 35 EA E6 45 26 9F 0E 96 02 7C 07 CD F5 00
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 18 20 0A 18 62 DC 69 D7 00 00 00
|
|
|
|
|
0010 | 04 43 1D 43 A5 00 00 00 04 5C 05 CE CB 00 00 00
|
|
|
|
|
0020 | 58 C9 B5 64 FE 46 36 F6 F8 CE B1 1D 46 31 51 10
|
|
|
|
|
0030 | 4C 0F DA E0 DE 9F D6 70 39 C0 6C 90 26 E6 97 42
|
|
|
|
|
0040 | 37 9E 6B BA F1 6B C5 0D D7 20 6C 66 53 D7 6C 1A
|
|
|
|
|
0050 | B0 4D 68 4E FC 18 BD C9 A0 D3 EA D0 83 A5 B0 2A
|
|
|
|
|
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 = 1608027737</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>0820B3A6527BD98C5F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2356409903240285279</td>
|
|
|
|
|
<td><code>0818200A1862DC69D7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1738400556019116503</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>0457584977000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1465403767</td>
|
|
|
|
|
<td><code>04431D43A5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1125991333</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>045FD88E59000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1608027737</td>
|
|
|
|
|
<td><code>045C05CECB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1543884491</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>A7DEB1F06093B27E6E9840249BD3CC00</code></td>
|
|
|
|
|
<td><code>58C9B564FE4636F6F8CEB11D46315110</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>796D6C2F9379BDC33B8ED0949164C444</code></td>
|
|
|
|
|
<td><code>4C0FDAE0DE9FD67039C06C9026E69742</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>25022BC0F448366E6A816A00375420C8</code> <code>BF1E35EAE645269F0E96027C07CDF500</code></td>
|
|
|
|
|
<td><code>379E6BBAF16BC50DD7206C6653D76C1A</code> <code>B04D684EFC18BDC9A0D3EAD083A5B02A</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1608027737</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 = 955FF5A90820B3A6527BD98C5F0000000457584977000000045FD88E59000000A7DEB1F06093B27E6E9840249BD3CC00796D6C2F9379BDC33B8ED0949164C44425022BC0F448366E6A816A00375420C8BF1E35EAE645269F0E96027C07CDF50002000000
|
|
|
|
|
random_padding_bytes = 370349728C611B3B5FBD135DA242B23A91DB12514EB3D3B0A44C9BF7B71D69CB2F4CA827B64399721E88D8C215AEE2EF3786FA19DF9D380344E1CF81A76B1D0A582D3856938A1D5A3536B7A270A7663FD32B3E568FDA37199612D21C</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A90818200A1862DC69D700000004431D43A5000000045C05CECB00000058C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E69742379E6BBAF16BC50DD7206C6653D76C1AB04D684EFC18BDC9A0D3EAD083A5B02A02000000
|
|
|
|
|
random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E652B3834C58B57BBBD152A48E84A5ADE1B1F51976DE081DF5ECD69D89EB57A8FEE8C618F6592F100C140B7A22CDD78DC328916E1613B43B14DC4BF5FAD721FBC</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 = 6D6E8A696EF41351D3F75C502BDA372FD264C46B62F6D23B5E56DBCF25FB528D78F0E0A17E4700CA36D9726D7A067B1DD5A6E22B56664B2ECD4F14436421F7F0ABBECB74139CB14FED6105D377714602EFEF632641C78370B917B492EBD5DA7E8F5A0CD8811408ACF0C021B8530DA4E3AABD332EE111BB83384018150DCD76640D6E4C89A316665020AD69B48590F4AAC24425DE2E6678E6DD2246FFCB483B9A30E2ED47BCBAC4E47859D76E8BCE15AE471EB53FC313C7D5BCAD77F013F685D3A5C932D873A268050308D80F4FF6A2AB39CC9B10CB399A4CA9ED6492B868B3475CBB362AAFC6655DE707724C183EC84F057453E38CC5FBE50BFE694A4E1B39B3</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 613F44EFA4629A4977FE780D6BF7F0A2DE519E4D5938FBFA1010431E5C5034E18890739FE555E38971A07479FC0D946292EEC67483286D6A759018BE17381EB253E5AE73C694FA473EE2D569A552786799D4ECCAC85C896E28BDD1C8273727D96DC9FB60CDD9FE2F1D460C537898EFA2CF39827A2386994B39AB3304B32AD6822614380240BDFEAD80F8FCFFB063A51BD5F6E3383D9D397AA8194CD895824B7D754020234DB77D7C83340F413C2512F9A53060E868AE54BCE965079301D7972FA76766AB26D6E605A2226FB3330FEFC7DD62B2A7300F598F8698EB50B72B712ED1B781814FF0818D20BA5DBB4D663158CC6B64B4651E5D436B5328A8D37EB574</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 B4 7C 0C 00 01 B9 AB 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 A7 DE B1 F0 60 93 B2 7E
|
|
|
|
|
0020 | 6E 98 40 24 9B D3 CC 00 79 6D 6C 2F 93 79 BD C3
|
|
|
|
|
0030 | 3B 8E D0 94 91 64 C4 44 04 57 58 49 77 00 00 00
|
|
|
|
|
0040 | 04 5F D8 8E 59 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 6D 6E 8A 69 6E F4 13 51 D3 F7 5C 50
|
|
|
|
|
0060 | 2B DA 37 2F D2 64 C4 6B 62 F6 D2 3B 5E 56 DB CF
|
|
|
|
|
0070 | 25 FB 52 8D 78 F0 E0 A1 7E 47 00 CA 36 D9 72 6D
|
|
|
|
|
0080 | 7A 06 7B 1D D5 A6 E2 2B 56 66 4B 2E CD 4F 14 43
|
|
|
|
|
0090 | 64 21 F7 F0 AB BE CB 74 13 9C B1 4F ED 61 05 D3
|
|
|
|
|
00A0 | 77 71 46 02 EF EF 63 26 41 C7 83 70 B9 17 B4 92
|
|
|
|
|
00B0 | EB D5 DA 7E 8F 5A 0C D8 81 14 08 AC F0 C0 21 B8
|
|
|
|
|
00C0 | 53 0D A4 E3 AA BD 33 2E E1 11 BB 83 38 40 18 15
|
|
|
|
|
00D0 | 0D CD 76 64 0D 6E 4C 89 A3 16 66 50 20 AD 69 B4
|
|
|
|
|
00E0 | 85 90 F4 AA C2 44 25 DE 2E 66 78 E6 DD 22 46 FF
|
|
|
|
|
00F0 | CB 48 3B 9A 30 E2 ED 47 BC BA C4 E4 78 59 D7 6E
|
|
|
|
|
0100 | 8B CE 15 AE 47 1E B5 3F C3 13 C7 D5 BC AD 77 F0
|
|
|
|
|
0110 | 13 F6 85 D3 A5 C9 32 D8 73 A2 68 05 03 08 D8 0F
|
|
|
|
|
0120 | 4F F6 A2 AB 39 CC 9B 10 CB 39 9A 4C A9 ED 64 92
|
|
|
|
|
0130 | B8 68 B3 47 5C BB 36 2A AF C6 65 5D E7 07 72 4C
|
|
|
|
|
0140 | 18 3E C8 4F 05 74 53 E3 8C C5 FB E5 0B FE 69 4A
|
|
|
|
|
0150 | 4E 1B 39 B3</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 60 CB 0D 00 4C C4 AB 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 58 C9 B5 64 FE 46 36 F6
|
|
|
|
|
0020 | F8 CE B1 1D 46 31 51 10 4C 0F DA E0 DE 9F D6 70
|
|
|
|
|
0030 | 39 C0 6C 90 26 E6 97 42 04 43 1D 43 A5 00 00 00
|
|
|
|
|
0040 | 04 5C 05 CE CB 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 61 3F 44 EF A4 62 9A 49 77 FE 78 0D
|
|
|
|
|
0060 | 6B F7 F0 A2 DE 51 9E 4D 59 38 FB FA 10 10 43 1E
|
|
|
|
|
0070 | 5C 50 34 E1 88 90 73 9F E5 55 E3 89 71 A0 74 79
|
|
|
|
|
0080 | FC 0D 94 62 92 EE C6 74 83 28 6D 6A 75 90 18 BE
|
|
|
|
|
0090 | 17 38 1E B2 53 E5 AE 73 C6 94 FA 47 3E E2 D5 69
|
|
|
|
|
00A0 | A5 52 78 67 99 D4 EC CA C8 5C 89 6E 28 BD D1 C8
|
|
|
|
|
00B0 | 27 37 27 D9 6D C9 FB 60 CD D9 FE 2F 1D 46 0C 53
|
|
|
|
|
00C0 | 78 98 EF A2 CF 39 82 7A 23 86 99 4B 39 AB 33 04
|
|
|
|
|
00D0 | B3 2A D6 82 26 14 38 02 40 BD FE AD 80 F8 FC FF
|
|
|
|
|
00E0 | B0 63 A5 1B D5 F6 E3 38 3D 9D 39 7A A8 19 4C D8
|
|
|
|
|
00F0 | 95 82 4B 7D 75 40 20 23 4D B7 7D 7C 83 34 0F 41
|
|
|
|
|
0100 | 3C 25 12 F9 A5 30 60 E8 68 AE 54 BC E9 65 07 93
|
|
|
|
|
0110 | 01 D7 97 2F A7 67 66 AB 26 D6 E6 05 A2 22 6F B3
|
|
|
|
|
0120 | 33 0F EF C7 DD 62 B2 A7 30 0F 59 8F 86 98 EB 50
|
|
|
|
|
0130 | B7 2B 71 2E D1 B7 81 81 4F F0 81 8D 20 BA 5D BB
|
|
|
|
|
0140 | 4D 66 31 58 CC 6B 64 B4 65 1E 5D 43 6B 53 28 A8
|
|
|
|
|
0150 | D3 7E B5 74</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 = 370349728C611B3B5FBD135DA242B23A91DB12514EB3D3B0A44C9BF7B
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>B47C0C0001B9AB66</code></td>
|
|
|
|
|
<td><code>60CB0D004CC4AB66</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 = 370349728C611B3B5FBD135DA242B23A91DB12514EB3D3B0A44C9BF7B
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A7DEB1F06093B27E6E9840249BD3CC00</code></td>
|
|
|
|
|
<td><code>58C9B564FE4636F6F8CEB11D46315110</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>796D6C2F9379BDC33B8ED0949164C444</code></td>
|
|
|
|
|
<td><code>4C0FDAE0DE9FD67039C06C9026E69742</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>0457584977000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1465403767</td>
|
|
|
|
|
<td><code>04431D43A5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1125991333</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>045FD88E59000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1608027737</td>
|
|
|
|
|
<td><code>045C05CECB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1543884491</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 = 370349728C611B3B5FBD135DA242B23A91DB12514EB3D3B0A44C9BF7B
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE0001006D6E8A696EF41351D3F75C50</code> <code>2BDA372FD264C46B62F6D23B5E56DBCF</code> <code>25FB528D78F0E0A17E4700CA36D9726D</code> <code>7A067B1DD5A6E22B56664B2ECD4F1443</code> <code>6421F7F0ABBECB74139CB14FED6105D3</code> <code>77714602EFEF632641C78370B917B492</code> <code>EBD5DA7E8F5A0CD8811408ACF0C021B8</code> <code>530DA4E3AABD332EE111BB8338401815</code> <code>0DCD76640D6E4C89A316665020AD69B4</code> <code>8590F4AAC24425DE2E6678E6DD2246FF</code> <code>CB483B9A30E2ED47BCBAC4E47859D76E</code> <code>8BCE15AE471EB53FC313C7D5BCAD77F0</code> <code>13F685D3A5C932D873A268050308D80F</code> <code>4FF6A2AB39CC9B10CB399A4CA9ED6492</code> <code>B868B3475CBB362AAFC6655DE707724C</code> <code>183EC84F057453E38CC5FBE50BFE694A</code><br> <code>4E1B39B3</code></td>
|
|
|
|
|
<td><code>FE000100613F44EFA4629A4977FE780D</code> <code>6BF7F0A2DE519E4D5938FBFA1010431E</code> <code>5C5034E18890739FE555E38971A07479</code> <code>FC0D946292EEC67483286D6A759018BE</code> <code>17381EB253E5AE73C694FA473EE2D569</code> <code>A552786799D4ECCAC85C896E28BDD1C8</code> <code>273727D96DC9FB60CDD9FE2F1D460C53</code> <code>7898EFA2CF39827A2386994B39AB3304</code> <code>B32AD6822614380240BDFEAD80F8FCFF</code> <code>B063A51BD5F6E3383D9D397AA8194CD8</code> <code>95824B7D754020234DB77D7C83340F41</code> <code>3C2512F9A53060E868AE54BCE9650793</code> <code>01D7972FA76766AB26D6E605A2226FB3</code> <code>330FEFC7DD62B2A7300F598F8698EB50</code> <code>B72B712ED1B781814FF0818D20BA5DBB</code> <code>4D663158CC6B64B4651E5D436B5328A8</code><br> <code>D37EB574</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = 370349728C611B3B5FBD135DA242B23A91DB12514EB3D3B0A44C9BF7B
|
|
|
|
|
<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 24 B7 ED 01 B9 AB 66
|
|
|
|
|
0010 | E4 02 00 00 5C 07 E8 D0 A7 DE B1 F0 60 93 B2 7E
|
|
|
|
|
0020 | 6E 98 40 24 9B D3 CC 00 79 6D 6C 2F 93 79 BD C3
|
|
|
|
|
0030 | 3B 8E D0 94 91 64 C4 44 FE 50 02 00 5F A3 62 58
|
|
|
|
|
0040 | 28 AD 50 78 AF 38 E5 72 0F 5B 58 76 BB 5B 48 7F
|
|
|
|
|
0050 | 5D C9 0E AA 2F 3A 4E DF 98 05 05 B7 CD C6 7C 47
|
|
|
|
|
0060 | 28 B6 C0 DB 2A 01 42 7E 15 E4 21 88 10 E2 85 19
|
|
|
|
|
0070 | F7 F5 CC 45 AA 78 45 2E B8 EC 1D 9A 79 6A 1B 8A
|
|
|
|
|
0080 | F1 1E 40 1B 50 79 B9 2C 91 74 26 06 D3 AE 7F 12
|
|
|
|
|
0090 | 1C A1 12 8B 1D A8 17 CD F0 3C 39 F4 68 12 06 C3
|
|
|
|
|
00A0 | 93 16 59 D0 60 AA E9 11 A3 B9 88 20 6C D1 B6 42
|
|
|
|
|
00B0 | AA A9 9D 1F 91 FD 6B DE EE 83 D2 D7 99 1E 1B 19
|
|
|
|
|
00C0 | 04 A6 EE 41 46 04 28 1E 43 02 AF C7 81 9E 74 14
|
|
|
|
|
00D0 | EE FF 9E C8 CD D4 29 31 07 34 5D A1 35 10 EE 8B
|
|
|
|
|
00E0 | F7 62 35 0F 2B 9B 73 46 90 89 4A A0 8E 3B F7 14
|
|
|
|
|
00F0 | 92 77 F9 1D CE 97 D8 B8 4F 1C 68 A4 7B B7 10 40
|
|
|
|
|
0100 | 77 E4 B2 B0 44 A0 EF 44 E8 F0 CF 89 CF AA F6 49
|
|
|
|
|
0110 | 0C F7 C5 16 50 41 27 43 D0 34 41 FA 15 EE 46 94
|
|
|
|
|
0120 | 96 74 74 79 F0 B2 46 CB EE 64 F3 4F 17 8C FA 91
|
|
|
|
|
0130 | 50 68 B0 A8 1F BB F1 3B CF 60 6B 08 28 F1 CC CA
|
|
|
|
|
0140 | 48 A4 1E 5E 3F FE F8 F1 70 33 F1 3B D1 D3 C2 50
|
|
|
|
|
0150 | 26 6C 75 0E DA DF A7 5D DF E4 15 22 67 0C F5 DE
|
|
|
|
|
0160 | CD 46 76 6E 99 FC 10 6D 2A 17 1B C3 DA 2A 82 B2
|
|
|
|
|
0170 | 4E 1B C4 5D 97 5C 5E EE FE EE 52 33 FD C6 CB 33
|
|
|
|
|
0180 | D1 3D DE 33 31 BE 7B AD 6D BB E1 1C 60 38 9C E7
|
|
|
|
|
0190 | 76 B2 75 DD 09 89 91 B1 EA EB 7E C7 E2 CB 39 47
|
|
|
|
|
01A0 | EB 54 B1 9E 82 0D 78 E0 B6 21 BE A4 61 6C 8A 24
|
|
|
|
|
01B0 | F4 7C FA 2F 8F 05 AD 92 E0 73 69 10 7C 80 6D 3B
|
|
|
|
|
01C0 | 40 C6 A6 03 1D EC 11 67 BF 16 79 E2 C4 34 85 25
|
|
|
|
|
01D0 | E9 6B 88 CC 43 19 AF 4D ED 61 A0 52 E4 2C 3D FE
|
|
|
|
|
01E0 | 47 C9 94 6A 8A 37 86 2F 1D B3 CB 0E AE 2F EF 06
|
|
|
|
|
01F0 | A1 EF C5 6E 67 5D 27 17 C6 00 02 47 EB 0E 0F 3A
|
|
|
|
|
0200 | EF 5F 18 76 66 8D C7 78 3A 63 45 B5 D4 0B 31 0F
|
|
|
|
|
0210 | 51 A6 B6 B8 B2 29 BA 7B 02 E3 87 66 CA AC 94 DB
|
|
|
|
|
0220 | 50 B9 4C 35 43 53 B7 5C C6 E8 68 37 A5 D6 C2 1A
|
|
|
|
|
0230 | 94 36 02 DA 08 7D CF 1E B0 6E 7D A2 B3 E8 B7 8D
|
|
|
|
|
0240 | CB 09 3B 9F A4 8E 27 22 C7 A0 45 49 D5 DE 8E F6
|
|
|
|
|
0250 | B4 19 FB 58 64 08 73 B3 0D 56 B2 B8 2F F6 59 2A
|
|
|
|
|
0260 | A5 57 42 C2 FB 52 FB 58 A7 07 40 87 2D F8 5C FD
|
|
|
|
|
0270 | A0 23 D1 65 CD D7 D3 86 24 49 93 EE ED 77 3F 37
|
|
|
|
|
0280 | E8 22 3E 8D E0 BA AE 61 5A FB DD F9</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 A0 19 36 4D C4 AB 66
|
|
|
|
|
0010 | C4 02 00 00 5C 07 E8 D0 58 C9 B5 64 FE 46 36 F6
|
|
|
|
|
0020 | F8 CE B1 1D 46 31 51 10 4C 0F DA E0 DE 9F D6 70
|
|
|
|
|
0030 | 39 C0 6C 90 26 E6 97 42 FE 50 02 00 F3 1B 3E 37
|
|
|
|
|
0040 | B9 83 C8 42 58 24 85 CA CF 5E FC 94 8F E0 DD 02
|
|
|
|
|
0050 | 15 F3 EC 08 B6 4A CB 6D 55 B1 F8 D3 39 87 31 24
|
|
|
|
|
0060 | 74 02 F5 33 8A AB 36 EB 14 86 8D A1 C7 0A 76 99
|
|
|
|
|
0070 | AF 60 87 30 2A 6B 85 64 FA 13 38 27 A5 F7 48 7D
|
|
|
|
|
0080 | 9D 80 24 C9 03 AE 59 BC 42 E2 23 1F 45 17 DF 75
|
|
|
|
|
0090 | DF 41 DC F4 75 22 7F 46 E4 DF AF FB 4D 3C 77 A9
|
|
|
|
|
00A0 | CB 5E B1 69 82 8B 8E 15 B1 7C 26 F8 F8 A1 24 9A
|
|
|
|
|
00B0 | A0 AB D7 24 AD 38 78 16 6F 90 60 F7 F1 BF A1 04
|
|
|
|
|
00C0 | E6 34 DB 11 13 70 A4 FE 76 D7 E5 F5 C8 9E EF 93
|
|
|
|
|
00D0 | 5A 95 92 AC 3D B1 22 FD 02 C7 79 E2 53 E8 26 29
|
|
|
|
|
00E0 | 6C A9 18 58 45 DD 02 5A D0 38 8E B8 28 B2 80 68
|
|
|
|
|
00F0 | 43 64 03 F1 F7 7B 7D D0 20 C1 2C 37 13 05 38 78
|
|
|
|
|
0100 | E6 35 CF E8 77 F1 4B F8 C9 EF 84 EE 6B F4 70 F0
|
|
|
|
|
0110 | B9 24 71 11 C8 6A F1 C2 1B 8D F6 56 0F 9A 15 74
|
|
|
|
|
0120 | BC 06 D2 C9 E5 AE 45 A2 51 E8 CF 4C 16 6F 36 2E
|
|
|
|
|
0130 | 24 BC 78 C1 5A 5D AB 3D DB B3 FA F6 8E BB 44 0D
|
|
|
|
|
0140 | FD 63 A4 BD F3 A5 B9 20 29 17 BA B1 80 79 FC 29
|
|
|
|
|
0150 | 3E 7D 2D AA 69 54 90 BD EE F6 6A 6F 90 CC DC DD
|
|
|
|
|
0160 | 03 AC 26 05 ED 90 5B 75 3F D7 02 B5 67 6D 32 5C
|
|
|
|
|
0170 | 33 A3 88 22 2E 12 C3 D8 36 8B 3D 59 07 55 B9 D0
|
|
|
|
|
0180 | 47 66 32 58 D0 B1 5A 5C 52 CB C6 75 9A 35 CF FF
|
|
|
|
|
0190 | 9C 99 B7 3D 5A 21 67 C8 AE B9 DF 05 8F EF 19 81
|
|
|
|
|
01A0 | 29 8A 9D 6D 85 6D 68 46 A5 A3 A6 26 46 C3 2C FD
|
|
|
|
|
01B0 | 24 C8 63 E1 61 D7 DC B9 6C 08 6E 78 66 91 42 AE
|
|
|
|
|
01C0 | 51 90 77 71 1D 1C 3F 53 A1 A3 05 05 70 1B 54 36
|
|
|
|
|
01D0 | 73 9E 80 F8 F2 F3 8F 9C 30 44 4C 2C 7C 56 49 F3
|
|
|
|
|
01E0 | 8E 3E 4D 6B A5 09 84 8A 49 E0 3E 53 FC A0 93 52
|
|
|
|
|
01F0 | 6B 71 61 F2 B3 50 E2 5E 46 A7 2C 4B 36 C6 CC F1
|
|
|
|
|
0200 | 40 92 2E 10 BA 88 F1 FD A7 15 A5 C4 2A 80 D4 F1
|
|
|
|
|
0210 | CE F9 27 81 BA 2E 99 FB C1 05 CD 9B 49 3E 3B DB
|
|
|
|
|
0220 | C7 78 EC 25 C2 F2 25 D8 AB 08 E7 F1 2D EE FD 3C
|
|
|
|
|
0230 | 69 8B 9F 45 BE 52 AD DE 4B 9F 0E 43 23 2D DF E8
|
|
|
|
|
0240 | D4 EB EB 39 96 D7 77 EF 60 78 A9 54 46 1D 9A 03
|
|
|
|
|
0250 | 6D 2C BD 39 93 D3 B5 4F D7 3E 92 E9 EE 6F A7 E0
|
|
|
|
|
0260 | 1A 0C 26 4E D1 A0 24 3C 43 16 1C 39 7D A0 9B 07
|
|
|
|
|
0270 | 56 55 73 1C 86 9B 80 8E CD BD D0 8E 2C B4 A6 7B
|
|
|
|
|
0280 | AB E9 1C 69 06 96 8F 0F E1 1E 7C 49</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 = 370349728C611B3B5FBD135DA242B23A91DB12514EB3D3B0A44C9BF7B
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>0124B7ED01B9AB66</code></td>
|
|
|
|
|
<td><code>01A019364DC4AB66</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>E4020000</code> (740 in decimal)</td>
|
|
|
|
|
<td><code>C4020000</code> (708 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -482,19 +482,19 @@ random_padding_bytes = 370349728C611B3B5FBD135DA242B23A91DB12514EB3D3B0A44C9BF7B
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A7DEB1F06093B27E6E9840249BD3CC00</code></td>
|
|
|
|
|
<td><code>58C9B564FE4636F6F8CEB11D46315110</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>796D6C2F9379BDC33B8ED0949164C444</code></td>
|
|
|
|
|
<td><code>4C0FDAE0DE9FD67039C06C9026E69742</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE5002005FA3625828AD5078AF38E572</code> <code>0F5B5876BB5B487F5DC90EAA2F3A4EDF</code> <code>980505B7CDC67C4728B6C0DB2A01427E</code> <code>15E4218810E28519F7F5CC45AA78452E</code> <code>B8EC1D9A796A1B8AF11E401B5079B92C</code> <code>91742606D3AE7F121CA1128B1DA817CD</code> <code>F03C39F4681206C3931659D060AAE911</code> <code>A3B988206CD1B642AAA99D1F91FD6BDE</code> <code>EE83D2D7991E1B1904A6EE414604281E</code> <code>4302AFC7819E7414EEFF9EC8CDD42931</code> <code>07345DA13510EE8BF762350F2B9B7346</code> <code>90894AA08E3BF7149277F91DCE97D8B8</code> <code>4F1C68A47BB7104077E4B2B044A0EF44</code> <code>E8F0CF89CFAAF6490CF7C51650412743</code> <code>D03441FA15EE469496747479F0B246CB</code> <code>EE64F34F178CFA915068B0A81FBBF13B</code> <code>CF606B0828F1CCCA48A41E5E3FFEF8F1</code> <code>7033F13BD1D3C250266C750EDADFA75D</code> <code>DFE41522670CF5DECD46766E99FC106D</code> <code>2A171BC3DA2A82B24E1BC45D975C5EEE</code> <code>FEEE5233FDC6CB33D13DDE3331BE7BAD</code> <code>6DBBE11C60389CE776B275DD098991B1</code> <code>EAEB7EC7E2CB3947EB54B19E820D78E0</code> <code>B621BEA4616C8A24F47CFA2F8F05AD92</code> <code>E07369107C806D3B40C6A6031DEC1167</code> <code>BF1679E2C4348525E96B88CC4319AF4D</code> <code>ED61A052E42C3DFE47C9946A8A37862F</code> <code>1DB3CB0EAE2FEF06A1EFC56E675D2717</code> <code>C6000247EB0E0F3AEF5F1876668DC778</code> <code>3A6345B5D40B310F51A6B6B8B229BA7B</code> <code>02E38766CAAC94DB50B94C354353B75C</code> <code>C6E86837A5D6C21A943602DA087DCF1E</code> <code>B06E7DA2B3E8B78DCB093B9FA48E2722</code> <code>C7A04549D5DE8EF6B419FB58640873B3</code> <code>0D56B2B82FF6592AA55742C2FB52FB58</code> <code>A70740872DF85CFDA023D165CDD7D386</code> <code>244993EEED773F37E8223E8DE0BAAE61</code><br> <code>5AFBDDF9</code></td>
|
|
|
|
|
<td><code>FE500200F31B3E37B983C842582485CA</code> <code>CF5EFC948FE0DD0215F3EC08B64ACB6D</code> <code>55B1F8D3398731247402F5338AAB36EB</code> <code>14868DA1C70A7699AF6087302A6B8564</code> <code>FA133827A5F7487D9D8024C903AE59BC</code> <code>42E2231F4517DF75DF41DCF475227F46</code> <code>E4DFAFFB4D3C77A9CB5EB169828B8E15</code> <code>B17C26F8F8A1249AA0ABD724AD387816</code> <code>6F9060F7F1BFA104E634DB111370A4FE</code> <code>76D7E5F5C89EEF935A9592AC3DB122FD</code> <code>02C779E253E826296CA9185845DD025A</code> <code>D0388EB828B28068436403F1F77B7DD0</code> <code>20C12C3713053878E635CFE877F14BF8</code> <code>C9EF84EE6BF470F0B9247111C86AF1C2</code> <code>1B8DF6560F9A1574BC06D2C9E5AE45A2</code> <code>51E8CF4C166F362E24BC78C15A5DAB3D</code> <code>DBB3FAF68EBB440DFD63A4BDF3A5B920</code> <code>2917BAB18079FC293E7D2DAA695490BD</code> <code>EEF66A6F90CCDCDD03AC2605ED905B75</code> <code>3FD702B5676D325C33A388222E12C3D8</code> <code>368B3D590755B9D047663258D0B15A5C</code> <code>52CBC6759A35CFFF9C99B73D5A2167C8</code> <code>AEB9DF058FEF1981298A9D6D856D6846</code> <code>A5A3A62646C32CFD24C863E161D7DCB9</code> <code>6C086E78669142AE519077711D1C3F53</code> <code>A1A30505701B5436739E80F8F2F38F9C</code> <code>30444C2C7C5649F38E3E4D6BA509848A</code> <code>49E03E53FCA093526B7161F2B350E25E</code> <code>46A72C4B36C6CCF140922E10BA88F1FD</code> <code>A715A5C42A80D4F1CEF92781BA2E99FB</code> <code>C105CD9B493E3BDBC778EC25C2F225D8</code> <code>AB08E7F12DEEFD3C698B9F45BE52ADDE</code> <code>4B9F0E43232DDFE8D4EBEB3996D777EF</code> <code>6078A954461D9A036D2CBD3993D3B54F</code> <code>D73E92E9EE6FA7E01A0C264ED1A0243C</code> <code>43161C397DA09B075655731C869B808E</code> <code>CDBDD08E2CB4A67BABE91C6906968F0F</code><br> <code>E11E7C49</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = 370349728C611B3B5FBD135DA242B23A91DB12514EB3D3B0A44C9BF7B
|
|
|
|
|
<!-- 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 = 5FA3625828AD5078AF38E5720F5B5876BB5B487F5DC90EAA2F3A4EDF980505B7CDC67C4728B6C0DB2A01427E15E4218810E28519F7F5CC45AA78452EB8EC1D9A796A1B8AF11E401B5079B92C91742606D3AE7F121CA1128B1DA817CDF03C39F4681206C3931659D060AAE911A3B988206CD1B642AAA99D1F91FD6BDEEE83D2D7991E1B1904A6EE414604281E4302AFC7819E7414EEFF9EC8CDD4293107345DA13510EE8BF762350F2B9B734690894AA08E3BF7149277F91DCE97D8B84F1C68A47BB7104077E4B2B044A0EF44E8F0CF89CFAAF6490CF7C51650412743D03441FA15EE469496747479F0B246CBEE64F34F178CFA915068B0A81FBBF13BCF606B0828F1CCCA48A41E5E3FFEF8F17033F13BD1D3C250266C750EDADFA75DDFE41522670CF5DECD46766E99FC106D2A171BC3DA2A82B24E1BC45D975C5EEEFEEE5233FDC6CB33D13DDE3331BE7BAD6DBBE11C60389CE776B275DD098991B1EAEB7EC7E2CB3947EB54B19E820D78E0B621BEA4616C8A24F47CFA2F8F05AD92E07369107C806D3B40C6A6031DEC1167BF1679E2C4348525E96B88CC4319AF4DED61A052E42C3DFE47C9946A8A37862F1DB3CB0EAE2FEF06A1EFC56E675D2717C6000247EB0E0F3AEF5F1876668DC7783A6345B5D40B310F51A6B6B8B229BA7B02E38766CAAC94DB50B94C354353B75CC6E86837A5D6C21A943602DA087DCF1EB06E7DA2B3E8B78DCB093B9FA48E2722C7A04549D5DE8EF6B419FB58640873B30D56B2B82FF6592AA55742C2FB52FB58A70740872DF85CFDA023D165CDD7D386244993EEED773F37E8223E8DE0BAAE615AFBDDF9
|
|
|
|
|
tmp_aes_key = 2C99D95C8A6F7256F976E8EC2DE74F7FA48A1D1BBD2C3CE21040B45A0C9FF10C
|
|
|
|
|
tmp_aes_iv = FFC0644F47C406AAFC9F41386ADE90487D82EEB7F2C5DEAD4BC0294D25022BC0</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = F31B3E37B983C842582485CACF5EFC948FE0DD0215F3EC08B64ACB6D55B1F8D3398731247402F5338AAB36EB14868DA1C70A7699AF6087302A6B8564FA133827A5F7487D9D8024C903AE59BC42E2231F4517DF75DF41DCF475227F46E4DFAFFB4D3C77A9CB5EB169828B8E15B17C26F8F8A1249AA0ABD724AD3878166F9060F7F1BFA104E634DB111370A4FE76D7E5F5C89EEF935A9592AC3DB122FD02C779E253E826296CA9185845DD025AD0388EB828B28068436403F1F77B7DD020C12C3713053878E635CFE877F14BF8C9EF84EE6BF470F0B9247111C86AF1C21B8DF6560F9A1574BC06D2C9E5AE45A251E8CF4C166F362E24BC78C15A5DAB3DDBB3FAF68EBB440DFD63A4BDF3A5B9202917BAB18079FC293E7D2DAA695490BDEEF66A6F90CCDCDD03AC2605ED905B753FD702B5676D325C33A388222E12C3D8368B3D590755B9D047663258D0B15A5C52CBC6759A35CFFF9C99B73D5A2167C8AEB9DF058FEF1981298A9D6D856D6846A5A3A62646C32CFD24C863E161D7DCB96C086E78669142AE519077711D1C3F53A1A30505701B5436739E80F8F2F38F9C30444C2C7C5649F38E3E4D6BA509848A49E03E53FCA093526B7161F2B350E25E46A72C4B36C6CCF140922E10BA88F1FDA715A5C42A80D4F1CEF92781BA2E99FBC105CD9B493E3BDBC778EC25C2F225D8AB08E7F12DEEFD3C698B9F45BE52ADDE4B9F0E43232DDFE8D4EBEB3996D777EF6078A954461D9A036D2CBD3993D3B54FD73E92E9EE6FA7E01A0C264ED1A0243C43161C397DA09B075655731C869B808ECDBDD08E2CB4A67BABE91C6906968F0FE11E7C49
|
|
|
|
|
tmp_aes_key = F3703B4E69009BC24510144B929AE5883CA088B12CF5A5E7354327A7701325D9
|
|
|
|
|
tmp_aes_iv = 8ABE130C3F744CD23D434583B7C96C2E7CBE25DB058A0776C6BCFC77379E6BBA</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = 04D26F8BD0B19BD24417777A66EBDE32E695833CBA0D89B5A7DEB1F06093B27E6E9840249BD3CC00796D6C2F9379BDC33B8ED0949164C44403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009E576DA4788AF103ED40CB497A595E1858D9001DC1D3A658A13F09E8EC0259B2EB3388C539AA515E95D0DBC4B072C1762ECD34715E10E56B508A85311EDEAA190BD45ED1E35BFCA889DC0BA60FCD9CDCCB029CA821A01DBFFC278A10AFFCC2A9A59AC19FCEB8283CC937D1970D4BD9B643DAE1E028D0582238C59B68BDA5664B52438885AEB23B0FD1558E0BF63C74595A4D128F0C0F6FB6BD0FEB8802E1BC251716A6C8CE9B33766810698FBA0BAAF04B094E502697E1B4B8B903A2F20844D52FA557313C0C24F3AB3A9011606364A432B0B70D688BF72B05D0E4485BC43B7FC4CA7FF74C76D91A653DC45C4CD71E3A1D2551A435E24344460C6CD2E7CC8ABA01B9AB66818DBA9804E2C998
|
|
|
|
|
answer = BA0D89B5A7DEB1F06093B27E6E9840249BD3CC00796D6C2F9379BDC33B8ED0949164C44403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009E576DA4788AF103ED40CB497A595E1858D9001DC1D3A658A13F09E8EC0259B2EB3388C539AA515E95D0DBC4B072C1762ECD34715E10E56B508A85311EDEAA190BD45ED1E35BFCA889DC0BA60FCD9CDCCB029CA821A01DBFFC278A10AFFCC2A9A59AC19FCEB8283CC937D1970D4BD9B643DAE1E028D0582238C59B68BDA5664B52438885AEB23B0FD1558E0BF63C74595A4D128F0C0F6FB6BD0FEB8802E1BC251716A6C8CE9B33766810698FBA0BAAF04B094E502697E1B4B8B903A2F20844D52FA557313C0C24F3AB3A9011606364A432B0B70D688BF72B05D0E4485BC43B7FC4CA7FF74C76D91A653DC45C4CD71E3A1D2551A435E24344460C6CD2E7CC8ABA01B9AB66818DBA9804E2C998</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = 5B825ED18701953E4AA704731A71AF592B1E2DBEBA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001006FC44EAF4853052C49F1EA4E92339561A2559EC65E93A4FFF173E13C8456B60A3799345FD3B10DB7233DADECF31C8FCB891E8DE1DF8454B228ACE02A126F47A7599D5FE50831D971C9115F98DE04C8EC7110CB463135E046255FBA4D12E4B3F817578C2A51389ADA046B8CDB9A357AD0B2CE57CFBDFE816466DCB2CB2B29A4E96C2A3DD03A9DA93DAC17140DC8212308810B32BB6534DC8026638B17BE5089D8242C7D69F9502D16EC3F48CFD6161B617D31629D96FF4165D72F8FE5B242A7D39BF35E53FA13FD8C69ABFEFDF2FA87D0B432FC55E93B1C67E4574496D03B97CF12E6533E416102B541E9D2FE1BC4EA1A770EEFD871983E999BDDDDECEF7DDFC74DC4AB668C661ABD3A8E421E
|
|
|
|
|
answer = BA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001006FC44EAF4853052C49F1EA4E92339561A2559EC65E93A4FFF173E13C8456B60A3799345FD3B10DB7233DADECF31C8FCB891E8DE1DF8454B228ACE02A126F47A7599D5FE50831D971C9115F98DE04C8EC7110CB463135E046255FBA4D12E4B3F817578C2A51389ADA046B8CDB9A357AD0B2CE57CFBDFE816466DCB2CB2B29A4E96C2A3DD03A9DA93DAC17140DC8212308810B32BB6534DC8026638B17BE5089D8242C7D69F9502D16EC3F48CFD6161B617D31629D96FF4165D72F8FE5B242A7D39BF35E53FA13FD8C69ABFEFDF2FA87D0B432FC55E93B1C67E4574496D03B97CF12E6533E416102B541E9D2FE1BC4EA1A770EEFD871983E999BDDDDECEF7DDFC74DC4AB668C661ABD3A8E421E</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 A7 DE B1 F0 60 93 B2 7E 6E 98 40 24
|
|
|
|
|
0010 | 9B D3 CC 00 79 6D 6C 2F 93 79 BD C3 3B 8E D0 94
|
|
|
|
|
0020 | 91 64 C4 44 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 58 C9 B5 64 FE 46 36 F6 F8 CE B1 1D
|
|
|
|
|
0010 | 46 31 51 10 4C 0F DA E0 DE 9F D6 70 39 C0 6C 90
|
|
|
|
|
0020 | 26 E6 97 42 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 = BA0D89B5A7DEB1F06093B27E6E9840249BD3CC00796D6C2F9379BDC33B8ED0949164C44
|
|
|
|
|
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 | 9E 57 6D A4 78 8A F1 03 ED 40 CB 49 7A 59 5E 18
|
|
|
|
|
0140 | 58 D9 00 1D C1 D3 A6 58 A1 3F 09 E8 EC 02 59 B2
|
|
|
|
|
0150 | EB 33 88 C5 39 AA 51 5E 95 D0 DB C4 B0 72 C1 76
|
|
|
|
|
0160 | 2E CD 34 71 5E 10 E5 6B 50 8A 85 31 1E DE AA 19
|
|
|
|
|
0170 | 0B D4 5E D1 E3 5B FC A8 89 DC 0B A6 0F CD 9C DC
|
|
|
|
|
0180 | CB 02 9C A8 21 A0 1D BF FC 27 8A 10 AF FC C2 A9
|
|
|
|
|
0190 | A5 9A C1 9F CE B8 28 3C C9 37 D1 97 0D 4B D9 B6
|
|
|
|
|
01A0 | 43 DA E1 E0 28 D0 58 22 38 C5 9B 68 BD A5 66 4B
|
|
|
|
|
01B0 | 52 43 88 85 AE B2 3B 0F D1 55 8E 0B F6 3C 74 59
|
|
|
|
|
01C0 | 5A 4D 12 8F 0C 0F 6F B6 BD 0F EB 88 02 E1 BC 25
|
|
|
|
|
01D0 | 17 16 A6 C8 CE 9B 33 76 68 10 69 8F BA 0B AA F0
|
|
|
|
|
01E0 | 4B 09 4E 50 26 97 E1 B4 B8 B9 03 A2 F2 08 44 D5
|
|
|
|
|
01F0 | 2F A5 57 31 3C 0C 24 F3 AB 3A 90 11 60 63 64 A4
|
|
|
|
|
0200 | 32 B0 B7 0D 68 8B F7 2B 05 D0 E4 48 5B C4 3B 7F
|
|
|
|
|
0210 | C4 CA 7F F7 4C 76 D9 1A 65 3D C4 5C 4C D7 1E 3A
|
|
|
|
|
0220 | 1D 25 51 A4 35 E2 43 44 46 0C 6C D2 E7 CC 8A BA
|
|
|
|
|
0230 | 01 B9 AB 66</code></pre>
|
|
|
|
|
0130 | 6F C4 4E AF 48 53 05 2C 49 F1 EA 4E 92 33 95 61
|
|
|
|
|
0140 | A2 55 9E C6 5E 93 A4 FF F1 73 E1 3C 84 56 B6 0A
|
|
|
|
|
0150 | 37 99 34 5F D3 B1 0D B7 23 3D AD EC F3 1C 8F CB
|
|
|
|
|
0160 | 89 1E 8D E1 DF 84 54 B2 28 AC E0 2A 12 6F 47 A7
|
|
|
|
|
0170 | 59 9D 5F E5 08 31 D9 71 C9 11 5F 98 DE 04 C8 EC
|
|
|
|
|
0180 | 71 10 CB 46 31 35 E0 46 25 5F BA 4D 12 E4 B3 F8
|
|
|
|
|
0190 | 17 57 8C 2A 51 38 9A DA 04 6B 8C DB 9A 35 7A D0
|
|
|
|
|
01A0 | B2 CE 57 CF BD FE 81 64 66 DC B2 CB 2B 29 A4 E9
|
|
|
|
|
01B0 | 6C 2A 3D D0 3A 9D A9 3D AC 17 14 0D C8 21 23 08
|
|
|
|
|
01C0 | 81 0B 32 BB 65 34 DC 80 26 63 8B 17 BE 50 89 D8
|
|
|
|
|
01D0 | 24 2C 7D 69 F9 50 2D 16 EC 3F 48 CF D6 16 1B 61
|
|
|
|
|
01E0 | 7D 31 62 9D 96 FF 41 65 D7 2F 8F E5 B2 42 A7 D3
|
|
|
|
|
01F0 | 9B F3 5E 53 FA 13 FD 8C 69 AB FE FD F2 FA 87 D0
|
|
|
|
|
0200 | B4 32 FC 55 E9 3B 1C 67 E4 57 44 96 D0 3B 97 CF
|
|
|
|
|
0210 | 12 E6 53 3E 41 61 02 B5 41 E9 D2 FE 1B C4 EA 1A
|
|
|
|
|
0220 | 77 0E EF D8 71 98 3E 99 9B DD DD EC EF 7D DF C7
|
|
|
|
|
0230 | 4D C4 AB 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 = BA0D89B5A7DEB1F06093B27E6E9840249BD3CC00796D6C2F9379BDC33B8ED0949164C44
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>A7DEB1F06093B27E6E9840249BD3CC00</code></td>
|
|
|
|
|
<td><code>58C9B564FE4636F6F8CEB11D46315110</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>796D6C2F9379BDC33B8ED0949164C444</code></td>
|
|
|
|
|
<td><code>4C0FDAE0DE9FD67039C06C9026E69742</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B5A7DEB1F06093B27E6E9840249BD3CC00796D6C2F9379BDC33B8ED0949164C44
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE0001009E576DA4788AF103ED40CB49</code> <code>7A595E1858D9001DC1D3A658A13F09E8</code> <code>EC0259B2EB3388C539AA515E95D0DBC4</code> <code>B072C1762ECD34715E10E56B508A8531</code> <code>1EDEAA190BD45ED1E35BFCA889DC0BA6</code> <code>0FCD9CDCCB029CA821A01DBFFC278A10</code> <code>AFFCC2A9A59AC19FCEB8283CC937D197</code> <code>0D4BD9B643DAE1E028D0582238C59B68</code> <code>BDA5664B52438885AEB23B0FD1558E0B</code> <code>F63C74595A4D128F0C0F6FB6BD0FEB88</code> <code>02E1BC251716A6C8CE9B33766810698F</code> <code>BA0BAAF04B094E502697E1B4B8B903A2</code> <code>F20844D52FA557313C0C24F3AB3A9011</code> <code>606364A432B0B70D688BF72B05D0E448</code> <code>5BC43B7FC4CA7FF74C76D91A653DC45C</code> <code>4CD71E3A1D2551A435E24344460C6CD2</code><br> <code>E7CC8ABA</code></td>
|
|
|
|
|
<td><code>FE0001006FC44EAF4853052C49F1EA4E</code> <code>92339561A2559EC65E93A4FFF173E13C</code> <code>8456B60A3799345FD3B10DB7233DADEC</code> <code>F31C8FCB891E8DE1DF8454B228ACE02A</code> <code>126F47A7599D5FE50831D971C9115F98</code> <code>DE04C8EC7110CB463135E046255FBA4D</code> <code>12E4B3F817578C2A51389ADA046B8CDB</code> <code>9A357AD0B2CE57CFBDFE816466DCB2CB</code> <code>2B29A4E96C2A3DD03A9DA93DAC17140D</code> <code>C8212308810B32BB6534DC8026638B17</code> <code>BE5089D8242C7D69F9502D16EC3F48CF</code> <code>D6161B617D31629D96FF4165D72F8FE5</code> <code>B242A7D39BF35E53FA13FD8C69ABFEFD</code> <code>F2FA87D0B432FC55E93B1C67E4574496</code> <code>D03B97CF12E6533E416102B541E9D2FE</code> <code>1BC4EA1A770EEFD871983E999BDDDDEC</code><br> <code>EF7DDFC7</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>01B9AB66</code> (1722530049 in decimal)</td>
|
|
|
|
|
<td><code>4DC4AB66</code> (1722532941 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B5A7DEB1F06093B27E6E9840249BD3CC00796D6C2F9379BDC33B8ED0949164C44
|
|
|
|
|
<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 = 6AB4D768658E8532C19DAF62622423922FBA72EACBC50849C94EB9ADF846ECE963D5FCD4C949934A50EC013776D81E8AD4F89E6CBB1780F3A9D9CE330A5334D2162C68DA5D2EB2802E126EFDE2A130200CD41E9893CD7C562531B047B141013F15579E27437D5838AF42D68FA7DC43EE562366D4EE2F0B800C1C053CA90664438E3608BA18FBBDDF83B0DA7FA347BECBB2E6281AEC730FD6FDB69326854A9C70E13D0C34104A81DC26178155FBB502D82414A7EE8BF8B572E779A7FBE9E44FA2C66684B87438DF426B23FE3342CBE64E86244C07EE7DAAAD3B9E5D4EC1884773C2DFBAB6E565A254F7DE6E9340C7C772B6C0D2CB1F555F59ADC546205D1D7414</code></pre>
|
|
|
|
|
<pre><code>b = 1B0468E9DBFD20FA417DC3EED2530442F422AA4D0FC9D52301E2612107704BE66AB33DA9B750ECD9F33013F1415EF785DABFEC1E629C29743FBBEB3A4A07890F9678F0A8EAF058676F9BF4F92AA794D20AF995E467349C65A620E8C2C128098F6946A057F25318C086F5337AC87A1653C10B590C15027F512184308C15EB02631FC93087CDE647A213E155D832E6D5CF8EB6F2A4655CADA89553358951F13141050AC29707F0827DA0160B22815DE89FBD72E3514E5E47DF092C5DA3820DC1E5B48EFA92BBB2FFE983354B07C6CA2DC0CE8973BBF248995161C72F042C62A69F43939EDCDFDBCE0AB7EC3D7BDF5F615971883A07820DA27B60D1BFD8EFDBC5B0</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 = F4DD39A1882D3797A05F76A66535388FABE5E8767EAA2C1E27A484DE070F49F90278DF4D77345802D7D36230B12687E46D5C8C372D3856FE2FA79819688697187D056321C224CFC48ED308B2F055D8F06A7E6EDE33DD2EF0C86D4D423132440F67A32A263EC794724165E1FF2922B5CA19EBBF9BDA71242FC0A6427D6BB6B62F80EA293B972F889A68C70FD8F8A763D80725516A3FF81513143038DB59E0788E12BF812F9D7235FA1D91DBDE451165E0EF24226922B63D6C9A03AD09209B339816261949917C8CA55E3231A105042DD683A404DB6A271B95A0D61341675F340CAD420DED46BA0089F93CC14CFB6D264A1D16C59D61F98F5ABA5EDC80637753</code></pre>
|
|
|
|
|
<pre><code>g_b = B1BEE9D5FF26ABF161D8D71E018AE01DAA8E1C2CEBB7CEE55ECFDD5E07E4137D228A838D10205EF295903B0E4D3066D5DFA19AC83E218BAD49B7573428FD2D835E83203B55D94CCC018B69BD82F1F897D88CBBD71C8B74BF081B3533BB175BBFC2EAFA02BF3555ACCADCFD2D62F35118666FD76A13AEBCD6DB5DF0115C2AF7E630527A861A5C0EFA32D7F72128EA338EA335B1DF2D0CC44B4CD7C098BD855CC53F16FAD1E6C45647B80F0743EA9265C7823698D17AB18AF4C0B49B26F2AE96EB24F48181358222D2C0CD9895CB5E935DC643574F2297234309901E30AE3677C455AB540D9C10961118F89B30DBD2FB1D1A0BF833136A14C8BD902855344AF7FA</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 A7 DE B1 F0 60 93 B2 7E 6E 98 40 24
|
|
|
|
|
0010 | 9B D3 CC 00 79 6D 6C 2F 93 79 BD C3 3B 8E D0 94
|
|
|
|
|
0020 | 91 64 C4 44 00 00 00 00 00 00 00 00 FE FF 00 00
|
|
|
|
|
0030 | F4 DD 39 A1 88 2D 37 97 A0 5F 76 A6 65 35 38 8F
|
|
|
|
|
0040 | AB E5 E8 76 7E AA 2C 1E 27 A4 84 DE 07 0F 49 F9
|
|
|
|
|
0050 | 02 78 DF 4D 77 34 58 02 D7 D3 62 30 B1 26 87 E4
|
|
|
|
|
0060 | 6D 5C 8C 37 2D 38 56 FE 2F A7 98 19 68 86 97 18
|
|
|
|
|
0070 | 7D 05 63 21 C2 24 CF C4 8E D3 08 B2 F0 55 D8 F0
|
|
|
|
|
0080 | 6A 7E 6E DE 33 DD 2E F0 C8 6D 4D 42 31 32 44 0F
|
|
|
|
|
0090 | 67 A3 2A 26 3E C7 94 72 41 65 E1 FF 29 22 B5 CA
|
|
|
|
|
00A0 | 19 EB BF 9B DA 71 24 2F C0 A6 42 7D 6B B6 B6 2F
|
|
|
|
|
00B0 | 80 EA 29 3B 97 2F 88 9A 68 C7 0F D8 F8 A7 63 D8
|
|
|
|
|
00C0 | 07 25 51 6A 3F F8 15 13 14 30 38 DB 59 E0 78 8E
|
|
|
|
|
00D0 | 12 BF 81 2F 9D 72 35 FA 1D 91 DB DE 45 11 65 E0
|
|
|
|
|
00E0 | EF 24 22 69 22 B6 3D 6C 9A 03 AD 09 20 9B 33 98
|
|
|
|
|
00F0 | 16 26 19 49 91 7C 8C A5 5E 32 31 A1 05 04 2D D6
|
|
|
|
|
0100 | 83 A4 04 DB 6A 27 1B 95 A0 D6 13 41 67 5F 34 0C
|
|
|
|
|
0110 | AD 42 0D ED 46 BA 00 89 F9 3C C1 4C FB 6D 26 4A
|
|
|
|
|
0120 | 1D 16 C5 9D 61 F9 8F 5A BA 5E DC 80 63 77 53 00</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 58 C9 B5 64 FE 46 36 F6 F8 CE B1 1D
|
|
|
|
|
0010 | 46 31 51 10 4C 0F DA E0 DE 9F D6 70 39 C0 6C 90
|
|
|
|
|
0020 | 26 E6 97 42 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | B1 BE E9 D5 FF 26 AB F1 61 D8 D7 1E 01 8A E0 1D
|
|
|
|
|
0040 | AA 8E 1C 2C EB B7 CE E5 5E CF DD 5E 07 E4 13 7D
|
|
|
|
|
0050 | 22 8A 83 8D 10 20 5E F2 95 90 3B 0E 4D 30 66 D5
|
|
|
|
|
0060 | DF A1 9A C8 3E 21 8B AD 49 B7 57 34 28 FD 2D 83
|
|
|
|
|
0070 | 5E 83 20 3B 55 D9 4C CC 01 8B 69 BD 82 F1 F8 97
|
|
|
|
|
0080 | D8 8C BB D7 1C 8B 74 BF 08 1B 35 33 BB 17 5B BF
|
|
|
|
|
0090 | C2 EA FA 02 BF 35 55 AC CA DC FD 2D 62 F3 51 18
|
|
|
|
|
00A0 | 66 6F D7 6A 13 AE BC D6 DB 5D F0 11 5C 2A F7 E6
|
|
|
|
|
00B0 | 30 52 7A 86 1A 5C 0E FA 32 D7 F7 21 28 EA 33 8E
|
|
|
|
|
00C0 | A3 35 B1 DF 2D 0C C4 4B 4C D7 C0 98 BD 85 5C C5
|
|
|
|
|
00D0 | 3F 16 FA D1 E6 C4 56 47 B8 0F 07 43 EA 92 65 C7
|
|
|
|
|
00E0 | 82 36 98 D1 7A B1 8A F4 C0 B4 9B 26 F2 AE 96 EB
|
|
|
|
|
00F0 | 24 F4 81 81 35 82 22 D2 C0 CD 98 95 CB 5E 93 5D
|
|
|
|
|
0100 | C6 43 57 4F 22 97 23 43 09 90 1E 30 AE 36 77 C4
|
|
|
|
|
0110 | 55 AB 54 0D 9C 10 96 11 18 F8 9B 30 DB D2 FB 1D
|
|
|
|
|
0120 | 1A 0B F8 33 13 6A 14 C8 BD 90 28 55 34 4A F7 FA</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 = BA0D89B5A7DEB1F06093B27E6E9840249BD3CC00796D6C2F9379BDC33B8ED0949164C44
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>A7DEB1F06093B27E6E9840249BD3CC00</code></td>
|
|
|
|
|
<td><code>58C9B564FE4636F6F8CEB11D46315110</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>796D6C2F9379BDC33B8ED0949164C444</code></td>
|
|
|
|
|
<td><code>4C0FDAE0DE9FD67039C06C9026E69742</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FEFF0000F4DD39A1882D3797A05F76A6</code> <code>6535388FABE5E8767EAA2C1E27A484DE</code> <code>070F49F90278DF4D77345802D7D36230</code> <code>B12687E46D5C8C372D3856FE2FA79819</code> <code>688697187D056321C224CFC48ED308B2</code> <code>F055D8F06A7E6EDE33DD2EF0C86D4D42</code> <code>3132440F67A32A263EC794724165E1FF</code> <code>2922B5CA19EBBF9BDA71242FC0A6427D</code> <code>6BB6B62F80EA293B972F889A68C70FD8</code> <code>F8A763D80725516A3FF81513143038DB</code> <code>59E0788E12BF812F9D7235FA1D91DBDE</code> <code>451165E0EF24226922B63D6C9A03AD09</code> <code>209B339816261949917C8CA55E3231A1</code> <code>05042DD683A404DB6A271B95A0D61341</code> <code>675F340CAD420DED46BA0089F93CC14C</code> <code>FB6D264A1D16C59D61F98F5ABA5EDC80</code><br> <code>63775300</code></td>
|
|
|
|
|
<td><code>FE000100B1BEE9D5FF26ABF161D8D71E</code> <code>018AE01DAA8E1C2CEBB7CEE55ECFDD5E</code> <code>07E4137D228A838D10205EF295903B0E</code> <code>4D3066D5DFA19AC83E218BAD49B75734</code> <code>28FD2D835E83203B55D94CCC018B69BD</code> <code>82F1F897D88CBBD71C8B74BF081B3533</code> <code>BB175BBFC2EAFA02BF3555ACCADCFD2D</code> <code>62F35118666FD76A13AEBCD6DB5DF011</code> <code>5C2AF7E630527A861A5C0EFA32D7F721</code> <code>28EA338EA335B1DF2D0CC44B4CD7C098</code> <code>BD855CC53F16FAD1E6C45647B80F0743</code> <code>EA9265C7823698D17AB18AF4C0B49B26</code> <code>F2AE96EB24F48181358222D2C0CD9895</code> <code>CB5E935DC643574F2297234309901E30</code> <code>AE3677C455AB540D9C10961118F89B30</code> <code>DBD2FB1D1A0BF833136A14C8BD902855</code><br> <code>344AF7FA</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 = BA0D89B5A7DEB1F06093B27E6E9840249BD3CC00796D6C2F9379BDC33B8ED0949164C44
|
|
|
|
|
<!-- 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 = 54B64366A7DEB1F06093B27E6E9840249BD3CC00796D6C2F9379BDC33B8ED0949164C4440000000000000000FEFF0000F4DD39A1882D3797A05F76A66535388FABE5E8767EAA2C1E27A484DE070F49F90278DF4D77345802D7D36230B12687E46D5C8C372D3856FE2FA79819688697187D056321C224CFC48ED308B2F055D8F06A7E6EDE33DD2EF0C86D4D423132440F67A32A263EC794724165E1FF2922B5CA19EBBF9BDA71242FC0A6427D6BB6B62F80EA293B972F889A68C70FD8F8A763D80725516A3FF81513143038DB59E0788E12BF812F9D7235FA1D91DBDE451165E0EF24226922B63D6C9A03AD09209B339816261949917C8CA55E3231A105042DD683A404DB6A271B95A0D61341675F340CAD420DED46BA0089F93CC14CFB6D264A1D16C59D61F98F5ABA5EDC8063775300
|
|
|
|
|
padding = D484187F9FB4A72524CE5E91
|
|
|
|
|
tmp_aes_key = 2C99D95C8A6F7256F976E8EC2DE74F7FA48A1D1BBD2C3CE21040B45A0C9FF10C
|
|
|
|
|
tmp_aes_iv = FFC0644F47C406AAFC9F41386ADE90487D82EEB7F2C5DEAD4BC0294D25022BC0</code></pre>
|
|
|
|
|
<pre><code>data = 54B6436658C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E697420000000000000000FE000100B1BEE9D5FF26ABF161D8D71E018AE01DAA8E1C2CEBB7CEE55ECFDD5E07E4137D228A838D10205EF295903B0E4D3066D5DFA19AC83E218BAD49B7573428FD2D835E83203B55D94CCC018B69BD82F1F897D88CBBD71C8B74BF081B3533BB175BBFC2EAFA02BF3555ACCADCFD2D62F35118666FD76A13AEBCD6DB5DF0115C2AF7E630527A861A5C0EFA32D7F72128EA338EA335B1DF2D0CC44B4CD7C098BD855CC53F16FAD1E6C45647B80F0743EA9265C7823698D17AB18AF4C0B49B26F2AE96EB24F48181358222D2C0CD9895CB5E935DC643574F2297234309901E30AE3677C455AB540D9C10961118F89B30DBD2FB1D1A0BF833136A14C8BD902855344AF7FA
|
|
|
|
|
padding = A76B7CAA8F1952F7D2B6E3AB
|
|
|
|
|
tmp_aes_key = F3703B4E69009BC24510144B929AE5883CA088B12CF5A5E7354327A7701325D9
|
|
|
|
|
tmp_aes_iv = 8ABE130C3F744CD23D434583B7C96C2E7CBE25DB058A0776C6BCFC77379E6BBA</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 = E32444EE858E03DD56CCD7DDC77B709FE16A919EA9208BA61BA3B94988932AD5AA7B71912006DE6E76B431BA59B464A0FD31D920E4834DD86A04BE1283187A5E3E740D895534E8FBCA9B388E32DADBF191F2D58F98BD74EAD27171A34700825D7FA1D5E996D8BDBCC791005A4188A6B99EC7F404B2D652D27CD4A27E96E4E81C832777B97679FB3826DB1C88CAF77805382A1B142A0AC983C0E56DCEDC34E894E04E6C7D9A8DCCAB1FF963A6626A930577B778B364F38A8BB21629E6C1DCF8B2D1AE719D5D030264E2BFFBF07310032DADB4DB477E7C953C2C1BFFAAB9DDF368A00BB8DEFCFDF08D277F656A32B08E9510EC7D3D5D34900C6BD0EFE67EF28B062380C6F245F5A6D38537E370FE7E015D0BD259FC972336ADE50E8B415821301A95CDE79A843B50F9A6996F3D54BD7BD33401A99253D188BA21E06B4A4675B657399F06D7AE0BE867590CB69665E3AED5</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = A5B9ABF2708B9F068EF2899C106568C401C8C45BF8F9E11E0FB85487290BB30F30AE17C9401C41A7A200C786622F76F18D822F649589C4CDC72104F64C9CBA88FD023A1E378AB7EECD41197724DF0DD42A03CB6B0AFF387C6A5E14091A2DD7AE68A8E82118E9F1B58610263EA72C8DA791C63447FA2BB18CE516B9C38D346F59AF5603B970313FCBD958D90475685B315F6736FD4816455A137A966F5FA59B1EAAFB9063CBA46371D3FCD69F43E3D8A7C759C1D0317FA38DE9C321A7F8AF97354FDB9AAE0D4E86F5814E7451CFAB057C92749D3DDEDCFC7C0B317C2BFFF52ACCB48BBD82FD1AB61903286004F8143B0520967E209D211B7AE070E7CBCC78BF250F5E477476AAAB282F1366C6E3B5B8AC58B3FC514D89EA41296F2D9E5B9C879D5C3FD1B2E2BFB9A518BC5514D36104AAA8E8B609E63F48F92242ECE9286ED5F1F37A77527490671612949BBF3C3A117C</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 B8 7C 0C 00 01 B9 AB 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 A7 DE B1 F0 60 93 B2 7E
|
|
|
|
|
0020 | 6E 98 40 24 9B D3 CC 00 79 6D 6C 2F 93 79 BD C3
|
|
|
|
|
0030 | 3B 8E D0 94 91 64 C4 44 FE 50 01 00 E3 24 44 EE
|
|
|
|
|
0040 | 85 8E 03 DD 56 CC D7 DD C7 7B 70 9F E1 6A 91 9E
|
|
|
|
|
0050 | A9 20 8B A6 1B A3 B9 49 88 93 2A D5 AA 7B 71 91
|
|
|
|
|
0060 | 20 06 DE 6E 76 B4 31 BA 59 B4 64 A0 FD 31 D9 20
|
|
|
|
|
0070 | E4 83 4D D8 6A 04 BE 12 83 18 7A 5E 3E 74 0D 89
|
|
|
|
|
0080 | 55 34 E8 FB CA 9B 38 8E 32 DA DB F1 91 F2 D5 8F
|
|
|
|
|
0090 | 98 BD 74 EA D2 71 71 A3 47 00 82 5D 7F A1 D5 E9
|
|
|
|
|
00A0 | 96 D8 BD BC C7 91 00 5A 41 88 A6 B9 9E C7 F4 04
|
|
|
|
|
00B0 | B2 D6 52 D2 7C D4 A2 7E 96 E4 E8 1C 83 27 77 B9
|
|
|
|
|
00C0 | 76 79 FB 38 26 DB 1C 88 CA F7 78 05 38 2A 1B 14
|
|
|
|
|
00D0 | 2A 0A C9 83 C0 E5 6D CE DC 34 E8 94 E0 4E 6C 7D
|
|
|
|
|
00E0 | 9A 8D CC AB 1F F9 63 A6 62 6A 93 05 77 B7 78 B3
|
|
|
|
|
00F0 | 64 F3 8A 8B B2 16 29 E6 C1 DC F8 B2 D1 AE 71 9D
|
|
|
|
|
0100 | 5D 03 02 64 E2 BF FB F0 73 10 03 2D AD B4 DB 47
|
|
|
|
|
0110 | 7E 7C 95 3C 2C 1B FF AA B9 DD F3 68 A0 0B B8 DE
|
|
|
|
|
0120 | FC FD F0 8D 27 7F 65 6A 32 B0 8E 95 10 EC 7D 3D
|
|
|
|
|
0130 | 5D 34 90 0C 6B D0 EF E6 7E F2 8B 06 23 80 C6 F2
|
|
|
|
|
0140 | 45 F5 A6 D3 85 37 E3 70 FE 7E 01 5D 0B D2 59 FC
|
|
|
|
|
0150 | 97 23 36 AD E5 0E 8B 41 58 21 30 1A 95 CD E7 9A
|
|
|
|
|
0160 | 84 3B 50 F9 A6 99 6F 3D 54 BD 7B D3 34 01 A9 92
|
|
|
|
|
0170 | 53 D1 88 BA 21 E0 6B 4A 46 75 B6 57 39 9F 06 D7
|
|
|
|
|
0180 | AE 0B E8 67 59 0C B6 96 65 E3 AE D5</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 A4 8B 06 00 4D C4 AB 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 58 C9 B5 64 FE 46 36 F6
|
|
|
|
|
0020 | F8 CE B1 1D 46 31 51 10 4C 0F DA E0 DE 9F D6 70
|
|
|
|
|
0030 | 39 C0 6C 90 26 E6 97 42 FE 50 01 00 A5 B9 AB F2
|
|
|
|
|
0040 | 70 8B 9F 06 8E F2 89 9C 10 65 68 C4 01 C8 C4 5B
|
|
|
|
|
0050 | F8 F9 E1 1E 0F B8 54 87 29 0B B3 0F 30 AE 17 C9
|
|
|
|
|
0060 | 40 1C 41 A7 A2 00 C7 86 62 2F 76 F1 8D 82 2F 64
|
|
|
|
|
0070 | 95 89 C4 CD C7 21 04 F6 4C 9C BA 88 FD 02 3A 1E
|
|
|
|
|
0080 | 37 8A B7 EE CD 41 19 77 24 DF 0D D4 2A 03 CB 6B
|
|
|
|
|
0090 | 0A FF 38 7C 6A 5E 14 09 1A 2D D7 AE 68 A8 E8 21
|
|
|
|
|
00A0 | 18 E9 F1 B5 86 10 26 3E A7 2C 8D A7 91 C6 34 47
|
|
|
|
|
00B0 | FA 2B B1 8C E5 16 B9 C3 8D 34 6F 59 AF 56 03 B9
|
|
|
|
|
00C0 | 70 31 3F CB D9 58 D9 04 75 68 5B 31 5F 67 36 FD
|
|
|
|
|
00D0 | 48 16 45 5A 13 7A 96 6F 5F A5 9B 1E AA FB 90 63
|
|
|
|
|
00E0 | CB A4 63 71 D3 FC D6 9F 43 E3 D8 A7 C7 59 C1 D0
|
|
|
|
|
00F0 | 31 7F A3 8D E9 C3 21 A7 F8 AF 97 35 4F DB 9A AE
|
|
|
|
|
0100 | 0D 4E 86 F5 81 4E 74 51 CF AB 05 7C 92 74 9D 3D
|
|
|
|
|
0110 | DE DC FC 7C 0B 31 7C 2B FF F5 2A CC B4 8B BD 82
|
|
|
|
|
0120 | FD 1A B6 19 03 28 60 04 F8 14 3B 05 20 96 7E 20
|
|
|
|
|
0130 | 9D 21 1B 7A E0 70 E7 CB CC 78 BF 25 0F 5E 47 74
|
|
|
|
|
0140 | 76 AA AB 28 2F 13 66 C6 E3 B5 B8 AC 58 B3 FC 51
|
|
|
|
|
0150 | 4D 89 EA 41 29 6F 2D 9E 5B 9C 87 9D 5C 3F D1 B2
|
|
|
|
|
0160 | E2 BF B9 A5 18 BC 55 14 D3 61 04 AA A8 E8 B6 09
|
|
|
|
|
0170 | E6 3F 48 F9 22 42 EC E9 28 6E D5 F1 F3 7A 77 52
|
|
|
|
|
0180 | 74 90 67 16 12 94 9B BF 3C 3A 11 7C</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>B87C0C0001B9AB66</code></td>
|
|
|
|
|
<td><code>A48B06004DC4AB66</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>A7DEB1F06093B27E6E9840249BD3CC00</code></td>
|
|
|
|
|
<td><code>58C9B564FE4636F6F8CEB11D46315110</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>796D6C2F9379BDC33B8ED0949164C444</code></td>
|
|
|
|
|
<td><code>4C0FDAE0DE9FD67039C06C9026E69742</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE500100E32444EE858E03DD56CCD7DD</code> <code>C77B709FE16A919EA9208BA61BA3B949</code> <code>88932AD5AA7B71912006DE6E76B431BA</code> <code>59B464A0FD31D920E4834DD86A04BE12</code> <code>83187A5E3E740D895534E8FBCA9B388E</code> <code>32DADBF191F2D58F98BD74EAD27171A3</code> <code>4700825D7FA1D5E996D8BDBCC791005A</code> <code>4188A6B99EC7F404B2D652D27CD4A27E</code> <code>96E4E81C832777B97679FB3826DB1C88</code> <code>CAF77805382A1B142A0AC983C0E56DCE</code> <code>DC34E894E04E6C7D9A8DCCAB1FF963A6</code> <code>626A930577B778B364F38A8BB21629E6</code> <code>C1DCF8B2D1AE719D5D030264E2BFFBF0</code> <code>7310032DADB4DB477E7C953C2C1BFFAA</code> <code>B9DDF368A00BB8DEFCFDF08D277F656A</code> <code>32B08E9510EC7D3D5D34900C6BD0EFE6</code> <code>7EF28B062380C6F245F5A6D38537E370</code> <code>FE7E015D0BD259FC972336ADE50E8B41</code> <code>5821301A95CDE79A843B50F9A6996F3D</code> <code>54BD7BD33401A99253D188BA21E06B4A</code> <code>4675B657399F06D7AE0BE867590CB696</code><br> <code>65E3AED5</code></td>
|
|
|
|
|
<td><code>FE500100A5B9ABF2708B9F068EF2899C</code> <code>106568C401C8C45BF8F9E11E0FB85487</code> <code>290BB30F30AE17C9401C41A7A200C786</code> <code>622F76F18D822F649589C4CDC72104F6</code> <code>4C9CBA88FD023A1E378AB7EECD411977</code> <code>24DF0DD42A03CB6B0AFF387C6A5E1409</code> <code>1A2DD7AE68A8E82118E9F1B58610263E</code> <code>A72C8DA791C63447FA2BB18CE516B9C3</code> <code>8D346F59AF5603B970313FCBD958D904</code> <code>75685B315F6736FD4816455A137A966F</code> <code>5FA59B1EAAFB9063CBA46371D3FCD69F</code> <code>43E3D8A7C759C1D0317FA38DE9C321A7</code> <code>F8AF97354FDB9AAE0D4E86F5814E7451</code> <code>CFAB057C92749D3DDEDCFC7C0B317C2B</code> <code>FFF52ACCB48BBD82FD1AB61903286004</code> <code>F8143B0520967E209D211B7AE070E7CB</code> <code>CC78BF250F5E477476AAAB282F1366C6</code> <code>E3B5B8AC58B3FC514D89EA41296F2D9E</code> <code>5B9C879D5C3FD1B2E2BFB9A518BC5514</code> <code>D36104AAA8E8B609E63F48F92242ECE9</code> <code>286ED5F1F37A77527490671612949BBF</code><br> <code>3C3A117C</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 = 76E9AEB229641A756F4CC3F012011621DD75CD92DDCDEF6532030F476E6C704524E40BB9B3DD8699099525F3292B47C688060F027097CE6C31A41FF02F68ADB1A76713F34D5C01A713FAD782E1789B6F27D0C577257DE3100BE9104A8E7E3FFB6EAA06BDD4594463151D5D2F87D044DCED14A1DA9A0603903726698A34ABBB5EA5053DE2AAC42D1F81A4432063B424821053A8CFF6E55290D9C2DA18FD0393FDB20147FDA2F52346C17EDF64499ABB0FB7B6BF0AC4B5BB99A4E4F5C53429C5756A6177674B884F99054B34FC7957E187D05C76B1096080ADB4B018A4A310FF150C5976E6C2EF062B660A5745A47E6B08A16BF88D207439EFFE9B3B89C2F15E71</code></pre>
|
|
|
|
|
<pre><code>auth_key = 9D630863AF022C4751DABDA2ACC4E69778BCC54C6BD4CA7FED1D7FF12FC07C10794132D22BA40B5DB885309956F49F1A73CB566C37B8796FB267E693B033114CF40ADDB2D0C07677ABBEFA69DF5FFC2EBF8831E109C8A1C8BF842A00AA478E8AAE0AE215C65FEBAEAFF2F61AE4E47902E9E8BF01783E2487F51EDC97596733A8A8F6DB232B852B431432B47B46B004F77D5020EF7C856E5FED1A8BF123C89E192E7DA0C7FDC9BD83B9CB66E701B63A1F2606C8ACE025080B5E3EBF87CD1B686E2C7621C11E56A9CE6D05A4A24C5DDB0E8B5EA1D6422AB9F7FBD6C3669A0B6C800423C8960235DCC055670F13B018EC15B9901040ED2F1BF8A2313EB752640F6B</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 7C 7B 95 02 B9 AB 66
|
|
|
|
|
0010 | AC 00 00 00 34 F7 CB 3B A7 DE B1 F0 60 93 B2 7E
|
|
|
|
|
0020 | 6E 98 40 24 9B D3 CC 00 79 6D 6C 2F 93 79 BD C3
|
|
|
|
|
0030 | 3B 8E D0 94 91 64 C4 44 73 0B AF C8 1C 16 7E D8
|
|
|
|
|
0040 | 51 2D 2F 4A 89 E2 53 F4</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 F4 AC AC 4D C4 AB 66
|
|
|
|
|
0010 | 8C 00 00 00 34 F7 CB 3B 58 C9 B5 64 FE 46 36 F6
|
|
|
|
|
0020 | F8 CE B1 1D 46 31 51 10 4C 0F DA E0 DE 9F D6 70
|
|
|
|
|
0030 | 39 C0 6C 90 26 E6 97 42 A6 D6 8B 51 FC A0 0A 4B
|
|
|
|
|
0040 | 48 D1 75 BD CD 3E A0 D8</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>017C7B9502B9AB66</code></td>
|
|
|
|
|
<td><code>01F4ACAC4DC4AB66</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>AC000000</code> (172 in decimal)</td>
|
|
|
|
|
<td><code>8C000000</code> (140 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>A7DEB1F06093B27E6E9840249BD3CC00</code></td>
|
|
|
|
|
<td><code>58C9B564FE4636F6F8CEB11D46315110</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>796D6C2F9379BDC33B8ED0949164C444</code></td>
|
|
|
|
|
<td><code>4C0FDAE0DE9FD67039C06C9026E69742</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>730BAFC81C167ED8512D2F4A89E253F4</code></td>
|
|
|
|
|
<td><code>A6D68B51FCA00A4B48D175BDCD3EA0D8</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>
|
|
|
|
|