mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2024-12-28 23:38:26 +01:00
Update content of files
This commit is contained in:
parent
2bd34a295e
commit
3beb66c8e6
3 changed files with 207 additions and 207 deletions
|
@ -47,6 +47,7 @@
|
|||
<table class="table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><strong>in_seq_no</strong></td>
|
||||
<td><strong>out_seq_no</strong></td>
|
||||
</tr>
|
||||
|
|
|
@ -115,7 +115,6 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#bots-can-use-this-method" id="bots-can-use-this-method" name="bots-can-use-this-method"><i class="anchor-icon"></i></a>Bots can use this method</h3>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#authsendcode" id="authsendcode" name="authsendcode"><i class="anchor-icon"></i></a><a href="/method/auth.sendCode">auth.sendCode</a></h4>
|
||||
<p>Send the verification code for login</p>
|
||||
|
|
|
@ -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 50 CF 0A 00 AA A9 5F 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 7A 44 83 F4 E1 2D 9C 01
|
||||
0020 | 2A 39 CC C1 09 20 BD C3</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 BC 20 0A 00 54 B3 5F 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE D3 C7 6C F7 7D 76 D6 35
|
||||
0020 | 46 A4 97 C0 42 3D FC 7C</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>50CF0A00AAA95F65</code></td>
|
||||
<td><code>BC200A0054B35F65</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>7A4483F4E12D9C012A39CCC10920BDC3</code></td>
|
||||
<td><code>D3C76CF77D76D63546A497C0423DFC7C</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 34 C2 5E AA A9 5F 65
|
||||
0010 | 7C 00 00 00 63 24 16 05 7A 44 83 F4 E1 2D 9C 01
|
||||
0020 | 2A 39 CC C1 09 20 BD C3 94 D9 D0 DA D2 40 80 02
|
||||
0030 | 4B 00 1A 91 59 09 1D E9 08 19 0E BA FD 22 12 34
|
||||
0040 | 19 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 9C 77 FF 54 B3 5F 65
|
||||
0010 | 60 00 00 00 63 24 16 05 D3 C7 6C F7 7D 76 D6 35
|
||||
0020 | 46 A4 97 C0 42 3D FC 7C 50 9F E3 CA 67 09 F9 B8
|
||||
0030 | 73 01 F3 45 D6 43 08 4B 08 1E 27 F3 4F A8 42 ED
|
||||
0040 | 61 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>0134C25EAAA95F65</code></td>
|
||||
<td><code>019C77FF54B35F65</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>7C000000</code> (124 in decimal)</td>
|
||||
<td><code>60000000</code> (96 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>7A4483F4E12D9C012A39CCC10920BDC3</code></td>
|
||||
<td><code>D3C76CF77D76D63546A497C0423DFC7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>94D9D0DAD24080024B001A9159091DE9</code></td>
|
||||
<td><code>509FE3CA6709F9B87301F345D643084B</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>08190EBAFD22123419000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1805586096983258137</td>
|
||||
<td><code>081E27F34FA842ED61000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2172972868680478049</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 = 1805586096983258137</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1805586096983258137 = 1335192181 * 1352304277</code></p>
|
||||
<pre><code>p = 1335192181
|
||||
q = 1352304277</code></pre>
|
||||
<pre><code>pq = 2172972868680478049</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2172972868680478049 = 1263580933 * 1719694253</code></p>
|
||||
<pre><code>p = 1263580933
|
||||
q = 1719694253</code></pre>
|
||||
<!-- end pq -->
|
||||
<h4><a class="anchor" href="#presenting-proof-of-work-server-authentication" id="presenting-proof-of-work-server-authentication" name="presenting-proof-of-work-server-authentication"><i class="anchor-icon"></i></a>Presenting proof of work; Server authentication</h4>
|
||||
<h5><a class="anchor" href="#4-encrypted-data-payload-generation" id="4-encrypted-data-payload-generation" name="4-encrypted-data-payload-generation"><i class="anchor-icon"></i></a>4) <code>encrypted_data</code> payload generation</h5>
|
||||
<p>First of all, generate an <code>encrypted_data</code> payload as follows:</p>
|
||||
<!-- start p_q_inner_data_dc -->
|
||||
<p>Generated payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 95 5F F5 A9 08 19 0E BA FD 22 12 34 19 00 00 00
|
||||
0010 | 04 4F 95 6A 75 00 00 00 04 50 9A 86 95 00 00 00
|
||||
0020 | 7A 44 83 F4 E1 2D 9C 01 2A 39 CC C1 09 20 BD C3
|
||||
0030 | 94 D9 D0 DA D2 40 80 02 4B 00 1A 91 59 09 1D E9
|
||||
0040 | A1 5B FB 1E 08 C5 1E 20 42 B9 86 9F 23 CE 17 B8
|
||||
0050 | 20 E0 9B 84 D4 26 1C 41 89 F2 A9 91 D3 C7 77 AB
|
||||
<pre><code>0000 | 95 5F F5 A9 08 1E 27 F3 4F A8 42 ED 61 00 00 00
|
||||
0010 | 04 4B 50 B7 05 00 00 00 04 66 80 73 AD 00 00 00
|
||||
0020 | D3 C7 6C F7 7D 76 D6 35 46 A4 97 C0 42 3D FC 7C
|
||||
0030 | 50 9F E3 CA 67 09 F9 B8 73 01 F3 45 D6 43 08 4B
|
||||
0040 | 26 DA C4 84 89 FD E6 FD D0 4F F0 95 2D 9F 30 64
|
||||
0050 | 47 CA 81 E3 4C 32 B0 21 6C A8 EC B1 BA F7 8D 82
|
||||
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 = 1352304277</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>08190EBAFD22123419000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1805586096983258137</td>
|
||||
<td><code>081E27F34FA842ED61000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2172972868680478049</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>044F956A75000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1335192181</td>
|
||||
<td><code>044B50B705000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1263580933</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>04509A8695000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1352304277</td>
|
||||
<td><code>04668073AD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1719694253</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>7A4483F4E12D9C012A39CCC10920BDC3</code></td>
|
||||
<td><code>D3C76CF77D76D63546A497C0423DFC7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>94D9D0DAD24080024B001A9159091DE9</code></td>
|
||||
<td><code>509FE3CA6709F9B87301F345D643084B</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>A15BFB1E08C51E2042B9869F23CE17B8</code> <code>20E09B84D4261C4189F2A991D3C777AB</code></td>
|
||||
<td><code>26DAC48489FDE6FDD04FF0952D9F3064</code> <code>47CA81E34C32B0216CA8ECB1BAF78D82</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1352304277</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 = 955FF5A908190EBAFD22123419000000044F956A7500000004509A86950000007A4483F4E12D9C012A39CCC10920BDC394D9D0DAD24080024B001A9159091DE9A15BFB1E08C51E2042B9869F23CE17B820E09B84D4261C4189F2A991D3C777AB02000000
|
||||
random_padding_bytes = 14ABE224D91B4219DF309EEAD010344A1DF5B86DB379750530408D6712A5505A98A290362161A8342A389CAF7E0D3BFDF49D37A95E7B0F65C31A8DE9437948D64EAED939814469DE85F039E61F6E09BAFB429643C8AC8999DF1C58FE</code></pre>
|
||||
<pre><code>data = 955FF5A9081E27F34FA842ED61000000044B50B70500000004668073AD000000D3C76CF77D76D63546A497C0423DFC7C509FE3CA6709F9B87301F345D643084B26DAC48489FDE6FDD04FF0952D9F306447CA81E34C32B0216CA8ECB1BAF78D8202000000
|
||||
random_padding_bytes = C1C01D642E4BC7F519FC61A4D33B649C753B77441903A159E7E7EA6B65972F0E092E4B71D0689C50BD2FA87485E2CD451B3C842C973EDB59900D21B2BB18CD2B37860F2C95227911149221EC686679AFA76CD30695B46EF2039E235E</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 = 4C82E1FEED63DA610FE2BCAC65776CFCF60AA179AE04CD39B58115AB9B7D65C8D764559A5CE95D770FDB3F59BED8F998FE5A8F73AC9EB337F998CCA260E0B0CBE3410A013720307CEE38D9CADAD1C2E134F1AF7BBE3F97E049CD4F32E9A86597F71913236A5FD9F379AFEBFBB515CDD96206BE2B6EC9392F3F7CF7AAE09CAF82FFBF24A80F76C59C17D37428032233ECC54A5C3BE9009A44FC4BE484CD976DE235B488232FD570DAAF5363A134DA52CFE869D6D8F1730F148B3AFDC3649515002027B4A6AF07FC7F0A31BD01B1D115AC2DD25E9F8009449DE0401C0DF1BB9FE8DB545B42B035F5999021FF4AED3B0718762FE9CC577134FBF548AA162AC2B042</code></pre>
|
||||
<pre><code>encrypted_data = B29490390AC9CF440758BDF18319C0CAD5EA6787E13C6342C7BA88B80190F41A11CE3C61BD62D5735202D04A92E061B846D421D0FF16B64B8E67F96851C702C3705979818282141E009241CC0DA2FEAA75FBAEC812C4F61221D746D6AE9C70A208EC49C8B52EA105FF390FC2D7A4758670B02E20D3D34770B8470E9EAB0D989B187642E4A1700CEEF87AD519AAE7B5E8D0AE660953128F254B180701EB0F50C809D1537DD7399439A0B4A1005243DC79A3C6ECFF336C4A7275655F0DF0AB582B819E5FBC4ADFEB6D77769F55C90095ADB2509E31853876953E543A0B52D6B86135A6102718BF8567CA1EB814C35DF13EC2F5151A5618CC4B17622B7862127870</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 54 CF 0A 00 AA A9 5F 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 7A 44 83 F4 E1 2D 9C 01
|
||||
0020 | 2A 39 CC C1 09 20 BD C3 94 D9 D0 DA D2 40 80 02
|
||||
0030 | 4B 00 1A 91 59 09 1D E9 04 4F 95 6A 75 00 00 00
|
||||
0040 | 04 50 9A 86 95 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 4C 82 E1 FE ED 63 DA 61 0F E2 BC AC
|
||||
0060 | 65 77 6C FC F6 0A A1 79 AE 04 CD 39 B5 81 15 AB
|
||||
0070 | 9B 7D 65 C8 D7 64 55 9A 5C E9 5D 77 0F DB 3F 59
|
||||
0080 | BE D8 F9 98 FE 5A 8F 73 AC 9E B3 37 F9 98 CC A2
|
||||
0090 | 60 E0 B0 CB E3 41 0A 01 37 20 30 7C EE 38 D9 CA
|
||||
00A0 | DA D1 C2 E1 34 F1 AF 7B BE 3F 97 E0 49 CD 4F 32
|
||||
00B0 | E9 A8 65 97 F7 19 13 23 6A 5F D9 F3 79 AF EB FB
|
||||
00C0 | B5 15 CD D9 62 06 BE 2B 6E C9 39 2F 3F 7C F7 AA
|
||||
00D0 | E0 9C AF 82 FF BF 24 A8 0F 76 C5 9C 17 D3 74 28
|
||||
00E0 | 03 22 33 EC C5 4A 5C 3B E9 00 9A 44 FC 4B E4 84
|
||||
00F0 | CD 97 6D E2 35 B4 88 23 2F D5 70 DA AF 53 63 A1
|
||||
0100 | 34 DA 52 CF E8 69 D6 D8 F1 73 0F 14 8B 3A FD C3
|
||||
0110 | 64 95 15 00 20 27 B4 A6 AF 07 FC 7F 0A 31 BD 01
|
||||
0120 | B1 D1 15 AC 2D D2 5E 9F 80 09 44 9D E0 40 1C 0D
|
||||
0130 | F1 BB 9F E8 DB 54 5B 42 B0 35 F5 99 90 21 FF 4A
|
||||
0140 | ED 3B 07 18 76 2F E9 CC 57 71 34 FB F5 48 AA 16
|
||||
0150 | 2A C2 B0 42</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 7C E5 01 00 55 B3 5F 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 D3 C7 6C F7 7D 76 D6 35
|
||||
0020 | 46 A4 97 C0 42 3D FC 7C 50 9F E3 CA 67 09 F9 B8
|
||||
0030 | 73 01 F3 45 D6 43 08 4B 04 4B 50 B7 05 00 00 00
|
||||
0040 | 04 66 80 73 AD 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 B2 94 90 39 0A C9 CF 44 07 58 BD F1
|
||||
0060 | 83 19 C0 CA D5 EA 67 87 E1 3C 63 42 C7 BA 88 B8
|
||||
0070 | 01 90 F4 1A 11 CE 3C 61 BD 62 D5 73 52 02 D0 4A
|
||||
0080 | 92 E0 61 B8 46 D4 21 D0 FF 16 B6 4B 8E 67 F9 68
|
||||
0090 | 51 C7 02 C3 70 59 79 81 82 82 14 1E 00 92 41 CC
|
||||
00A0 | 0D A2 FE AA 75 FB AE C8 12 C4 F6 12 21 D7 46 D6
|
||||
00B0 | AE 9C 70 A2 08 EC 49 C8 B5 2E A1 05 FF 39 0F C2
|
||||
00C0 | D7 A4 75 86 70 B0 2E 20 D3 D3 47 70 B8 47 0E 9E
|
||||
00D0 | AB 0D 98 9B 18 76 42 E4 A1 70 0C EE F8 7A D5 19
|
||||
00E0 | AA E7 B5 E8 D0 AE 66 09 53 12 8F 25 4B 18 07 01
|
||||
00F0 | EB 0F 50 C8 09 D1 53 7D D7 39 94 39 A0 B4 A1 00
|
||||
0100 | 52 43 DC 79 A3 C6 EC FF 33 6C 4A 72 75 65 5F 0D
|
||||
0110 | F0 AB 58 2B 81 9E 5F BC 4A DF EB 6D 77 76 9F 55
|
||||
0120 | C9 00 95 AD B2 50 9E 31 85 38 76 95 3E 54 3A 0B
|
||||
0130 | 52 D6 B8 61 35 A6 10 27 18 BF 85 67 CA 1E B8 14
|
||||
0140 | C3 5D F1 3E C2 F5 15 1A 56 18 CC 4B 17 62 2B 78
|
||||
0150 | 62 12 78 70</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 = 14ABE224D91B4219DF309EEAD010344A1DF5B86DB379750530408D671
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>54CF0A00AAA95F65</code></td>
|
||||
<td><code>7CE5010055B35F65</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 = 14ABE224D91B4219DF309EEAD010344A1DF5B86DB379750530408D671
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>7A4483F4E12D9C012A39CCC10920BDC3</code></td>
|
||||
<td><code>D3C76CF77D76D63546A497C0423DFC7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>94D9D0DAD24080024B001A9159091DE9</code></td>
|
||||
<td><code>509FE3CA6709F9B87301F345D643084B</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>044F956A75000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1335192181</td>
|
||||
<td><code>044B50B705000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1263580933</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>04509A8695000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1352304277</td>
|
||||
<td><code>04668073AD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1719694253</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 = 14ABE224D91B4219DF309EEAD010344A1DF5B86DB379750530408D671
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE0001004C82E1FEED63DA610FE2BCAC</code> <code>65776CFCF60AA179AE04CD39B58115AB</code> <code>9B7D65C8D764559A5CE95D770FDB3F59</code> <code>BED8F998FE5A8F73AC9EB337F998CCA2</code> <code>60E0B0CBE3410A013720307CEE38D9CA</code> <code>DAD1C2E134F1AF7BBE3F97E049CD4F32</code> <code>E9A86597F71913236A5FD9F379AFEBFB</code> <code>B515CDD96206BE2B6EC9392F3F7CF7AA</code> <code>E09CAF82FFBF24A80F76C59C17D37428</code> <code>032233ECC54A5C3BE9009A44FC4BE484</code> <code>CD976DE235B488232FD570DAAF5363A1</code> <code>34DA52CFE869D6D8F1730F148B3AFDC3</code> <code>649515002027B4A6AF07FC7F0A31BD01</code> <code>B1D115AC2DD25E9F8009449DE0401C0D</code> <code>F1BB9FE8DB545B42B035F5999021FF4A</code> <code>ED3B0718762FE9CC577134FBF548AA16</code><br> <code>2AC2B042</code></td>
|
||||
<td><code>FE000100B29490390AC9CF440758BDF1</code> <code>8319C0CAD5EA6787E13C6342C7BA88B8</code> <code>0190F41A11CE3C61BD62D5735202D04A</code> <code>92E061B846D421D0FF16B64B8E67F968</code> <code>51C702C3705979818282141E009241CC</code> <code>0DA2FEAA75FBAEC812C4F61221D746D6</code> <code>AE9C70A208EC49C8B52EA105FF390FC2</code> <code>D7A4758670B02E20D3D34770B8470E9E</code> <code>AB0D989B187642E4A1700CEEF87AD519</code> <code>AAE7B5E8D0AE660953128F254B180701</code> <code>EB0F50C809D1537DD7399439A0B4A100</code> <code>5243DC79A3C6ECFF336C4A7275655F0D</code> <code>F0AB582B819E5FBC4ADFEB6D77769F55</code> <code>C90095ADB2509E31853876953E543A0B</code> <code>52D6B86135A6102718BF8567CA1EB814</code> <code>C35DF13EC2F5151A5618CC4B17622B78</code><br> <code>62127870</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = 14ABE224D91B4219DF309EEAD010344A1DF5B86DB379750530408D671
|
|||
<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 7C 90 1C AB A9 5F 65
|
||||
0010 | A8 02 00 00 5C 07 E8 D0 7A 44 83 F4 E1 2D 9C 01
|
||||
0020 | 2A 39 CC C1 09 20 BD C3 94 D9 D0 DA D2 40 80 02
|
||||
0030 | 4B 00 1A 91 59 09 1D E9 FE 50 02 00 73 6A 8A 7D
|
||||
0040 | 7A 91 D4 88 08 57 CF 9D AC 61 8A DC 53 BD CA 2B
|
||||
0050 | 7D 74 76 45 97 01 1B 98 2E D8 F1 F8 44 31 9D E0
|
||||
0060 | E9 F6 3C 47 27 D1 2E FE F6 C6 EA 5A 12 4B 47 4B
|
||||
0070 | 4C 78 44 E4 68 17 EF BE 1E 11 46 1D E1 92 A3 DC
|
||||
0080 | 03 DC 9A 71 D8 25 3A 7D 44 DF 20 B1 1C 12 3E 3D
|
||||
0090 | B8 CB 43 76 91 5F C5 47 93 94 28 45 67 71 AF A5
|
||||
00A0 | DE 7E E4 46 00 54 7E 58 BD A4 FE F5 90 F3 4C 33
|
||||
00B0 | C6 98 CD 81 E4 82 22 E8 E4 23 35 FE 16 BF C9 76
|
||||
00C0 | F3 A6 FB 2B D0 1E F6 DC 6E E3 14 66 F4 38 EE BB
|
||||
00D0 | 5E C1 15 F9 65 D8 19 AF AD 11 E4 14 A1 D4 4A 14
|
||||
00E0 | 34 46 36 B2 3E 7E 97 25 F2 75 48 34 AE 13 51 B7
|
||||
00F0 | 30 AD 67 47 5A 7C 52 39 0E 7B 8E 95 9B D7 8D 75
|
||||
0100 | E3 4D A3 DA C1 0F D4 F2 66 1B AA FF CF 9D DD 04
|
||||
0110 | 53 EF 6A E9 F9 79 EE B8 49 CF 92 CB 39 A5 0D 6B
|
||||
0120 | 3A 30 EB 93 3C 4A 5E D2 11 AE 6D 43 D9 FC EC 63
|
||||
0130 | 4B 7B 9F 20 D3 60 E1 FE 4F B5 3E 76 68 6C 69 3F
|
||||
0140 | 27 AA 9C 46 51 74 B5 EA 92 D2 FB BC 47 8D 5A C3
|
||||
0150 | D4 B8 63 9B 71 62 D2 43 C9 91 11 7C 66 E3 C9 AB
|
||||
0160 | 3C 08 C2 72 88 DE 0C CF E2 F4 D9 B1 2E F1 C7 64
|
||||
0170 | 14 85 76 D3 5F D3 CE A8 54 56 DD A0 B3 68 83 01
|
||||
0180 | CB C3 65 95 BC 5E 43 42 B6 AB 96 91 5C 3B 5C E1
|
||||
0190 | 0D 9A E3 A8 32 16 D1 3A A6 FB 0D DC 98 BE 0D FB
|
||||
01A0 | 99 7D 7D AC 0A 1C E7 58 07 9B 81 46 C7 32 6A 64
|
||||
01B0 | 67 96 37 3A C8 17 A5 8D 4F 6A 23 F7 C0 5F 63 0D
|
||||
01C0 | 36 EF 87 0D 61 6F 23 A0 A4 29 F1 C3 A5 59 C6 E0
|
||||
01D0 | 8F 34 77 FB 4B 63 C7 38 48 A2 BE F1 ED 2F 52 CE
|
||||
01E0 | AF 9C 55 08 B1 07 12 EE 04 D9 04 88 EE 36 3B 2B
|
||||
01F0 | 7F 53 E0 77 95 B4 E9 58 E6 AA 72 F6 2F 39 0A 68
|
||||
0200 | 8A A0 CF 0E 04 12 D4 6A B7 E7 EB 83 CA 01 D6 03
|
||||
0210 | 8B 19 38 22 1C 4C B2 86 9F 58 7C 36 E7 5F D4 F9
|
||||
0220 | DB B1 16 80 AB 83 FB 4A FB 70 90 B1 A6 5F 5A AA
|
||||
0230 | 13 7C 60 7F 47 8E 26 A0 F9 78 F1 07 99 CC FC 0C
|
||||
0240 | 5E BA 8C 44 91 50 6D 64 72 D2 4F 9E 27 F9 1C 01
|
||||
0250 | C8 7C AF 90 24 69 15 9C 7C ED 71 B4 B8 AE 6C 8B
|
||||
0260 | 62 EC 53 B7 60 93 DA F1 FC 8A C8 8E A7 E9 79 A2
|
||||
0270 | E2 0C 1F C2 19 DD 0C B5 A5 B6 1A 39 0B F1 36 E4
|
||||
0280 | 1B 00 15 FC E3 C0 CB 24 E8 65 9F 55</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 14 9F B8 55 B3 5F 65
|
||||
0010 | E0 02 00 00 5C 07 E8 D0 D3 C7 6C F7 7D 76 D6 35
|
||||
0020 | 46 A4 97 C0 42 3D FC 7C 50 9F E3 CA 67 09 F9 B8
|
||||
0030 | 73 01 F3 45 D6 43 08 4B FE 50 02 00 66 D3 81 F4
|
||||
0040 | 67 5B 7D 30 8F 41 FB 24 4E DB 36 89 A8 34 04 47
|
||||
0050 | DB 35 BD 19 0F B2 E2 8A D3 B0 F6 73 4A C8 09 9D
|
||||
0060 | 7D DB DA 11 AE E7 CA FD 5B AC 7C 3A CF 7D BF 4B
|
||||
0070 | E4 44 3B 82 2C E7 04 67 67 AE 39 22 2F 0B 79 02
|
||||
0080 | 1E 7C 45 90 CA 22 A9 48 75 B4 93 05 87 F7 5A 2F
|
||||
0090 | 77 86 DA 91 6E 82 59 77 F8 47 29 AA 8E 0D 1A CD
|
||||
00A0 | 94 AB E7 C3 CB F2 13 80 8F 36 2E 34 83 2D 4E BD
|
||||
00B0 | EC 44 B2 39 C2 45 10 64 10 BF 91 CB D5 DB B1 A8
|
||||
00C0 | C1 D8 B9 D7 DD 4C D4 26 B4 B9 F9 86 93 A4 DD 56
|
||||
00D0 | 2F 32 3C 3F 95 CA D8 16 88 43 92 36 13 79 55 2E
|
||||
00E0 | A9 3E AE FA FA 2A FB 37 C0 3A 6F 7C 73 7D DF D0
|
||||
00F0 | 9E 60 14 38 89 7E BA 18 C7 B7 3E 98 D9 DB 31 52
|
||||
0100 | BA 44 43 60 4C 93 C7 84 74 D3 EA 77 61 0F CC B5
|
||||
0110 | 42 AB 09 98 37 D7 AA AD 63 C2 A4 E0 8D 05 A2 A8
|
||||
0120 | 5D 9A 31 B9 E2 D4 BB 0A DE 62 71 18 1B 26 F8 00
|
||||
0130 | 62 65 84 42 6B B4 E7 14 C1 79 DE 8E C1 B7 06 C4
|
||||
0140 | C4 7A 43 DC 2B 6E 29 E8 DD 91 D6 96 FF 05 02 1C
|
||||
0150 | 21 11 75 A4 9F A1 40 EF BE 10 BF 74 3E 9C E2 58
|
||||
0160 | EC 49 C6 19 8E F9 50 B1 1A 1B 7C F2 DD C5 A4 95
|
||||
0170 | 40 AF 6E 38 40 10 9B E1 FD F9 55 41 86 B5 9E D3
|
||||
0180 | 7B E7 0F FB 73 AD 88 45 5B EE C8 C2 6E E8 7E 9F
|
||||
0190 | 0C A7 93 9E 99 49 1F AE 13 4A B1 45 1E 1E C1 4A
|
||||
01A0 | DA 97 27 BC 40 13 35 AC 82 FB 5F AE 55 B8 09 26
|
||||
01B0 | F1 11 D6 1E 9D 2A 38 04 5A 91 FC 46 BD 85 EA CC
|
||||
01C0 | 65 B6 A0 E2 C2 B4 AA AF BE AA 79 DE F4 FE 10 EC
|
||||
01D0 | CF 3E 45 40 39 F8 8A B5 9B FA A6 13 5C 28 B4 2D
|
||||
01E0 | 24 9D 78 FB EB D4 1E 63 7D D3 89 27 A5 EF 81 CF
|
||||
01F0 | 27 95 E2 C1 3A 75 67 9C DB 77 C6 F2 47 74 3D C9
|
||||
0200 | 4D E7 4D 94 83 44 9D 80 63 FF 24 E9 1B 80 3F A4
|
||||
0210 | 62 63 A7 D1 90 0D FE A9 88 56 40 3A 9E 9C 76 E9
|
||||
0220 | 1A 00 34 23 18 4D EC 1D 11 78 37 93 6C 29 D9 B7
|
||||
0230 | 33 6C C4 F7 6D 42 E0 29 48 5C E4 2F A2 F0 23 D3
|
||||
0240 | 01 33 C2 48 4F CC F7 8D FC 06 9B 5A 41 02 2F 7E
|
||||
0250 | 2E 2E B6 D6 0D F8 F6 B2 34 64 02 3A A6 94 9C 39
|
||||
0260 | 2D 97 4A A9 60 E1 78 F6 04 49 31 F0 32 EB F8 C0
|
||||
0270 | B5 3B 01 D4 50 72 6F ED E5 55 64 06 6E FF B2 B1
|
||||
0280 | F8 27 31 DA 90 B8 DC 44 F9 73 E6 BD</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 = 14ABE224D91B4219DF309EEAD010344A1DF5B86DB379750530408D671
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>017C901CABA95F65</code></td>
|
||||
<td><code>01149FB855B35F65</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>A8020000</code> (680 in decimal)</td>
|
||||
<td><code>E0020000</code> (736 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = 14ABE224D91B4219DF309EEAD010344A1DF5B86DB379750530408D671
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>7A4483F4E12D9C012A39CCC10920BDC3</code></td>
|
||||
<td><code>D3C76CF77D76D63546A497C0423DFC7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>94D9D0DAD24080024B001A9159091DE9</code></td>
|
||||
<td><code>509FE3CA6709F9B87301F345D643084B</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE500200736A8A7D7A91D4880857CF9D</code> <code>AC618ADC53BDCA2B7D74764597011B98</code> <code>2ED8F1F844319DE0E9F63C4727D12EFE</code> <code>F6C6EA5A124B474B4C7844E46817EFBE</code> <code>1E11461DE192A3DC03DC9A71D8253A7D</code> <code>44DF20B11C123E3DB8CB4376915FC547</code> <code>939428456771AFA5DE7EE44600547E58</code> <code>BDA4FEF590F34C33C698CD81E48222E8</code> <code>E42335FE16BFC976F3A6FB2BD01EF6DC</code> <code>6EE31466F438EEBB5EC115F965D819AF</code> <code>AD11E414A1D44A14344636B23E7E9725</code> <code>F2754834AE1351B730AD67475A7C5239</code> <code>0E7B8E959BD78D75E34DA3DAC10FD4F2</code> <code>661BAAFFCF9DDD0453EF6AE9F979EEB8</code> <code>49CF92CB39A50D6B3A30EB933C4A5ED2</code> <code>11AE6D43D9FCEC634B7B9F20D360E1FE</code> <code>4FB53E76686C693F27AA9C465174B5EA</code> <code>92D2FBBC478D5AC3D4B8639B7162D243</code> <code>C991117C66E3C9AB3C08C27288DE0CCF</code> <code>E2F4D9B12EF1C764148576D35FD3CEA8</code> <code>5456DDA0B3688301CBC36595BC5E4342</code> <code>B6AB96915C3B5CE10D9AE3A83216D13A</code> <code>A6FB0DDC98BE0DFB997D7DAC0A1CE758</code> <code>079B8146C7326A646796373AC817A58D</code> <code>4F6A23F7C05F630D36EF870D616F23A0</code> <code>A429F1C3A559C6E08F3477FB4B63C738</code> <code>48A2BEF1ED2F52CEAF9C5508B10712EE</code> <code>04D90488EE363B2B7F53E07795B4E958</code> <code>E6AA72F62F390A688AA0CF0E0412D46A</code> <code>B7E7EB83CA01D6038B1938221C4CB286</code> <code>9F587C36E75FD4F9DBB11680AB83FB4A</code> <code>FB7090B1A65F5AAA137C607F478E26A0</code> <code>F978F10799CCFC0C5EBA8C4491506D64</code> <code>72D24F9E27F91C01C87CAF902469159C</code> <code>7CED71B4B8AE6C8B62EC53B76093DAF1</code> <code>FC8AC88EA7E979A2E20C1FC219DD0CB5</code> <code>A5B61A390BF136E41B0015FCE3C0CB24</code><br> <code>E8659F55</code></td>
|
||||
<td><code>FE50020066D381F4675B7D308F41FB24</code> <code>4EDB3689A8340447DB35BD190FB2E28A</code> <code>D3B0F6734AC8099D7DDBDA11AEE7CAFD</code> <code>5BAC7C3ACF7DBF4BE4443B822CE70467</code> <code>67AE39222F0B79021E7C4590CA22A948</code> <code>75B4930587F75A2F7786DA916E825977</code> <code>F84729AA8E0D1ACD94ABE7C3CBF21380</code> <code>8F362E34832D4EBDEC44B239C2451064</code> <code>10BF91CBD5DBB1A8C1D8B9D7DD4CD426</code> <code>B4B9F98693A4DD562F323C3F95CAD816</code> <code>884392361379552EA93EAEFAFA2AFB37</code> <code>C03A6F7C737DDFD09E601438897EBA18</code> <code>C7B73E98D9DB3152BA4443604C93C784</code> <code>74D3EA77610FCCB542AB099837D7AAAD</code> <code>63C2A4E08D05A2A85D9A31B9E2D4BB0A</code> <code>DE6271181B26F800626584426BB4E714</code> <code>C179DE8EC1B706C4C47A43DC2B6E29E8</code> <code>DD91D696FF05021C211175A49FA140EF</code> <code>BE10BF743E9CE258EC49C6198EF950B1</code> <code>1A1B7CF2DDC5A49540AF6E3840109BE1</code> <code>FDF9554186B59ED37BE70FFB73AD8845</code> <code>5BEEC8C26EE87E9F0CA7939E99491FAE</code> <code>134AB1451E1EC14ADA9727BC401335AC</code> <code>82FB5FAE55B80926F111D61E9D2A3804</code> <code>5A91FC46BD85EACC65B6A0E2C2B4AAAF</code> <code>BEAA79DEF4FE10ECCF3E454039F88AB5</code> <code>9BFAA6135C28B42D249D78FBEBD41E63</code> <code>7DD38927A5EF81CF2795E2C13A75679C</code> <code>DB77C6F247743DC94DE74D9483449D80</code> <code>63FF24E91B803FA46263A7D1900DFEA9</code> <code>8856403A9E9C76E91A003423184DEC1D</code> <code>117837936C29D9B7336CC4F76D42E029</code> <code>485CE42FA2F023D30133C2484FCCF78D</code> <code>FC069B5A41022F7E2E2EB6D60DF8F6B2</code> <code>3464023AA6949C392D974AA960E178F6</code> <code>044931F032EBF8C0B53B01D450726FED</code> <code>E55564066EFFB2B1F82731DA90B8DC44</code><br> <code>F973E6BD</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = 14ABE224D91B4219DF309EEAD010344A1DF5B86DB379750530408D671
|
|||
<!-- 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 = 736A8A7D7A91D4880857CF9DAC618ADC53BDCA2B7D74764597011B982ED8F1F844319DE0E9F63C4727D12EFEF6C6EA5A124B474B4C7844E46817EFBE1E11461DE192A3DC03DC9A71D8253A7D44DF20B11C123E3DB8CB4376915FC547939428456771AFA5DE7EE44600547E58BDA4FEF590F34C33C698CD81E48222E8E42335FE16BFC976F3A6FB2BD01EF6DC6EE31466F438EEBB5EC115F965D819AFAD11E414A1D44A14344636B23E7E9725F2754834AE1351B730AD67475A7C52390E7B8E959BD78D75E34DA3DAC10FD4F2661BAAFFCF9DDD0453EF6AE9F979EEB849CF92CB39A50D6B3A30EB933C4A5ED211AE6D43D9FCEC634B7B9F20D360E1FE4FB53E76686C693F27AA9C465174B5EA92D2FBBC478D5AC3D4B8639B7162D243C991117C66E3C9AB3C08C27288DE0CCFE2F4D9B12EF1C764148576D35FD3CEA85456DDA0B3688301CBC36595BC5E4342B6AB96915C3B5CE10D9AE3A83216D13AA6FB0DDC98BE0DFB997D7DAC0A1CE758079B8146C7326A646796373AC817A58D4F6A23F7C05F630D36EF870D616F23A0A429F1C3A559C6E08F3477FB4B63C73848A2BEF1ED2F52CEAF9C5508B10712EE04D90488EE363B2B7F53E07795B4E958E6AA72F62F390A688AA0CF0E0412D46AB7E7EB83CA01D6038B1938221C4CB2869F587C36E75FD4F9DBB11680AB83FB4AFB7090B1A65F5AAA137C607F478E26A0F978F10799CCFC0C5EBA8C4491506D6472D24F9E27F91C01C87CAF902469159C7CED71B4B8AE6C8B62EC53B76093DAF1FC8AC88EA7E979A2E20C1FC219DD0CB5A5B61A390BF136E41B0015FCE3C0CB24E8659F55
|
||||
tmp_aes_key = 675641CF483005F1A58B6741C0D8550A8336A7072783138A41AD9980FC09FDE7
|
||||
tmp_aes_iv = 13465E12C0B0DC4CDA3685C09D2FDB128B40AAEA53CBDF1356F420FCA15BFB1E</code></pre>
|
||||
<pre><code>encrypted_answer = 66D381F4675B7D308F41FB244EDB3689A8340447DB35BD190FB2E28AD3B0F6734AC8099D7DDBDA11AEE7CAFD5BAC7C3ACF7DBF4BE4443B822CE7046767AE39222F0B79021E7C4590CA22A94875B4930587F75A2F7786DA916E825977F84729AA8E0D1ACD94ABE7C3CBF213808F362E34832D4EBDEC44B239C245106410BF91CBD5DBB1A8C1D8B9D7DD4CD426B4B9F98693A4DD562F323C3F95CAD816884392361379552EA93EAEFAFA2AFB37C03A6F7C737DDFD09E601438897EBA18C7B73E98D9DB3152BA4443604C93C78474D3EA77610FCCB542AB099837D7AAAD63C2A4E08D05A2A85D9A31B9E2D4BB0ADE6271181B26F800626584426BB4E714C179DE8EC1B706C4C47A43DC2B6E29E8DD91D696FF05021C211175A49FA140EFBE10BF743E9CE258EC49C6198EF950B11A1B7CF2DDC5A49540AF6E3840109BE1FDF9554186B59ED37BE70FFB73AD88455BEEC8C26EE87E9F0CA7939E99491FAE134AB1451E1EC14ADA9727BC401335AC82FB5FAE55B80926F111D61E9D2A38045A91FC46BD85EACC65B6A0E2C2B4AAAFBEAA79DEF4FE10ECCF3E454039F88AB59BFAA6135C28B42D249D78FBEBD41E637DD38927A5EF81CF2795E2C13A75679CDB77C6F247743DC94DE74D9483449D8063FF24E91B803FA46263A7D1900DFEA98856403A9E9C76E91A003423184DEC1D117837936C29D9B7336CC4F76D42E029485CE42FA2F023D30133C2484FCCF78DFC069B5A41022F7E2E2EB6D60DF8F6B23464023AA6949C392D974AA960E178F6044931F032EBF8C0B53B01D450726FEDE55564066EFFB2B1F82731DA90B8DC44F973E6BD
|
||||
tmp_aes_key = 3D27FBABF48F4AB792754710A5F63B0421105B1FCB1D6700FE2160586C3D6A5D
|
||||
tmp_aes_iv = 5E37276CE40077CFCD38F6235E1BB0D2CAB73E21A6E0BF08892BABEF26DAC484</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = F16156B11DBD6B8DD84A429E1BDCA04013B42CCEBA0D89B57A4483F4E12D9C012A39CCC10920BDC394D9D0DAD24080024B001A9159091DE903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001008C5C61AEBFFEBCFC1B46DA700574D4F9A46DD6A948E371C33FF555957C74FC04CCF78D94D962FF95E5A122DCAA060C03090E396460F608563CCE93A5C7CEB4AF9ED27C765084FDFD6881DE65C2EED350A0FEBEC40FE6F393EA3F912C5F61583436DF7C04CEBAC6C1BE5987596FCE1B1C8D68DA1F127E7D1CD713EE7D85B398540B571DD911C9830A33F6EDF8FD43200A87E661EA203279997485FAFE07520D6F4F40DFA7F9A0A619E0547E7548A3FD887BF49C485921F19276A18B08A9DB16B2B68B040331391BC5C64C58304EFEECCE8386E39CED5F97948D1CC3D7F53C2E65EC7F763FDD3718925B33BAE6BCE00583F234FAB7BBBC4C3FE660108B5A42730CABA95F65A9D4078A53F16A8D
|
||||
answer = BA0D89B57A4483F4E12D9C012A39CCC10920BDC394D9D0DAD24080024B001A9159091DE903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001008C5C61AEBFFEBCFC1B46DA700574D4F9A46DD6A948E371C33FF555957C74FC04CCF78D94D962FF95E5A122DCAA060C03090E396460F608563CCE93A5C7CEB4AF9ED27C765084FDFD6881DE65C2EED350A0FEBEC40FE6F393EA3F912C5F61583436DF7C04CEBAC6C1BE5987596FCE1B1C8D68DA1F127E7D1CD713EE7D85B398540B571DD911C9830A33F6EDF8FD43200A87E661EA203279997485FAFE07520D6F4F40DFA7F9A0A619E0547E7548A3FD887BF49C485921F19276A18B08A9DB16B2B68B040331391BC5C64C58304EFEECCE8386E39CED5F97948D1CC3D7F53C2E65EC7F763FDD3718925B33BAE6BCE00583F234FAB7BBBC4C3FE660108B5A42730CABA95F65A9D4078A53F16A8D</code></pre>
|
||||
<pre><code>answer_with_hash = 393A87194DCC3E35882E5BBE97CC9743826BA9B2BA0D89B5D3C76CF77D76D63546A497C0423DFC7C509FE3CA6709F9B87301F345D643084B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010006BF9BE57AB3FCF8F17D7D2F1136B62F73C4F918232B2A70D51EF194146111BB0C1B6C9EB8F01C304E96C12A2A23D30F02BBB6DB7431C2AF2111BAFB0BBF9A0F46315AA01F74691F1D6EC8126EF761DC18DE5CA3361489C5352E7FD57AA2978B65AC5EC7E1BD95D495B84F72DC88963C62C28AD871AB995CBA2F51F94E6AD7EF8721ABC5F1AE86EFE6AE9B584963FDFDAFB24F87A5780C6A0A5B2273C10C54B93F98E68219D01A8B58709943760C72F9B0C38528193613F55F2E08D8E1637A3EBA10EF58880E45584EDCD557CADDF1755AC695C14711AA5C0E76EDDC15E20D05463FF14D89EF2F4EA531E3B22F86DBD3B7FE893CD9A1A1DA8B712703E06925E555B35F658FF4853C209201EA
|
||||
answer = BA0D89B5D3C76CF77D76D63546A497C0423DFC7C509FE3CA6709F9B87301F345D643084B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010006BF9BE57AB3FCF8F17D7D2F1136B62F73C4F918232B2A70D51EF194146111BB0C1B6C9EB8F01C304E96C12A2A23D30F02BBB6DB7431C2AF2111BAFB0BBF9A0F46315AA01F74691F1D6EC8126EF761DC18DE5CA3361489C5352E7FD57AA2978B65AC5EC7E1BD95D495B84F72DC88963C62C28AD871AB995CBA2F51F94E6AD7EF8721ABC5F1AE86EFE6AE9B584963FDFDAFB24F87A5780C6A0A5B2273C10C54B93F98E68219D01A8B58709943760C72F9B0C38528193613F55F2E08D8E1637A3EBA10EF58880E45584EDCD557CADDF1755AC695C14711AA5C0E76EDDC15E20D05463FF14D89EF2F4EA531E3B22F86DBD3B7FE893CD9A1A1DA8B712703E06925E555B35F658FF4853C209201EA</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 7A 44 83 F4 E1 2D 9C 01 2A 39 CC C1
|
||||
0010 | 09 20 BD C3 94 D9 D0 DA D2 40 80 02 4B 00 1A 91
|
||||
0020 | 59 09 1D E9 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 D3 C7 6C F7 7D 76 D6 35 46 A4 97 C0
|
||||
0010 | 42 3D FC 7C 50 9F E3 CA 67 09 F9 B8 73 01 F3 45
|
||||
0020 | D6 43 08 4B 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 = BA0D89B57A4483F4E12D9C012A39CCC10920BDC394D9D0DAD24080024B001A9159091DE
|
|||
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 | 8C 5C 61 AE BF FE BC FC 1B 46 DA 70 05 74 D4 F9
|
||||
0140 | A4 6D D6 A9 48 E3 71 C3 3F F5 55 95 7C 74 FC 04
|
||||
0150 | CC F7 8D 94 D9 62 FF 95 E5 A1 22 DC AA 06 0C 03
|
||||
0160 | 09 0E 39 64 60 F6 08 56 3C CE 93 A5 C7 CE B4 AF
|
||||
0170 | 9E D2 7C 76 50 84 FD FD 68 81 DE 65 C2 EE D3 50
|
||||
0180 | A0 FE BE C4 0F E6 F3 93 EA 3F 91 2C 5F 61 58 34
|
||||
0190 | 36 DF 7C 04 CE BA C6 C1 BE 59 87 59 6F CE 1B 1C
|
||||
01A0 | 8D 68 DA 1F 12 7E 7D 1C D7 13 EE 7D 85 B3 98 54
|
||||
01B0 | 0B 57 1D D9 11 C9 83 0A 33 F6 ED F8 FD 43 20 0A
|
||||
01C0 | 87 E6 61 EA 20 32 79 99 74 85 FA FE 07 52 0D 6F
|
||||
01D0 | 4F 40 DF A7 F9 A0 A6 19 E0 54 7E 75 48 A3 FD 88
|
||||
01E0 | 7B F4 9C 48 59 21 F1 92 76 A1 8B 08 A9 DB 16 B2
|
||||
01F0 | B6 8B 04 03 31 39 1B C5 C6 4C 58 30 4E FE EC CE
|
||||
0200 | 83 86 E3 9C ED 5F 97 94 8D 1C C3 D7 F5 3C 2E 65
|
||||
0210 | EC 7F 76 3F DD 37 18 92 5B 33 BA E6 BC E0 05 83
|
||||
0220 | F2 34 FA B7 BB BC 4C 3F E6 60 10 8B 5A 42 73 0C
|
||||
0230 | AB A9 5F 65</code></pre>
|
||||
0130 | 06 BF 9B E5 7A B3 FC F8 F1 7D 7D 2F 11 36 B6 2F
|
||||
0140 | 73 C4 F9 18 23 2B 2A 70 D5 1E F1 94 14 61 11 BB
|
||||
0150 | 0C 1B 6C 9E B8 F0 1C 30 4E 96 C1 2A 2A 23 D3 0F
|
||||
0160 | 02 BB B6 DB 74 31 C2 AF 21 11 BA FB 0B BF 9A 0F
|
||||
0170 | 46 31 5A A0 1F 74 69 1F 1D 6E C8 12 6E F7 61 DC
|
||||
0180 | 18 DE 5C A3 36 14 89 C5 35 2E 7F D5 7A A2 97 8B
|
||||
0190 | 65 AC 5E C7 E1 BD 95 D4 95 B8 4F 72 DC 88 96 3C
|
||||
01A0 | 62 C2 8A D8 71 AB 99 5C BA 2F 51 F9 4E 6A D7 EF
|
||||
01B0 | 87 21 AB C5 F1 AE 86 EF E6 AE 9B 58 49 63 FD FD
|
||||
01C0 | AF B2 4F 87 A5 78 0C 6A 0A 5B 22 73 C1 0C 54 B9
|
||||
01D0 | 3F 98 E6 82 19 D0 1A 8B 58 70 99 43 76 0C 72 F9
|
||||
01E0 | B0 C3 85 28 19 36 13 F5 5F 2E 08 D8 E1 63 7A 3E
|
||||
01F0 | BA 10 EF 58 88 0E 45 58 4E DC D5 57 CA DD F1 75
|
||||
0200 | 5A C6 95 C1 47 11 AA 5C 0E 76 ED DC 15 E2 0D 05
|
||||
0210 | 46 3F F1 4D 89 EF 2F 4E A5 31 E3 B2 2F 86 DB D3
|
||||
0220 | B7 FE 89 3C D9 A1 A1 DA 8B 71 27 03 E0 69 25 E5
|
||||
0230 | 55 B3 5F 65</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -570,13 +570,13 @@ answer = BA0D89B57A4483F4E12D9C012A39CCC10920BDC394D9D0DAD24080024B001A9159091DE
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>7A4483F4E12D9C012A39CCC10920BDC3</code></td>
|
||||
<td><code>D3C76CF77D76D63546A497C0423DFC7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>94D9D0DAD24080024B001A9159091DE9</code></td>
|
||||
<td><code>509FE3CA6709F9B87301F345D643084B</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B57A4483F4E12D9C012A39CCC10920BDC394D9D0DAD24080024B001A9159091DE
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE0001008C5C61AEBFFEBCFC1B46DA70</code> <code>0574D4F9A46DD6A948E371C33FF55595</code> <code>7C74FC04CCF78D94D962FF95E5A122DC</code> <code>AA060C03090E396460F608563CCE93A5</code> <code>C7CEB4AF9ED27C765084FDFD6881DE65</code> <code>C2EED350A0FEBEC40FE6F393EA3F912C</code> <code>5F61583436DF7C04CEBAC6C1BE598759</code> <code>6FCE1B1C8D68DA1F127E7D1CD713EE7D</code> <code>85B398540B571DD911C9830A33F6EDF8</code> <code>FD43200A87E661EA203279997485FAFE</code> <code>07520D6F4F40DFA7F9A0A619E0547E75</code> <code>48A3FD887BF49C485921F19276A18B08</code> <code>A9DB16B2B68B040331391BC5C64C5830</code> <code>4EFEECCE8386E39CED5F97948D1CC3D7</code> <code>F53C2E65EC7F763FDD3718925B33BAE6</code> <code>BCE00583F234FAB7BBBC4C3FE660108B</code><br> <code>5A42730C</code></td>
|
||||
<td><code>FE00010006BF9BE57AB3FCF8F17D7D2F</code> <code>1136B62F73C4F918232B2A70D51EF194</code> <code>146111BB0C1B6C9EB8F01C304E96C12A</code> <code>2A23D30F02BBB6DB7431C2AF2111BAFB</code> <code>0BBF9A0F46315AA01F74691F1D6EC812</code> <code>6EF761DC18DE5CA3361489C5352E7FD5</code> <code>7AA2978B65AC5EC7E1BD95D495B84F72</code> <code>DC88963C62C28AD871AB995CBA2F51F9</code> <code>4E6AD7EF8721ABC5F1AE86EFE6AE9B58</code> <code>4963FDFDAFB24F87A5780C6A0A5B2273</code> <code>C10C54B93F98E68219D01A8B58709943</code> <code>760C72F9B0C38528193613F55F2E08D8</code> <code>E1637A3EBA10EF58880E45584EDCD557</code> <code>CADDF1755AC695C14711AA5C0E76EDDC</code> <code>15E20D05463FF14D89EF2F4EA531E3B2</code> <code>2F86DBD3B7FE893CD9A1A1DA8B712703</code><br> <code>E06925E5</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>ABA95F65</code> (1700768171 in decimal)</td>
|
||||
<td><code>55B35F65</code> (1700770645 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B57A4483F4E12D9C012A39CCC10920BDC394D9D0DAD24080024B001A9159091DE
|
|||
<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 = 13B66234DA363C82F3B76128DC878D77E8CBECFA1B39540E5C6028CBEF140B5280EEFCB0F1EBD195D4491F70324334DE50A0F2D27CF72A4BB3EFDC3D5C9404B0E90BBC7BA95905D344A7CECD3F621AB97B63F05E20685137FF83D4521E507B78B04F8D1C6DDADB563CA99B7CBF6980701D5570578B7E96B0A754C8FCBD60DE79CEF53CD8E9C5FE70AA0C55BC0384E9CE982AABF5F1896F599483EB701088A8E6A702B85DBE785C5A2860BC27579AE0CA009D1093A8E7FFF9269E724A208C213347B68D11EE65FDCE8B262F601BFCAB8D7162DDFEBFD5F43B6738E222D5CADB4A51E444506A16087A6DBE9DE1F06A55976F3B63FB4E75E494E94724B6628DF86D</code></pre>
|
||||
<pre><code>b = 64E2EF26A39DA1D134BFD62C4881C6600ABA06E681E481A21F6B9ECF59885EA9CBB9C82A124933495F18B5F74CA2CC395B9B52E81A2FCDEDB443EE445389587A87C2EED8B7D7A8028B8AB9578B0D11EBBC06AA404C3FCAA52EB20DA6DCF51415BC6C3010B2F03A968EADFFF7B51D4C52A21DA1A0A51B06372CAB3DBC72FD8707805F74FAB2E46A35CA38509312C7082C86470A72140C5221C19E99037B600243D8D84263EDB3096538788B74E9F447F4A4D1AF085B9F2AC39A4DF10D33D49663B6A02A66126D51801ABB27ED7421C78C2D6D23DA6530880F25BD752165B270F0CEEB4585B4DCE75B804E6928170D859C86460AC79320F3AD0E969FA9AC2694C7</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 = 76E7C32846DD187CA7917E86BBC3D83D61B1764BF6E1FF101420D41B17E64EFF529060E59F81BD13B39EA3F9A809F8AA091F209D8A056FD9D787FD9A1064E9FC646F327E77F40E3B27B589CAA0301E4B7C845AE17D77FE5B4ECD691B9B8D7AA74D9B83EEEC566146E58AF109623ED90F41EE7932F72FF5846BDBA9F56C798EA68AD987208A5140B3B29F550C88779C987EF9CCEE70E13772039844E312AB17D3CA3362080C49C16FC0D21DB2D450CE674E108075005E85EFD631072966E0929EFDAEFBFDEC54C4ECC2F02F83FDBF206B3169D3A26BA4D556DD320B5DFCB799D2F4360ADC7943B0FE8DB6781D447CAC4D31AD4F08288B18D5FDE78CAE43E6A62D</code></pre>
|
||||
<pre><code>g_b = 0101CD28945B9502B625E4B28EA75DE1E14906A131FBD5413560FE6EC87BEC6D633F1FF697108453542960A63EB30AE509DC57243D31585A7C17C5E399617701894EA6F8480A3102883D3CBA6C64B8C1A0278E70E3DB04B1F194B19115D3228C2EA6D913654E5E94B4238CF1E280D272920B001BC42DF938ADF07C190D6E8FECD564A28628F33F351245AB6A43F4A39CA1B47C1053C5D4A18B33B6EBC1E1698876A14E65C1963C277F4FCF8EEEA64A8BC97A725142EF37B8948B738494461443248699DC4F9FDFD0A8744D49AF7C42840DB9381F5D09DA3628EA002AEB7F32EBAF4FD275E7C6F8F99A37FA69FA321B30AF1AA988ABC5D9DFFCF97F221FD9172A</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 7A 44 83 F4 E1 2D 9C 01 2A 39 CC C1
|
||||
0010 | 09 20 BD C3 94 D9 D0 DA D2 40 80 02 4B 00 1A 91
|
||||
0020 | 59 09 1D E9 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 76 E7 C3 28 46 DD 18 7C A7 91 7E 86 BB C3 D8 3D
|
||||
0040 | 61 B1 76 4B F6 E1 FF 10 14 20 D4 1B 17 E6 4E FF
|
||||
0050 | 52 90 60 E5 9F 81 BD 13 B3 9E A3 F9 A8 09 F8 AA
|
||||
0060 | 09 1F 20 9D 8A 05 6F D9 D7 87 FD 9A 10 64 E9 FC
|
||||
0070 | 64 6F 32 7E 77 F4 0E 3B 27 B5 89 CA A0 30 1E 4B
|
||||
0080 | 7C 84 5A E1 7D 77 FE 5B 4E CD 69 1B 9B 8D 7A A7
|
||||
0090 | 4D 9B 83 EE EC 56 61 46 E5 8A F1 09 62 3E D9 0F
|
||||
00A0 | 41 EE 79 32 F7 2F F5 84 6B DB A9 F5 6C 79 8E A6
|
||||
00B0 | 8A D9 87 20 8A 51 40 B3 B2 9F 55 0C 88 77 9C 98
|
||||
00C0 | 7E F9 CC EE 70 E1 37 72 03 98 44 E3 12 AB 17 D3
|
||||
00D0 | CA 33 62 08 0C 49 C1 6F C0 D2 1D B2 D4 50 CE 67
|
||||
00E0 | 4E 10 80 75 00 5E 85 EF D6 31 07 29 66 E0 92 9E
|
||||
00F0 | FD AE FB FD EC 54 C4 EC C2 F0 2F 83 FD BF 20 6B
|
||||
0100 | 31 69 D3 A2 6B A4 D5 56 DD 32 0B 5D FC B7 99 D2
|
||||
0110 | F4 36 0A DC 79 43 B0 FE 8D B6 78 1D 44 7C AC 4D
|
||||
0120 | 31 AD 4F 08 28 8B 18 D5 FD E7 8C AE 43 E6 A6 2D</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 D3 C7 6C F7 7D 76 D6 35 46 A4 97 C0
|
||||
0010 | 42 3D FC 7C 50 9F E3 CA 67 09 F9 B8 73 01 F3 45
|
||||
0020 | D6 43 08 4B 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 01 01 CD 28 94 5B 95 02 B6 25 E4 B2 8E A7 5D E1
|
||||
0040 | E1 49 06 A1 31 FB D5 41 35 60 FE 6E C8 7B EC 6D
|
||||
0050 | 63 3F 1F F6 97 10 84 53 54 29 60 A6 3E B3 0A E5
|
||||
0060 | 09 DC 57 24 3D 31 58 5A 7C 17 C5 E3 99 61 77 01
|
||||
0070 | 89 4E A6 F8 48 0A 31 02 88 3D 3C BA 6C 64 B8 C1
|
||||
0080 | A0 27 8E 70 E3 DB 04 B1 F1 94 B1 91 15 D3 22 8C
|
||||
0090 | 2E A6 D9 13 65 4E 5E 94 B4 23 8C F1 E2 80 D2 72
|
||||
00A0 | 92 0B 00 1B C4 2D F9 38 AD F0 7C 19 0D 6E 8F EC
|
||||
00B0 | D5 64 A2 86 28 F3 3F 35 12 45 AB 6A 43 F4 A3 9C
|
||||
00C0 | A1 B4 7C 10 53 C5 D4 A1 8B 33 B6 EB C1 E1 69 88
|
||||
00D0 | 76 A1 4E 65 C1 96 3C 27 7F 4F CF 8E EE A6 4A 8B
|
||||
00E0 | C9 7A 72 51 42 EF 37 B8 94 8B 73 84 94 46 14 43
|
||||
00F0 | 24 86 99 DC 4F 9F DF D0 A8 74 4D 49 AF 7C 42 84
|
||||
0100 | 0D B9 38 1F 5D 09 DA 36 28 EA 00 2A EB 7F 32 EB
|
||||
0110 | AF 4F D2 75 E7 C6 F8 F9 9A 37 FA 69 FA 32 1B 30
|
||||
0120 | AF 1A A9 88 AB C5 D9 DF FC F9 7F 22 1F D9 17 2A</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 = BA0D89B57A4483F4E12D9C012A39CCC10920BDC394D9D0DAD24080024B001A9159091DE
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>7A4483F4E12D9C012A39CCC10920BDC3</code></td>
|
||||
<td><code>D3C76CF77D76D63546A497C0423DFC7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>94D9D0DAD24080024B001A9159091DE9</code></td>
|
||||
<td><code>509FE3CA6709F9B87301F345D643084B</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE00010076E7C32846DD187CA7917E86</code> <code>BBC3D83D61B1764BF6E1FF101420D41B</code> <code>17E64EFF529060E59F81BD13B39EA3F9</code> <code>A809F8AA091F209D8A056FD9D787FD9A</code> <code>1064E9FC646F327E77F40E3B27B589CA</code> <code>A0301E4B7C845AE17D77FE5B4ECD691B</code> <code>9B8D7AA74D9B83EEEC566146E58AF109</code> <code>623ED90F41EE7932F72FF5846BDBA9F5</code> <code>6C798EA68AD987208A5140B3B29F550C</code> <code>88779C987EF9CCEE70E13772039844E3</code> <code>12AB17D3CA3362080C49C16FC0D21DB2</code> <code>D450CE674E108075005E85EFD6310729</code> <code>66E0929EFDAEFBFDEC54C4ECC2F02F83</code> <code>FDBF206B3169D3A26BA4D556DD320B5D</code> <code>FCB799D2F4360ADC7943B0FE8DB6781D</code> <code>447CAC4D31AD4F08288B18D5FDE78CAE</code><br> <code>43E6A62D</code></td>
|
||||
<td><code>FE0001000101CD28945B9502B625E4B2</code> <code>8EA75DE1E14906A131FBD5413560FE6E</code> <code>C87BEC6D633F1FF697108453542960A6</code> <code>3EB30AE509DC57243D31585A7C17C5E3</code> <code>99617701894EA6F8480A3102883D3CBA</code> <code>6C64B8C1A0278E70E3DB04B1F194B191</code> <code>15D3228C2EA6D913654E5E94B4238CF1</code> <code>E280D272920B001BC42DF938ADF07C19</code> <code>0D6E8FECD564A28628F33F351245AB6A</code> <code>43F4A39CA1B47C1053C5D4A18B33B6EB</code> <code>C1E1698876A14E65C1963C277F4FCF8E</code> <code>EEA64A8BC97A725142EF37B8948B7384</code> <code>94461443248699DC4F9FDFD0A8744D49</code> <code>AF7C42840DB9381F5D09DA3628EA002A</code> <code>EB7F32EBAF4FD275E7C6F8F99A37FA69</code> <code>FA321B30AF1AA988ABC5D9DFFCF97F22</code><br> <code>1FD9172A</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 = BA0D89B57A4483F4E12D9C012A39CCC10920BDC394D9D0DAD24080024B001A9159091DE
|
|||
<!-- 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 = 54B643667A4483F4E12D9C012A39CCC10920BDC394D9D0DAD24080024B001A9159091DE90000000000000000FE00010076E7C32846DD187CA7917E86BBC3D83D61B1764BF6E1FF101420D41B17E64EFF529060E59F81BD13B39EA3F9A809F8AA091F209D8A056FD9D787FD9A1064E9FC646F327E77F40E3B27B589CAA0301E4B7C845AE17D77FE5B4ECD691B9B8D7AA74D9B83EEEC566146E58AF109623ED90F41EE7932F72FF5846BDBA9F56C798EA68AD987208A5140B3B29F550C88779C987EF9CCEE70E13772039844E312AB17D3CA3362080C49C16FC0D21DB2D450CE674E108075005E85EFD631072966E0929EFDAEFBFDEC54C4ECC2F02F83FDBF206B3169D3A26BA4D556DD320B5DFCB799D2F4360ADC7943B0FE8DB6781D447CAC4D31AD4F08288B18D5FDE78CAE43E6A62D
|
||||
padding = AE24319859262BF27E60384F
|
||||
tmp_aes_key = 675641CF483005F1A58B6741C0D8550A8336A7072783138A41AD9980FC09FDE7
|
||||
tmp_aes_iv = 13465E12C0B0DC4CDA3685C09D2FDB128B40AAEA53CBDF1356F420FCA15BFB1E</code></pre>
|
||||
<pre><code>data = 54B64366D3C76CF77D76D63546A497C0423DFC7C509FE3CA6709F9B87301F345D643084B0000000000000000FE0001000101CD28945B9502B625E4B28EA75DE1E14906A131FBD5413560FE6EC87BEC6D633F1FF697108453542960A63EB30AE509DC57243D31585A7C17C5E399617701894EA6F8480A3102883D3CBA6C64B8C1A0278E70E3DB04B1F194B19115D3228C2EA6D913654E5E94B4238CF1E280D272920B001BC42DF938ADF07C190D6E8FECD564A28628F33F351245AB6A43F4A39CA1B47C1053C5D4A18B33B6EBC1E1698876A14E65C1963C277F4FCF8EEEA64A8BC97A725142EF37B8948B738494461443248699DC4F9FDFD0A8744D49AF7C42840DB9381F5D09DA3628EA002AEB7F32EBAF4FD275E7C6F8F99A37FA69FA321B30AF1AA988ABC5D9DFFCF97F221FD9172A
|
||||
padding = 53EE4FD5B53345A7C4414441
|
||||
tmp_aes_key = 3D27FBABF48F4AB792754710A5F63B0421105B1FCB1D6700FE2160586C3D6A5D
|
||||
tmp_aes_iv = 5E37276CE40077CFCD38F6235E1BB0D2CAB73E21A6E0BF08892BABEF26DAC484</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 = 9C62CA0C1111B634A8B405F217977B8AB414DBEF6A9C4C0CCAAE191FA11A08298465BE7CDF811B378EED574ED65E41A7C8FC50D1FC80A8AB5EF56E60A586AE048E4939E36D7826A6255D1D5D6B9AB5F6D1A237647DEF04C4A5FE39B948D61F01142087F30C3F08B516BE17A7BD0AA94252A0BDDE0D7DE30CAA4AB58C3BE89E996214D7E48BB30F9472E96B38C4D404B4F742EE74A23682B13B5FDA50D11929D506D208E525B86FD1FA768BDBB223FC5D27BC89F1E04326FD2E9F4DAA2F09E6A9EC91A7F57F5A3FA49311873C887716B8A625764A8671C05115A56EE368F904D36964D362F7B664F8BFA5CC51431AAF5173703555ED6B399E4FF3315FAB42B349073F604BE827B7088284CC347AAEE8A67AE688B7B33C2021899635DE1E6A41E588931A7ADF3FD5C990EA0D38DBCACB0F99F39372C7FB2B08CBDB690D5C6E008B48BD5B2101A92F8DDB32B5976B4BE82B</code></pre>
|
||||
<pre><code>encrypted_data = D87C822814EC5E1EB34E662573E9CD1D81E5610763754329FB82F1D3F26F190945E04FB3BE454EA6A7C45A68595D3368D0FE641D8F8EDA2B782745DAE87101473B4F17965547E0076AA6A8ACCFC9AB7989444DA3CE9864EDE9047B5A13C1DE5BC593B421494A2D286026C2E3E18197E31C2AE2DCC3D0AAA26501EDF471DF714EFB74E1484719CC4F2A41866755006A6CFEB75121ECD365129E5B5223C19A106059E064B6C8E0DF67EE9AB899F8FC91B743AD10E59763C2F2D3631EC8E330A3305B3339124B3393E99DEDC7ED864E953D706DBC4D8678145816E83EAFC5201872559C2FF7B873954DA23FFF48B91BD9ADA585C7546ABD5B2A9C64C3E415A763A5D632F0A2E20A01F0CEA280604BE1D03BF429463CE59ACE9D2F67F4823FFA5E581FB0C216D8CFABEE61ED86EF8920BA6B79ACDA6569EA73CDB07CB2F68B70E561CA641CC308239821350D567BF816C009</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 F8 78 08 00 AB A9 5F 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 7A 44 83 F4 E1 2D 9C 01
|
||||
0020 | 2A 39 CC C1 09 20 BD C3 94 D9 D0 DA D2 40 80 02
|
||||
0030 | 4B 00 1A 91 59 09 1D E9 FE 50 01 00 9C 62 CA 0C
|
||||
0040 | 11 11 B6 34 A8 B4 05 F2 17 97 7B 8A B4 14 DB EF
|
||||
0050 | 6A 9C 4C 0C CA AE 19 1F A1 1A 08 29 84 65 BE 7C
|
||||
0060 | DF 81 1B 37 8E ED 57 4E D6 5E 41 A7 C8 FC 50 D1
|
||||
0070 | FC 80 A8 AB 5E F5 6E 60 A5 86 AE 04 8E 49 39 E3
|
||||
0080 | 6D 78 26 A6 25 5D 1D 5D 6B 9A B5 F6 D1 A2 37 64
|
||||
0090 | 7D EF 04 C4 A5 FE 39 B9 48 D6 1F 01 14 20 87 F3
|
||||
00A0 | 0C 3F 08 B5 16 BE 17 A7 BD 0A A9 42 52 A0 BD DE
|
||||
00B0 | 0D 7D E3 0C AA 4A B5 8C 3B E8 9E 99 62 14 D7 E4
|
||||
00C0 | 8B B3 0F 94 72 E9 6B 38 C4 D4 04 B4 F7 42 EE 74
|
||||
00D0 | A2 36 82 B1 3B 5F DA 50 D1 19 29 D5 06 D2 08 E5
|
||||
00E0 | 25 B8 6F D1 FA 76 8B DB B2 23 FC 5D 27 BC 89 F1
|
||||
00F0 | E0 43 26 FD 2E 9F 4D AA 2F 09 E6 A9 EC 91 A7 F5
|
||||
0100 | 7F 5A 3F A4 93 11 87 3C 88 77 16 B8 A6 25 76 4A
|
||||
0110 | 86 71 C0 51 15 A5 6E E3 68 F9 04 D3 69 64 D3 62
|
||||
0120 | F7 B6 64 F8 BF A5 CC 51 43 1A AF 51 73 70 35 55
|
||||
0130 | ED 6B 39 9E 4F F3 31 5F AB 42 B3 49 07 3F 60 4B
|
||||
0140 | E8 27 B7 08 82 84 CC 34 7A AE E8 A6 7A E6 88 B7
|
||||
0150 | B3 3C 20 21 89 96 35 DE 1E 6A 41 E5 88 93 1A 7A
|
||||
0160 | DF 3F D5 C9 90 EA 0D 38 DB CA CB 0F 99 F3 93 72
|
||||
0170 | C7 FB 2B 08 CB DB 69 0D 5C 6E 00 8B 48 BD 5B 21
|
||||
0180 | 01 A9 2F 8D DB 32 B5 97 6B 4B E8 2B</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 80 E5 01 00 55 B3 5F 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 D3 C7 6C F7 7D 76 D6 35
|
||||
0020 | 46 A4 97 C0 42 3D FC 7C 50 9F E3 CA 67 09 F9 B8
|
||||
0030 | 73 01 F3 45 D6 43 08 4B FE 50 01 00 D8 7C 82 28
|
||||
0040 | 14 EC 5E 1E B3 4E 66 25 73 E9 CD 1D 81 E5 61 07
|
||||
0050 | 63 75 43 29 FB 82 F1 D3 F2 6F 19 09 45 E0 4F B3
|
||||
0060 | BE 45 4E A6 A7 C4 5A 68 59 5D 33 68 D0 FE 64 1D
|
||||
0070 | 8F 8E DA 2B 78 27 45 DA E8 71 01 47 3B 4F 17 96
|
||||
0080 | 55 47 E0 07 6A A6 A8 AC CF C9 AB 79 89 44 4D A3
|
||||
0090 | CE 98 64 ED E9 04 7B 5A 13 C1 DE 5B C5 93 B4 21
|
||||
00A0 | 49 4A 2D 28 60 26 C2 E3 E1 81 97 E3 1C 2A E2 DC
|
||||
00B0 | C3 D0 AA A2 65 01 ED F4 71 DF 71 4E FB 74 E1 48
|
||||
00C0 | 47 19 CC 4F 2A 41 86 67 55 00 6A 6C FE B7 51 21
|
||||
00D0 | EC D3 65 12 9E 5B 52 23 C1 9A 10 60 59 E0 64 B6
|
||||
00E0 | C8 E0 DF 67 EE 9A B8 99 F8 FC 91 B7 43 AD 10 E5
|
||||
00F0 | 97 63 C2 F2 D3 63 1E C8 E3 30 A3 30 5B 33 39 12
|
||||
0100 | 4B 33 93 E9 9D ED C7 ED 86 4E 95 3D 70 6D BC 4D
|
||||
0110 | 86 78 14 58 16 E8 3E AF C5 20 18 72 55 9C 2F F7
|
||||
0120 | B8 73 95 4D A2 3F FF 48 B9 1B D9 AD A5 85 C7 54
|
||||
0130 | 6A BD 5B 2A 9C 64 C3 E4 15 A7 63 A5 D6 32 F0 A2
|
||||
0140 | E2 0A 01 F0 CE A2 80 60 4B E1 D0 3B F4 29 46 3C
|
||||
0150 | E5 9A CE 9D 2F 67 F4 82 3F FA 5E 58 1F B0 C2 16
|
||||
0160 | D8 CF AB EE 61 ED 86 EF 89 20 BA 6B 79 AC DA 65
|
||||
0170 | 69 EA 73 CD B0 7C B2 F6 8B 70 E5 61 CA 64 1C C3
|
||||
0180 | 08 23 98 21 35 0D 56 7B F8 16 C0 09</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>F8780800ABA95F65</code></td>
|
||||
<td><code>80E5010055B35F65</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>7A4483F4E12D9C012A39CCC10920BDC3</code></td>
|
||||
<td><code>D3C76CF77D76D63546A497C0423DFC7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>94D9D0DAD24080024B001A9159091DE9</code></td>
|
||||
<td><code>509FE3CA6709F9B87301F345D643084B</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE5001009C62CA0C1111B634A8B405F2</code> <code>17977B8AB414DBEF6A9C4C0CCAAE191F</code> <code>A11A08298465BE7CDF811B378EED574E</code> <code>D65E41A7C8FC50D1FC80A8AB5EF56E60</code> <code>A586AE048E4939E36D7826A6255D1D5D</code> <code>6B9AB5F6D1A237647DEF04C4A5FE39B9</code> <code>48D61F01142087F30C3F08B516BE17A7</code> <code>BD0AA94252A0BDDE0D7DE30CAA4AB58C</code> <code>3BE89E996214D7E48BB30F9472E96B38</code> <code>C4D404B4F742EE74A23682B13B5FDA50</code> <code>D11929D506D208E525B86FD1FA768BDB</code> <code>B223FC5D27BC89F1E04326FD2E9F4DAA</code> <code>2F09E6A9EC91A7F57F5A3FA49311873C</code> <code>887716B8A625764A8671C05115A56EE3</code> <code>68F904D36964D362F7B664F8BFA5CC51</code> <code>431AAF5173703555ED6B399E4FF3315F</code> <code>AB42B349073F604BE827B7088284CC34</code> <code>7AAEE8A67AE688B7B33C2021899635DE</code> <code>1E6A41E588931A7ADF3FD5C990EA0D38</code> <code>DBCACB0F99F39372C7FB2B08CBDB690D</code> <code>5C6E008B48BD5B2101A92F8DDB32B597</code><br> <code>6B4BE82B</code></td>
|
||||
<td><code>FE500100D87C822814EC5E1EB34E6625</code> <code>73E9CD1D81E5610763754329FB82F1D3</code> <code>F26F190945E04FB3BE454EA6A7C45A68</code> <code>595D3368D0FE641D8F8EDA2B782745DA</code> <code>E87101473B4F17965547E0076AA6A8AC</code> <code>CFC9AB7989444DA3CE9864EDE9047B5A</code> <code>13C1DE5BC593B421494A2D286026C2E3</code> <code>E18197E31C2AE2DCC3D0AAA26501EDF4</code> <code>71DF714EFB74E1484719CC4F2A418667</code> <code>55006A6CFEB75121ECD365129E5B5223</code> <code>C19A106059E064B6C8E0DF67EE9AB899</code> <code>F8FC91B743AD10E59763C2F2D3631EC8</code> <code>E330A3305B3339124B3393E99DEDC7ED</code> <code>864E953D706DBC4D8678145816E83EAF</code> <code>C5201872559C2FF7B873954DA23FFF48</code> <code>B91BD9ADA585C7546ABD5B2A9C64C3E4</code> <code>15A763A5D632F0A2E20A01F0CEA28060</code> <code>4BE1D03BF429463CE59ACE9D2F67F482</code> <code>3FFA5E581FB0C216D8CFABEE61ED86EF</code> <code>8920BA6B79ACDA6569EA73CDB07CB2F6</code> <code>8B70E561CA641CC308239821350D567B</code><br> <code>F816C009</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 = 591926B9BE2F2FC2CAEF695B8EB04B6B19942248E324FAB986973ADC8DD156333B7D040871546D408791D4F6B9FB00D246FAC3780418CE8365F636707FE6D55EBC2B54455185F0FF6176CEED54C3CFBCA1F4FD55B247F27D0A393251000D51D9EAFBD47C016F973B79C776AE3A27242DE18C5676FE8B6298ED3D77DCE8FB483E5EA9DD2B1F7987F629B04065E4C47CD3621997D38202AC24430F2F2B90B68866AD10634136D6EA651A4269161D440DF0A2212A7853CB0EBC10258A93F8F4A3BC35805384DD41F44759892B22CB29C6ACE4EC39E331838757C7A4B69076F5745CBECB1F4042366DD8E56F7A6DDA38D482BAB8FF58F817B8274CDDBA493F91E232</code></pre>
|
||||
<pre><code>auth_key = 7CF9B59B3E589AD19732D8C6AC65E158087425B8292B8D9478CEE3A8DBEA0EEB7AAA241F99E0FF5B7AEE142B52C9884709FBCC7AC060DC5C9A650CEB1728884102B349E149425624A8FF289D891DAE6664661CF5CAE9598DD674533BB2FCD205EDF769CFBEA0718C47C7060D6E20BA996ED5A4157F0635EE0E75BD09C6D2393792E21DED2D3FC571F6E6CBE501DA25985185D58CE6BC67641A5771B6752F49BBCCDE3D50C39A292628A5D4FDFF95EF74343F7F00E78BD3DDC36F8F5650C27C2313F610D3F2667FF1471451159AC55D84B88C8BB571D1B9429F48448F551375E7BC8814DDEEE14A2C1CD10A8CEC3DB5CE854CEF9CAD8F25E0E0EC301146FE7915</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 98 7B 62 AB A9 5F 65
|
||||
0010 | 44 00 00 00 34 F7 CB 3B 7A 44 83 F4 E1 2D 9C 01
|
||||
0020 | 2A 39 CC C1 09 20 BD C3 94 D9 D0 DA D2 40 80 02
|
||||
0030 | 4B 00 1A 91 59 09 1D E9 B3 FD F0 C5 E2 04 74 DE
|
||||
0040 | 6A 15 7F C8 2E F9 58 9F</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 A0 54 0A 56 B3 5F 65
|
||||
0010 | 48 00 00 00 34 F7 CB 3B D3 C7 6C F7 7D 76 D6 35
|
||||
0020 | 46 A4 97 C0 42 3D FC 7C 50 9F E3 CA 67 09 F9 B8
|
||||
0030 | 73 01 F3 45 D6 43 08 4B 3C D0 2A AE BA DA C1 B2
|
||||
0040 | 14 02 56 C9 BF F8 13 05</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>01987B62ABA95F65</code></td>
|
||||
<td><code>01A0540A56B35F65</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>44000000</code> (68 in decimal)</td>
|
||||
<td><code>48000000</code> (72 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>7A4483F4E12D9C012A39CCC10920BDC3</code></td>
|
||||
<td><code>D3C76CF77D76D63546A497C0423DFC7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>94D9D0DAD24080024B001A9159091DE9</code></td>
|
||||
<td><code>509FE3CA6709F9B87301F345D643084B</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>B3FDF0C5E20474DE6A157FC82EF9589F</code></td>
|
||||
<td><code>3CD02AAEBADAC1B2140256C9BFF81305</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>
|
||||
|
|
Loading…
Reference in a new issue