mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-02-27 15:05:12 +01:00
Update content of files
This commit is contained in:
parent
55013f2dcf
commit
fba3876e89
3 changed files with 208 additions and 214 deletions
|
@ -119,12 +119,12 @@
|
|||
<tr>
|
||||
<td><strong>small_queue_active_operations_max</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
<td>A limit, specifying the maximum number of files that should be downloaded in parallel from the same DC, for files smaller than 20MB.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>large_queue_active_operations_max</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
<td>A limit, specifying the maximum number of files that should be downloaded in parallel from the same DC, for files bigger than 20MB.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -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 54 1C 09 00 09 4F 87 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE A1 D0 50 58 4C B7 93 A7
|
||||
0020 | 9A 25 1D C4 34 D9 E6 C6</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 E8 0E 0C 00 68 25 88 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72</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>541C0900094F8765</code></td>
|
||||
<td><code>E80E0C0068258865</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>A1D050584CB793A79A251DC434D9E6C6</code></td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</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 98 97 00 0A 4F 87 65
|
||||
0010 | 64 00 00 00 63 24 16 05 A1 D0 50 58 4C B7 93 A7
|
||||
0020 | 9A 25 1D C4 34 D9 E6 C6 69 FF A0 EA 0B C5 AC 08
|
||||
0030 | F3 47 27 D8 7F 16 88 3C 08 1D 5A 9F 5F 40 CF 9C
|
||||
0040 | 09 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 98 CA AF 68 25 88 65
|
||||
0010 | C8 00 00 00 63 24 16 05 D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D
|
||||
0030 | 53 37 4C DB 6D C7 9F 47 08 0E B6 DC 88 26 FC 4C
|
||||
0040 | F1 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>019897000A4F8765</code></td>
|
||||
<td><code>0198CAAF68258865</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>64000000</code> (100 in decimal)</td>
|
||||
<td><code>C8000000</code> (200 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>A1D050584CB793A79A251DC434D9E6C6</code></td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>69FFA0EA0BC5AC08F34727D87F16883C</code></td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>081D5A9F5F40CF9C09000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2115178206461926409</td>
|
||||
<td><code>080EB6DC8826FC4CF1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1060277239620062449</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 = 2115178206461926409</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2115178206461926409 = 1264823717 * 1672310677</code></p>
|
||||
<pre><code>p = 1264823717
|
||||
q = 1672310677</code></pre>
|
||||
<pre><code>pq = 1060277239620062449</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1060277239620062449 = 1026477719 * 1032927671</code></p>
|
||||
<pre><code>p = 1026477719
|
||||
q = 1032927671</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 1D 5A 9F 5F 40 CF 9C 09 00 00 00
|
||||
0010 | 04 4B 63 AD A5 00 00 00 04 63 AD 6F 95 00 00 00
|
||||
0020 | A1 D0 50 58 4C B7 93 A7 9A 25 1D C4 34 D9 E6 C6
|
||||
0030 | 69 FF A0 EA 0B C5 AC 08 F3 47 27 D8 7F 16 88 3C
|
||||
0040 | 97 4F F7 44 53 23 58 48 12 A4 81 96 97 1A 8A FF
|
||||
0050 | 98 8C 3A 65 16 C7 09 06 81 83 69 57 93 F2 35 20
|
||||
<pre><code>0000 | 95 5F F5 A9 08 0E B6 DC 88 26 FC 4C F1 00 00 00
|
||||
0010 | 04 3D 2E CE 97 00 00 00 04 3D 91 39 B7 00 00 00
|
||||
0020 | D2 08 7A B2 B7 EF 08 2C F1 3E 12 F8 22 63 E2 72
|
||||
0030 | A2 0E 1D AF 2E 4F 2B 1D 53 37 4C DB 6D C7 9F 47
|
||||
0040 | CD 73 18 26 F3 7B 34 0A 9D B0 A8 AA 8A 8C 07 B3
|
||||
0050 | B0 A8 2F D2 0D 4C 42 B8 F5 81 3F 70 34 5C CF F3
|
||||
0060 | 02 00 00 00</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>p_q_inner_data_dc#a9f55f95 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int = P_Q_inner_data;</code></pre>
|
||||
|
@ -246,37 +246,37 @@ q = 1672310677</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>081D5A9F5F40CF9C09000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2115178206461926409</td>
|
||||
<td><code>080EB6DC8826FC4CF1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1060277239620062449</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>044B63ADA5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1264823717</td>
|
||||
<td><code>043D2ECE97000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1026477719</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>0463AD6F95000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1672310677</td>
|
||||
<td><code>043D9139B7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1032927671</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>A1D050584CB793A79A251DC434D9E6C6</code></td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>69FFA0EA0BC5AC08F34727D87F16883C</code></td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>974FF7445323584812A48196971A8AFF</code> <code>988C3A6516C709068183695793F23520</code></td>
|
||||
<td><code>CD731826F37B340A9DB0A8AA8A8C07B3</code> <code>B0A82FD20D4C42B8F5813F70345CCFF3</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1672310677</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 = 955FF5A9081D5A9F5F40CF9C09000000044B63ADA50000000463AD6F95000000A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883C974FF7445323584812A48196971A8AFF988C3A6516C709068183695793F2352002000000
|
||||
random_padding_bytes = E1D17479B26E38705348671BC9D13509EF615573C0BAC08E8066A3DF64AB6A45704B352DEEBB51135AF8C91909D183568A5F2FE80D02CA5354CC5482276909FEC32D1E14CE72A9D338E47F706A9CD0E07A5693F0248A266FC9E3BFB8</code></pre>
|
||||
<pre><code>data = 955FF5A9080EB6DC8826FC4CF1000000043D2ECE97000000043D9139B7000000D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F47CD731826F37B340A9DB0A8AA8A8C07B3B0A82FD20D4C42B8F5813F70345CCFF302000000
|
||||
random_padding_bytes = 2E73D9D0C93AAB380AE6EF27EBF31871543DC810D77E42C50CEAA1DB94C035E93B1BCB0CCEA69E9AE49D73EEA597D8CD47C9CA4A148E8E5875A3F00F576B5A5E8E700421185FEEB43B778073974064D7EBC3EABB6EC5D011F3A657A2</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 = BE04CA7B6C62E8531B3DCE1D486F9C5C64CC3966FFE6ED7946ABE52720D7D568ECD36C2AD390BF2EC2F0B652A6259BF80F3544D38C7CE718E83522DED2DCD3121EBA30B8D89079BCB6603840C41C63C5DDA14DEE1BC2306D14F1D9D3E0D5B5D252B44A187CAA9815E302430FFC6E4D60DF59A3E038A7C67CB2C0004C5483EF1176F2BEC1D5F3E1C1137F368D3785F8CF3A184C56E0FB62F98917BD888928565A4138534E84BC1113F38B04E14A3ACDD4158B4517FA6D89E8257861705B7D7F939491B5CDE35FD32B921773BE6B99701F35C76A6BC8FC7F7AAE11C674505B79B8916B8370CCFCEFE61DDA7FB5BEAD720826A8D0A984294B68B1E1D4FEF55C027F</code></pre>
|
||||
<pre><code>encrypted_data = E3A7D57B19C3E792872C9D58B57E98599F6E26EE5A35A5368F4F97869B44FE71814F2C2DB42F99D6E9607A0D8D1A8534CCA8AFAB51F331244160B39A71DF59F7206D7C8309FFC25FE85470F6FB3A4B5A9151D971AE129787B2DD0C47FFD4C607DBDA9AB76D8A393DE0DDF7EA321BC77AB1CBE5055DA969A506EB0A131EEA6476FC40CED87DFB8300003EAEA81A775426A927A971D166D583323A7FC60B45C40B15BBFAFEF27C267AE9D4ED013672580562ED71BF148ED43959AAE3C3BABEA82E03625CC66E87ABFFC48454249AB7C644B97ABDD2BD5D8F03AD25B72272D18089285995B1BCAAE6BA5C69A52A105B1867D88A87A1F1DC3BF39092BBA8B9C0708F</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 C4 1F 0D 00 0A 4F 87 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 A1 D0 50 58 4C B7 93 A7
|
||||
0020 | 9A 25 1D C4 34 D9 E6 C6 69 FF A0 EA 0B C5 AC 08
|
||||
0030 | F3 47 27 D8 7F 16 88 3C 04 4B 63 AD A5 00 00 00
|
||||
0040 | 04 63 AD 6F 95 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 BE 04 CA 7B 6C 62 E8 53 1B 3D CE 1D
|
||||
0060 | 48 6F 9C 5C 64 CC 39 66 FF E6 ED 79 46 AB E5 27
|
||||
0070 | 20 D7 D5 68 EC D3 6C 2A D3 90 BF 2E C2 F0 B6 52
|
||||
0080 | A6 25 9B F8 0F 35 44 D3 8C 7C E7 18 E8 35 22 DE
|
||||
0090 | D2 DC D3 12 1E BA 30 B8 D8 90 79 BC B6 60 38 40
|
||||
00A0 | C4 1C 63 C5 DD A1 4D EE 1B C2 30 6D 14 F1 D9 D3
|
||||
00B0 | E0 D5 B5 D2 52 B4 4A 18 7C AA 98 15 E3 02 43 0F
|
||||
00C0 | FC 6E 4D 60 DF 59 A3 E0 38 A7 C6 7C B2 C0 00 4C
|
||||
00D0 | 54 83 EF 11 76 F2 BE C1 D5 F3 E1 C1 13 7F 36 8D
|
||||
00E0 | 37 85 F8 CF 3A 18 4C 56 E0 FB 62 F9 89 17 BD 88
|
||||
00F0 | 89 28 56 5A 41 38 53 4E 84 BC 11 13 F3 8B 04 E1
|
||||
0100 | 4A 3A CD D4 15 8B 45 17 FA 6D 89 E8 25 78 61 70
|
||||
0110 | 5B 7D 7F 93 94 91 B5 CD E3 5F D3 2B 92 17 73 BE
|
||||
0120 | 6B 99 70 1F 35 C7 6A 6B C8 FC 7F 7A AE 11 C6 74
|
||||
0130 | 50 5B 79 B8 91 6B 83 70 CC FC EF E6 1D DA 7F B5
|
||||
0140 | BE AD 72 08 26 A8 D0 A9 84 29 4B 68 B1 E1 D4 FE
|
||||
0150 | F5 5C 02 7F</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 EC 0E 0C 00 68 25 88 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D
|
||||
0030 | 53 37 4C DB 6D C7 9F 47 04 3D 2E CE 97 00 00 00
|
||||
0040 | 04 3D 91 39 B7 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 E3 A7 D5 7B 19 C3 E7 92 87 2C 9D 58
|
||||
0060 | B5 7E 98 59 9F 6E 26 EE 5A 35 A5 36 8F 4F 97 86
|
||||
0070 | 9B 44 FE 71 81 4F 2C 2D B4 2F 99 D6 E9 60 7A 0D
|
||||
0080 | 8D 1A 85 34 CC A8 AF AB 51 F3 31 24 41 60 B3 9A
|
||||
0090 | 71 DF 59 F7 20 6D 7C 83 09 FF C2 5F E8 54 70 F6
|
||||
00A0 | FB 3A 4B 5A 91 51 D9 71 AE 12 97 87 B2 DD 0C 47
|
||||
00B0 | FF D4 C6 07 DB DA 9A B7 6D 8A 39 3D E0 DD F7 EA
|
||||
00C0 | 32 1B C7 7A B1 CB E5 05 5D A9 69 A5 06 EB 0A 13
|
||||
00D0 | 1E EA 64 76 FC 40 CE D8 7D FB 83 00 00 3E AE A8
|
||||
00E0 | 1A 77 54 26 A9 27 A9 71 D1 66 D5 83 32 3A 7F C6
|
||||
00F0 | 0B 45 C4 0B 15 BB FA FE F2 7C 26 7A E9 D4 ED 01
|
||||
0100 | 36 72 58 05 62 ED 71 BF 14 8E D4 39 59 AA E3 C3
|
||||
0110 | BA BE A8 2E 03 62 5C C6 6E 87 AB FF C4 84 54 24
|
||||
0120 | 9A B7 C6 44 B9 7A BD D2 BD 5D 8F 03 AD 25 B7 22
|
||||
0130 | 72 D1 80 89 28 59 95 B1 BC AA E6 BA 5C 69 A5 2A
|
||||
0140 | 10 5B 18 67 D8 8A 87 A1 F1 DC 3B F3 90 92 BB A8
|
||||
0150 | B9 C0 70 8F</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 = E1D17479B26E38705348671BC9D13509EF615573C0BAC08E8066A3DF6
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>C41F0D000A4F8765</code></td>
|
||||
<td><code>EC0E0C0068258865</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 = E1D17479B26E38705348671BC9D13509EF615573C0BAC08E8066A3DF6
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>A1D050584CB793A79A251DC434D9E6C6</code></td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>69FFA0EA0BC5AC08F34727D87F16883C</code></td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>044B63ADA5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1264823717</td>
|
||||
<td><code>043D2ECE97000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1026477719</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>0463AD6F95000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1672310677</td>
|
||||
<td><code>043D9139B7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1032927671</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 = E1D17479B26E38705348671BC9D13509EF615573C0BAC08E8066A3DF6
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE000100BE04CA7B6C62E8531B3DCE1D</code> <code>486F9C5C64CC3966FFE6ED7946ABE527</code> <code>20D7D568ECD36C2AD390BF2EC2F0B652</code> <code>A6259BF80F3544D38C7CE718E83522DE</code> <code>D2DCD3121EBA30B8D89079BCB6603840</code> <code>C41C63C5DDA14DEE1BC2306D14F1D9D3</code> <code>E0D5B5D252B44A187CAA9815E302430F</code> <code>FC6E4D60DF59A3E038A7C67CB2C0004C</code> <code>5483EF1176F2BEC1D5F3E1C1137F368D</code> <code>3785F8CF3A184C56E0FB62F98917BD88</code> <code>8928565A4138534E84BC1113F38B04E1</code> <code>4A3ACDD4158B4517FA6D89E825786170</code> <code>5B7D7F939491B5CDE35FD32B921773BE</code> <code>6B99701F35C76A6BC8FC7F7AAE11C674</code> <code>505B79B8916B8370CCFCEFE61DDA7FB5</code> <code>BEAD720826A8D0A984294B68B1E1D4FE</code><br> <code>F55C027F</code></td>
|
||||
<td><code>FE000100E3A7D57B19C3E792872C9D58</code> <code>B57E98599F6E26EE5A35A5368F4F9786</code> <code>9B44FE71814F2C2DB42F99D6E9607A0D</code> <code>8D1A8534CCA8AFAB51F331244160B39A</code> <code>71DF59F7206D7C8309FFC25FE85470F6</code> <code>FB3A4B5A9151D971AE129787B2DD0C47</code> <code>FFD4C607DBDA9AB76D8A393DE0DDF7EA</code> <code>321BC77AB1CBE5055DA969A506EB0A13</code> <code>1EEA6476FC40CED87DFB8300003EAEA8</code> <code>1A775426A927A971D166D583323A7FC6</code> <code>0B45C40B15BBFAFEF27C267AE9D4ED01</code> <code>3672580562ED71BF148ED43959AAE3C3</code> <code>BABEA82E03625CC66E87ABFFC4845424</code> <code>9AB7C644B97ABDD2BD5D8F03AD25B722</code> <code>72D18089285995B1BCAAE6BA5C69A52A</code> <code>105B1867D88A87A1F1DC3BF39092BBA8</code><br> <code>B9C0708F</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = E1D17479B26E38705348671BC9D13509EF615573C0BAC08E8066A3DF6
|
|||
<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 94 DF A9 0A 4F 87 65
|
||||
0010 | D0 02 00 00 5C 07 E8 D0 A1 D0 50 58 4C B7 93 A7
|
||||
0020 | 9A 25 1D C4 34 D9 E6 C6 69 FF A0 EA 0B C5 AC 08
|
||||
0030 | F3 47 27 D8 7F 16 88 3C FE 50 02 00 23 BF 4E BA
|
||||
0040 | 09 FE D0 74 63 97 04 06 16 B4 7A 0D 59 40 41 39
|
||||
0050 | FD 9D 20 6F 23 F3 5B D8 03 CC 0C A8 06 C7 29 84
|
||||
0060 | FC E1 4F 45 0D 1C 35 8B DE 23 FC AD CB C4 8F 7D
|
||||
0070 | CB CE B8 BD E2 A3 B0 74 E8 EB A2 FE DE B7 C9 7D
|
||||
0080 | 93 6E 7B 69 51 62 F6 B1 37 BB A8 CE 52 92 A1 2B
|
||||
0090 | DA 8D FA A5 01 29 CA 99 A4 89 B1 63 A2 88 11 FC
|
||||
00A0 | 8F EC 1A 00 D7 48 C9 84 ED DD 71 F9 05 AA D8 44
|
||||
00B0 | 19 0B 4C 17 AC 4B 4E E3 74 32 24 B5 3D 0B 67 AC
|
||||
00C0 | 02 7A 58 D2 03 F6 E7 C6 BA 2F 87 65 AF 7D 24 62
|
||||
00D0 | 07 0D 69 07 C7 98 80 13 C9 74 25 87 48 87 21 33
|
||||
00E0 | 7B E0 CE E7 77 B9 76 F8 01 18 66 D9 EE 4D B2 AC
|
||||
00F0 | A4 41 B3 33 49 2D 32 C8 70 4F 01 85 DF EF 08 10
|
||||
0100 | B6 C3 6F DF EE 69 02 F0 55 66 3D 99 22 C6 78 3F
|
||||
0110 | 86 14 9C 8A 51 BE F0 EE A9 81 6E 79 95 08 53 AD
|
||||
0120 | 7C 4D D5 6D C4 EC DA 7D 8B 08 E8 EE 98 16 33 EE
|
||||
0130 | 55 94 50 4D C6 2B 8B B5 A1 AC 16 D7 BD D0 BE EF
|
||||
0140 | EF 60 B4 6D 06 53 57 05 A9 E9 0B EA A9 B5 B7 F2
|
||||
0150 | 8C 0F 67 CB 8F D2 B9 9C C3 47 8F D8 CC 75 5D 5C
|
||||
0160 | 2B DF 28 DF A6 B4 EE BC F2 4C A6 1F 3B 3C F8 37
|
||||
0170 | D5 E6 39 3E CE 79 E4 F0 47 2A 00 4A E1 4F 4B 33
|
||||
0180 | 9D ED B3 7B 28 F6 A1 56 78 B9 45 E2 1E 1F CE 2D
|
||||
0190 | 4B 65 45 9B 63 97 35 9A 32 77 45 54 29 A1 A1 07
|
||||
01A0 | CA 34 6A C3 4E D3 07 BC 7D 61 50 29 10 0C 87 E9
|
||||
01B0 | 31 EB B0 97 A2 F1 F3 2E 76 26 37 72 53 61 99 4B
|
||||
01C0 | C6 9B 97 3A 7B A7 8B 6B 67 54 FC C4 AE 0F 24 F3
|
||||
01D0 | 23 0F 95 59 D8 D4 97 ED 45 23 BE 8C C2 72 3B 24
|
||||
01E0 | 50 E1 B0 01 56 9A E5 08 C7 5B 85 27 A3 56 2F 59
|
||||
01F0 | 21 07 FD 2D D5 13 36 6A C8 6B AB 2C 95 FF BD 2B
|
||||
0200 | 95 C2 E3 4C F0 2E 67 E6 50 94 D3 34 7D 8A C3 FB
|
||||
0210 | 87 8B 5F 43 DF E5 38 4C 0D D2 02 73 75 9C 06 09
|
||||
0220 | 91 CA 65 32 DA 5F CD 8D 6F C3 BD 4E 67 9F 53 49
|
||||
0230 | 0E D2 6A D3 8A 7C 60 38 29 64 D9 36 BC 07 01 15
|
||||
0240 | 0E 48 66 94 8D 7E 34 D9 14 B1 1A 2B BC 2D A4 24
|
||||
0250 | 42 D9 07 65 33 FF 84 D3 4C 9D 6D 0D D5 B5 D9 C0
|
||||
0260 | 47 66 A1 BA FE 96 E1 91 94 51 CE AB 40 F9 7F 38
|
||||
0270 | CD BA 0C E4 DA AA 29 70 0E 69 00 E4 5F 37 47 64
|
||||
0280 | 4D 6B 3E A7 69 29 EA 12 C9 EB 1B 34</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 F0 AE 79 69 25 88 65
|
||||
0010 | 98 02 00 00 5C 07 E8 D0 D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D
|
||||
0030 | 53 37 4C DB 6D C7 9F 47 FE 50 02 00 EF E1 2F 5F
|
||||
0040 | 46 FC 0A 39 40 03 05 58 E3 0F E7 23 0C 76 D3 19
|
||||
0050 | C3 23 1D 8D 73 04 A2 69 3F A1 2B E4 A6 79 CA F5
|
||||
0060 | 2B 2B 33 4D A4 E9 F8 42 CD EB 46 C6 E6 53 92 80
|
||||
0070 | E3 F7 C2 53 D3 EB 82 70 A4 B6 86 DB 8B FB 19 DB
|
||||
0080 | 29 6E DB 7B 95 CF 3B 42 53 83 12 9B 36 80 0D E5
|
||||
0090 | 3A 85 5F C0 8D 6C 14 93 D8 03 65 3F 95 13 C9 B0
|
||||
00A0 | 79 B5 F0 D2 FC D1 66 B2 5B 19 9C E1 CE FE 7B B4
|
||||
00B0 | 69 82 AD 38 B2 69 79 3D 7A 46 7E 77 6C BB D8 5D
|
||||
00C0 | 26 95 4E 20 31 91 C2 5B 6B 3C 11 EB C6 88 40 97
|
||||
00D0 | F4 12 AE 90 04 9F 6E D5 DA 99 37 96 48 79 F9 D0
|
||||
00E0 | D2 0B 5E 52 23 A7 59 CF C3 AC 77 27 57 6F CA FD
|
||||
00F0 | 5B 69 58 5B 73 F7 EB 87 9D F0 E3 75 0A 67 A2 CD
|
||||
0100 | A2 46 83 E7 9B 5A 23 D6 5D 1D 48 07 63 A3 1A 41
|
||||
0110 | AC AC EF 45 B8 AD 2C 74 F4 27 92 7E EC 57 79 67
|
||||
0120 | 70 77 47 03 F1 62 BC EE 3A 78 30 0B B2 94 CC F5
|
||||
0130 | 1A 25 99 CB B4 01 1D 35 82 1C E9 3E 79 2B 83 CE
|
||||
0140 | B3 E2 0B 1E B1 38 00 22 4A 52 AF 1A 15 0C BF 65
|
||||
0150 | 9B 53 5F 8E 1B 80 77 F7 65 D8 7E C6 38 EA 36 B0
|
||||
0160 | 11 E4 88 01 98 8D 58 2A 10 02 B2 10 AA 7D E8 E0
|
||||
0170 | BF 0D 69 F2 A8 A7 F7 2D 93 9E E3 DC 27 D9 1B C1
|
||||
0180 | C9 10 32 19 06 2A EB 6D 62 1F BA 77 DA 23 E6 36
|
||||
0190 | B8 1F 84 B8 5B B1 39 74 DE 74 C9 53 3D B0 A0 29
|
||||
01A0 | 4C BD AD 81 C1 D9 70 04 DE 6F E1 49 76 8A CD 0F
|
||||
01B0 | AD 17 17 D4 BF FD 57 0F 2C 80 2E EA E3 DA F1 8C
|
||||
01C0 | 9B FE 08 C7 08 D4 33 19 D5 61 E2 47 96 7D A5 42
|
||||
01D0 | F5 CA 8C 2E DE 98 C8 43 A1 88 C9 62 8C AC E0 44
|
||||
01E0 | 44 D3 C9 A3 66 E4 CE B6 A3 0C 08 8B F3 E5 AA AC
|
||||
01F0 | 77 A0 C8 8B 02 51 5A CE D1 37 4C E5 4F A7 FE 9F
|
||||
0200 | 8B E1 36 82 D3 E7 41 22 4D BB A8 B9 4E 08 F6 F4
|
||||
0210 | AD 16 8D 0B 01 C0 AA AF 7A 7B 95 32 BF 6F 45 5C
|
||||
0220 | 60 32 DA 76 07 95 B7 88 73 7C 6A 9B 6B 11 B2 E5
|
||||
0230 | 4A 27 A9 94 26 2F 41 99 02 D9 8A 0A 2E 0E 2B C7
|
||||
0240 | F5 8F 98 45 6D DF 5E 4D 40 E1 3E 98 F7 6F D3 36
|
||||
0250 | 57 E0 AE 6F B8 DB AB 20 58 AE F1 43 D2 1F 03 16
|
||||
0260 | DE 1A 6B 65 4B 6F 37 C4 A4 00 33 C9 0E 33 DB 19
|
||||
0270 | 5E D2 4B D9 6C 46 E8 26 D4 F9 1A 1C 9B 06 E2 93
|
||||
0280 | 93 B4 9E E9 AD 9A 6F 1D 8C 02 07 09</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 = E1D17479B26E38705348671BC9D13509EF615573C0BAC08E8066A3DF6
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>0194DFA90A4F8765</code></td>
|
||||
<td><code>01F0AE7969258865</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>D0020000</code> (720 in decimal)</td>
|
||||
<td><code>98020000</code> (664 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = E1D17479B26E38705348671BC9D13509EF615573C0BAC08E8066A3DF6
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>A1D050584CB793A79A251DC434D9E6C6</code></td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>69FFA0EA0BC5AC08F34727D87F16883C</code></td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE50020023BF4EBA09FED07463970406</code> <code>16B47A0D59404139FD9D206F23F35BD8</code> <code>03CC0CA806C72984FCE14F450D1C358B</code> <code>DE23FCADCBC48F7DCBCEB8BDE2A3B074</code> <code>E8EBA2FEDEB7C97D936E7B695162F6B1</code> <code>37BBA8CE5292A12BDA8DFAA50129CA99</code> <code>A489B163A28811FC8FEC1A00D748C984</code> <code>EDDD71F905AAD844190B4C17AC4B4EE3</code> <code>743224B53D0B67AC027A58D203F6E7C6</code> <code>BA2F8765AF7D2462070D6907C7988013</code> <code>C9742587488721337BE0CEE777B976F8</code> <code>011866D9EE4DB2ACA441B333492D32C8</code> <code>704F0185DFEF0810B6C36FDFEE6902F0</code> <code>55663D9922C6783F86149C8A51BEF0EE</code> <code>A9816E79950853AD7C4DD56DC4ECDA7D</code> <code>8B08E8EE981633EE5594504DC62B8BB5</code> <code>A1AC16D7BDD0BEEFEF60B46D06535705</code> <code>A9E90BEAA9B5B7F28C0F67CB8FD2B99C</code> <code>C3478FD8CC755D5C2BDF28DFA6B4EEBC</code> <code>F24CA61F3B3CF837D5E6393ECE79E4F0</code> <code>472A004AE14F4B339DEDB37B28F6A156</code> <code>78B945E21E1FCE2D4B65459B6397359A</code> <code>3277455429A1A107CA346AC34ED307BC</code> <code>7D615029100C87E931EBB097A2F1F32E</code> <code>762637725361994BC69B973A7BA78B6B</code> <code>6754FCC4AE0F24F3230F9559D8D497ED</code> <code>4523BE8CC2723B2450E1B001569AE508</code> <code>C75B8527A3562F592107FD2DD513366A</code> <code>C86BAB2C95FFBD2B95C2E34CF02E67E6</code> <code>5094D3347D8AC3FB878B5F43DFE5384C</code> <code>0DD20273759C060991CA6532DA5FCD8D</code> <code>6FC3BD4E679F53490ED26AD38A7C6038</code> <code>2964D936BC0701150E4866948D7E34D9</code> <code>14B11A2BBC2DA42442D9076533FF84D3</code> <code>4C9D6D0DD5B5D9C04766A1BAFE96E191</code> <code>9451CEAB40F97F38CDBA0CE4DAAA2970</code> <code>0E6900E45F3747644D6B3EA76929EA12</code><br> <code>C9EB1B34</code></td>
|
||||
<td><code>FE500200EFE12F5F46FC0A3940030558</code> <code>E30FE7230C76D319C3231D8D7304A269</code> <code>3FA12BE4A679CAF52B2B334DA4E9F842</code> <code>CDEB46C6E6539280E3F7C253D3EB8270</code> <code>A4B686DB8BFB19DB296EDB7B95CF3B42</code> <code>5383129B36800DE53A855FC08D6C1493</code> <code>D803653F9513C9B079B5F0D2FCD166B2</code> <code>5B199CE1CEFE7BB46982AD38B269793D</code> <code>7A467E776CBBD85D26954E203191C25B</code> <code>6B3C11EBC6884097F412AE90049F6ED5</code> <code>DA9937964879F9D0D20B5E5223A759CF</code> <code>C3AC7727576FCAFD5B69585B73F7EB87</code> <code>9DF0E3750A67A2CDA24683E79B5A23D6</code> <code>5D1D480763A31A41ACACEF45B8AD2C74</code> <code>F427927EEC57796770774703F162BCEE</code> <code>3A78300BB294CCF51A2599CBB4011D35</code> <code>821CE93E792B83CEB3E20B1EB1380022</code> <code>4A52AF1A150CBF659B535F8E1B8077F7</code> <code>65D87EC638EA36B011E48801988D582A</code> <code>1002B210AA7DE8E0BF0D69F2A8A7F72D</code> <code>939EE3DC27D91BC1C9103219062AEB6D</code> <code>621FBA77DA23E636B81F84B85BB13974</code> <code>DE74C9533DB0A0294CBDAD81C1D97004</code> <code>DE6FE149768ACD0FAD1717D4BFFD570F</code> <code>2C802EEAE3DAF18C9BFE08C708D43319</code> <code>D561E247967DA542F5CA8C2EDE98C843</code> <code>A188C9628CACE04444D3C9A366E4CEB6</code> <code>A30C088BF3E5AAAC77A0C88B02515ACE</code> <code>D1374CE54FA7FE9F8BE13682D3E74122</code> <code>4DBBA8B94E08F6F4AD168D0B01C0AAAF</code> <code>7A7B9532BF6F455C6032DA760795B788</code> <code>737C6A9B6B11B2E54A27A994262F4199</code> <code>02D98A0A2E0E2BC7F58F98456DDF5E4D</code> <code>40E13E98F76FD33657E0AE6FB8DBAB20</code> <code>58AEF143D21F0316DE1A6B654B6F37C4</code> <code>A40033C90E33DB195ED24BD96C46E826</code> <code>D4F91A1C9B06E29393B49EE9AD9A6F1D</code><br> <code>8C020709</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = E1D17479B26E38705348671BC9D13509EF615573C0BAC08E8066A3DF6
|
|||
<!-- 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 = 23BF4EBA09FED0746397040616B47A0D59404139FD9D206F23F35BD803CC0CA806C72984FCE14F450D1C358BDE23FCADCBC48F7DCBCEB8BDE2A3B074E8EBA2FEDEB7C97D936E7B695162F6B137BBA8CE5292A12BDA8DFAA50129CA99A489B163A28811FC8FEC1A00D748C984EDDD71F905AAD844190B4C17AC4B4EE3743224B53D0B67AC027A58D203F6E7C6BA2F8765AF7D2462070D6907C7988013C9742587488721337BE0CEE777B976F8011866D9EE4DB2ACA441B333492D32C8704F0185DFEF0810B6C36FDFEE6902F055663D9922C6783F86149C8A51BEF0EEA9816E79950853AD7C4DD56DC4ECDA7D8B08E8EE981633EE5594504DC62B8BB5A1AC16D7BDD0BEEFEF60B46D06535705A9E90BEAA9B5B7F28C0F67CB8FD2B99CC3478FD8CC755D5C2BDF28DFA6B4EEBCF24CA61F3B3CF837D5E6393ECE79E4F0472A004AE14F4B339DEDB37B28F6A15678B945E21E1FCE2D4B65459B6397359A3277455429A1A107CA346AC34ED307BC7D615029100C87E931EBB097A2F1F32E762637725361994BC69B973A7BA78B6B6754FCC4AE0F24F3230F9559D8D497ED4523BE8CC2723B2450E1B001569AE508C75B8527A3562F592107FD2DD513366AC86BAB2C95FFBD2B95C2E34CF02E67E65094D3347D8AC3FB878B5F43DFE5384C0DD20273759C060991CA6532DA5FCD8D6FC3BD4E679F53490ED26AD38A7C60382964D936BC0701150E4866948D7E34D914B11A2BBC2DA42442D9076533FF84D34C9D6D0DD5B5D9C04766A1BAFE96E1919451CEAB40F97F38CDBA0CE4DAAA29700E6900E45F3747644D6B3EA76929EA12C9EB1B34
|
||||
tmp_aes_key = CB7D6D9817AD90C5CA0D0C9DE2B6A96777A9DDC44B7D75E8FB68509CF0D6C892
|
||||
tmp_aes_iv = E0FADC1731AFFFB59DC98A1B7A8B390C5BDDF383365551EFE75FB469974FF744</code></pre>
|
||||
<pre><code>encrypted_answer = EFE12F5F46FC0A3940030558E30FE7230C76D319C3231D8D7304A2693FA12BE4A679CAF52B2B334DA4E9F842CDEB46C6E6539280E3F7C253D3EB8270A4B686DB8BFB19DB296EDB7B95CF3B425383129B36800DE53A855FC08D6C1493D803653F9513C9B079B5F0D2FCD166B25B199CE1CEFE7BB46982AD38B269793D7A467E776CBBD85D26954E203191C25B6B3C11EBC6884097F412AE90049F6ED5DA9937964879F9D0D20B5E5223A759CFC3AC7727576FCAFD5B69585B73F7EB879DF0E3750A67A2CDA24683E79B5A23D65D1D480763A31A41ACACEF45B8AD2C74F427927EEC57796770774703F162BCEE3A78300BB294CCF51A2599CBB4011D35821CE93E792B83CEB3E20B1EB13800224A52AF1A150CBF659B535F8E1B8077F765D87EC638EA36B011E48801988D582A1002B210AA7DE8E0BF0D69F2A8A7F72D939EE3DC27D91BC1C9103219062AEB6D621FBA77DA23E636B81F84B85BB13974DE74C9533DB0A0294CBDAD81C1D97004DE6FE149768ACD0FAD1717D4BFFD570F2C802EEAE3DAF18C9BFE08C708D43319D561E247967DA542F5CA8C2EDE98C843A188C9628CACE04444D3C9A366E4CEB6A30C088BF3E5AAAC77A0C88B02515ACED1374CE54FA7FE9F8BE13682D3E741224DBBA8B94E08F6F4AD168D0B01C0AAAF7A7B9532BF6F455C6032DA760795B788737C6A9B6B11B2E54A27A994262F419902D98A0A2E0E2BC7F58F98456DDF5E4D40E13E98F76FD33657E0AE6FB8DBAB2058AEF143D21F0316DE1A6B654B6F37C4A40033C90E33DB195ED24BD96C46E826D4F91A1C9B06E29393B49EE9AD9A6F1D8C020709
|
||||
tmp_aes_key = 7485114AC6140821FF57D30B90473FED4F905B663D46526B50D36FF6A90DBA26
|
||||
tmp_aes_iv = 5E472BBF1F2782B792E0EB7E26E3BCEF79A02E6CF37F0F6DFFBB2899CD731826</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = F1370A9F5C98174D45C7879701005F13FE5E9519BA0D89B5A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010087F03ADD09F978C37CBD8F34AE67093243963588D7107B423BE28877BFFFC7B2195A0A6A6774A6F5AC2627662A6BE12E3D15CFD80CF99C93B30BABAD76C9EDFB258E0345BBC3D9A246DBB217382C18DB7E1CB04949DEB10C8C4CA8F7AB67E6085993EF69290147448F429B412D07CD3E79B47F5EA5DB8ED01D5A0DAF0DBF70BEE9E64150D2EC06DA395081BE7D2AF9195099C97562148FD9493CB12426096A32214833EE2018423FF054B49127A89C914A2D4D84D6702FD0330E7D5C36D81110CDD5B5007F44E686E534A58536BF0DD84B17A01C0A50FCDD7F24283ECFD030508B65490D993E703D1F79A5FA9CB0FAB30FD0EDD953491D84E25D8F055C86B15F0A4F87651B5929D26FD657AC
|
||||
answer = BA0D89B5A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010087F03ADD09F978C37CBD8F34AE67093243963588D7107B423BE28877BFFFC7B2195A0A6A6774A6F5AC2627662A6BE12E3D15CFD80CF99C93B30BABAD76C9EDFB258E0345BBC3D9A246DBB217382C18DB7E1CB04949DEB10C8C4CA8F7AB67E6085993EF69290147448F429B412D07CD3E79B47F5EA5DB8ED01D5A0DAF0DBF70BEE9E64150D2EC06DA395081BE7D2AF9195099C97562148FD9493CB12426096A32214833EE2018423FF054B49127A89C914A2D4D84D6702FD0330E7D5C36D81110CDD5B5007F44E686E534A58536BF0DD84B17A01C0A50FCDD7F24283ECFD030508B65490D993E703D1F79A5FA9CB0FAB30FD0EDD953491D84E25D8F055C86B15F0A4F87651B5929D26FD657AC</code></pre>
|
||||
<pre><code>answer_with_hash = F6DB36B3D0AD50E262DC9B8CB08961283051B8C8BA0D89B5D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F4703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100544DC651034C590A0B2ACC429B32D2A381696C92401BE264CD63159498AE0B28BB1D3B9CF5F907ED3A05D62AE10D08797FB4103CB09E2265ACE276CB9454BCFA92D68792720FED32CB6008E98D22BA5FFA5605DDB0D85426CAA73538A75043ED81E90519EC6D8F1680E694C2543DB5C11472244CA7B8CBAE49D3FAEA10DA929D28034CCE837153416BCD54D93CC3B13015BBC3E9A8950DAD0925837BE01348B54BEE8D5415F5F0A8B5A1F96906B570CBE092B0C1DAB1B5A6C9617B1A476CDFC44FAA2A1DB0162EAC404E9FDD38C2412BDB2ABDE041A0C5A92AB07693D0EFA164D3F2FF2054C19BB296F1278716C7138168147F2A02E842D1488E1ECE9206038669258865210D0FAFE251C1DB
|
||||
answer = BA0D89B5D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F4703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100544DC651034C590A0B2ACC429B32D2A381696C92401BE264CD63159498AE0B28BB1D3B9CF5F907ED3A05D62AE10D08797FB4103CB09E2265ACE276CB9454BCFA92D68792720FED32CB6008E98D22BA5FFA5605DDB0D85426CAA73538A75043ED81E90519EC6D8F1680E694C2543DB5C11472244CA7B8CBAE49D3FAEA10DA929D28034CCE837153416BCD54D93CC3B13015BBC3E9A8950DAD0925837BE01348B54BEE8D5415F5F0A8B5A1F96906B570CBE092B0C1DAB1B5A6C9617B1A476CDFC44FAA2A1DB0162EAC404E9FDD38C2412BDB2ABDE041A0C5A92AB07693D0EFA164D3F2FF2054C19BB296F1278716C7138168147F2A02E842D1488E1ECE9206038669258865210D0FAFE251C1DB</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 A1 D0 50 58 4C B7 93 A7 9A 25 1D C4
|
||||
0010 | 34 D9 E6 C6 69 FF A0 EA 0B C5 AC 08 F3 47 27 D8
|
||||
0020 | 7F 16 88 3C 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 D2 08 7A B2 B7 EF 08 2C F1 3E 12 F8
|
||||
0010 | 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D 53 37 4C DB
|
||||
0020 | 6D C7 9F 47 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 = BA0D89B5A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883
|
|||
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 | 87 F0 3A DD 09 F9 78 C3 7C BD 8F 34 AE 67 09 32
|
||||
0140 | 43 96 35 88 D7 10 7B 42 3B E2 88 77 BF FF C7 B2
|
||||
0150 | 19 5A 0A 6A 67 74 A6 F5 AC 26 27 66 2A 6B E1 2E
|
||||
0160 | 3D 15 CF D8 0C F9 9C 93 B3 0B AB AD 76 C9 ED FB
|
||||
0170 | 25 8E 03 45 BB C3 D9 A2 46 DB B2 17 38 2C 18 DB
|
||||
0180 | 7E 1C B0 49 49 DE B1 0C 8C 4C A8 F7 AB 67 E6 08
|
||||
0190 | 59 93 EF 69 29 01 47 44 8F 42 9B 41 2D 07 CD 3E
|
||||
01A0 | 79 B4 7F 5E A5 DB 8E D0 1D 5A 0D AF 0D BF 70 BE
|
||||
01B0 | E9 E6 41 50 D2 EC 06 DA 39 50 81 BE 7D 2A F9 19
|
||||
01C0 | 50 99 C9 75 62 14 8F D9 49 3C B1 24 26 09 6A 32
|
||||
01D0 | 21 48 33 EE 20 18 42 3F F0 54 B4 91 27 A8 9C 91
|
||||
01E0 | 4A 2D 4D 84 D6 70 2F D0 33 0E 7D 5C 36 D8 11 10
|
||||
01F0 | CD D5 B5 00 7F 44 E6 86 E5 34 A5 85 36 BF 0D D8
|
||||
0200 | 4B 17 A0 1C 0A 50 FC DD 7F 24 28 3E CF D0 30 50
|
||||
0210 | 8B 65 49 0D 99 3E 70 3D 1F 79 A5 FA 9C B0 FA B3
|
||||
0220 | 0F D0 ED D9 53 49 1D 84 E2 5D 8F 05 5C 86 B1 5F
|
||||
0230 | 0A 4F 87 65</code></pre>
|
||||
0130 | 54 4D C6 51 03 4C 59 0A 0B 2A CC 42 9B 32 D2 A3
|
||||
0140 | 81 69 6C 92 40 1B E2 64 CD 63 15 94 98 AE 0B 28
|
||||
0150 | BB 1D 3B 9C F5 F9 07 ED 3A 05 D6 2A E1 0D 08 79
|
||||
0160 | 7F B4 10 3C B0 9E 22 65 AC E2 76 CB 94 54 BC FA
|
||||
0170 | 92 D6 87 92 72 0F ED 32 CB 60 08 E9 8D 22 BA 5F
|
||||
0180 | FA 56 05 DD B0 D8 54 26 CA A7 35 38 A7 50 43 ED
|
||||
0190 | 81 E9 05 19 EC 6D 8F 16 80 E6 94 C2 54 3D B5 C1
|
||||
01A0 | 14 72 24 4C A7 B8 CB AE 49 D3 FA EA 10 DA 92 9D
|
||||
01B0 | 28 03 4C CE 83 71 53 41 6B CD 54 D9 3C C3 B1 30
|
||||
01C0 | 15 BB C3 E9 A8 95 0D AD 09 25 83 7B E0 13 48 B5
|
||||
01D0 | 4B EE 8D 54 15 F5 F0 A8 B5 A1 F9 69 06 B5 70 CB
|
||||
01E0 | E0 92 B0 C1 DA B1 B5 A6 C9 61 7B 1A 47 6C DF C4
|
||||
01F0 | 4F AA 2A 1D B0 16 2E AC 40 4E 9F DD 38 C2 41 2B
|
||||
0200 | DB 2A BD E0 41 A0 C5 A9 2A B0 76 93 D0 EF A1 64
|
||||
0210 | D3 F2 FF 20 54 C1 9B B2 96 F1 27 87 16 C7 13 81
|
||||
0220 | 68 14 7F 2A 02 E8 42 D1 48 8E 1E CE 92 06 03 86
|
||||
0230 | 69 25 88 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 = BA0D89B5A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>A1D050584CB793A79A251DC434D9E6C6</code></td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>69FFA0EA0BC5AC08F34727D87F16883C</code></td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B5A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE00010087F03ADD09F978C37CBD8F34</code> <code>AE67093243963588D7107B423BE28877</code> <code>BFFFC7B2195A0A6A6774A6F5AC262766</code> <code>2A6BE12E3D15CFD80CF99C93B30BABAD</code> <code>76C9EDFB258E0345BBC3D9A246DBB217</code> <code>382C18DB7E1CB04949DEB10C8C4CA8F7</code> <code>AB67E6085993EF69290147448F429B41</code> <code>2D07CD3E79B47F5EA5DB8ED01D5A0DAF</code> <code>0DBF70BEE9E64150D2EC06DA395081BE</code> <code>7D2AF9195099C97562148FD9493CB124</code> <code>26096A32214833EE2018423FF054B491</code> <code>27A89C914A2D4D84D6702FD0330E7D5C</code> <code>36D81110CDD5B5007F44E686E534A585</code> <code>36BF0DD84B17A01C0A50FCDD7F24283E</code> <code>CFD030508B65490D993E703D1F79A5FA</code> <code>9CB0FAB30FD0EDD953491D84E25D8F05</code><br> <code>5C86B15F</code></td>
|
||||
<td><code>FE000100544DC651034C590A0B2ACC42</code> <code>9B32D2A381696C92401BE264CD631594</code> <code>98AE0B28BB1D3B9CF5F907ED3A05D62A</code> <code>E10D08797FB4103CB09E2265ACE276CB</code> <code>9454BCFA92D68792720FED32CB6008E9</code> <code>8D22BA5FFA5605DDB0D85426CAA73538</code> <code>A75043ED81E90519EC6D8F1680E694C2</code> <code>543DB5C11472244CA7B8CBAE49D3FAEA</code> <code>10DA929D28034CCE837153416BCD54D9</code> <code>3CC3B13015BBC3E9A8950DAD0925837B</code> <code>E01348B54BEE8D5415F5F0A8B5A1F969</code> <code>06B570CBE092B0C1DAB1B5A6C9617B1A</code> <code>476CDFC44FAA2A1DB0162EAC404E9FDD</code> <code>38C2412BDB2ABDE041A0C5A92AB07693</code> <code>D0EFA164D3F2FF2054C19BB296F12787</code> <code>16C7138168147F2A02E842D1488E1ECE</code><br> <code>92060386</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>0A4F8765</code> (1703366410 in decimal)</td>
|
||||
<td><code>69258865</code> (1703421289 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B5A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883
|
|||
<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 = 20A03DED499A18AE912DCD0BAEF0F391C4C28F9F901EF3031C10F5FD2364D223312153A7A51D2FC62044AD600D31AC7973C0D93E4CDA2741DEEE9F50FE0D83D317396270DB47415034155DC3C701B3F508C0542858921CE84FC7E0A338D8D8CD6D31F5E4DD959328443067D8B536C869A5E221C2DF17A1BE81FA5113A4E04934E924967BD7EC04B2E80E3ABFDC6FD13BFF7D2B3A075CC6B0DC9DAA1752E95926166A30A47C9EE96265F78FD5FFA1E18C0A346F5A139003A7A34731A3D394E54396D5CD3A97684303D1B0A083969673903D744E99EF19328C1DB743D2C8D86EE3C259E460F44AAD04F3E2E561FDC550DEE81E1ADD839FA23DADE591CDFB6A5200</code></pre>
|
||||
<pre><code>b = 86187B02975022C9C73549603451911D41AC68E6632EE10BCE9ED1E98D83CC92F2B63119DE3E47B54044A02EC6782673F35DBB3BF33C6D33F20354071215FF4EE9E60ED745B024B5AF1EAAF9B76882C65BE26C0BC8FDB2D65F4AE8AA22358FBE7561BD19CB13C0711053BFD3E0704CE1DE86B93BC3DAC71AA4A7F1374536B6EAF96FE733F0094AD945A4D855641F2C00A323AD0151251FE6255EE717E166BFE2C4B0C0F3FBA38989FD1B362FE468272884FAFFE12874A3E42F87EFB0E336CEEFCF1AD6596B1C86756B6EDADB4222495B01FB95C9214B8AD025213A45EFCEAAFB386A6712311A4CB05DC13292CF5050774B4D413847441E6C7AF1DCACC64DE105</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 = 65F6C6F42E720D4A1EE898D1195C970DA2ADEB0460D361AE413E7AFF5109CAD730C3216D0067078A740B704D66AD80FA0869B86A50AE4D2C9D1050EA2CFBA8EBDB88403B70049ED0EB1F54D550A4A8FC877A0A682EBF7F62BB3230041131FFAFDE91E5CBE1F22EBE141332E20D5658C7BFDBC3DEAC5875637BED83FE7C2C800DF6FC87D89149F33150FCD96338DBE8E98DFF4D9FA5E6EE718CFE76CE3721AAD9B4667109C855AF0D04D41A5CC8D6131ABD7511B3E04010532DFE8D42B8085B7BD8180EED3DD134B5B018B81DAF086495210524EB8F6615077FA71C9A8EB2110757548347DEB2277CB464328E2A982D5FCEB5155587910485282CE77084D56D3B</code></pre>
|
||||
<pre><code>g_b = C8A0AF3369F5194F3F4A6A37FF8B2EF8B88F9F5B0813F2B5160046862395A604230EFA17A69A6FEE669C005E7D19E84DAA0DE3302B7512C61413EA9124F9C36B93FB2A8C8EF1973A1773169AB5AB7DF272678A66448AF4B8326824483E6A54348E993B9F412DE09DA82E67DEA7484A1E9B90A7D423DBD00313155B1DCAE1D5B5DBD80E47716C6AB9751BD8FF447C1130E2EE32FCF86B28C0D5F0C2334E4F2903B931334A384B3E327CB8C595F2641E88D85C387B504F3B1998D165576522D2C780ADD95684580847A611B4160760A2D3D6CB956633A82335C76C8C696876D885B1D99D3B99AB8C6DC03F9C1EB531E8F53B628B8FA5A778FDE7EE92779001B1</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 A1 D0 50 58 4C B7 93 A7 9A 25 1D C4
|
||||
0010 | 34 D9 E6 C6 69 FF A0 EA 0B C5 AC 08 F3 47 27 D8
|
||||
0020 | 7F 16 88 3C 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 65 F6 C6 F4 2E 72 0D 4A 1E E8 98 D1 19 5C 97 0D
|
||||
0040 | A2 AD EB 04 60 D3 61 AE 41 3E 7A FF 51 09 CA D7
|
||||
0050 | 30 C3 21 6D 00 67 07 8A 74 0B 70 4D 66 AD 80 FA
|
||||
0060 | 08 69 B8 6A 50 AE 4D 2C 9D 10 50 EA 2C FB A8 EB
|
||||
0070 | DB 88 40 3B 70 04 9E D0 EB 1F 54 D5 50 A4 A8 FC
|
||||
0080 | 87 7A 0A 68 2E BF 7F 62 BB 32 30 04 11 31 FF AF
|
||||
0090 | DE 91 E5 CB E1 F2 2E BE 14 13 32 E2 0D 56 58 C7
|
||||
00A0 | BF DB C3 DE AC 58 75 63 7B ED 83 FE 7C 2C 80 0D
|
||||
00B0 | F6 FC 87 D8 91 49 F3 31 50 FC D9 63 38 DB E8 E9
|
||||
00C0 | 8D FF 4D 9F A5 E6 EE 71 8C FE 76 CE 37 21 AA D9
|
||||
00D0 | B4 66 71 09 C8 55 AF 0D 04 D4 1A 5C C8 D6 13 1A
|
||||
00E0 | BD 75 11 B3 E0 40 10 53 2D FE 8D 42 B8 08 5B 7B
|
||||
00F0 | D8 18 0E ED 3D D1 34 B5 B0 18 B8 1D AF 08 64 95
|
||||
0100 | 21 05 24 EB 8F 66 15 07 7F A7 1C 9A 8E B2 11 07
|
||||
0110 | 57 54 83 47 DE B2 27 7C B4 64 32 8E 2A 98 2D 5F
|
||||
0120 | CE B5 15 55 87 91 04 85 28 2C E7 70 84 D5 6D 3B</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 D2 08 7A B2 B7 EF 08 2C F1 3E 12 F8
|
||||
0010 | 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D 53 37 4C DB
|
||||
0020 | 6D C7 9F 47 00 00 00 00 00 00 00 00 FE FF 00 00
|
||||
0030 | C8 A0 AF 33 69 F5 19 4F 3F 4A 6A 37 FF 8B 2E F8
|
||||
0040 | B8 8F 9F 5B 08 13 F2 B5 16 00 46 86 23 95 A6 04
|
||||
0050 | 23 0E FA 17 A6 9A 6F EE 66 9C 00 5E 7D 19 E8 4D
|
||||
0060 | AA 0D E3 30 2B 75 12 C6 14 13 EA 91 24 F9 C3 6B
|
||||
0070 | 93 FB 2A 8C 8E F1 97 3A 17 73 16 9A B5 AB 7D F2
|
||||
0080 | 72 67 8A 66 44 8A F4 B8 32 68 24 48 3E 6A 54 34
|
||||
0090 | 8E 99 3B 9F 41 2D E0 9D A8 2E 67 DE A7 48 4A 1E
|
||||
00A0 | 9B 90 A7 D4 23 DB D0 03 13 15 5B 1D CA E1 D5 B5
|
||||
00B0 | DB D8 0E 47 71 6C 6A B9 75 1B D8 FF 44 7C 11 30
|
||||
00C0 | E2 EE 32 FC F8 6B 28 C0 D5 F0 C2 33 4E 4F 29 03
|
||||
00D0 | B9 31 33 4A 38 4B 3E 32 7C B8 C5 95 F2 64 1E 88
|
||||
00E0 | D8 5C 38 7B 50 4F 3B 19 98 D1 65 57 65 22 D2 C7
|
||||
00F0 | 80 AD D9 56 84 58 08 47 A6 11 B4 16 07 60 A2 D3
|
||||
0100 | D6 CB 95 66 33 A8 23 35 C7 6C 8C 69 68 76 D8 85
|
||||
0110 | B1 D9 9D 3B 99 AB 8C 6D C0 3F 9C 1E B5 31 E8 F5
|
||||
0120 | 3B 62 8B 8F A5 A7 78 FD E7 EE 92 77 90 01 B1 00</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 = BA0D89B5A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>A1D050584CB793A79A251DC434D9E6C6</code></td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>69FFA0EA0BC5AC08F34727D87F16883C</code></td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE00010065F6C6F42E720D4A1EE898D1</code> <code>195C970DA2ADEB0460D361AE413E7AFF</code> <code>5109CAD730C3216D0067078A740B704D</code> <code>66AD80FA0869B86A50AE4D2C9D1050EA</code> <code>2CFBA8EBDB88403B70049ED0EB1F54D5</code> <code>50A4A8FC877A0A682EBF7F62BB323004</code> <code>1131FFAFDE91E5CBE1F22EBE141332E2</code> <code>0D5658C7BFDBC3DEAC5875637BED83FE</code> <code>7C2C800DF6FC87D89149F33150FCD963</code> <code>38DBE8E98DFF4D9FA5E6EE718CFE76CE</code> <code>3721AAD9B4667109C855AF0D04D41A5C</code> <code>C8D6131ABD7511B3E04010532DFE8D42</code> <code>B8085B7BD8180EED3DD134B5B018B81D</code> <code>AF086495210524EB8F6615077FA71C9A</code> <code>8EB2110757548347DEB2277CB464328E</code> <code>2A982D5FCEB5155587910485282CE770</code><br> <code>84D56D3B</code></td>
|
||||
<td><code>FEFF0000C8A0AF3369F5194F3F4A6A37</code> <code>FF8B2EF8B88F9F5B0813F2B516004686</code> <code>2395A604230EFA17A69A6FEE669C005E</code> <code>7D19E84DAA0DE3302B7512C61413EA91</code> <code>24F9C36B93FB2A8C8EF1973A1773169A</code> <code>B5AB7DF272678A66448AF4B832682448</code> <code>3E6A54348E993B9F412DE09DA82E67DE</code> <code>A7484A1E9B90A7D423DBD00313155B1D</code> <code>CAE1D5B5DBD80E47716C6AB9751BD8FF</code> <code>447C1130E2EE32FCF86B28C0D5F0C233</code> <code>4E4F2903B931334A384B3E327CB8C595</code> <code>F2641E88D85C387B504F3B1998D16557</code> <code>6522D2C780ADD95684580847A611B416</code> <code>0760A2D3D6CB956633A82335C76C8C69</code> <code>6876D885B1D99D3B99AB8C6DC03F9C1E</code> <code>B531E8F53B628B8FA5A778FDE7EE9277</code><br> <code>9001B100</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 = BA0D89B5A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883
|
|||
<!-- 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 = 54B64366A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883C0000000000000000FE00010065F6C6F42E720D4A1EE898D1195C970DA2ADEB0460D361AE413E7AFF5109CAD730C3216D0067078A740B704D66AD80FA0869B86A50AE4D2C9D1050EA2CFBA8EBDB88403B70049ED0EB1F54D550A4A8FC877A0A682EBF7F62BB3230041131FFAFDE91E5CBE1F22EBE141332E20D5658C7BFDBC3DEAC5875637BED83FE7C2C800DF6FC87D89149F33150FCD96338DBE8E98DFF4D9FA5E6EE718CFE76CE3721AAD9B4667109C855AF0D04D41A5CC8D6131ABD7511B3E04010532DFE8D42B8085B7BD8180EED3DD134B5B018B81DAF086495210524EB8F6615077FA71C9A8EB2110757548347DEB2277CB464328E2A982D5FCEB5155587910485282CE77084D56D3B
|
||||
padding = 20089454DE689556049E0E6C
|
||||
tmp_aes_key = CB7D6D9817AD90C5CA0D0C9DE2B6A96777A9DDC44B7D75E8FB68509CF0D6C892
|
||||
tmp_aes_iv = E0FADC1731AFFFB59DC98A1B7A8B390C5BDDF383365551EFE75FB469974FF744</code></pre>
|
||||
<pre><code>data = 54B64366D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F470000000000000000FEFF0000C8A0AF3369F5194F3F4A6A37FF8B2EF8B88F9F5B0813F2B5160046862395A604230EFA17A69A6FEE669C005E7D19E84DAA0DE3302B7512C61413EA9124F9C36B93FB2A8C8EF1973A1773169AB5AB7DF272678A66448AF4B8326824483E6A54348E993B9F412DE09DA82E67DEA7484A1E9B90A7D423DBD00313155B1DCAE1D5B5DBD80E47716C6AB9751BD8FF447C1130E2EE32FCF86B28C0D5F0C2334E4F2903B931334A384B3E327CB8C595F2641E88D85C387B504F3B1998D165576522D2C780ADD95684580847A611B4160760A2D3D6CB956633A82335C76C8C696876D885B1D99D3B99AB8C6DC03F9C1EB531E8F53B628B8FA5A778FDE7EE92779001B100
|
||||
padding = 8C8E6724036934BE02708A38
|
||||
tmp_aes_key = 7485114AC6140821FF57D30B90473FED4F905B663D46526B50D36FF6A90DBA26
|
||||
tmp_aes_iv = 5E472BBF1F2782B792E0EB7E26E3BCEF79A02E6CF37F0F6DFFBB2899CD731826</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 = 23A72F1531023903698D2F7F28D09832154B6EECBA016FF7A223B00CA85B4CB68A0C2A0085D4A909E00F5933443E3FA2B4783151392C5733B640594C4CE541F26850B4499DE1F0E35406A2CEE3E23D7C3C26C19AB41E589CCCEC618FD53DBCA65D8479FA43D0521173AACE311B6A1D0BF0BF4209B60C1C04F45BA4FC58AF15D779B00B6B3136B5158D04CAAA34633524EC69827623DC62DD417F422CC858A370963DDE17CA5EFAAA07D2ECDFD3D786D2DC3AA4EEC74C30B4663131A30B09AA4AFD44D36ECD397ED1EDD99C8F02725047B5821C87F4CEA539A970C6AEDB7A2AE8B18C0D22AF538466F0C8224256DEE4CBACE4ED1EE78758E03275DE34AA47D4EAB9FF253F3FAEA05DB754A4C4F1D0EA8141D3B599DE5DA06858889FE00625F5F0C95B70E2F72CF024987B49C9BCC958CBEE3010F70AF6E914D7FDF84706C60FEAA6DBA643153792712D0E5305C94AF5C6</code></pre>
|
||||
<pre><code>encrypted_data = 9619702B57EF02FA81BFAA7E4F074F4072B9CD65E7184B84FE66CAC6CFF515AE749C651B60D8B383F5EA77BE79B023B52A52C4CD7F8AD36210137A10D2EBEEA539BE86FEB428A0FEA8012FDCD84FFA968716C609F2B96AC6729E4EBD07037F6D81A151C9361E03AB1E54CE8B53F32C2A27F2744A1BED378B5A341F5F9764244C5937AC6C22876C46E9178DFE5A3220AEB586782C43120B0A87CAEABEE6C70DBDED469EA2937A9574429F7B1095BB7A6C74C7EADD2DE406178193A2DBE2F48CAD343BD5D4843BC4CD4503C23C477A489B0D4771AF5B9194A4F02FEF4891A40D1F0EF44E4A7A1E7630AF2712D85B7F50735DC39D89E7A84E258C6BF5BAAF4535835508C7399A3D6EC1FFBE64A82F6AE2EA001C23EAA815A9B2E8611359506623AB89C3636AD657082D20B1A37408E9E91A91DF0413779EB70348650E4A0DB32427133F4656D1741687E92F0A1BE4075C79</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 C8 1F 0D 00 0A 4F 87 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 A1 D0 50 58 4C B7 93 A7
|
||||
0020 | 9A 25 1D C4 34 D9 E6 C6 69 FF A0 EA 0B C5 AC 08
|
||||
0030 | F3 47 27 D8 7F 16 88 3C FE 50 01 00 23 A7 2F 15
|
||||
0040 | 31 02 39 03 69 8D 2F 7F 28 D0 98 32 15 4B 6E EC
|
||||
0050 | BA 01 6F F7 A2 23 B0 0C A8 5B 4C B6 8A 0C 2A 00
|
||||
0060 | 85 D4 A9 09 E0 0F 59 33 44 3E 3F A2 B4 78 31 51
|
||||
0070 | 39 2C 57 33 B6 40 59 4C 4C E5 41 F2 68 50 B4 49
|
||||
0080 | 9D E1 F0 E3 54 06 A2 CE E3 E2 3D 7C 3C 26 C1 9A
|
||||
0090 | B4 1E 58 9C CC EC 61 8F D5 3D BC A6 5D 84 79 FA
|
||||
00A0 | 43 D0 52 11 73 AA CE 31 1B 6A 1D 0B F0 BF 42 09
|
||||
00B0 | B6 0C 1C 04 F4 5B A4 FC 58 AF 15 D7 79 B0 0B 6B
|
||||
00C0 | 31 36 B5 15 8D 04 CA AA 34 63 35 24 EC 69 82 76
|
||||
00D0 | 23 DC 62 DD 41 7F 42 2C C8 58 A3 70 96 3D DE 17
|
||||
00E0 | CA 5E FA AA 07 D2 EC DF D3 D7 86 D2 DC 3A A4 EE
|
||||
00F0 | C7 4C 30 B4 66 31 31 A3 0B 09 AA 4A FD 44 D3 6E
|
||||
0100 | CD 39 7E D1 ED D9 9C 8F 02 72 50 47 B5 82 1C 87
|
||||
0110 | F4 CE A5 39 A9 70 C6 AE DB 7A 2A E8 B1 8C 0D 22
|
||||
0120 | AF 53 84 66 F0 C8 22 42 56 DE E4 CB AC E4 ED 1E
|
||||
0130 | E7 87 58 E0 32 75 DE 34 AA 47 D4 EA B9 FF 25 3F
|
||||
0140 | 3F AE A0 5D B7 54 A4 C4 F1 D0 EA 81 41 D3 B5 99
|
||||
0150 | DE 5D A0 68 58 88 9F E0 06 25 F5 F0 C9 5B 70 E2
|
||||
0160 | F7 2C F0 24 98 7B 49 C9 BC C9 58 CB EE 30 10 F7
|
||||
0170 | 0A F6 E9 14 D7 FD F8 47 06 C6 0F EA A6 DB A6 43
|
||||
0180 | 15 37 92 71 2D 0E 53 05 C9 4A F5 C6</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 C4 49 0D 00 69 25 88 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D
|
||||
0030 | 53 37 4C DB 6D C7 9F 47 FE 50 01 00 96 19 70 2B
|
||||
0040 | 57 EF 02 FA 81 BF AA 7E 4F 07 4F 40 72 B9 CD 65
|
||||
0050 | E7 18 4B 84 FE 66 CA C6 CF F5 15 AE 74 9C 65 1B
|
||||
0060 | 60 D8 B3 83 F5 EA 77 BE 79 B0 23 B5 2A 52 C4 CD
|
||||
0070 | 7F 8A D3 62 10 13 7A 10 D2 EB EE A5 39 BE 86 FE
|
||||
0080 | B4 28 A0 FE A8 01 2F DC D8 4F FA 96 87 16 C6 09
|
||||
0090 | F2 B9 6A C6 72 9E 4E BD 07 03 7F 6D 81 A1 51 C9
|
||||
00A0 | 36 1E 03 AB 1E 54 CE 8B 53 F3 2C 2A 27 F2 74 4A
|
||||
00B0 | 1B ED 37 8B 5A 34 1F 5F 97 64 24 4C 59 37 AC 6C
|
||||
00C0 | 22 87 6C 46 E9 17 8D FE 5A 32 20 AE B5 86 78 2C
|
||||
00D0 | 43 12 0B 0A 87 CA EA BE E6 C7 0D BD ED 46 9E A2
|
||||
00E0 | 93 7A 95 74 42 9F 7B 10 95 BB 7A 6C 74 C7 EA DD
|
||||
00F0 | 2D E4 06 17 81 93 A2 DB E2 F4 8C AD 34 3B D5 D4
|
||||
0100 | 84 3B C4 CD 45 03 C2 3C 47 7A 48 9B 0D 47 71 AF
|
||||
0110 | 5B 91 94 A4 F0 2F EF 48 91 A4 0D 1F 0E F4 4E 4A
|
||||
0120 | 7A 1E 76 30 AF 27 12 D8 5B 7F 50 73 5D C3 9D 89
|
||||
0130 | E7 A8 4E 25 8C 6B F5 BA AF 45 35 83 55 08 C7 39
|
||||
0140 | 9A 3D 6E C1 FF BE 64 A8 2F 6A E2 EA 00 1C 23 EA
|
||||
0150 | A8 15 A9 B2 E8 61 13 59 50 66 23 AB 89 C3 63 6A
|
||||
0160 | D6 57 08 2D 20 B1 A3 74 08 E9 E9 1A 91 DF 04 13
|
||||
0170 | 77 9E B7 03 48 65 0E 4A 0D B3 24 27 13 3F 46 56
|
||||
0180 | D1 74 16 87 E9 2F 0A 1B E4 07 5C 79</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>C81F0D000A4F8765</code></td>
|
||||
<td><code>C4490D0069258865</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>A1D050584CB793A79A251DC434D9E6C6</code></td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>69FFA0EA0BC5AC08F34727D87F16883C</code></td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE50010023A72F1531023903698D2F7F</code> <code>28D09832154B6EECBA016FF7A223B00C</code> <code>A85B4CB68A0C2A0085D4A909E00F5933</code> <code>443E3FA2B4783151392C5733B640594C</code> <code>4CE541F26850B4499DE1F0E35406A2CE</code> <code>E3E23D7C3C26C19AB41E589CCCEC618F</code> <code>D53DBCA65D8479FA43D0521173AACE31</code> <code>1B6A1D0BF0BF4209B60C1C04F45BA4FC</code> <code>58AF15D779B00B6B3136B5158D04CAAA</code> <code>34633524EC69827623DC62DD417F422C</code> <code>C858A370963DDE17CA5EFAAA07D2ECDF</code> <code>D3D786D2DC3AA4EEC74C30B4663131A3</code> <code>0B09AA4AFD44D36ECD397ED1EDD99C8F</code> <code>02725047B5821C87F4CEA539A970C6AE</code> <code>DB7A2AE8B18C0D22AF538466F0C82242</code> <code>56DEE4CBACE4ED1EE78758E03275DE34</code> <code>AA47D4EAB9FF253F3FAEA05DB754A4C4</code> <code>F1D0EA8141D3B599DE5DA06858889FE0</code> <code>0625F5F0C95B70E2F72CF024987B49C9</code> <code>BCC958CBEE3010F70AF6E914D7FDF847</code> <code>06C60FEAA6DBA643153792712D0E5305</code><br> <code>C94AF5C6</code></td>
|
||||
<td><code>FE5001009619702B57EF02FA81BFAA7E</code> <code>4F074F4072B9CD65E7184B84FE66CAC6</code> <code>CFF515AE749C651B60D8B383F5EA77BE</code> <code>79B023B52A52C4CD7F8AD36210137A10</code> <code>D2EBEEA539BE86FEB428A0FEA8012FDC</code> <code>D84FFA968716C609F2B96AC6729E4EBD</code> <code>07037F6D81A151C9361E03AB1E54CE8B</code> <code>53F32C2A27F2744A1BED378B5A341F5F</code> <code>9764244C5937AC6C22876C46E9178DFE</code> <code>5A3220AEB586782C43120B0A87CAEABE</code> <code>E6C70DBDED469EA2937A9574429F7B10</code> <code>95BB7A6C74C7EADD2DE406178193A2DB</code> <code>E2F48CAD343BD5D4843BC4CD4503C23C</code> <code>477A489B0D4771AF5B9194A4F02FEF48</code> <code>91A40D1F0EF44E4A7A1E7630AF2712D8</code> <code>5B7F50735DC39D89E7A84E258C6BF5BA</code> <code>AF4535835508C7399A3D6EC1FFBE64A8</code> <code>2F6AE2EA001C23EAA815A9B2E8611359</code> <code>506623AB89C3636AD657082D20B1A374</code> <code>08E9E91A91DF0413779EB70348650E4A</code> <code>0DB32427133F4656D1741687E92F0A1B</code><br> <code>E4075C79</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 = 621E2237406242E39078280AC35DB0AD5A959E560511A96DB02B62103F55AA27B967D7249C0A5F7AB666CD010A57E5D997A495E9824D706FE54173DFDA3A3B41C05E39134F97E7E042DFFCC2161D3DC54DC37857C85DFF33C437D00B9BC995599DEF9827B18FFB5DDB42B905C86E0EAD2F4767B174456B36A42AB581BCDC11E4AEF282A8B8FF04374C07A0A1694B7738A703E4D085030432EDC5E5EAF6BA060FE17AC628049671CF2E555272D5BBB863F2B2355110C8071C746AB4465F10A8BA9BB105DF755AF82B47F991B8EAC10146638623534A05FDDF100B2653A25F8B89594D2575699A6091A0201C2C54CDEEB7481EB8B355B9A9811B31BE2DE24C98B7</code></pre>
|
||||
<pre><code>auth_key = 3F1407958B54C897F4A8B876EBEC04FCCDCAEAE844BD64AC0146A4E75BD9959F39ECBFDFC1FFFD54F1811917956C9388CBA9439C15038CDCE70A35DD95751C43900CD0FC79DE65FD89BABF8BF1E0C3D4099E7679BB2675B6352C5B9CDD02A1F4CB43E09EE40A28261F6A285585E8FF355B57AD2D34E404573C7B4CA68B259DFDDC224E8809B91D4BF21F41B90FE5762BD326771E0B5E2947C79F6642A6DAEC7BC17690C5720F3C158426F023D0920C239E616E27C7B29574A2567DEEBC0A29F1C9360A2D3BD948E13213F21034E47666B271302A1EF116D5A2EE264C7CC6933E24BC509A284A406E358E4E9ED1F66559D47FF3E1C339DCA9CDC7A6F8D774AB21</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 10 34 FE 0A 4F 87 65
|
||||
0010 | 94 00 00 00 34 F7 CB 3B A1 D0 50 58 4C B7 93 A7
|
||||
0020 | 9A 25 1D C4 34 D9 E6 C6 69 FF A0 EA 0B C5 AC 08
|
||||
0030 | F3 47 27 D8 7F 16 88 3C B8 12 43 C5 4D B8 F0 71
|
||||
0040 | 95 87 E0 B9 73 A2 11 4D</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 CC 9B D0 69 25 88 65
|
||||
0010 | 68 00 00 00 34 F7 CB 3B D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D
|
||||
0030 | 53 37 4C DB 6D C7 9F 47 8A 9B 84 08 DF 87 E2 BE
|
||||
0040 | F6 0E 57 06 6B E3 08 57</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>011034FE0A4F8765</code></td>
|
||||
<td><code>01CC9BD069258865</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>94000000</code> (148 in decimal)</td>
|
||||
<td><code>68000000</code> (104 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>A1D050584CB793A79A251DC434D9E6C6</code></td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>69FFA0EA0BC5AC08F34727D87F16883C</code></td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>B81243C54DB8F0719587E0B973A2114D</code></td>
|
||||
<td><code>8A9B8408DF87E2BEF60E57066BE30857</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>
|
||||
|
|
|
@ -2218,12 +2218,6 @@ a.pr-account-button-wrap:focus {
|
|||
.field-readonly .pr-form-control-wrap:after {
|
||||
display: none;
|
||||
}
|
||||
.pr-form-control-wrap.has-locked .input,
|
||||
.pr-form-control-wrap.has-locked input.form-control,
|
||||
.pr-form-control-wrap.has-locked .select {
|
||||
padding-right: 40px;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.pr-form-control-wrap.has-photo .pr-form-control,
|
||||
.pr-form-control-wrap.has-progress.field-loading .pr-form-control {
|
||||
padding-right: 48px;
|
||||
|
|
Loading…
Add table
Reference in a new issue