mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-03-14 04:51:42 +01:00
Update content of files
This commit is contained in:
parent
53c626d6db
commit
c5b44af9ca
8 changed files with 223 additions and 219 deletions
|
@ -69,12 +69,12 @@
|
|||
<tr>
|
||||
<td><strong>prev_value</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
<td>Old <a href="/api/custom-emoji">custom emoji ID</a> (or 0 if none)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>new_value</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td> </td>
|
||||
<td>New <a href="/api/custom-emoji">custom emoji ID</a> (or 0 if none)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -69,12 +69,12 @@
|
|||
<tr>
|
||||
<td><strong>prev_value</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
<td>The old <a href="/api/colors">color palette ID</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>new_value</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
<td>The old <a href="/api/colors">color palette ID</a>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -139,7 +139,7 @@
|
|||
<tr>
|
||||
<td><strong>color</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
<td><a href="/api/colors">Profile color palette ID</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -149,7 +149,9 @@
|
|||
<h4><a class="anchor" href="#channels-supergroups-gigagroups-and-basic-groups" id="channels-supergroups-gigagroups-and-basic-groups" name="channels-supergroups-gigagroups-and-basic-groups"><i class="anchor-icon"></i></a><a href="/api/channel">Channels, supergroups, gigagroups and basic groups</a></h4>
|
||||
<p>How to handle channels, supergroups, gigagroups, basic groups, and what's the difference between them.</p>
|
||||
<h4><a class="anchor" href="#invites" id="invites" name="invites"><i class="anchor-icon"></i></a><a href="/api/invites">Invites</a></h4>
|
||||
<p>Chats and channels may have a public username or a private invite link: private invite links may be further enhanced with per-user join requests.</p></div>
|
||||
<p>Chats and channels may have a public username or a private invite link: private invite links may be further enhanced with per-user join requests.</p>
|
||||
<h4><a class="anchor" href="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>
|
||||
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
<tr>
|
||||
<td><strong>reply_to</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/InputReplyTo">InputReplyTo</a></td>
|
||||
<td> </td>
|
||||
<td>If set, indicates that the message should be sent in reply to the specified message or story.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>message</strong></td>
|
||||
|
@ -99,7 +99,7 @@
|
|||
<tr>
|
||||
<td><strong>media</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/InputMedia">InputMedia</a></td>
|
||||
<td> </td>
|
||||
<td>Media.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>date</strong></td>
|
||||
|
|
|
@ -109,7 +109,7 @@
|
|||
<tr>
|
||||
<td><strong>reply_markup</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/ReplyMarkup">ReplyMarkup</a></td>
|
||||
<td> </td>
|
||||
<td>Inline keyboard</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
<tr>
|
||||
<td><strong>reply_to_peer_id</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/InputPeer">InputPeer</a></td>
|
||||
<td> </td>
|
||||
<td>Used to reply to messages sent to another chat (specified here), can only be used for non-<code>protected</code> chats and messages.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>quote_text</strong></td>
|
||||
|
|
|
@ -264,12 +264,12 @@
|
|||
<tr>
|
||||
<td><strong>color</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.8?<a href="/type/PeerColor">PeerColor</a></td>
|
||||
<td> </td>
|
||||
<td>The user's <a href="/api/colors">accent color</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>profile_color</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.9?<a href="/type/PeerColor">PeerColor</a></td>
|
||||
<td> </td>
|
||||
<td>The user's <a href="/api/colors">profile color</a>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -287,7 +287,9 @@
|
|||
<h4><a class="anchor" href="#userfull" id="userfull" name="userfull"><i class="anchor-icon"></i></a><a href="/constructor/userFull">userFull</a></h4>
|
||||
<p>Extended user info</p>
|
||||
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>
|
||||
<p>Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.</p></div>
|
||||
<p>Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.</p>
|
||||
<h4><a class="anchor" href="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>
|
||||
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -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 28 3B 0B 00 BC BA 84 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 83 C5 30 2F 81 B4 9C 5C
|
||||
0020 | 1B F6 42 02 C4 F1 D4 68</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 9C E3 02 00 AC BD 84 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE BF 56 08 04 20 B3 5B 3F
|
||||
0020 | 3D 97 25 B6 70 95 90 F7</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>283B0B00BCBA8465</code></td>
|
||||
<td><code>9CE30200ACBD8465</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>83C5302F81B49C5C1BF64202C4F1D468</code></td>
|
||||
<td><code>BF56080420B35B3F3D9725B6709590F7</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 20 B7 39 BC BA 84 65
|
||||
0010 | BC 00 00 00 63 24 16 05 83 C5 30 2F 81 B4 9C 5C
|
||||
0020 | 1B F6 42 02 C4 F1 D4 68 F4 10 7D 72 19 F1 3C 87
|
||||
0030 | DE 91 9E B4 86 FF AF D6 08 1D 9A F4 1B 4F 4A 7A
|
||||
0040 | 4D 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 7C 3E A0 AC BD 84 65
|
||||
0010 | 70 00 00 00 63 24 16 05 BF 56 08 04 20 B3 5B 3F
|
||||
0020 | 3D 97 25 B6 70 95 90 F7 77 36 80 DE F0 DB 45 3E
|
||||
0030 | 61 12 32 60 A9 D0 1B 7F 08 1B 41 34 6D B9 F1 F6
|
||||
0040 | 85 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>0120B739BCBA8465</code></td>
|
||||
<td><code>017C3EA0ACBD8465</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>BC000000</code> (188 in decimal)</td>
|
||||
<td><code>70000000</code> (112 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>83C5302F81B49C5C1BF64202C4F1D468</code></td>
|
||||
<td><code>BF56080420B35B3F3D9725B6709590F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>F4107D7219F13C87DE919EB486FFAFD6</code></td>
|
||||
<td><code>773680DEF0DB453E61123260A9D01B7F</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>081D9AF41B4F4A7A4D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2133285771644926541</td>
|
||||
<td><code>081B41346DB9F1F685000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1963908558385968773</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 = 2133285771644926541</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2133285771644926541 = 1203150929 * 1773082429</code></p>
|
||||
<pre><code>p = 1203150929
|
||||
q = 1773082429</code></pre>
|
||||
<pre><code>pq = 1963908558385968773</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1963908558385968773 = 1220852309 * 1608637297</code></p>
|
||||
<pre><code>p = 1220852309
|
||||
q = 1608637297</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 9A F4 1B 4F 4A 7A 4D 00 00 00
|
||||
0010 | 04 47 B6 A0 51 00 00 00 04 69 AF 17 3D 00 00 00
|
||||
0020 | 83 C5 30 2F 81 B4 9C 5C 1B F6 42 02 C4 F1 D4 68
|
||||
0030 | F4 10 7D 72 19 F1 3C 87 DE 91 9E B4 86 FF AF D6
|
||||
0040 | 30 17 A2 D4 F7 73 BF 15 07 10 68 E9 EB 52 0E 76
|
||||
0050 | 39 FC E1 B4 0E EC C7 CD 56 31 C2 AD 51 FF EF 42
|
||||
<pre><code>0000 | 95 5F F5 A9 08 1B 41 34 6D B9 F1 F6 85 00 00 00
|
||||
0010 | 04 48 C4 BA 55 00 00 00 04 5F E1 DB 71 00 00 00
|
||||
0020 | BF 56 08 04 20 B3 5B 3F 3D 97 25 B6 70 95 90 F7
|
||||
0030 | 77 36 80 DE F0 DB 45 3E 61 12 32 60 A9 D0 1B 7F
|
||||
0040 | 91 45 04 53 43 1A 61 02 1A 8F F9 79 16 4E A9 54
|
||||
0050 | 7B D5 FC 41 71 21 3F 6D B4 5D C0 7E DB 5D B4 17
|
||||
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 = 1773082429</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>081D9AF41B4F4A7A4D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2133285771644926541</td>
|
||||
<td><code>081B41346DB9F1F685000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1963908558385968773</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>0447B6A051000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1203150929</td>
|
||||
<td><code>0448C4BA55000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1220852309</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>0469AF173D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1773082429</td>
|
||||
<td><code>045FE1DB71000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1608637297</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>83C5302F81B49C5C1BF64202C4F1D468</code></td>
|
||||
<td><code>BF56080420B35B3F3D9725B6709590F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>F4107D7219F13C87DE919EB486FFAFD6</code></td>
|
||||
<td><code>773680DEF0DB453E61123260A9D01B7F</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>3017A2D4F773BF15071068E9EB520E76</code> <code>39FCE1B40EECC7CD5631C2AD51FFEF42</code></td>
|
||||
<td><code>91450453431A61021A8FF979164EA954</code> <code>7BD5FC4171213F6DB45DC07EDB5DB417</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1773082429</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 = 955FF5A9081D9AF41B4F4A7A4D0000000447B6A0510000000469AF173D00000083C5302F81B49C5C1BF64202C4F1D468F4107D7219F13C87DE919EB486FFAFD63017A2D4F773BF15071068E9EB520E7639FCE1B40EECC7CD5631C2AD51FFEF4202000000
|
||||
random_padding_bytes = 56AEFD5BC54E0F89544670D99A3F8E733CA1FE69E034A3E46E97C3B3C763810D87F1A5BE3D38E4FBCF7F2A5F70D428EDA4207683C89F74CBC5CF33E82171698EAA82FE85EB7FF19EBCC94F56FDE92EC7BF7BAF6A5FAD6F3CBB5253F5</code></pre>
|
||||
<pre><code>data = 955FF5A9081B41346DB9F1F6850000000448C4BA55000000045FE1DB71000000BF56080420B35B3F3D9725B6709590F7773680DEF0DB453E61123260A9D01B7F91450453431A61021A8FF979164EA9547BD5FC4171213F6DB45DC07EDB5DB41702000000
|
||||
random_padding_bytes = 86F1FDDB11130E52B582CC34A595023A989F9B1A847B8038D8B21D1B7C36A77650C23EB223FEA2E2202EBBE4DC70827E185B69A3C2225AF96C23DA5AA76C4B34480162BE0BD0794D59553B31E8378C8EC1D27BF70B1F68E7B86103E8</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 = 913B8C117ED97F687CB763B32B17EDF2CFD8EDA418631B2D41F115602697C3BCAD72654C020A7B6974645120E35065BC41FCE8F39AE5CD8C5EF91A55BA69DDE20E21502625DC83042A4D36D02E4DA726427E46A8E64217DFB311E71028AEB0B9AF693FE08243131475A5CCE07809A63B1B55A09A4079DD6FE4364F97B7395F6E5EDFBFEB2A5C4145DD6165727840D5846586DDB085495EF97446B0161F0226281B7B520F0F54834CFBBEBE46DFE7DA25C6400ED4F66F014B2623EB6626C8E243774C74AC93A423D189D3990E244D02B2EB10323C54B7451B807D83E2D3FBA2A4DAFA4F5A88BE70E155E74DB368E36054C84BA00C62B0CF5920BE3BACA73D08E7</code></pre>
|
||||
<pre><code>encrypted_data = 8C91FDCEDDFF18DA3EBBC8C92798482C376076D6E9C27E06D29E93974FF5FA6AC9F5B81087C0721E8507B0CAAC1F117B1CA2DE657B7846F659BA1B01FCF6D48E196AE3E8BE6A1263953BA26D02183A3B9FCCB39DC6794A0B99872B24D6EDCBEF97F39533D93399DA4F53798DED47B4E6C4634B82D4F0C75BB0E1657632AEADBF5663B342BD5D70F364C320BFE29089EE2879292A276A8158280003ADD4F7FE275B562E194ACBA350AB1A346F58364C57D20F2E72819D12305CB2B4DBEF3EFF3DFFF8292185F82C5BAC77C6CB6305E1D260F2444C7620A354EDC0FD4A8F8AAF056EDB41A2F39F31A5539F1F23BBC60D2FCC572C4725FCC6C0306DFD0FD000CA3B</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 2C 3B 0B 00 BC BA 84 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 83 C5 30 2F 81 B4 9C 5C
|
||||
0020 | 1B F6 42 02 C4 F1 D4 68 F4 10 7D 72 19 F1 3C 87
|
||||
0030 | DE 91 9E B4 86 FF AF D6 04 47 B6 A0 51 00 00 00
|
||||
0040 | 04 69 AF 17 3D 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 91 3B 8C 11 7E D9 7F 68 7C B7 63 B3
|
||||
0060 | 2B 17 ED F2 CF D8 ED A4 18 63 1B 2D 41 F1 15 60
|
||||
0070 | 26 97 C3 BC AD 72 65 4C 02 0A 7B 69 74 64 51 20
|
||||
0080 | E3 50 65 BC 41 FC E8 F3 9A E5 CD 8C 5E F9 1A 55
|
||||
0090 | BA 69 DD E2 0E 21 50 26 25 DC 83 04 2A 4D 36 D0
|
||||
00A0 | 2E 4D A7 26 42 7E 46 A8 E6 42 17 DF B3 11 E7 10
|
||||
00B0 | 28 AE B0 B9 AF 69 3F E0 82 43 13 14 75 A5 CC E0
|
||||
00C0 | 78 09 A6 3B 1B 55 A0 9A 40 79 DD 6F E4 36 4F 97
|
||||
00D0 | B7 39 5F 6E 5E DF BF EB 2A 5C 41 45 DD 61 65 72
|
||||
00E0 | 78 40 D5 84 65 86 DD B0 85 49 5E F9 74 46 B0 16
|
||||
00F0 | 1F 02 26 28 1B 7B 52 0F 0F 54 83 4C FB BE BE 46
|
||||
0100 | DF E7 DA 25 C6 40 0E D4 F6 6F 01 4B 26 23 EB 66
|
||||
0110 | 26 C8 E2 43 77 4C 74 AC 93 A4 23 D1 89 D3 99 0E
|
||||
0120 | 24 4D 02 B2 EB 10 32 3C 54 B7 45 1B 80 7D 83 E2
|
||||
0130 | D3 FB A2 A4 DA FA 4F 5A 88 BE 70 E1 55 E7 4D B3
|
||||
0140 | 68 E3 60 54 C8 4B A0 0C 62 B0 CF 59 20 BE 3B AC
|
||||
0150 | A7 3D 08 E7</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 BC 0F 0D 00 AC BD 84 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 BF 56 08 04 20 B3 5B 3F
|
||||
0020 | 3D 97 25 B6 70 95 90 F7 77 36 80 DE F0 DB 45 3E
|
||||
0030 | 61 12 32 60 A9 D0 1B 7F 04 48 C4 BA 55 00 00 00
|
||||
0040 | 04 5F E1 DB 71 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 8C 91 FD CE DD FF 18 DA 3E BB C8 C9
|
||||
0060 | 27 98 48 2C 37 60 76 D6 E9 C2 7E 06 D2 9E 93 97
|
||||
0070 | 4F F5 FA 6A C9 F5 B8 10 87 C0 72 1E 85 07 B0 CA
|
||||
0080 | AC 1F 11 7B 1C A2 DE 65 7B 78 46 F6 59 BA 1B 01
|
||||
0090 | FC F6 D4 8E 19 6A E3 E8 BE 6A 12 63 95 3B A2 6D
|
||||
00A0 | 02 18 3A 3B 9F CC B3 9D C6 79 4A 0B 99 87 2B 24
|
||||
00B0 | D6 ED CB EF 97 F3 95 33 D9 33 99 DA 4F 53 79 8D
|
||||
00C0 | ED 47 B4 E6 C4 63 4B 82 D4 F0 C7 5B B0 E1 65 76
|
||||
00D0 | 32 AE AD BF 56 63 B3 42 BD 5D 70 F3 64 C3 20 BF
|
||||
00E0 | E2 90 89 EE 28 79 29 2A 27 6A 81 58 28 00 03 AD
|
||||
00F0 | D4 F7 FE 27 5B 56 2E 19 4A CB A3 50 AB 1A 34 6F
|
||||
0100 | 58 36 4C 57 D2 0F 2E 72 81 9D 12 30 5C B2 B4 DB
|
||||
0110 | EF 3E FF 3D FF F8 29 21 85 F8 2C 5B AC 77 C6 CB
|
||||
0120 | 63 05 E1 D2 60 F2 44 4C 76 20 A3 54 ED C0 FD 4A
|
||||
0130 | 8F 8A AF 05 6E DB 41 A2 F3 9F 31 A5 53 9F 1F 23
|
||||
0140 | BB C6 0D 2F CC 57 2C 47 25 FC C6 C0 30 6D FD 0F
|
||||
0150 | D0 00 CA 3B</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 = 56AEFD5BC54E0F89544670D99A3F8E733CA1FE69E034A3E46E97C3B3C
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>2C3B0B00BCBA8465</code></td>
|
||||
<td><code>BC0F0D00ACBD8465</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 = 56AEFD5BC54E0F89544670D99A3F8E733CA1FE69E034A3E46E97C3B3C
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>83C5302F81B49C5C1BF64202C4F1D468</code></td>
|
||||
<td><code>BF56080420B35B3F3D9725B6709590F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>F4107D7219F13C87DE919EB486FFAFD6</code></td>
|
||||
<td><code>773680DEF0DB453E61123260A9D01B7F</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>0447B6A051000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1203150929</td>
|
||||
<td><code>0448C4BA55000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1220852309</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>0469AF173D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1773082429</td>
|
||||
<td><code>045FE1DB71000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1608637297</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 = 56AEFD5BC54E0F89544670D99A3F8E733CA1FE69E034A3E46E97C3B3C
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE000100913B8C117ED97F687CB763B3</code> <code>2B17EDF2CFD8EDA418631B2D41F11560</code> <code>2697C3BCAD72654C020A7B6974645120</code> <code>E35065BC41FCE8F39AE5CD8C5EF91A55</code> <code>BA69DDE20E21502625DC83042A4D36D0</code> <code>2E4DA726427E46A8E64217DFB311E710</code> <code>28AEB0B9AF693FE08243131475A5CCE0</code> <code>7809A63B1B55A09A4079DD6FE4364F97</code> <code>B7395F6E5EDFBFEB2A5C4145DD616572</code> <code>7840D5846586DDB085495EF97446B016</code> <code>1F0226281B7B520F0F54834CFBBEBE46</code> <code>DFE7DA25C6400ED4F66F014B2623EB66</code> <code>26C8E243774C74AC93A423D189D3990E</code> <code>244D02B2EB10323C54B7451B807D83E2</code> <code>D3FBA2A4DAFA4F5A88BE70E155E74DB3</code> <code>68E36054C84BA00C62B0CF5920BE3BAC</code><br> <code>A73D08E7</code></td>
|
||||
<td><code>FE0001008C91FDCEDDFF18DA3EBBC8C9</code> <code>2798482C376076D6E9C27E06D29E9397</code> <code>4FF5FA6AC9F5B81087C0721E8507B0CA</code> <code>AC1F117B1CA2DE657B7846F659BA1B01</code> <code>FCF6D48E196AE3E8BE6A1263953BA26D</code> <code>02183A3B9FCCB39DC6794A0B99872B24</code> <code>D6EDCBEF97F39533D93399DA4F53798D</code> <code>ED47B4E6C4634B82D4F0C75BB0E16576</code> <code>32AEADBF5663B342BD5D70F364C320BF</code> <code>E29089EE2879292A276A8158280003AD</code> <code>D4F7FE275B562E194ACBA350AB1A346F</code> <code>58364C57D20F2E72819D12305CB2B4DB</code> <code>EF3EFF3DFFF8292185F82C5BAC77C6CB</code> <code>6305E1D260F2444C7620A354EDC0FD4A</code> <code>8F8AAF056EDB41A2F39F31A5539F1F23</code> <code>BBC60D2FCC572C4725FCC6C0306DFD0F</code><br> <code>D000CA3B</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = 56AEFD5BC54E0F89544670D99A3F8E733CA1FE69E034A3E46E97C3B3C
|
|||
<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 70 E4 FB BC BA 84 65
|
||||
0010 | A4 02 00 00 5C 07 E8 D0 83 C5 30 2F 81 B4 9C 5C
|
||||
0020 | 1B F6 42 02 C4 F1 D4 68 F4 10 7D 72 19 F1 3C 87
|
||||
0030 | DE 91 9E B4 86 FF AF D6 FE 50 02 00 6A CD 40 B9
|
||||
0040 | 11 56 81 65 BF 62 8C 38 DF 46 6D A3 E8 B5 3D E2
|
||||
0050 | 58 B2 0D 04 B8 B6 AB 78 29 0F AA D6 33 D7 B4 05
|
||||
0060 | 60 33 3C B4 7A 4E 95 22 43 4A EA 96 BC 1E 25 10
|
||||
0070 | BB EF EE 8A D3 91 74 17 39 A7 32 43 B0 DC D8 F6
|
||||
0080 | E3 92 28 1B 13 4E 9B D7 CB 77 B1 5E 1A 24 62 24
|
||||
0090 | A3 5F 4C C6 E8 B3 4D FD C1 C9 FC B3 0C 35 15 58
|
||||
00A0 | 57 D8 35 1A 70 8B EE 0F 4E 6B C9 E3 4E 4D 88 D6
|
||||
00B0 | 8A 47 5F 3A 9A CE EE 1D 94 6B E2 9B B7 F5 B7 4B
|
||||
00C0 | 9B D7 E2 A8 69 20 B3 CD 74 54 E9 CA 69 F5 81 F8
|
||||
00D0 | DD 82 91 CA 8B 43 2F FE E8 7F 3F 37 29 F2 50 7A
|
||||
00E0 | 43 CE 04 81 A2 4F 45 B1 73 D7 BC 00 A8 42 7B 4F
|
||||
00F0 | 72 19 1D FF 34 3E D3 91 5F 23 2C 1E 51 D1 35 4B
|
||||
0100 | 52 C4 7A 09 E1 6D F5 E6 D3 D6 98 8F DF 53 65 C3
|
||||
0110 | 29 AC D7 0B 9A DD 63 17 FC 83 A5 8A F1 FB B9 C2
|
||||
0120 | A6 08 DA FD 3C 62 40 5C A4 B4 C4 49 33 94 52 0E
|
||||
0130 | FE 53 03 D4 1E 0E CA B9 D6 10 5A 18 F8 26 EA CA
|
||||
0140 | 1F D3 ED B8 AF 09 18 77 DC 72 E6 A0 13 89 5B EE
|
||||
0150 | C0 7B 04 94 F8 47 0E 97 13 2B 40 82 8F CE C1 5E
|
||||
0160 | 21 A4 6C F2 D0 30 57 A2 F6 C5 8A B1 2E 62 3B A2
|
||||
0170 | 68 BE 05 4F 4C A6 E0 17 52 C7 41 B8 1C 02 1F 7B
|
||||
0180 | 65 56 3C 87 2A 26 84 94 E9 EC 29 E4 23 A8 73 4E
|
||||
0190 | 95 4F 70 54 F3 85 CF EB 5C D6 70 E3 FD 02 31 C5
|
||||
01A0 | BC 30 B1 B0 9E 65 3A F8 52 49 E2 9A 2C EB F2 3E
|
||||
01B0 | D5 14 5C 47 BA A7 AD 5C 0E 41 5C 3E 50 5B 16 F5
|
||||
01C0 | 72 C2 CF 60 9C 46 F2 E8 FF 3D 03 B1 7D C0 5C BC
|
||||
01D0 | B8 97 3D 95 A2 89 93 E4 3A AB 01 BE 5A C3 3F 73
|
||||
01E0 | 32 B1 A4 82 43 E5 AE 38 97 7A 29 D0 AB F5 CF B7
|
||||
01F0 | 00 C2 53 2E AF B4 7E C7 58 A1 D8 0A 24 77 79 CD
|
||||
0200 | DB E1 6E 78 6A D3 26 48 80 ED 00 A8 18 42 69 42
|
||||
0210 | 54 BB 72 B4 C2 2A 7C 9F AE C3 81 DB A1 67 C3 A1
|
||||
0220 | 75 69 70 CA 0F 98 96 3C 04 A1 A3 44 DE E2 7D 5F
|
||||
0230 | 9B CA 95 9E 8D C1 AB 07 C5 4E 4F 7E 3E 0A 79 00
|
||||
0240 | 00 E7 9B 4D 58 11 22 A3 68 75 57 FD 13 61 55 5B
|
||||
0250 | 0F F1 2B B8 C1 02 11 90 8E 8B E3 7C CC 6A 2A 12
|
||||
0260 | 4D 6C 90 5F F9 81 E3 2A 35 6F 75 58 79 01 B2 F6
|
||||
0270 | 09 3B 26 DA 3A 8C 98 E0 B9 62 F7 DB 6C 02 F0 F2
|
||||
0280 | AF EC 0F B4 9F 6B B9 EE 88 90 53 4D</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 38 DE 43 AD BD 84 65
|
||||
0010 | A8 02 00 00 5C 07 E8 D0 BF 56 08 04 20 B3 5B 3F
|
||||
0020 | 3D 97 25 B6 70 95 90 F7 77 36 80 DE F0 DB 45 3E
|
||||
0030 | 61 12 32 60 A9 D0 1B 7F FE 50 02 00 94 3B 6F 61
|
||||
0040 | 6D FA 22 0E 8F 05 F9 0F A3 3D BB D4 A6 4C 47 B2
|
||||
0050 | 87 0F 1B 40 9E 6A 7F DF 37 72 E9 DA 69 C7 14 1D
|
||||
0060 | BC 47 99 60 7C E9 05 05 88 54 A7 48 4C 40 D0 98
|
||||
0070 | 85 F8 63 FD 85 8B B4 07 5F 42 6D 1F C4 DD 43 6D
|
||||
0080 | 29 59 08 1B E7 1E C0 36 CA 1C 85 E3 4D D2 D0 3B
|
||||
0090 | A3 99 C3 BA C5 07 FD 8C 36 05 40 8B 9B B9 08 9C
|
||||
00A0 | F5 71 C5 95 A0 7C 22 10 D8 07 3D 8D 4D CC E5 B9
|
||||
00B0 | 00 B8 D9 92 09 2F 88 1C B1 48 68 D3 21 98 51 C0
|
||||
00C0 | 88 67 70 D5 9B C7 BC 53 EF 95 FF E8 49 DD 6F 8D
|
||||
00D0 | D1 52 1E 88 BE B9 3C BB C5 F4 F2 DF 55 30 66 7B
|
||||
00E0 | 8C A1 52 F4 95 42 EF 9E 87 C1 35 48 71 7D A3 15
|
||||
00F0 | B6 D8 BA 60 14 D9 7D 47 57 40 11 5C 0C 01 BA 3E
|
||||
0100 | 37 A8 B7 C8 25 1E 14 31 90 AA C4 E1 93 30 42 8D
|
||||
0110 | 53 59 8B BF E8 86 2A 6B 8E A5 AD 5C B8 4A 4A FE
|
||||
0120 | 23 FE 9B 9D 69 56 2D 6D 1B 6C C8 A5 8E 48 DC 33
|
||||
0130 | 44 96 66 82 1C 50 B4 67 95 2B A2 BB 3F 2A 1D 90
|
||||
0140 | 71 77 B0 1B A9 3E 75 FD 9E 13 DF 2A 7D 70 8A B4
|
||||
0150 | C7 C8 CF AE EB 59 52 47 7D 27 32 3F 0E 0C 3E 4F
|
||||
0160 | 3C D4 9C B5 E2 2A 72 51 E3 40 04 BA 42 B3 3A E0
|
||||
0170 | EA C9 FB CB AB D9 BD B9 B4 D1 AC 52 9D F6 2D 55
|
||||
0180 | 72 CA 1A B5 02 5B D0 62 97 70 2B 33 37 C0 64 0B
|
||||
0190 | 87 02 BD 69 DD 9A D3 34 84 1F 2B C0 7F F8 43 06
|
||||
01A0 | 81 93 DC F8 3D 69 8A F5 8B C5 9D CE C3 45 0D 79
|
||||
01B0 | 4D EF 1C D4 9E 90 3A 59 B8 60 E4 45 DD D0 A7 01
|
||||
01C0 | 40 B0 AB 5B D0 D4 8F 5B CA A9 61 D1 71 31 19 1B
|
||||
01D0 | E1 92 2C B6 E4 E9 19 64 31 E1 37 15 2F 8F 64 10
|
||||
01E0 | 7D F2 B1 7F 68 CF 70 8B 1B EA E2 66 D0 68 68 19
|
||||
01F0 | 5B 0D 89 97 3E DB 19 0F 46 C5 44 B8 EC DB 35 47
|
||||
0200 | 45 E9 42 BE 39 CC 5A 1E 19 DD 2E C1 B7 A8 2C 36
|
||||
0210 | 2F 2E 01 07 F8 76 4A F6 A4 B9 DB F2 F4 A8 74 B3
|
||||
0220 | BB CC A4 6F 7F AE B5 A9 C8 1D 53 7E 47 C5 29 8A
|
||||
0230 | 80 5E A2 0D 5F D0 53 2D 12 76 81 BC 27 D2 CF 4E
|
||||
0240 | 3E 1E 60 F2 BF BF 73 1F 5B B7 3D 79 F6 9F E4 7E
|
||||
0250 | 5C 9E 65 9F 7F 52 10 C0 57 0D 2F CB CF 99 39 D2
|
||||
0260 | 5B 75 BA 2F BE 9E 8C 49 9E AE EB 54 AB 17 E3 0E
|
||||
0270 | 66 D0 FE 26 01 DB 74 F2 70 73 B4 E3 E3 FB B3 24
|
||||
0280 | FD BC 72 5D 21 03 8F 99 FD 3A 75 95</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 = 56AEFD5BC54E0F89544670D99A3F8E733CA1FE69E034A3E46E97C3B3C
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>0170E4FBBCBA8465</code></td>
|
||||
<td><code>0138DE43ADBD8465</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>message_length</td>
|
||||
<td>16, 4</td>
|
||||
<td><code>A4020000</code> (676 in decimal)</td>
|
||||
<td><code>A8020000</code> (680 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = 56AEFD5BC54E0F89544670D99A3F8E733CA1FE69E034A3E46E97C3B3C
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>83C5302F81B49C5C1BF64202C4F1D468</code></td>
|
||||
<td><code>BF56080420B35B3F3D9725B6709590F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>F4107D7219F13C87DE919EB486FFAFD6</code></td>
|
||||
<td><code>773680DEF0DB453E61123260A9D01B7F</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE5002006ACD40B911568165BF628C38</code> <code>DF466DA3E8B53DE258B20D04B8B6AB78</code> <code>290FAAD633D7B40560333CB47A4E9522</code> <code>434AEA96BC1E2510BBEFEE8AD3917417</code> <code>39A73243B0DCD8F6E392281B134E9BD7</code> <code>CB77B15E1A246224A35F4CC6E8B34DFD</code> <code>C1C9FCB30C35155857D8351A708BEE0F</code> <code>4E6BC9E34E4D88D68A475F3A9ACEEE1D</code> <code>946BE29BB7F5B74B9BD7E2A86920B3CD</code> <code>7454E9CA69F581F8DD8291CA8B432FFE</code> <code>E87F3F3729F2507A43CE0481A24F45B1</code> <code>73D7BC00A8427B4F72191DFF343ED391</code> <code>5F232C1E51D1354B52C47A09E16DF5E6</code> <code>D3D6988FDF5365C329ACD70B9ADD6317</code> <code>FC83A58AF1FBB9C2A608DAFD3C62405C</code> <code>A4B4C4493394520EFE5303D41E0ECAB9</code> <code>D6105A18F826EACA1FD3EDB8AF091877</code> <code>DC72E6A013895BEEC07B0494F8470E97</code> <code>132B40828FCEC15E21A46CF2D03057A2</code> <code>F6C58AB12E623BA268BE054F4CA6E017</code> <code>52C741B81C021F7B65563C872A268494</code> <code>E9EC29E423A8734E954F7054F385CFEB</code> <code>5CD670E3FD0231C5BC30B1B09E653AF8</code> <code>5249E29A2CEBF23ED5145C47BAA7AD5C</code> <code>0E415C3E505B16F572C2CF609C46F2E8</code> <code>FF3D03B17DC05CBCB8973D95A28993E4</code> <code>3AAB01BE5AC33F7332B1A48243E5AE38</code> <code>977A29D0ABF5CFB700C2532EAFB47EC7</code> <code>58A1D80A247779CDDBE16E786AD32648</code> <code>80ED00A81842694254BB72B4C22A7C9F</code> <code>AEC381DBA167C3A1756970CA0F98963C</code> <code>04A1A344DEE27D5F9BCA959E8DC1AB07</code> <code>C54E4F7E3E0A790000E79B4D581122A3</code> <code>687557FD1361555B0FF12BB8C1021190</code> <code>8E8BE37CCC6A2A124D6C905FF981E32A</code> <code>356F75587901B2F6093B26DA3A8C98E0</code> <code>B962F7DB6C02F0F2AFEC0FB49F6BB9EE</code><br> <code>8890534D</code></td>
|
||||
<td><code>FE500200943B6F616DFA220E8F05F90F</code> <code>A33DBBD4A64C47B2870F1B409E6A7FDF</code> <code>3772E9DA69C7141DBC4799607CE90505</code> <code>8854A7484C40D09885F863FD858BB407</code> <code>5F426D1FC4DD436D2959081BE71EC036</code> <code>CA1C85E34DD2D03BA399C3BAC507FD8C</code> <code>3605408B9BB9089CF571C595A07C2210</code> <code>D8073D8D4DCCE5B900B8D992092F881C</code> <code>B14868D3219851C0886770D59BC7BC53</code> <code>EF95FFE849DD6F8DD1521E88BEB93CBB</code> <code>C5F4F2DF5530667B8CA152F49542EF9E</code> <code>87C13548717DA315B6D8BA6014D97D47</code> <code>5740115C0C01BA3E37A8B7C8251E1431</code> <code>90AAC4E19330428D53598BBFE8862A6B</code> <code>8EA5AD5CB84A4AFE23FE9B9D69562D6D</code> <code>1B6CC8A58E48DC33449666821C50B467</code> <code>952BA2BB3F2A1D907177B01BA93E75FD</code> <code>9E13DF2A7D708AB4C7C8CFAEEB595247</code> <code>7D27323F0E0C3E4F3CD49CB5E22A7251</code> <code>E34004BA42B33AE0EAC9FBCBABD9BDB9</code> <code>B4D1AC529DF62D5572CA1AB5025BD062</code> <code>97702B3337C0640B8702BD69DD9AD334</code> <code>841F2BC07FF843068193DCF83D698AF5</code> <code>8BC59DCEC3450D794DEF1CD49E903A59</code> <code>B860E445DDD0A70140B0AB5BD0D48F5B</code> <code>CAA961D17131191BE1922CB6E4E91964</code> <code>31E137152F8F64107DF2B17F68CF708B</code> <code>1BEAE266D06868195B0D89973EDB190F</code> <code>46C544B8ECDB354745E942BE39CC5A1E</code> <code>19DD2EC1B7A82C362F2E0107F8764AF6</code> <code>A4B9DBF2F4A874B3BBCCA46F7FAEB5A9</code> <code>C81D537E47C5298A805EA20D5FD0532D</code> <code>127681BC27D2CF4E3E1E60F2BFBF731F</code> <code>5BB73D79F69FE47E5C9E659F7F5210C0</code> <code>570D2FCBCF9939D25B75BA2FBE9E8C49</code> <code>9EAEEB54AB17E30E66D0FE2601DB74F2</code> <code>7073B4E3E3FBB324FDBC725D21038F99</code><br> <code>FD3A7595</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = 56AEFD5BC54E0F89544670D99A3F8E733CA1FE69E034A3E46E97C3B3C
|
|||
<!-- 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 = 6ACD40B911568165BF628C38DF466DA3E8B53DE258B20D04B8B6AB78290FAAD633D7B40560333CB47A4E9522434AEA96BC1E2510BBEFEE8AD391741739A73243B0DCD8F6E392281B134E9BD7CB77B15E1A246224A35F4CC6E8B34DFDC1C9FCB30C35155857D8351A708BEE0F4E6BC9E34E4D88D68A475F3A9ACEEE1D946BE29BB7F5B74B9BD7E2A86920B3CD7454E9CA69F581F8DD8291CA8B432FFEE87F3F3729F2507A43CE0481A24F45B173D7BC00A8427B4F72191DFF343ED3915F232C1E51D1354B52C47A09E16DF5E6D3D6988FDF5365C329ACD70B9ADD6317FC83A58AF1FBB9C2A608DAFD3C62405CA4B4C4493394520EFE5303D41E0ECAB9D6105A18F826EACA1FD3EDB8AF091877DC72E6A013895BEEC07B0494F8470E97132B40828FCEC15E21A46CF2D03057A2F6C58AB12E623BA268BE054F4CA6E01752C741B81C021F7B65563C872A268494E9EC29E423A8734E954F7054F385CFEB5CD670E3FD0231C5BC30B1B09E653AF85249E29A2CEBF23ED5145C47BAA7AD5C0E415C3E505B16F572C2CF609C46F2E8FF3D03B17DC05CBCB8973D95A28993E43AAB01BE5AC33F7332B1A48243E5AE38977A29D0ABF5CFB700C2532EAFB47EC758A1D80A247779CDDBE16E786AD3264880ED00A81842694254BB72B4C22A7C9FAEC381DBA167C3A1756970CA0F98963C04A1A344DEE27D5F9BCA959E8DC1AB07C54E4F7E3E0A790000E79B4D581122A3687557FD1361555B0FF12BB8C10211908E8BE37CCC6A2A124D6C905FF981E32A356F75587901B2F6093B26DA3A8C98E0B962F7DB6C02F0F2AFEC0FB49F6BB9EE8890534D
|
||||
tmp_aes_key = D1DC45955C65979BCE25DF62171E3FB0FA5374A64CF056B0950C0DF7274C15B9
|
||||
tmp_aes_iv = 3F660439301611FFADFCB2F86028267123182D4E9AA5261992AE3C793017A2D4</code></pre>
|
||||
<pre><code>encrypted_answer = 943B6F616DFA220E8F05F90FA33DBBD4A64C47B2870F1B409E6A7FDF3772E9DA69C7141DBC4799607CE905058854A7484C40D09885F863FD858BB4075F426D1FC4DD436D2959081BE71EC036CA1C85E34DD2D03BA399C3BAC507FD8C3605408B9BB9089CF571C595A07C2210D8073D8D4DCCE5B900B8D992092F881CB14868D3219851C0886770D59BC7BC53EF95FFE849DD6F8DD1521E88BEB93CBBC5F4F2DF5530667B8CA152F49542EF9E87C13548717DA315B6D8BA6014D97D475740115C0C01BA3E37A8B7C8251E143190AAC4E19330428D53598BBFE8862A6B8EA5AD5CB84A4AFE23FE9B9D69562D6D1B6CC8A58E48DC33449666821C50B467952BA2BB3F2A1D907177B01BA93E75FD9E13DF2A7D708AB4C7C8CFAEEB5952477D27323F0E0C3E4F3CD49CB5E22A7251E34004BA42B33AE0EAC9FBCBABD9BDB9B4D1AC529DF62D5572CA1AB5025BD06297702B3337C0640B8702BD69DD9AD334841F2BC07FF843068193DCF83D698AF58BC59DCEC3450D794DEF1CD49E903A59B860E445DDD0A70140B0AB5BD0D48F5BCAA961D17131191BE1922CB6E4E9196431E137152F8F64107DF2B17F68CF708B1BEAE266D06868195B0D89973EDB190F46C544B8ECDB354745E942BE39CC5A1E19DD2EC1B7A82C362F2E0107F8764AF6A4B9DBF2F4A874B3BBCCA46F7FAEB5A9C81D537E47C5298A805EA20D5FD0532D127681BC27D2CF4E3E1E60F2BFBF731F5BB73D79F69FE47E5C9E659F7F5210C0570D2FCBCF9939D25B75BA2FBE9E8C499EAEEB54AB17E30E66D0FE2601DB74F27073B4E3E3FBB324FDBC725D21038F99FD3A7595
|
||||
tmp_aes_key = 2BB30D11720BD1F2C2323FED7A87157D31789B91B22BC565DC9F6529B403565B
|
||||
tmp_aes_iv = AAD72AEF389D0A44891EC9D3E073E1D9D2D9E04956124878DE8495E391450453</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = 8D50AD40D80D6A23731896E57BC386E6CE02EC71BA0D89B583C5302F81B49C5C1BF64202C4F1D468F4107D7219F13C87DE919EB486FFAFD603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100733CCCB46E2375856F7B162A65B199CECB5C456C790394F6068F782951ADAAD0E0C3B11253C15A84412726F380B8E868BA2C144D4FCBE23533659F9D07A8A4C631BCF74C4D352C0FC0DEEE8A2945482BF5D7E8CE34D2F966CB5BF15DAF49A07E6BE870A2C15327821C21629FF509FB5B8DC0EBEB6AE4AE7D169E23C2694ED82A903C87617318F93711FC73BD62236FC28D5372447806972C77A94F2E83293CCD7801FF223479897E6BBF32F3067E13EB50E0FE11EE90D05779C7681552578289C092AD74EF902D0D1065A11BF79674361D3CF1ED89FEAEE3E60328450E4EA937CC044096C39DDF36C324F7BC30439355515B5A6D3B22F1D03D955B3BC3A78E56BCBA84650A6296E8EDA98DAA
|
||||
answer = BA0D89B583C5302F81B49C5C1BF64202C4F1D468F4107D7219F13C87DE919EB486FFAFD603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100733CCCB46E2375856F7B162A65B199CECB5C456C790394F6068F782951ADAAD0E0C3B11253C15A84412726F380B8E868BA2C144D4FCBE23533659F9D07A8A4C631BCF74C4D352C0FC0DEEE8A2945482BF5D7E8CE34D2F966CB5BF15DAF49A07E6BE870A2C15327821C21629FF509FB5B8DC0EBEB6AE4AE7D169E23C2694ED82A903C87617318F93711FC73BD62236FC28D5372447806972C77A94F2E83293CCD7801FF223479897E6BBF32F3067E13EB50E0FE11EE90D05779C7681552578289C092AD74EF902D0D1065A11BF79674361D3CF1ED89FEAEE3E60328450E4EA937CC044096C39DDF36C324F7BC30439355515B5A6D3B22F1D03D955B3BC3A78E56BCBA84650A6296E8EDA98DAA</code></pre>
|
||||
<pre><code>answer_with_hash = 7BB511000F89DB5432D58139ACE05F8AE81B0135BA0D89B5BF56080420B35B3F3D9725B6709590F7773680DEF0DB453E61123260A9D01B7F03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004BCEA0BB4772EEF6A5A7E95D61F62E04A99CE818A784EFA82D0F2BF034182E1607CDA483AA28CF2EAF91CBC7E11EFEADD2E47F4CD95F2461F15D59C1E69B7239A40A5C71C1D9275D3AA4162729746245F3DFD65DFD74F648BF7CB4994E01D0898FBFB81F229F2850452503FFA4C0F73404BCB25EC8131F8D06AAEA1C2B479A1D6EF45F0C37C241C6E1808CB8DB20CD80DD0FA24CC4E9D9DB2F7D89DF1E43B37305236CC568C642061306CE3E6127593DC64C6231069E286963F7640C2E52E07A95419962FE40D26AA86E367BCBEFFCC048FF70425AD59CDBD5EAF8ABD7F6E33973784A24F74E1AF05CEF906AFC8559CBEA3546CDD081619148418777093A6641ADBD8465DC8CB9954DE0E279
|
||||
answer = BA0D89B5BF56080420B35B3F3D9725B6709590F7773680DEF0DB453E61123260A9D01B7F03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004BCEA0BB4772EEF6A5A7E95D61F62E04A99CE818A784EFA82D0F2BF034182E1607CDA483AA28CF2EAF91CBC7E11EFEADD2E47F4CD95F2461F15D59C1E69B7239A40A5C71C1D9275D3AA4162729746245F3DFD65DFD74F648BF7CB4994E01D0898FBFB81F229F2850452503FFA4C0F73404BCB25EC8131F8D06AAEA1C2B479A1D6EF45F0C37C241C6E1808CB8DB20CD80DD0FA24CC4E9D9DB2F7D89DF1E43B37305236CC568C642061306CE3E6127593DC64C6231069E286963F7640C2E52E07A95419962FE40D26AA86E367BCBEFFCC048FF70425AD59CDBD5EAF8ABD7F6E33973784A24F74E1AF05CEF906AFC8559CBEA3546CDD081619148418777093A6641ADBD8465DC8CB9954DE0E279</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 83 C5 30 2F 81 B4 9C 5C 1B F6 42 02
|
||||
0010 | C4 F1 D4 68 F4 10 7D 72 19 F1 3C 87 DE 91 9E B4
|
||||
0020 | 86 FF AF D6 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 BF 56 08 04 20 B3 5B 3F 3D 97 25 B6
|
||||
0010 | 70 95 90 F7 77 36 80 DE F0 DB 45 3E 61 12 32 60
|
||||
0020 | A9 D0 1B 7F 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 = BA0D89B583C5302F81B49C5C1BF64202C4F1D468F4107D7219F13C87DE919EB486FFAFD
|
|||
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 | 73 3C CC B4 6E 23 75 85 6F 7B 16 2A 65 B1 99 CE
|
||||
0140 | CB 5C 45 6C 79 03 94 F6 06 8F 78 29 51 AD AA D0
|
||||
0150 | E0 C3 B1 12 53 C1 5A 84 41 27 26 F3 80 B8 E8 68
|
||||
0160 | BA 2C 14 4D 4F CB E2 35 33 65 9F 9D 07 A8 A4 C6
|
||||
0170 | 31 BC F7 4C 4D 35 2C 0F C0 DE EE 8A 29 45 48 2B
|
||||
0180 | F5 D7 E8 CE 34 D2 F9 66 CB 5B F1 5D AF 49 A0 7E
|
||||
0190 | 6B E8 70 A2 C1 53 27 82 1C 21 62 9F F5 09 FB 5B
|
||||
01A0 | 8D C0 EB EB 6A E4 AE 7D 16 9E 23 C2 69 4E D8 2A
|
||||
01B0 | 90 3C 87 61 73 18 F9 37 11 FC 73 BD 62 23 6F C2
|
||||
01C0 | 8D 53 72 44 78 06 97 2C 77 A9 4F 2E 83 29 3C CD
|
||||
01D0 | 78 01 FF 22 34 79 89 7E 6B BF 32 F3 06 7E 13 EB
|
||||
01E0 | 50 E0 FE 11 EE 90 D0 57 79 C7 68 15 52 57 82 89
|
||||
01F0 | C0 92 AD 74 EF 90 2D 0D 10 65 A1 1B F7 96 74 36
|
||||
0200 | 1D 3C F1 ED 89 FE AE E3 E6 03 28 45 0E 4E A9 37
|
||||
0210 | CC 04 40 96 C3 9D DF 36 C3 24 F7 BC 30 43 93 55
|
||||
0220 | 51 5B 5A 6D 3B 22 F1 D0 3D 95 5B 3B C3 A7 8E 56
|
||||
0230 | BC BA 84 65</code></pre>
|
||||
0130 | 4B CE A0 BB 47 72 EE F6 A5 A7 E9 5D 61 F6 2E 04
|
||||
0140 | A9 9C E8 18 A7 84 EF A8 2D 0F 2B F0 34 18 2E 16
|
||||
0150 | 07 CD A4 83 AA 28 CF 2E AF 91 CB C7 E1 1E FE AD
|
||||
0160 | D2 E4 7F 4C D9 5F 24 61 F1 5D 59 C1 E6 9B 72 39
|
||||
0170 | A4 0A 5C 71 C1 D9 27 5D 3A A4 16 27 29 74 62 45
|
||||
0180 | F3 DF D6 5D FD 74 F6 48 BF 7C B4 99 4E 01 D0 89
|
||||
0190 | 8F BF B8 1F 22 9F 28 50 45 25 03 FF A4 C0 F7 34
|
||||
01A0 | 04 BC B2 5E C8 13 1F 8D 06 AA EA 1C 2B 47 9A 1D
|
||||
01B0 | 6E F4 5F 0C 37 C2 41 C6 E1 80 8C B8 DB 20 CD 80
|
||||
01C0 | DD 0F A2 4C C4 E9 D9 DB 2F 7D 89 DF 1E 43 B3 73
|
||||
01D0 | 05 23 6C C5 68 C6 42 06 13 06 CE 3E 61 27 59 3D
|
||||
01E0 | C6 4C 62 31 06 9E 28 69 63 F7 64 0C 2E 52 E0 7A
|
||||
01F0 | 95 41 99 62 FE 40 D2 6A A8 6E 36 7B CB EF FC C0
|
||||
0200 | 48 FF 70 42 5A D5 9C DB D5 EA F8 AB D7 F6 E3 39
|
||||
0210 | 73 78 4A 24 F7 4E 1A F0 5C EF 90 6A FC 85 59 CB
|
||||
0220 | EA 35 46 CD D0 81 61 91 48 41 87 77 09 3A 66 41
|
||||
0230 | AD BD 84 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 = BA0D89B583C5302F81B49C5C1BF64202C4F1D468F4107D7219F13C87DE919EB486FFAFD
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>83C5302F81B49C5C1BF64202C4F1D468</code></td>
|
||||
<td><code>BF56080420B35B3F3D9725B6709590F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>F4107D7219F13C87DE919EB486FFAFD6</code></td>
|
||||
<td><code>773680DEF0DB453E61123260A9D01B7F</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B583C5302F81B49C5C1BF64202C4F1D468F4107D7219F13C87DE919EB486FFAFD
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE000100733CCCB46E2375856F7B162A</code> <code>65B199CECB5C456C790394F6068F7829</code> <code>51ADAAD0E0C3B11253C15A84412726F3</code> <code>80B8E868BA2C144D4FCBE23533659F9D</code> <code>07A8A4C631BCF74C4D352C0FC0DEEE8A</code> <code>2945482BF5D7E8CE34D2F966CB5BF15D</code> <code>AF49A07E6BE870A2C15327821C21629F</code> <code>F509FB5B8DC0EBEB6AE4AE7D169E23C2</code> <code>694ED82A903C87617318F93711FC73BD</code> <code>62236FC28D5372447806972C77A94F2E</code> <code>83293CCD7801FF223479897E6BBF32F3</code> <code>067E13EB50E0FE11EE90D05779C76815</code> <code>52578289C092AD74EF902D0D1065A11B</code> <code>F79674361D3CF1ED89FEAEE3E6032845</code> <code>0E4EA937CC044096C39DDF36C324F7BC</code> <code>30439355515B5A6D3B22F1D03D955B3B</code><br> <code>C3A78E56</code></td>
|
||||
<td><code>FE0001004BCEA0BB4772EEF6A5A7E95D</code> <code>61F62E04A99CE818A784EFA82D0F2BF0</code> <code>34182E1607CDA483AA28CF2EAF91CBC7</code> <code>E11EFEADD2E47F4CD95F2461F15D59C1</code> <code>E69B7239A40A5C71C1D9275D3AA41627</code> <code>29746245F3DFD65DFD74F648BF7CB499</code> <code>4E01D0898FBFB81F229F2850452503FF</code> <code>A4C0F73404BCB25EC8131F8D06AAEA1C</code> <code>2B479A1D6EF45F0C37C241C6E1808CB8</code> <code>DB20CD80DD0FA24CC4E9D9DB2F7D89DF</code> <code>1E43B37305236CC568C642061306CE3E</code> <code>6127593DC64C6231069E286963F7640C</code> <code>2E52E07A95419962FE40D26AA86E367B</code> <code>CBEFFCC048FF70425AD59CDBD5EAF8AB</code> <code>D7F6E33973784A24F74E1AF05CEF906A</code> <code>FC8559CBEA3546CDD081619148418777</code><br> <code>093A6641</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>BCBA8465</code> (1703197372 in decimal)</td>
|
||||
<td><code>ADBD8465</code> (1703198125 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B583C5302F81B49C5C1BF64202C4F1D468F4107D7219F13C87DE919EB486FFAFD
|
|||
<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 = 6044B645BF65863AB3EE4668CE005A731ED8AA8AA5A9BB54A17C6846A8B80CC89796283C9A930BDE724A7E5CC28028426F9E8C507C908E5CCE1819F1A21FA0FF22005D134BA8ED82E569067E50A759EF9B2CC57839A8F14A6EA1B94A70C669A93494C57DEB2C1F9C43EA3395682F9C62C11BF9AE852C607D3DABB8EF3FBE0168BE9F203F8EBD68A2B88AD75D1E88F02475956693C593E7C3ED8A952CC27E2671354145B52104E22822AA458C116042F26BC1754BAFFDE372BE327B997190D4F0A5BBE4338ED8F1FCB43072B915D9F67894F6E22287B608E0D3A79C49599DEDE96C4CDA2843C753FDD9EDC96945B022BCB3AB40D64E0275E0B8406F832548F6CA</code></pre>
|
||||
<pre><code>b = AD2168E1D53ACD5C8F4C968E16EDA76F5D1E87D2ECFB56265F9AEE921D828A9808D63C3A568E1B76C1FAC8CA67E0EB9E3575D06AEA28F3B301667235418900D22F017FBD1CEC31F3D9A22D8531CD48172286DDC6AD42C3B200B080616F9D9EEC3B1F9E7FC95954254E7F87F536F16486FAA74915638284C797B4183D55FF6FF20CE1568C5ACBE7F70C76D310FB4A80E939C26FCE6EF68AFCDFD945A3501270571F5D88A3FF61E823A2D8B7BB360A8270D86F372995D2C70D4EE49563467443CB6C062F232CD8DCBBE8693A4CCAF75CAA6B8389B558D28FBBA75AC0013816B9FE048AF9C1003FBDD5FFAF5E69D2CFE210D036C16E2EB77E081BAD3F49504EF68E</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 = 5F8E2FB7F219BA557D340BB08DCF358F3CD19832D310DCCC2AAF76FCAEDB0F273561D1D6C0D516D17897A1163A6871B5AEEA549706BFEF17D97B66F37FAAFAC592DCD08FA3E7F181EF97348980CDAC3ED33CE377E1B36CC782A31B48336D745FA4A2A99FF6EC7C7E8997FFE04C96958662000858DBD15FDA83CC1E5B533A47E823A890925E44BE7AEBCF6A27AB36FFDB4F39E7EBEC33E5DA4D0026F2A95E6ECA2CE184EBA6448EF27777B101CE8FCDDA09D452A272E490BD6613E051FC0C0BC719F4C530646DAD93D192AC438878980690CCE7C1C3E8187D3BD67F1002ED708444502F92D955D4845B87CEE8889C530A9C002BE41095A3A17468FB4236DCE55C</code></pre>
|
||||
<pre><code>g_b = B40164F977F0B2986229D609AF47C7C5B8A67FFC7FD85EB79370C15A52453679FC2F45F0C16E6F2931CBACB92056453CC01727AEC133A295E4A99D43A34B60FF23C8C3C251344721D95C8953BA3FD7EC9D8AAB27696A5DFA2499EC3411194E5D3CFAF5FB31945250A649FFA96C4403CF8E3FC79277342AB32A6991F3BACEE2647AE1CB67233528F30E94C41BC8B5871D1A407158DB74C7844506754243C706AEF420AEE843571B0727B801E0B33C744677F46DE86B3A058E5EF5643042A4E4E1F72DBA8B9E842001B34C536DC2422754447372D876AE39BA9BD40BBB86065A9C4B8BD2EB099E6516F907989165EDCF55DEE222FC0C2DFF27A405EAFD4D42656F</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 83 C5 30 2F 81 B4 9C 5C 1B F6 42 02
|
||||
0010 | C4 F1 D4 68 F4 10 7D 72 19 F1 3C 87 DE 91 9E B4
|
||||
0020 | 86 FF AF D6 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 5F 8E 2F B7 F2 19 BA 55 7D 34 0B B0 8D CF 35 8F
|
||||
0040 | 3C D1 98 32 D3 10 DC CC 2A AF 76 FC AE DB 0F 27
|
||||
0050 | 35 61 D1 D6 C0 D5 16 D1 78 97 A1 16 3A 68 71 B5
|
||||
0060 | AE EA 54 97 06 BF EF 17 D9 7B 66 F3 7F AA FA C5
|
||||
0070 | 92 DC D0 8F A3 E7 F1 81 EF 97 34 89 80 CD AC 3E
|
||||
0080 | D3 3C E3 77 E1 B3 6C C7 82 A3 1B 48 33 6D 74 5F
|
||||
0090 | A4 A2 A9 9F F6 EC 7C 7E 89 97 FF E0 4C 96 95 86
|
||||
00A0 | 62 00 08 58 DB D1 5F DA 83 CC 1E 5B 53 3A 47 E8
|
||||
00B0 | 23 A8 90 92 5E 44 BE 7A EB CF 6A 27 AB 36 FF DB
|
||||
00C0 | 4F 39 E7 EB EC 33 E5 DA 4D 00 26 F2 A9 5E 6E CA
|
||||
00D0 | 2C E1 84 EB A6 44 8E F2 77 77 B1 01 CE 8F CD DA
|
||||
00E0 | 09 D4 52 A2 72 E4 90 BD 66 13 E0 51 FC 0C 0B C7
|
||||
00F0 | 19 F4 C5 30 64 6D AD 93 D1 92 AC 43 88 78 98 06
|
||||
0100 | 90 CC E7 C1 C3 E8 18 7D 3B D6 7F 10 02 ED 70 84
|
||||
0110 | 44 50 2F 92 D9 55 D4 84 5B 87 CE E8 88 9C 53 0A
|
||||
0120 | 9C 00 2B E4 10 95 A3 A1 74 68 FB 42 36 DC E5 5C</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 BF 56 08 04 20 B3 5B 3F 3D 97 25 B6
|
||||
0010 | 70 95 90 F7 77 36 80 DE F0 DB 45 3E 61 12 32 60
|
||||
0020 | A9 D0 1B 7F 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | B4 01 64 F9 77 F0 B2 98 62 29 D6 09 AF 47 C7 C5
|
||||
0040 | B8 A6 7F FC 7F D8 5E B7 93 70 C1 5A 52 45 36 79
|
||||
0050 | FC 2F 45 F0 C1 6E 6F 29 31 CB AC B9 20 56 45 3C
|
||||
0060 | C0 17 27 AE C1 33 A2 95 E4 A9 9D 43 A3 4B 60 FF
|
||||
0070 | 23 C8 C3 C2 51 34 47 21 D9 5C 89 53 BA 3F D7 EC
|
||||
0080 | 9D 8A AB 27 69 6A 5D FA 24 99 EC 34 11 19 4E 5D
|
||||
0090 | 3C FA F5 FB 31 94 52 50 A6 49 FF A9 6C 44 03 CF
|
||||
00A0 | 8E 3F C7 92 77 34 2A B3 2A 69 91 F3 BA CE E2 64
|
||||
00B0 | 7A E1 CB 67 23 35 28 F3 0E 94 C4 1B C8 B5 87 1D
|
||||
00C0 | 1A 40 71 58 DB 74 C7 84 45 06 75 42 43 C7 06 AE
|
||||
00D0 | F4 20 AE E8 43 57 1B 07 27 B8 01 E0 B3 3C 74 46
|
||||
00E0 | 77 F4 6D E8 6B 3A 05 8E 5E F5 64 30 42 A4 E4 E1
|
||||
00F0 | F7 2D BA 8B 9E 84 20 01 B3 4C 53 6D C2 42 27 54
|
||||
0100 | 44 73 72 D8 76 AE 39 BA 9B D4 0B BB 86 06 5A 9C
|
||||
0110 | 4B 8B D2 EB 09 9E 65 16 F9 07 98 91 65 ED CF 55
|
||||
0120 | DE E2 22 FC 0C 2D FF 27 A4 05 EA FD 4D 42 65 6F</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 = BA0D89B583C5302F81B49C5C1BF64202C4F1D468F4107D7219F13C87DE919EB486FFAFD
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>83C5302F81B49C5C1BF64202C4F1D468</code></td>
|
||||
<td><code>BF56080420B35B3F3D9725B6709590F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>F4107D7219F13C87DE919EB486FFAFD6</code></td>
|
||||
<td><code>773680DEF0DB453E61123260A9D01B7F</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE0001005F8E2FB7F219BA557D340BB0</code> <code>8DCF358F3CD19832D310DCCC2AAF76FC</code> <code>AEDB0F273561D1D6C0D516D17897A116</code> <code>3A6871B5AEEA549706BFEF17D97B66F3</code> <code>7FAAFAC592DCD08FA3E7F181EF973489</code> <code>80CDAC3ED33CE377E1B36CC782A31B48</code> <code>336D745FA4A2A99FF6EC7C7E8997FFE0</code> <code>4C96958662000858DBD15FDA83CC1E5B</code> <code>533A47E823A890925E44BE7AEBCF6A27</code> <code>AB36FFDB4F39E7EBEC33E5DA4D0026F2</code> <code>A95E6ECA2CE184EBA6448EF27777B101</code> <code>CE8FCDDA09D452A272E490BD6613E051</code> <code>FC0C0BC719F4C530646DAD93D192AC43</code> <code>8878980690CCE7C1C3E8187D3BD67F10</code> <code>02ED708444502F92D955D4845B87CEE8</code> <code>889C530A9C002BE41095A3A17468FB42</code><br> <code>36DCE55C</code></td>
|
||||
<td><code>FE000100B40164F977F0B2986229D609</code> <code>AF47C7C5B8A67FFC7FD85EB79370C15A</code> <code>52453679FC2F45F0C16E6F2931CBACB9</code> <code>2056453CC01727AEC133A295E4A99D43</code> <code>A34B60FF23C8C3C251344721D95C8953</code> <code>BA3FD7EC9D8AAB27696A5DFA2499EC34</code> <code>11194E5D3CFAF5FB31945250A649FFA9</code> <code>6C4403CF8E3FC79277342AB32A6991F3</code> <code>BACEE2647AE1CB67233528F30E94C41B</code> <code>C8B5871D1A407158DB74C78445067542</code> <code>43C706AEF420AEE843571B0727B801E0</code> <code>B33C744677F46DE86B3A058E5EF56430</code> <code>42A4E4E1F72DBA8B9E842001B34C536D</code> <code>C2422754447372D876AE39BA9BD40BBB</code> <code>86065A9C4B8BD2EB099E6516F9079891</code> <code>65EDCF55DEE222FC0C2DFF27A405EAFD</code><br> <code>4D42656F</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 = BA0D89B583C5302F81B49C5C1BF64202C4F1D468F4107D7219F13C87DE919EB486FFAFD
|
|||
<!-- 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 = 54B6436683C5302F81B49C5C1BF64202C4F1D468F4107D7219F13C87DE919EB486FFAFD60000000000000000FE0001005F8E2FB7F219BA557D340BB08DCF358F3CD19832D310DCCC2AAF76FCAEDB0F273561D1D6C0D516D17897A1163A6871B5AEEA549706BFEF17D97B66F37FAAFAC592DCD08FA3E7F181EF97348980CDAC3ED33CE377E1B36CC782A31B48336D745FA4A2A99FF6EC7C7E8997FFE04C96958662000858DBD15FDA83CC1E5B533A47E823A890925E44BE7AEBCF6A27AB36FFDB4F39E7EBEC33E5DA4D0026F2A95E6ECA2CE184EBA6448EF27777B101CE8FCDDA09D452A272E490BD6613E051FC0C0BC719F4C530646DAD93D192AC438878980690CCE7C1C3E8187D3BD67F1002ED708444502F92D955D4845B87CEE8889C530A9C002BE41095A3A17468FB4236DCE55C
|
||||
padding = 540FD353700B62B679BCEDE6
|
||||
tmp_aes_key = D1DC45955C65979BCE25DF62171E3FB0FA5374A64CF056B0950C0DF7274C15B9
|
||||
tmp_aes_iv = 3F660439301611FFADFCB2F86028267123182D4E9AA5261992AE3C793017A2D4</code></pre>
|
||||
<pre><code>data = 54B64366BF56080420B35B3F3D9725B6709590F7773680DEF0DB453E61123260A9D01B7F0000000000000000FE000100B40164F977F0B2986229D609AF47C7C5B8A67FFC7FD85EB79370C15A52453679FC2F45F0C16E6F2931CBACB92056453CC01727AEC133A295E4A99D43A34B60FF23C8C3C251344721D95C8953BA3FD7EC9D8AAB27696A5DFA2499EC3411194E5D3CFAF5FB31945250A649FFA96C4403CF8E3FC79277342AB32A6991F3BACEE2647AE1CB67233528F30E94C41BC8B5871D1A407158DB74C7844506754243C706AEF420AEE843571B0727B801E0B33C744677F46DE86B3A058E5EF5643042A4E4E1F72DBA8B9E842001B34C536DC2422754447372D876AE39BA9BD40BBB86065A9C4B8BD2EB099E6516F907989165EDCF55DEE222FC0C2DFF27A405EAFD4D42656F
|
||||
padding = 57FC2E97B1589A62687AC4A5
|
||||
tmp_aes_key = 2BB30D11720BD1F2C2323FED7A87157D31789B91B22BC565DC9F6529B403565B
|
||||
tmp_aes_iv = AAD72AEF389D0A44891EC9D3E073E1D9D2D9E04956124878DE8495E391450453</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 = F3AA25F015D7F95BEEC72B833027309BE737B217B61CE47429D1B96D14C4E1BF6CD48BFA471CC3504BFF27C43F0920A3FB0C34706751CBDEB2C6B09248F0EEC4EC878D2FC0E3E0C6BBF5DA5BBB4455D9BB7AC4A2FC1F7C444B495AB92C30C59C7D40EB7D4F119C4DEEDBF806AA2DAE46DC943822669F87CEE3B3C8E104319DD235D3A534AADA31C6CA95372D72D459E7D76221BDFF05FEFC41CCD85927481D44D43481E409314A7AF6F060EE224D5CB890AF3110BCB86B3D6D07F4595C92EEFADE06CB837CC97EC46AA3F9BD7F340B9D97CD9DC2683366BC0FB73D27AB33CEDC5E63E2DF38E93045099EC6F8D2BC933E3466B7CBF74205735B2A6654727A90CF17B7DB454CC31FC05ED8E189237E608B86D32FEAB81F52DB215D0DF5FC315E55101307129F8C0D124E514B2000835EEB51BFFB78F9C26C6C38209C9A8F4A218AEA986D988EB95C77671433BBC73E4413</code></pre>
|
||||
<pre><code>encrypted_data = 0B4BFDEBDFE5D65DEEF19E7EEB18A1D35E36452FC1F56E6C005A875F2456175A83728704831E8FA250D12FE771D123A7EC56870D23292577B9BF37F54FED232E76FC920B6207E8D5D891B27ACF015573023A66E3B839CDC16529EAA327107D5CFEEAC73DAB509135CD8FA9A968B05569F8B704ED389C9E46A022FDD5C58C4F3FA41E9208C53D16F92FBC821FD30900B23077205FCDA1D46FDDD4EDF10A1B72AD43481FA829FC7DA91E5A8BCD5AD009B0119208B92E5BCC63903FBD5EA68AF8323085252238CC94BAA3614BE6CD480532CCFBD9ED9A834CDB49BDCE4D155AFA950711B5745E83C22B57DD18E38E4B19FCF2747D717B3A80FF9D2FAE6A1D21434AAAF2FA90C12FEB4B553A7E88594485CEF8F3AA3D71A85C09EC9B004174463E54FAA817D7867201BDC77B75FC11FB3525F21D8B858AE84F329D697D4250A60C540F428E09A316A17708A48339E5CC5F9D</code></pre>
|
||||
<!-- end client_DH_inner_data_output -->
|
||||
<p>The length of the final string is 336 bytes.</p>
|
||||
<h6>7.2) set_client_DH_params query</h6>
|
||||
<!-- start set_client_DH_params -->
|
||||
<p>Sent payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 30 3B 0B 00 BC BA 84 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 83 C5 30 2F 81 B4 9C 5C
|
||||
0020 | 1B F6 42 02 C4 F1 D4 68 F4 10 7D 72 19 F1 3C 87
|
||||
0030 | DE 91 9E B4 86 FF AF D6 FE 50 01 00 F3 AA 25 F0
|
||||
0040 | 15 D7 F9 5B EE C7 2B 83 30 27 30 9B E7 37 B2 17
|
||||
0050 | B6 1C E4 74 29 D1 B9 6D 14 C4 E1 BF 6C D4 8B FA
|
||||
0060 | 47 1C C3 50 4B FF 27 C4 3F 09 20 A3 FB 0C 34 70
|
||||
0070 | 67 51 CB DE B2 C6 B0 92 48 F0 EE C4 EC 87 8D 2F
|
||||
0080 | C0 E3 E0 C6 BB F5 DA 5B BB 44 55 D9 BB 7A C4 A2
|
||||
0090 | FC 1F 7C 44 4B 49 5A B9 2C 30 C5 9C 7D 40 EB 7D
|
||||
00A0 | 4F 11 9C 4D EE DB F8 06 AA 2D AE 46 DC 94 38 22
|
||||
00B0 | 66 9F 87 CE E3 B3 C8 E1 04 31 9D D2 35 D3 A5 34
|
||||
00C0 | AA DA 31 C6 CA 95 37 2D 72 D4 59 E7 D7 62 21 BD
|
||||
00D0 | FF 05 FE FC 41 CC D8 59 27 48 1D 44 D4 34 81 E4
|
||||
00E0 | 09 31 4A 7A F6 F0 60 EE 22 4D 5C B8 90 AF 31 10
|
||||
00F0 | BC B8 6B 3D 6D 07 F4 59 5C 92 EE FA DE 06 CB 83
|
||||
0100 | 7C C9 7E C4 6A A3 F9 BD 7F 34 0B 9D 97 CD 9D C2
|
||||
0110 | 68 33 66 BC 0F B7 3D 27 AB 33 CE DC 5E 63 E2 DF
|
||||
0120 | 38 E9 30 45 09 9E C6 F8 D2 BC 93 3E 34 66 B7 CB
|
||||
0130 | F7 42 05 73 5B 2A 66 54 72 7A 90 CF 17 B7 DB 45
|
||||
0140 | 4C C3 1F C0 5E D8 E1 89 23 7E 60 8B 86 D3 2F EA
|
||||
0150 | B8 1F 52 DB 21 5D 0D F5 FC 31 5E 55 10 13 07 12
|
||||
0160 | 9F 8C 0D 12 4E 51 4B 20 00 83 5E EB 51 BF FB 78
|
||||
0170 | F9 C2 6C 6C 38 20 9C 9A 8F 4A 21 8A EA 98 6D 98
|
||||
0180 | 8E B9 5C 77 67 14 33 BB C7 3E 44 13</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 F8 D8 0E 00 AD BD 84 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 BF 56 08 04 20 B3 5B 3F
|
||||
0020 | 3D 97 25 B6 70 95 90 F7 77 36 80 DE F0 DB 45 3E
|
||||
0030 | 61 12 32 60 A9 D0 1B 7F FE 50 01 00 0B 4B FD EB
|
||||
0040 | DF E5 D6 5D EE F1 9E 7E EB 18 A1 D3 5E 36 45 2F
|
||||
0050 | C1 F5 6E 6C 00 5A 87 5F 24 56 17 5A 83 72 87 04
|
||||
0060 | 83 1E 8F A2 50 D1 2F E7 71 D1 23 A7 EC 56 87 0D
|
||||
0070 | 23 29 25 77 B9 BF 37 F5 4F ED 23 2E 76 FC 92 0B
|
||||
0080 | 62 07 E8 D5 D8 91 B2 7A CF 01 55 73 02 3A 66 E3
|
||||
0090 | B8 39 CD C1 65 29 EA A3 27 10 7D 5C FE EA C7 3D
|
||||
00A0 | AB 50 91 35 CD 8F A9 A9 68 B0 55 69 F8 B7 04 ED
|
||||
00B0 | 38 9C 9E 46 A0 22 FD D5 C5 8C 4F 3F A4 1E 92 08
|
||||
00C0 | C5 3D 16 F9 2F BC 82 1F D3 09 00 B2 30 77 20 5F
|
||||
00D0 | CD A1 D4 6F DD D4 ED F1 0A 1B 72 AD 43 48 1F A8
|
||||
00E0 | 29 FC 7D A9 1E 5A 8B CD 5A D0 09 B0 11 92 08 B9
|
||||
00F0 | 2E 5B CC 63 90 3F BD 5E A6 8A F8 32 30 85 25 22
|
||||
0100 | 38 CC 94 BA A3 61 4B E6 CD 48 05 32 CC FB D9 ED
|
||||
0110 | 9A 83 4C DB 49 BD CE 4D 15 5A FA 95 07 11 B5 74
|
||||
0120 | 5E 83 C2 2B 57 DD 18 E3 8E 4B 19 FC F2 74 7D 71
|
||||
0130 | 7B 3A 80 FF 9D 2F AE 6A 1D 21 43 4A AA F2 FA 90
|
||||
0140 | C1 2F EB 4B 55 3A 7E 88 59 44 85 CE F8 F3 AA 3D
|
||||
0150 | 71 A8 5C 09 EC 9B 00 41 74 46 3E 54 FA A8 17 D7
|
||||
0160 | 86 72 01 BD C7 7B 75 FC 11 FB 35 25 F2 1D 8B 85
|
||||
0170 | 8A E8 4F 32 9D 69 7D 42 50 A6 0C 54 0F 42 8E 09
|
||||
0180 | A3 16 A1 77 08 A4 83 39 E5 CC 5F 9D</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>303B0B00BCBA8465</code></td>
|
||||
<td><code>F8D80E00ADBD8465</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>83C5302F81B49C5C1BF64202C4F1D468</code></td>
|
||||
<td><code>BF56080420B35B3F3D9725B6709590F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>F4107D7219F13C87DE919EB486FFAFD6</code></td>
|
||||
<td><code>773680DEF0DB453E61123260A9D01B7F</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE500100F3AA25F015D7F95BEEC72B83</code> <code>3027309BE737B217B61CE47429D1B96D</code> <code>14C4E1BF6CD48BFA471CC3504BFF27C4</code> <code>3F0920A3FB0C34706751CBDEB2C6B092</code> <code>48F0EEC4EC878D2FC0E3E0C6BBF5DA5B</code> <code>BB4455D9BB7AC4A2FC1F7C444B495AB9</code> <code>2C30C59C7D40EB7D4F119C4DEEDBF806</code> <code>AA2DAE46DC943822669F87CEE3B3C8E1</code> <code>04319DD235D3A534AADA31C6CA95372D</code> <code>72D459E7D76221BDFF05FEFC41CCD859</code> <code>27481D44D43481E409314A7AF6F060EE</code> <code>224D5CB890AF3110BCB86B3D6D07F459</code> <code>5C92EEFADE06CB837CC97EC46AA3F9BD</code> <code>7F340B9D97CD9DC2683366BC0FB73D27</code> <code>AB33CEDC5E63E2DF38E93045099EC6F8</code> <code>D2BC933E3466B7CBF74205735B2A6654</code> <code>727A90CF17B7DB454CC31FC05ED8E189</code> <code>237E608B86D32FEAB81F52DB215D0DF5</code> <code>FC315E55101307129F8C0D124E514B20</code> <code>00835EEB51BFFB78F9C26C6C38209C9A</code> <code>8F4A218AEA986D988EB95C77671433BB</code><br> <code>C73E4413</code></td>
|
||||
<td><code>FE5001000B4BFDEBDFE5D65DEEF19E7E</code> <code>EB18A1D35E36452FC1F56E6C005A875F</code> <code>2456175A83728704831E8FA250D12FE7</code> <code>71D123A7EC56870D23292577B9BF37F5</code> <code>4FED232E76FC920B6207E8D5D891B27A</code> <code>CF015573023A66E3B839CDC16529EAA3</code> <code>27107D5CFEEAC73DAB509135CD8FA9A9</code> <code>68B05569F8B704ED389C9E46A022FDD5</code> <code>C58C4F3FA41E9208C53D16F92FBC821F</code> <code>D30900B23077205FCDA1D46FDDD4EDF1</code> <code>0A1B72AD43481FA829FC7DA91E5A8BCD</code> <code>5AD009B0119208B92E5BCC63903FBD5E</code> <code>A68AF8323085252238CC94BAA3614BE6</code> <code>CD480532CCFBD9ED9A834CDB49BDCE4D</code> <code>155AFA950711B5745E83C22B57DD18E3</code> <code>8E4B19FCF2747D717B3A80FF9D2FAE6A</code> <code>1D21434AAAF2FA90C12FEB4B553A7E88</code> <code>594485CEF8F3AA3D71A85C09EC9B0041</code> <code>74463E54FAA817D7867201BDC77B75FC</code> <code>11FB3525F21D8B858AE84F329D697D42</code> <code>50A60C540F428E09A316A17708A48339</code><br> <code>E5CC5F9D</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 = 56C5F1078BB2C8188FB76B53270CD8513A745682D6948ECB923436B0F39888109BBD4AC68A1B965C5A29AB8067242AAC097805675CEEC62D3E541CE145C100588D69AC0845E12B088143E85CB623127718CBC7B0EC348AE7F9F50B9322403C8B0CF56E442712322D37FF328BF2381CFD269107505671DD8A5482075316DB623DBDEB59D58BE5C5E4B44850277E6E88571264967A97AFD970C15708B7B99708E386D700F449F7F8C8CC4C02A1396666E45212B83A982F911C1CD962E71783C95550DC1064CB636DA920E1B01EB4B41FE7607461AF3386876C59E4C9DB7D169E81660033C46371BCEE220059B82A0D424B5E2A4781854BC0AF1FA58D3C39EECBF1</code></pre>
|
||||
<pre><code>auth_key = 2AC4D1821C4675840C1DD51E8BACA406727E346DC5B7CA778BB0B5AD91CB6C2004CC41F12D1095577BE5ED66E9311124AA278346D5C2563B0EF40171BDE15FC2BC98D8AAC61AE4DB2E2247DC2280A7BABB50F31187600DDC10E76C90E35C1728F4AA85178DF579DE4FC3CE8B1380904E4CB66674F82BCB00F179B34BB7FC7F239C76B50B49592B47CF3E7CF44F507E033F4EFE6E977259E68EE65A4293456CBB19EE1EE0779B7D7C379AC4D0F160D4AEF750C6EBC142B6A43C633C434A8AAE448388896100EADE10DCA59E1907DF381540392685473E8CD8DB5E4D1224A175B1D6BD2144E4A5142BA514E718D35AB33A8B0173298061FC199A1A0C365913DE43</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 B4 4E 51 BD BA 84 65
|
||||
0010 | 60 00 00 00 34 F7 CB 3B 83 C5 30 2F 81 B4 9C 5C
|
||||
0020 | 1B F6 42 02 C4 F1 D4 68 F4 10 7D 72 19 F1 3C 87
|
||||
0030 | DE 91 9E B4 86 FF AF D6 4B 22 41 66 BC 46 98 55
|
||||
0040 | 08 CB C1 81 DE 2C B0 1C</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 84 B1 94 AD BD 84 65
|
||||
0010 | 54 00 00 00 34 F7 CB 3B BF 56 08 04 20 B3 5B 3F
|
||||
0020 | 3D 97 25 B6 70 95 90 F7 77 36 80 DE F0 DB 45 3E
|
||||
0030 | 61 12 32 60 A9 D0 1B 7F 04 B3 2D B8 20 43 BE B0
|
||||
0040 | EA A2 09 62 BF 78 B3 B0</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>01B44E51BDBA8465</code></td>
|
||||
<td><code>0184B194ADBD8465</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>message_length</td>
|
||||
<td>16, 4</td>
|
||||
<td><code>60000000</code> (96 in decimal)</td>
|
||||
<td><code>54000000</code> (84 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -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>83C5302F81B49C5C1BF64202C4F1D468</code></td>
|
||||
<td><code>BF56080420B35B3F3D9725B6709590F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>F4107D7219F13C87DE919EB486FFAFD6</code></td>
|
||||
<td><code>773680DEF0DB453E61123260A9D01B7F</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>4B224166BC46985508CBC181DE2CB01C</code></td>
|
||||
<td><code>04B32DB82043BEB0EAA20962BF78B3B0</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…
Add table
Reference in a new issue