Update content of files

This commit is contained in:
GitHub Action 2024-08-03 19:11:37 +00:00
parent b5db415cfa
commit 4ea17585b2
6 changed files with 241 additions and 221 deletions

View file

@ -102,7 +102,7 @@
<li>Added <a href="/constructor/inputStorePaymentStarsGift">inputStorePaymentStarsGift</a> - Used to gift <a href="/api/stars">Telegram Stars</a> to a friend.</li>
<li>Added <a href="/constructor/starsGiftOption">starsGiftOption</a> - <a href="/api/stars#buying-or-gifting-stars">Telegram Stars gift option</a>.</li>
<li>Added <a href="/constructor/messageActionGiftStars">messageActionGiftStars</a> - You gifted or were gifted some <a href="/api/stars">Telegram Stars</a>.</li>
<li>Added <a href="/constructor/topPeerCategoryBotsApp">topPeerCategoryBotsApp</a> - </li>
<li>Added <a href="/constructor/topPeerCategoryBotsApp">topPeerCategoryBotsApp</a> - Most frequently used <a href="/api/bots/webapps#main-mini-apps">Main Mini Bot Apps</a>.</li>
<li>Added <a href="/constructor/bots.popularAppBots">bots.popularAppBots</a> - </li>
<li>Added <a href="/constructor/botPreviewMedia">botPreviewMedia</a> - </li>
<li>Added <a href="/constructor/bots.previewInfo">bots.previewInfo</a> - </li>

View file

@ -135,12 +135,12 @@ For example, when displaying the chat photo gallery, we could display a <code>ph
<a href='/method/contacts.getTopPeers'>contacts.getTopPeers</a>#973478b6 flags:<a href='/type/%23'>#</a> correspondents:flags.0?<a href='/constructor/true'>true</a> bots_pm:flags.1?<a href='/constructor/true'>true</a> bots_inline:flags.2?<a href='/constructor/true'>true</a> phone_calls:flags.3?<a href='/constructor/true'>true</a> forward_users:flags.4?<a href='/constructor/true'>true</a> forward_chats:flags.5?<a href='/constructor/true'>true</a> groups:flags.10?<a href='/constructor/true'>true</a> channels:flags.15?<a href='/constructor/true'>true</a> bots_app:flags.16?<a href='/constructor/true'>true</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/contacts.TopPeers'>contacts.TopPeers</a>;
<a href='/method/messages.searchGlobal'>messages.searchGlobal</a>#4bc6589a flags:<a href='/type/%23'>#</a> broadcasts_only:flags.1?<a href='/constructor/true'>true</a> folder_id:flags.0?<a href='/type/int'>int</a> q:<a href='/type/string'>string</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_rate:<a href='/type/int'>int</a> offset_peer:<a href='/type/InputPeer'>InputPeer</a> offset_id:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre>
<p>Contains results from all private/secret chats, private/public groups, private/public channels, split in the following sections:</p>
<p>Contains results (peers and messages) from all private/secret chats, private/public groups, private/public channels, split in the following sections:</p>
<ul>
<li><code>Frequent contacts</code>: Contains avatars and names of the most frequently used users, sorted <a href="/api/top-rating">as specified here »</a> (<a href="/constructor/topPeerCategoryCorrespondents">topPeerCategoryCorrespondents</a> category). </li>
<li><code>Recent</code>: Contains avatars and names of the most frequently used peers (users+chats+channels), sorted <a href="/api/top-rating">as specified here »</a> (<a href="/constructor/topPeerCategoryCorrespondents">topPeerCategoryCorrespondents</a>, <a href="/constructor/topPeerCategoryBotsPM">topPeerCategoryBotsPM</a>, <a href="/constructor/topPeerCategoryGroups">topPeerCategoryGroups</a>, <a href="/constructor/topPeerCategoryChannels">topPeerCategoryChannels</a> categories). </li>
</ul>
<p>Searching when in the "Chats" tab should invoke <a href="/method/messages.searchGlobal">messages.searchGlobal</a>, replacing the previously mentioned sections with a list of peers (avatar+name+returned message, max one row per peer). </p>
<p>Searching when in the "Chats" tab should invoke <a href="/method/messages.searchGlobal">messages.searchGlobal</a>, replacing the previously mentioned sections with a list of peers (avatar+name) and messages (max one message per peer). </p>
<h4><a class="anchor" href="#channels-tab" id="channels-tab" name="channels-tab"><i class="anchor-icon"></i></a>Channels tab</h4>
<pre><code><a href='/constructor/topPeerCategoryChannels'>topPeerCategoryChannels</a>#161d9628 = <a href='/type/TopPeerCategory'>TopPeerCategory</a>;
@ -194,6 +194,29 @@ For example, when displaying the chat photo gallery, we could display a <code>ph
<li><code>Popular apps</code>: Contains avatars, names and MAU counters of the <a href="/api/bots/webapps#main-mini-apps">Main Mini Apps</a> of the bots returned by <a href="/method/bots.getPopularAppBots">bots.getPopularAppBots</a>. </li>
</ul>
<p>Searching when in the "Apps" tab should invoke <a href="/method/messages.searchGlobal">messages.searchGlobal</a>, replacing the previously mentioned sections with a list of avatars, names and MAU counters (from <a href="/constructor/user">user</a>.<code>bot_active_users</code>) for <a href="/api/bots/webapps#main-mini-apps">Main Mini Apps</a> of the returned bots (clients should only use the returned <code>users</code> field, filtering for bots with the <a href="/constructor/user">user</a>.<code>bot_has_main_app</code> flag set). </p>
<h4><a class="anchor" href="#media-tab" id="media-tab" name="media-tab"><i class="anchor-icon"></i></a>Media tab</h4>
<p>Searches for photo+video messages. </p>
<p>Searching should invoke <a href="/method/messages.searchGlobal">messages.searchGlobal</a> with the <a href="/constructor/inputMessagesFilterPhotoVideo">inputMessagesFilterPhotoVideo</a> filter, rendering the results as specified in the <a href="#chats-tab">chats tab</a>. </p>
<p>Initially, the tab should be populated with the results returned by passing an empty string in <code>q</code>. </p>
<h4><a class="anchor" href="#downloads-tab" id="downloads-tab" name="downloads-tab"><i class="anchor-icon"></i></a>Downloads tab</h4>
<p>Contains a locally generated list of recently downloaded media (of any kind) from all peers. </p>
<p>Searching should locally search within this list. </p>
<h4><a class="anchor" href="#links-tab" id="links-tab" name="links-tab"><i class="anchor-icon"></i></a>Links tab</h4>
<p>Searches for messages with links. </p>
<p>Searching should invoke <a href="/method/messages.searchGlobal">messages.searchGlobal</a> with the <a href="/constructor/inputMessagesFilterUrl">inputMessagesFilterUrl</a> filter, rendering the results as specified in the <a href="#chats-tab">chats tab</a>. </p>
<p>Initially, the tab should be populated with the results returned by passing an empty string in <code>q</code>. </p>
<h4><a class="anchor" href="#files-tab" id="files-tab" name="files-tab"><i class="anchor-icon"></i></a>Files tab</h4>
<p>Searches for messages with files. </p>
<p>Searching should invoke <a href="/method/messages.searchGlobal">messages.searchGlobal</a> with the <a href="/constructor/inputMessagesFilterDocument">inputMessagesFilterDocument</a> filter, rendering the results as specified in the <a href="#chats-tab">chats tab</a>. </p>
<p>Initially, the tab should be populated with the results returned by passing an empty string in <code>q</code>. </p>
<h4><a class="anchor" href="#music-tab" id="music-tab" name="music-tab"><i class="anchor-icon"></i></a>Music tab</h4>
<p>Searches for music files. </p>
<p>Searching should invoke <a href="/method/messages.searchGlobal">messages.searchGlobal</a> with the <a href="/constructor/inputMessagesFilterMusic">inputMessagesFilterMusic</a> filter, rendering the results as specified in the <a href="#chats-tab">chats tab</a>. </p>
<p>Initially, the tab should be populated with the results returned by passing an empty string in <code>q</code>. </p>
<h4><a class="anchor" href="#voice-messages-tab" id="voice-messages-tab" name="voice-messages-tab"><i class="anchor-icon"></i></a>Voice messages tab</h4>
<p>Searches for voice messages. </p>
<p>Searching should invoke <a href="/method/messages.searchGlobal">messages.searchGlobal</a> with the <a href="/constructor/inputMessagesFilterVoice">inputMessagesFilterVoice</a> filter, rendering the results as specified in the <a href="#chats-tab">chats tab</a>. </p>
<p>Initially, the tab should be populated with the results returned by passing an empty string in <code>q</code>. </p>
<h3><a class="anchor" href="#global-hashtag-search" id="global-hashtag-search" name="global-hashtag-search"><i class="anchor-icon"></i></a>Global hashtag search</h3>
<pre><code>---functions---

View file

@ -4,18 +4,10 @@
<meta charset="utf-8">
<title>topPeerCategoryBotsApp</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Most frequently used Main Mini Bot Apps.
Parameters
This constructor does not require any parameters.
Type
TopPeerCategory">
<meta property="description" content="Most frequently used Main Mini Bot Apps.">
<meta property="og:title" content="topPeerCategoryBotsApp">
<meta property="og:image" content="">
<meta property="og:description" content="Most frequently used Main Mini Bot Apps.
Parameters
This constructor does not require any parameters.
Type
TopPeerCategory">
<meta property="og:description" content="Most frequently used Main Mini Bot Apps.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -67,7 +59,10 @@ TopPeerCategory">
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
<p>This constructor does not require any parameters.</p>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/TopPeerCategory">TopPeerCategory</a></p></div>
<p><a href="/type/TopPeerCategory">TopPeerCategory</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#mini-apps-on-telegram" id="mini-apps-on-telegram" name="mini-apps-on-telegram"><i class="anchor-icon"></i></a><a href="/api/bots/webapps">Mini Apps on Telegram</a></h4>
<p>Bots can offer users interactive HTML5 web apps to completely replace any website.</p></div>
</div>

View file

@ -157,6 +157,8 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#mini-apps-on-telegram" id="mini-apps-on-telegram" name="mini-apps-on-telegram"><i class="anchor-icon"></i></a><a href="/api/bots/webapps">Mini Apps on Telegram</a></h4>
<p>Bots can offer users interactive HTML5 web apps to completely replace any website.</p>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p></div>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 B0 24 08 00 BE 72 AE 66
0010 | 14 00 00 00 F1 8E 7E BE 59 61 46 10 15 D1 2F 9A
0020 | 72 99 59 CC 38 A8 12 1E</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 5C 54 07 00 D5 7C AE 66
0010 | 14 00 00 00 F1 8E 7E BE 98 34 7C 45 20 EB E0 DA
0020 | DB F9 DE F5 87 F6 3A 18</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>B0240800BE72AE66</code></td>
<td><code>5C540700D57CAE66</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -95,7 +95,7 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>5961461015D12F9A729959CC38A8121E</code></td>
<td><code>98347C4520EBE0DADBF9DEF587F63A18</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 64 FE D1 BE 72 AE 66
0010 | A8 00 00 00 63 24 16 05 59 61 46 10 15 D1 2F 9A
0020 | 72 99 59 CC 38 A8 12 1E 3A 55 D0 19 2D C6 6C 12
0030 | 8C 5C 5E C5 C4 F0 25 B1 08 1E 53 D7 AD FD 5A F2
0040 | 73 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 74 90 DB D5 7C AE 66
0010 | C8 00 00 00 63 24 16 05 98 34 7C 45 20 EB E0 DA
0020 | DB F9 DE F5 87 F6 3A 18 9A 91 88 40 20 68 F2 31
0030 | 91 D9 0C C3 31 3C FE D2 08 0F A1 9D 05 A1 83 1A
0040 | 5D 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>0164FED1BE72AE66</code></td>
<td><code>017490DBD57CAE66</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>A8000000</code> (168 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>5961461015D12F9A729959CC38A8121E</code></td>
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>3A55D0192DC66C128C5C5EC5C4F025B1</code></td>
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>081E53D7ADFD5AF273000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2185327386484732531</td>
<td><code>080FA19D05A1831A5D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1126354029329455709</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 &lt; q.</h5>
<!-- start pq -->
<pre><code>pq = 2185327386484732531</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2185327386484732531 = 1283944313 * 1702042187</code></p>
<pre><code>p = 1283944313
q = 1702042187</code></pre>
<pre><code>pq = 1126354029329455709</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1126354029329455709 = 1047794147 * 1074976447</code></p>
<pre><code>p = 1047794147
q = 1074976447</code></pre>
<!-- end pq -->
<h4><a class="anchor" href="#presenting-proof-of-work-server-authentication" id="presenting-proof-of-work-server-authentication" name="presenting-proof-of-work-server-authentication"><i class="anchor-icon"></i></a>Presenting proof of work; Server authentication</h4>
<h5><a class="anchor" href="#4-encrypted-data-payload-generation" id="4-encrypted-data-payload-generation" name="4-encrypted-data-payload-generation"><i class="anchor-icon"></i></a>4) <code>encrypted_data</code> payload generation</h5>
<p>First of all, generate an <code>encrypted_data</code> payload as follows:</p>
<!-- start p_q_inner_data_dc -->
<p>Generated payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 95 5F F5 A9 08 1E 53 D7 AD FD 5A F2 73 00 00 00
0010 | 04 4C 87 6F 79 00 00 00 04 65 73 1A 4B 00 00 00
0020 | 59 61 46 10 15 D1 2F 9A 72 99 59 CC 38 A8 12 1E
0030 | 3A 55 D0 19 2D C6 6C 12 8C 5C 5E C5 C4 F0 25 B1
0040 | 4D E4 3B 54 09 91 74 21 64 FD 9C D9 21 54 76 69
0050 | CA 87 CA AB 33 BA 10 7E B8 AA 6C F8 F6 0B 7E D6
<pre><code>0000 | 95 5F F5 A9 08 0F A1 9D 05 A1 83 1A 5D 00 00 00
0010 | 04 3E 74 11 E3 00 00 00 04 40 12 D6 BF 00 00 00
0020 | 98 34 7C 45 20 EB E0 DA DB F9 DE F5 87 F6 3A 18
0030 | 9A 91 88 40 20 68 F2 31 91 D9 0C C3 31 3C FE D2
0040 | 87 3C C6 12 C1 7A 98 30 AA 40 41 18 56 12 8B 15
0050 | 2A A6 92 41 8A D8 FC 3B 6A 7E C1 BA DF 1A 7C C3
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 = 1702042187</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>081E53D7ADFD5AF273000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2185327386484732531</td>
<td><code>080FA19D05A1831A5D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1126354029329455709</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>044C876F79000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1283944313</td>
<td><code>043E7411E3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1047794147</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>0465731A4B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1702042187</td>
<td><code>044012D6BF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1074976447</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>5961461015D12F9A729959CC38A8121E</code></td>
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>3A55D0192DC66C128C5C5EC5C4F025B1</code></td>
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>4DE43B540991742164FD9CD921547669</code> <code>CA87CAAB33BA107EB8AA6CF8F60B7ED6</code></td>
<td><code>873CC612C17A9830AA40411856128B15</code> <code>2AA692418AD8FC3B6A7EC1BADF1A7CC3</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1702042187</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 = 955FF5A9081E53D7ADFD5AF273000000044C876F790000000465731A4B0000005961461015D12F9A729959CC38A8121E3A55D0192DC66C128C5C5EC5C4F025B14DE43B540991742164FD9CD921547669CA87CAAB33BA107EB8AA6CF8F60B7ED602000000
random_padding_bytes = 2ED9D33A4D32526B2B430449E4C6B13D566B07CB0F3FCD8CC9D3C669B7374D9585E8C688306E2A90391D344396A38E440254E30BCF3CF10D7F890F7001CECBE155400E8B429BF6085B4D1B3E9E671F1DE18CACF544FF00BACCF71BC1</code></pre>
<pre><code>data = 955FF5A9080FA19D05A1831A5D000000043E7411E3000000044012D6BF00000098347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED2873CC612C17A9830AA40411856128B152AA692418AD8FC3B6A7EC1BADF1A7CC302000000
random_padding_bytes = 7E3A165D4F87FDA3F2B5A0FE14639AACF9EF9C55B1CCA0E1270A3E30543E01D2AEE50E0509B7B25B659285ADB3350478DAEF8C11A5874B34457496D65B199A44C7D18D3C80DFDB21583C46B736C8A59CB332E6E79287F6B492787A60</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 = AE36F90367E6401DE8E3C8FE6497F24A33698905ECC60496BF724D3B8C13978E0069668A9F621F4EC2AE7ACAD04F02CA59C1EE152AD8E2285D8FF57CF80109512737A6719CBDAF94AE725B4C3CC65F416DD13CDD3A8FA39D41A961490476AA2BCF2E3483A746AEC4F80CEFFBBF13891783191D28F60A0A01C4C6EBD34992EC27BF10823840A31E584826AECB8E3F923BC0CE8CDE0E6C273B2E764BDD54D9EA277E3B6D090CA51D58AFB22FE6084A8FC3105FA14A2D35455C01CE5247925C7B8C382C422AD1E52D1628C9987BE5B70829D1515CE8A7199404EFDF27C80A88FF1179656EE5E5D6F6631CC4906216F242C5831D6B915DAEC31CBF8DFB4629691E1D</code></pre>
<pre><code>encrypted_data = 46735142BBFC6C0924570D4792BAB3D3BEF366EB9B3F86167B5969A72E7487968CE37FEE44C7F4AE17558F5411BBB3AFBB4DC21B1823FA6999BD922FF19D382E81E37D3F2EEBF7D15255FF4AFD95B010F7AB894AC4F234014A0A89EEF9DCA7C8E4132D831D7415877C3BC90C02CB17B7FA6038ED76ED61F7AEB2308B3D21CC9EDF4D70D370E176FD93AA1482E9654066CFB656FC9BD6106A3D549AD1A99E2CC5EEBE8AE699B6C1779F5CBC3791F8AF238673E9EBCD48BE5A19635F110567E5A5DE7439B7012E8425F3F0A65B0268A0DB12D2BFABE38558094C8B0E3989DD4ACBEA3952FE16ACB334C23047E2114414B2A2BD43A7AD2A365C86879ABCEBFE417A</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 40 41 01 00 BF 72 AE 66
0010 | 40 01 00 00 BE E4 12 D7 59 61 46 10 15 D1 2F 9A
0020 | 72 99 59 CC 38 A8 12 1E 3A 55 D0 19 2D C6 6C 12
0030 | 8C 5C 5E C5 C4 F0 25 B1 04 4C 87 6F 79 00 00 00
0040 | 04 65 73 1A 4B 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 AE 36 F9 03 67 E6 40 1D E8 E3 C8 FE
0060 | 64 97 F2 4A 33 69 89 05 EC C6 04 96 BF 72 4D 3B
0070 | 8C 13 97 8E 00 69 66 8A 9F 62 1F 4E C2 AE 7A CA
0080 | D0 4F 02 CA 59 C1 EE 15 2A D8 E2 28 5D 8F F5 7C
0090 | F8 01 09 51 27 37 A6 71 9C BD AF 94 AE 72 5B 4C
00A0 | 3C C6 5F 41 6D D1 3C DD 3A 8F A3 9D 41 A9 61 49
00B0 | 04 76 AA 2B CF 2E 34 83 A7 46 AE C4 F8 0C EF FB
00C0 | BF 13 89 17 83 19 1D 28 F6 0A 0A 01 C4 C6 EB D3
00D0 | 49 92 EC 27 BF 10 82 38 40 A3 1E 58 48 26 AE CB
00E0 | 8E 3F 92 3B C0 CE 8C DE 0E 6C 27 3B 2E 76 4B DD
00F0 | 54 D9 EA 27 7E 3B 6D 09 0C A5 1D 58 AF B2 2F E6
0100 | 08 4A 8F C3 10 5F A1 4A 2D 35 45 5C 01 CE 52 47
0110 | 92 5C 7B 8C 38 2C 42 2A D1 E5 2D 16 28 C9 98 7B
0120 | E5 B7 08 29 D1 51 5C E8 A7 19 94 04 EF DF 27 C8
0130 | 0A 88 FF 11 79 65 6E E5 E5 D6 F6 63 1C C4 90 62
0140 | 16 F2 42 C5 83 1D 6B 91 5D AE C3 1C BF 8D FB 46
0150 | 29 69 1E 1D</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 14 15 0C 00 D6 7C AE 66
0010 | 40 01 00 00 BE E4 12 D7 98 34 7C 45 20 EB E0 DA
0020 | DB F9 DE F5 87 F6 3A 18 9A 91 88 40 20 68 F2 31
0030 | 91 D9 0C C3 31 3C FE D2 04 3E 74 11 E3 00 00 00
0040 | 04 40 12 D6 BF 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 46 73 51 42 BB FC 6C 09 24 57 0D 47
0060 | 92 BA B3 D3 BE F3 66 EB 9B 3F 86 16 7B 59 69 A7
0070 | 2E 74 87 96 8C E3 7F EE 44 C7 F4 AE 17 55 8F 54
0080 | 11 BB B3 AF BB 4D C2 1B 18 23 FA 69 99 BD 92 2F
0090 | F1 9D 38 2E 81 E3 7D 3F 2E EB F7 D1 52 55 FF 4A
00A0 | FD 95 B0 10 F7 AB 89 4A C4 F2 34 01 4A 0A 89 EE
00B0 | F9 DC A7 C8 E4 13 2D 83 1D 74 15 87 7C 3B C9 0C
00C0 | 02 CB 17 B7 FA 60 38 ED 76 ED 61 F7 AE B2 30 8B
00D0 | 3D 21 CC 9E DF 4D 70 D3 70 E1 76 FD 93 AA 14 82
00E0 | E9 65 40 66 CF B6 56 FC 9B D6 10 6A 3D 54 9A D1
00F0 | A9 9E 2C C5 EE BE 8A E6 99 B6 C1 77 9F 5C BC 37
0100 | 91 F8 AF 23 86 73 E9 EB CD 48 BE 5A 19 63 5F 11
0110 | 05 67 E5 A5 DE 74 39 B7 01 2E 84 25 F3 F0 A6 5B
0120 | 02 68 A0 DB 12 D2 BF AB E3 85 58 09 4C 8B 0E 39
0130 | 89 DD 4A CB EA 39 52 FE 16 AC B3 34 C2 30 47 E2
0140 | 11 44 14 B2 A2 BD 43 A7 AD 2A 36 5C 86 87 9A BC
0150 | EB FE 41 7A</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 = 2ED9D33A4D32526B2B430449E4C6B13D566B07CB0F3FCD8CC9D3C669B
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>40410100BF72AE66</code></td>
<td><code>14150C00D67CAE66</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -363,25 +363,25 @@ random_padding_bytes = 2ED9D33A4D32526B2B430449E4C6B13D566B07CB0F3FCD8CC9D3C669B
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>5961461015D12F9A729959CC38A8121E</code></td>
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>3A55D0192DC66C128C5C5EC5C4F025B1</code></td>
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>044C876F79000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1283944313</td>
<td><code>043E7411E3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1047794147</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>0465731A4B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1702042187</td>
<td><code>044012D6BF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1074976447</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 = 2ED9D33A4D32526B2B430449E4C6B13D566B07CB0F3FCD8CC9D3C669B
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE000100AE36F90367E6401DE8E3C8FE</code> <code>6497F24A33698905ECC60496BF724D3B</code> <code>8C13978E0069668A9F621F4EC2AE7ACA</code> <code>D04F02CA59C1EE152AD8E2285D8FF57C</code> <code>F80109512737A6719CBDAF94AE725B4C</code> <code>3CC65F416DD13CDD3A8FA39D41A96149</code> <code>0476AA2BCF2E3483A746AEC4F80CEFFB</code> <code>BF13891783191D28F60A0A01C4C6EBD3</code> <code>4992EC27BF10823840A31E584826AECB</code> <code>8E3F923BC0CE8CDE0E6C273B2E764BDD</code> <code>54D9EA277E3B6D090CA51D58AFB22FE6</code> <code>084A8FC3105FA14A2D35455C01CE5247</code> <code>925C7B8C382C422AD1E52D1628C9987B</code> <code>E5B70829D1515CE8A7199404EFDF27C8</code> <code>0A88FF1179656EE5E5D6F6631CC49062</code> <code>16F242C5831D6B915DAEC31CBF8DFB46</code><br> <code>29691E1D</code></td>
<td><code>FE00010046735142BBFC6C0924570D47</code> <code>92BAB3D3BEF366EB9B3F86167B5969A7</code> <code>2E7487968CE37FEE44C7F4AE17558F54</code> <code>11BBB3AFBB4DC21B1823FA6999BD922F</code> <code>F19D382E81E37D3F2EEBF7D15255FF4A</code> <code>FD95B010F7AB894AC4F234014A0A89EE</code> <code>F9DCA7C8E4132D831D7415877C3BC90C</code> <code>02CB17B7FA6038ED76ED61F7AEB2308B</code> <code>3D21CC9EDF4D70D370E176FD93AA1482</code> <code>E9654066CFB656FC9BD6106A3D549AD1</code> <code>A99E2CC5EEBE8AE699B6C1779F5CBC37</code> <code>91F8AF238673E9EBCD48BE5A19635F11</code> <code>0567E5A5DE7439B7012E8425F3F0A65B</code> <code>0268A0DB12D2BFABE38558094C8B0E39</code> <code>89DD4ACBEA3952FE16ACB334C23047E2</code> <code>114414B2A2BD43A7AD2A365C86879ABC</code><br> <code>EBFE417A</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 2ED9D33A4D32526B2B430449E4C6B13D566B07CB0F3FCD8CC9D3C669B
<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 C8 14 9D BF 72 AE 66
0010 | C8 02 00 00 5C 07 E8 D0 59 61 46 10 15 D1 2F 9A
0020 | 72 99 59 CC 38 A8 12 1E 3A 55 D0 19 2D C6 6C 12
0030 | 8C 5C 5E C5 C4 F0 25 B1 FE 50 02 00 74 71 FC A2
0040 | DC C5 D8 A5 71 46 A5 F3 A7 AC 48 48 26 94 F9 8B
0050 | 93 48 0F 50 DB 1E 2B 8F 27 BC FF 3A E1 EA FC E1
0060 | 06 A9 3A 3D 52 53 63 4A 43 15 7F 85 F9 E0 BC 08
0070 | 35 95 AB AE 92 4A CD 77 3F 32 6F EA 17 9C 8C 55
0080 | 7D 98 6B EE 26 92 3C FC D0 05 7B 95 D3 36 A6 27
0090 | 65 59 81 6B BD AB B9 DA F7 F0 F7 B0 8B 25 DA FA
00A0 | FF F5 5B C4 89 95 B6 D2 08 7F 00 B9 6C E7 18 BA
00B0 | 05 14 EF DF 94 59 30 6C A0 43 09 20 4E DC 92 88
00C0 | E7 F8 4F 8C 69 AD 44 17 1C 2B 37 B2 48 67 3F 48
00D0 | E7 B2 FE 6E 2A 7D 43 6A AD EE 49 8C 81 B1 D6 C0
00E0 | 97 25 46 3D E1 E7 4B E9 01 18 51 34 8B 73 E4 65
00F0 | B2 D4 BB D4 E3 60 61 4E D7 74 FC 3C CB F7 29 38
0100 | F5 73 CE C3 F1 62 33 F2 92 B0 6A A3 38 65 9E D4
0110 | 3E BC 07 7A C6 B5 2A 94 17 CB B7 88 B7 24 97 8E
0120 | F5 9E 4C 29 ED E1 54 1F 81 8E 05 68 A8 25 03 0A
0130 | 90 53 52 EF B0 76 CC CE 7C 78 E9 22 FF 76 41 28
0140 | 7B 48 0A 22 7C 55 C9 FE E1 97 5C B8 89 5C EF 71
0150 | F1 87 89 52 43 2B 34 F8 18 AB 84 BB A7 3E 7F C1
0160 | 0F 7A 3D F4 53 B4 D5 DF 4A D6 D5 BC 92 C2 3C B4
0170 | 80 84 C7 95 1B BD B3 25 EE 37 33 A8 A1 1F 8A C6
0180 | E6 D0 32 F0 83 58 92 B2 81 0A F9 EB B4 D1 2C 70
0190 | B2 0F CB 5B 38 AD 1F 33 B0 32 0C 2C FE 39 01 B9
01A0 | 7A 4D BA 3C 06 AB 24 F3 89 B3 C4 1E 7E 99 B6 B2
01B0 | B9 75 B2 DB 47 31 7A 2D A9 9A AB BA 19 E2 6C B0
01C0 | BD D1 84 F4 8F FF 1F 47 CB 46 BC 6F C5 57 45 47
01D0 | 84 D1 24 4F CC 88 55 09 10 C2 CF 3F 22 04 84 46
01E0 | 39 59 D5 FF 1D 50 F6 FB D5 A0 2C 9C DC 21 84 CF
01F0 | 97 8B E4 8C 29 59 0F 85 A6 AB E0 75 5D 61 05 9D
0200 | 9D F3 A3 94 C3 E4 D2 7E 0A 63 DD 0B B0 56 2C CA
0210 | 0B E9 4F CE DB AA F1 6D 9D 50 02 1A FD 03 90 DB
0220 | D7 B9 62 D2 CF E5 E3 43 B3 03 32 7B 6F 14 F8 FC
0230 | 54 FA FE 74 E6 F8 6C FF 7A 53 B6 34 52 12 5D 3A
0240 | DD 35 DD E2 FA C5 1A 8A 74 79 19 70 7E D0 87 14
0250 | 7B 89 5D 57 82 E7 B4 CD 98 5D 2A D0 9E B0 C9 F4
0260 | 09 85 04 58 B0 BC 18 95 26 27 3D 88 BE A0 C3 6F
0270 | 17 56 00 59 68 D5 7B F7 E9 88 87 25 4E 93 92 30
0280 | D1 89 34 C1 A8 1B A1 A5 78 F2 49 67</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 8C 73 A4 D6 7C AE 66
0010 | B8 02 00 00 5C 07 E8 D0 98 34 7C 45 20 EB E0 DA
0020 | DB F9 DE F5 87 F6 3A 18 9A 91 88 40 20 68 F2 31
0030 | 91 D9 0C C3 31 3C FE D2 FE 50 02 00 F1 03 E3 4D
0040 | 57 63 16 DC 3A 7E 00 30 86 5E D0 4F A6 29 83 96
0050 | 12 B9 5E D3 78 F8 BB A2 F7 6A 07 1B D1 F0 E7 51
0060 | C5 74 41 ED F5 1E C1 96 3F 9C 88 69 EF 96 F1 58
0070 | 78 B1 2D 3A 1A 67 C9 4E B2 DF D6 A2 D7 C0 A0 89
0080 | 90 F1 EF C7 60 9A EC 68 12 75 32 6F 16 81 CD F5
0090 | 7F 90 F1 DE 61 0C 79 31 1C 4C EC 4D 07 75 D3 39
00A0 | 4B 3F 8B BD 47 F5 0E F1 0D A9 A3 36 38 9A 25 9E
00B0 | 6A F9 CA D0 26 83 AE 29 24 57 52 F0 88 08 1D 1F
00C0 | 79 49 69 86 51 E7 59 E1 EF F9 74 E4 FF 3A 21 AA
00D0 | F3 E7 3C 92 E2 CF 7C FB F2 46 0D ED 2D 83 B1 A6
00E0 | A7 AC 31 C8 D0 93 F1 FA 4E 19 22 03 59 CA 59 39
00F0 | 5F EF 93 9D C3 DD D5 48 C3 CE 9E F6 8A FD 99 48
0100 | 8A 70 34 CC 0F CE 55 C7 F1 62 39 C1 82 AE A5 AF
0110 | 96 54 64 B6 C7 7B CC 47 C2 04 2D 4D 1A 8D 6E 00
0120 | F5 25 68 D5 1B 30 08 8C 12 3C 0C 25 A9 56 A5 9C
0130 | 8D 35 87 EA 9A 0B 8C 1E 81 46 75 87 4C 1D 92 8E
0140 | 0A 92 A0 6E CF 5B EC 44 C2 53 8D 05 A1 D6 DC 87
0150 | BB 72 48 C8 DD 8A 86 B0 68 5B 75 AC B4 79 A4 A9
0160 | BC DB 51 A7 9D D5 AA F5 51 64 69 A5 2A 47 93 A2
0170 | 77 C3 9B 08 D8 FB 5C 55 58 EB 38 44 5E 78 CD FF
0180 | C3 41 8F A5 BC 6D 3F 22 E6 75 EF 65 A1 9D 4C 34
0190 | F8 0D 11 CF 45 90 6E AB 4B 4D 4E 94 12 97 67 89
01A0 | DD 90 51 99 40 3A C5 86 A3 F2 58 0F 7F 9E BC 86
01B0 | F9 1B 78 F8 E7 5B 0A 89 A6 5E 71 EB 90 F4 D7 9A
01C0 | FA B7 CF 44 B1 C9 93 16 2F 38 E1 D7 6E EA 16 20
01D0 | E5 29 4B A9 FB A3 26 6A 58 C8 D2 92 E8 2E 6D E7
01E0 | DA D3 06 4D 0C 70 EB 8E AD B9 80 23 B7 83 AF BD
01F0 | 11 CE AD 10 3F 31 99 8E 43 DB 27 04 F8 92 AC EA
0200 | 10 08 0B 02 6A CB 12 17 90 D4 AA E7 4A 95 19 BB
0210 | 9F 1F 5C BA 8F 55 DB A2 90 57 FA 22 41 76 BB D9
0220 | 6F 4B 8F 0A 8E 98 9A 5A 3B 4D 9F 5B 39 70 F9 34
0230 | D2 0A E9 39 89 FE 13 B0 E4 87 17 06 B5 0E C9 B7
0240 | 61 38 9F D0 25 65 E2 C8 49 39 69 90 3D 13 A7 F8
0250 | 3A 7C 0E 69 5F 69 76 7A E0 91 C4 10 0E 50 45 84
0260 | 6F B8 CD FD 85 6A 4D A3 DD DF 8F 5E 90 09 DC 1D
0270 | F0 C9 F2 43 6A 77 06 7F 56 A1 D2 C0 04 E3 97 C3
0280 | 15 3C CA 8B E1 A3 6E 29 DD 8D FA AB</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 = 2ED9D33A4D32526B2B430449E4C6B13D566B07CB0F3FCD8CC9D3C669B
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01C8149DBF72AE66</code></td>
<td><code>018C73A4D67CAE66</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>C8020000</code> (712 in decimal)</td>
<td><code>B8020000</code> (696 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 2ED9D33A4D32526B2B430449E4C6B13D566B07CB0F3FCD8CC9D3C669B
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>5961461015D12F9A729959CC38A8121E</code></td>
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>3A55D0192DC66C128C5C5EC5C4F025B1</code></td>
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002007471FCA2DCC5D8A57146A5F3</code> <code>A7AC48482694F98B93480F50DB1E2B8F</code> <code>27BCFF3AE1EAFCE106A93A3D5253634A</code> <code>43157F85F9E0BC083595ABAE924ACD77</code> <code>3F326FEA179C8C557D986BEE26923CFC</code> <code>D0057B95D336A6276559816BBDABB9DA</code> <code>F7F0F7B08B25DAFAFFF55BC48995B6D2</code> <code>087F00B96CE718BA0514EFDF9459306C</code> <code>A04309204EDC9288E7F84F8C69AD4417</code> <code>1C2B37B248673F48E7B2FE6E2A7D436A</code> <code>ADEE498C81B1D6C09725463DE1E74BE9</code> <code>011851348B73E465B2D4BBD4E360614E</code> <code>D774FC3CCBF72938F573CEC3F16233F2</code> <code>92B06AA338659ED43EBC077AC6B52A94</code> <code>17CBB788B724978EF59E4C29EDE1541F</code> <code>818E0568A825030A905352EFB076CCCE</code> <code>7C78E922FF7641287B480A227C55C9FE</code> <code>E1975CB8895CEF71F1878952432B34F8</code> <code>18AB84BBA73E7FC10F7A3DF453B4D5DF</code> <code>4AD6D5BC92C23CB48084C7951BBDB325</code> <code>EE3733A8A11F8AC6E6D032F0835892B2</code> <code>810AF9EBB4D12C70B20FCB5B38AD1F33</code> <code>B0320C2CFE3901B97A4DBA3C06AB24F3</code> <code>89B3C41E7E99B6B2B975B2DB47317A2D</code> <code>A99AABBA19E26CB0BDD184F48FFF1F47</code> <code>CB46BC6FC557454784D1244FCC885509</code> <code>10C2CF3F220484463959D5FF1D50F6FB</code> <code>D5A02C9CDC2184CF978BE48C29590F85</code> <code>A6ABE0755D61059D9DF3A394C3E4D27E</code> <code>0A63DD0BB0562CCA0BE94FCEDBAAF16D</code> <code>9D50021AFD0390DBD7B962D2CFE5E343</code> <code>B303327B6F14F8FC54FAFE74E6F86CFF</code> <code>7A53B63452125D3ADD35DDE2FAC51A8A</code> <code>747919707ED087147B895D5782E7B4CD</code> <code>985D2AD09EB0C9F409850458B0BC1895</code> <code>26273D88BEA0C36F1756005968D57BF7</code> <code>E98887254E939230D18934C1A81BA1A5</code><br> <code>78F24967</code></td>
<td><code>FE500200F103E34D576316DC3A7E0030</code> <code>865ED04FA629839612B95ED378F8BBA2</code> <code>F76A071BD1F0E751C57441EDF51EC196</code> <code>3F9C8869EF96F15878B12D3A1A67C94E</code> <code>B2DFD6A2D7C0A08990F1EFC7609AEC68</code> <code>1275326F1681CDF57F90F1DE610C7931</code> <code>1C4CEC4D0775D3394B3F8BBD47F50EF1</code> <code>0DA9A336389A259E6AF9CAD02683AE29</code> <code>245752F088081D1F7949698651E759E1</code> <code>EFF974E4FF3A21AAF3E73C92E2CF7CFB</code> <code>F2460DED2D83B1A6A7AC31C8D093F1FA</code> <code>4E19220359CA59395FEF939DC3DDD548</code> <code>C3CE9EF68AFD99488A7034CC0FCE55C7</code> <code>F16239C182AEA5AF965464B6C77BCC47</code> <code>C2042D4D1A8D6E00F52568D51B30088C</code> <code>123C0C25A956A59C8D3587EA9A0B8C1E</code> <code>814675874C1D928E0A92A06ECF5BEC44</code> <code>C2538D05A1D6DC87BB7248C8DD8A86B0</code> <code>685B75ACB479A4A9BCDB51A79DD5AAF5</code> <code>516469A52A4793A277C39B08D8FB5C55</code> <code>58EB38445E78CDFFC3418FA5BC6D3F22</code> <code>E675EF65A19D4C34F80D11CF45906EAB</code> <code>4B4D4E9412976789DD905199403AC586</code> <code>A3F2580F7F9EBC86F91B78F8E75B0A89</code> <code>A65E71EB90F4D79AFAB7CF44B1C99316</code> <code>2F38E1D76EEA1620E5294BA9FBA3266A</code> <code>58C8D292E82E6DE7DAD3064D0C70EB8E</code> <code>ADB98023B783AFBD11CEAD103F31998E</code> <code>43DB2704F892ACEA10080B026ACB1217</code> <code>90D4AAE74A9519BB9F1F5CBA8F55DBA2</code> <code>9057FA224176BBD96F4B8F0A8E989A5A</code> <code>3B4D9F5B3970F934D20AE93989FE13B0</code> <code>E4871706B50EC9B761389FD02565E2C8</code> <code>493969903D13A7F83A7C0E695F69767A</code> <code>E091C4100E5045846FB8CDFD856A4DA3</code> <code>DDDF8F5E9009DC1DF0C9F2436A77067F</code> <code>56A1D2C004E397C3153CCA8BE1A36E29</code><br> <code>DD8DFAAB</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 2ED9D33A4D32526B2B430449E4C6B13D566B07CB0F3FCD8CC9D3C669B
<!-- 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 = 7471FCA2DCC5D8A57146A5F3A7AC48482694F98B93480F50DB1E2B8F27BCFF3AE1EAFCE106A93A3D5253634A43157F85F9E0BC083595ABAE924ACD773F326FEA179C8C557D986BEE26923CFCD0057B95D336A6276559816BBDABB9DAF7F0F7B08B25DAFAFFF55BC48995B6D2087F00B96CE718BA0514EFDF9459306CA04309204EDC9288E7F84F8C69AD44171C2B37B248673F48E7B2FE6E2A7D436AADEE498C81B1D6C09725463DE1E74BE9011851348B73E465B2D4BBD4E360614ED774FC3CCBF72938F573CEC3F16233F292B06AA338659ED43EBC077AC6B52A9417CBB788B724978EF59E4C29EDE1541F818E0568A825030A905352EFB076CCCE7C78E922FF7641287B480A227C55C9FEE1975CB8895CEF71F1878952432B34F818AB84BBA73E7FC10F7A3DF453B4D5DF4AD6D5BC92C23CB48084C7951BBDB325EE3733A8A11F8AC6E6D032F0835892B2810AF9EBB4D12C70B20FCB5B38AD1F33B0320C2CFE3901B97A4DBA3C06AB24F389B3C41E7E99B6B2B975B2DB47317A2DA99AABBA19E26CB0BDD184F48FFF1F47CB46BC6FC557454784D1244FCC88550910C2CF3F220484463959D5FF1D50F6FBD5A02C9CDC2184CF978BE48C29590F85A6ABE0755D61059D9DF3A394C3E4D27E0A63DD0BB0562CCA0BE94FCEDBAAF16D9D50021AFD0390DBD7B962D2CFE5E343B303327B6F14F8FC54FAFE74E6F86CFF7A53B63452125D3ADD35DDE2FAC51A8A747919707ED087147B895D5782E7B4CD985D2AD09EB0C9F409850458B0BC189526273D88BEA0C36F1756005968D57BF7E98887254E939230D18934C1A81BA1A578F24967
tmp_aes_key = 8FE1C7AA466D69BC2CA662D231CBA55187624040931DF384876D11FDBB183CEF
tmp_aes_iv = DAE265F5C19D6BA057B409EE108DF6D9ADCA5DBDFF95D662DDB7E9CE4DE43B54</code></pre>
<pre><code>encrypted_answer = F103E34D576316DC3A7E0030865ED04FA629839612B95ED378F8BBA2F76A071BD1F0E751C57441EDF51EC1963F9C8869EF96F15878B12D3A1A67C94EB2DFD6A2D7C0A08990F1EFC7609AEC681275326F1681CDF57F90F1DE610C79311C4CEC4D0775D3394B3F8BBD47F50EF10DA9A336389A259E6AF9CAD02683AE29245752F088081D1F7949698651E759E1EFF974E4FF3A21AAF3E73C92E2CF7CFBF2460DED2D83B1A6A7AC31C8D093F1FA4E19220359CA59395FEF939DC3DDD548C3CE9EF68AFD99488A7034CC0FCE55C7F16239C182AEA5AF965464B6C77BCC47C2042D4D1A8D6E00F52568D51B30088C123C0C25A956A59C8D3587EA9A0B8C1E814675874C1D928E0A92A06ECF5BEC44C2538D05A1D6DC87BB7248C8DD8A86B0685B75ACB479A4A9BCDB51A79DD5AAF5516469A52A4793A277C39B08D8FB5C5558EB38445E78CDFFC3418FA5BC6D3F22E675EF65A19D4C34F80D11CF45906EAB4B4D4E9412976789DD905199403AC586A3F2580F7F9EBC86F91B78F8E75B0A89A65E71EB90F4D79AFAB7CF44B1C993162F38E1D76EEA1620E5294BA9FBA3266A58C8D292E82E6DE7DAD3064D0C70EB8EADB98023B783AFBD11CEAD103F31998E43DB2704F892ACEA10080B026ACB121790D4AAE74A9519BB9F1F5CBA8F55DBA29057FA224176BBD96F4B8F0A8E989A5A3B4D9F5B3970F934D20AE93989FE13B0E4871706B50EC9B761389FD02565E2C8493969903D13A7F83A7C0E695F69767AE091C4100E5045846FB8CDFD856A4DA3DDDF8F5E9009DC1DF0C9F2436A77067F56A1D2C004E397C3153CCA8BE1A36E29DD8DFAAB
tmp_aes_key = 1FFFA9B5D7E45DB6209F9E01E4696BF605CADC0FDDE85B3DBE7DA3D1340F6FFC
tmp_aes_iv = 775604724F7BA654671797DB82CF137216DA2B7B0508157953386F9E873CC612</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = B83B6DB5B7C5DC392ABB0670C5D48B882029B1F2BA0D89B55961461015D12F9A729959CC38A8121E3A55D0192DC66C128C5C5EC5C4F025B103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002E4355723122477401E5E5312EE12B2B692B31E7A8C061AB278709A53EAEE4CFDFDD653DD1EB009610AB5E20E27F2F085E2F5372D50D6A47F196E590A52755CFF4F840BE47C6703553E70BEB384B4F905F68E61C387CFC9B9D0EC8D0DEB59E9E645B4DCB504F3E9E7AD34CEEE75A0EDBA08EFA476CBDAC102146DBEB0ECD47F5350A75A17ABD94EF62704A540530B62C93D89AE46BCA5B2312E4AAD68460E32D63E990A75AB8E51017E4FC806C990D0452FE42EDF57E6D7B85157CB7B60C975F512F3E4CEA21781FAAED4704CF810620BC59FF2975693628A1E378BBC18A9343738A677B12A2000D1B3F29434B6019B1A27C94EC786C1209CCAE1DC6375FE95CBF72AE6635F4238179B78A94
answer = BA0D89B55961461015D12F9A729959CC38A8121E3A55D0192DC66C128C5C5EC5C4F025B103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002E4355723122477401E5E5312EE12B2B692B31E7A8C061AB278709A53EAEE4CFDFDD653DD1EB009610AB5E20E27F2F085E2F5372D50D6A47F196E590A52755CFF4F840BE47C6703553E70BEB384B4F905F68E61C387CFC9B9D0EC8D0DEB59E9E645B4DCB504F3E9E7AD34CEEE75A0EDBA08EFA476CBDAC102146DBEB0ECD47F5350A75A17ABD94EF62704A540530B62C93D89AE46BCA5B2312E4AAD68460E32D63E990A75AB8E51017E4FC806C990D0452FE42EDF57E6D7B85157CB7B60C975F512F3E4CEA21781FAAED4704CF810620BC59FF2975693628A1E378BBC18A9343738A677B12A2000D1B3F29434B6019B1A27C94EC786C1209CCAE1DC6375FE95CBF72AE6635F4238179B78A94</code></pre>
<pre><code>answer_with_hash = C1E648CED14AFB4B06CAC0DBF81C193BCF7E9AA9BA0D89B598347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010045BE02C3DFE09F63C4761C2224C02BE4A07B1CC2B3A17019999A8893C2A190D7802D4E1D4BEBC4858B2D37DC9BADD9402F9AA494C22F989A237DFBCF523EB79A4870E81D33A134A0108E3A156834951EE4E29F08F35669B0B8DD7228803C601619013CA0A424A036DD4F5405BEFDEC63344567CA13CA3E293881E38F611D02207899E2CBCB37A07DD5463ED93D21DE6098F73D57B4865CE58489D4EB4391AF9195AB08CF724BFD5B6CC9331E43D88DE8C2D3F8356AEF78F7BD369298F5DADF01B9749479D8594B10E408A5DB3C54809B02F4347238A20CF74EFF8D2A4973F70521EB3020A4DAE9881A6D0ECE7F73E9079BB77D095EFBC41872427500C26C2748D67CAE663C396F053C33D658
answer = BA0D89B598347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010045BE02C3DFE09F63C4761C2224C02BE4A07B1CC2B3A17019999A8893C2A190D7802D4E1D4BEBC4858B2D37DC9BADD9402F9AA494C22F989A237DFBCF523EB79A4870E81D33A134A0108E3A156834951EE4E29F08F35669B0B8DD7228803C601619013CA0A424A036DD4F5405BEFDEC63344567CA13CA3E293881E38F611D02207899E2CBCB37A07DD5463ED93D21DE6098F73D57B4865CE58489D4EB4391AF9195AB08CF724BFD5B6CC9331E43D88DE8C2D3F8356AEF78F7BD369298F5DADF01B9749479D8594B10E408A5DB3C54809B02F4347238A20CF74EFF8D2A4973F70521EB3020A4DAE9881A6D0ECE7F73E9079BB77D095EFBC41872427500C26C2748D67CAE663C396F053C33D658</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 59 61 46 10 15 D1 2F 9A 72 99 59 CC
0010 | 38 A8 12 1E 3A 55 D0 19 2D C6 6C 12 8C 5C 5E C5
0020 | C4 F0 25 B1 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 98 34 7C 45 20 EB E0 DA DB F9 DE F5
0010 | 87 F6 3A 18 9A 91 88 40 20 68 F2 31 91 D9 0C C3
0020 | 31 3C FE D2 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 = BA0D89B55961461015D12F9A729959CC38A8121E3A55D0192DC66C128C5C5EC5C4F025B
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 | 2E 43 55 72 31 22 47 74 01 E5 E5 31 2E E1 2B 2B
0140 | 69 2B 31 E7 A8 C0 61 AB 27 87 09 A5 3E AE E4 CF
0150 | DF DD 65 3D D1 EB 00 96 10 AB 5E 20 E2 7F 2F 08
0160 | 5E 2F 53 72 D5 0D 6A 47 F1 96 E5 90 A5 27 55 CF
0170 | F4 F8 40 BE 47 C6 70 35 53 E7 0B EB 38 4B 4F 90
0180 | 5F 68 E6 1C 38 7C FC 9B 9D 0E C8 D0 DE B5 9E 9E
0190 | 64 5B 4D CB 50 4F 3E 9E 7A D3 4C EE E7 5A 0E DB
01A0 | A0 8E FA 47 6C BD AC 10 21 46 DB EB 0E CD 47 F5
01B0 | 35 0A 75 A1 7A BD 94 EF 62 70 4A 54 05 30 B6 2C
01C0 | 93 D8 9A E4 6B CA 5B 23 12 E4 AA D6 84 60 E3 2D
01D0 | 63 E9 90 A7 5A B8 E5 10 17 E4 FC 80 6C 99 0D 04
01E0 | 52 FE 42 ED F5 7E 6D 7B 85 15 7C B7 B6 0C 97 5F
01F0 | 51 2F 3E 4C EA 21 78 1F AA ED 47 04 CF 81 06 20
0200 | BC 59 FF 29 75 69 36 28 A1 E3 78 BB C1 8A 93 43
0210 | 73 8A 67 7B 12 A2 00 0D 1B 3F 29 43 4B 60 19 B1
0220 | A2 7C 94 EC 78 6C 12 09 CC AE 1D C6 37 5F E9 5C
0230 | BF 72 AE 66</code></pre>
0130 | 45 BE 02 C3 DF E0 9F 63 C4 76 1C 22 24 C0 2B E4
0140 | A0 7B 1C C2 B3 A1 70 19 99 9A 88 93 C2 A1 90 D7
0150 | 80 2D 4E 1D 4B EB C4 85 8B 2D 37 DC 9B AD D9 40
0160 | 2F 9A A4 94 C2 2F 98 9A 23 7D FB CF 52 3E B7 9A
0170 | 48 70 E8 1D 33 A1 34 A0 10 8E 3A 15 68 34 95 1E
0180 | E4 E2 9F 08 F3 56 69 B0 B8 DD 72 28 80 3C 60 16
0190 | 19 01 3C A0 A4 24 A0 36 DD 4F 54 05 BE FD EC 63
01A0 | 34 45 67 CA 13 CA 3E 29 38 81 E3 8F 61 1D 02 20
01B0 | 78 99 E2 CB CB 37 A0 7D D5 46 3E D9 3D 21 DE 60
01C0 | 98 F7 3D 57 B4 86 5C E5 84 89 D4 EB 43 91 AF 91
01D0 | 95 AB 08 CF 72 4B FD 5B 6C C9 33 1E 43 D8 8D E8
01E0 | C2 D3 F8 35 6A EF 78 F7 BD 36 92 98 F5 DA DF 01
01F0 | B9 74 94 79 D8 59 4B 10 E4 08 A5 DB 3C 54 80 9B
0200 | 02 F4 34 72 38 A2 0C F7 4E FF 8D 2A 49 73 F7 05
0210 | 21 EB 30 20 A4 DA E9 88 1A 6D 0E CE 7F 73 E9 07
0220 | 9B B7 7D 09 5E FB C4 18 72 42 75 00 C2 6C 27 48
0230 | D6 7C AE 66</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B55961461015D12F9A729959CC38A8121E3A55D0192DC66C128C5C5EC5C4F025B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>5961461015D12F9A729959CC38A8121E</code></td>
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>3A55D0192DC66C128C5C5EC5C4F025B1</code></td>
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B55961461015D12F9A729959CC38A8121E3A55D0192DC66C128C5C5EC5C4F025B
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001002E4355723122477401E5E531</code> <code>2EE12B2B692B31E7A8C061AB278709A5</code> <code>3EAEE4CFDFDD653DD1EB009610AB5E20</code> <code>E27F2F085E2F5372D50D6A47F196E590</code> <code>A52755CFF4F840BE47C6703553E70BEB</code> <code>384B4F905F68E61C387CFC9B9D0EC8D0</code> <code>DEB59E9E645B4DCB504F3E9E7AD34CEE</code> <code>E75A0EDBA08EFA476CBDAC102146DBEB</code> <code>0ECD47F5350A75A17ABD94EF62704A54</code> <code>0530B62C93D89AE46BCA5B2312E4AAD6</code> <code>8460E32D63E990A75AB8E51017E4FC80</code> <code>6C990D0452FE42EDF57E6D7B85157CB7</code> <code>B60C975F512F3E4CEA21781FAAED4704</code> <code>CF810620BC59FF2975693628A1E378BB</code> <code>C18A9343738A677B12A2000D1B3F2943</code> <code>4B6019B1A27C94EC786C1209CCAE1DC6</code><br> <code>375FE95C</code></td>
<td><code>FE00010045BE02C3DFE09F63C4761C22</code> <code>24C02BE4A07B1CC2B3A17019999A8893</code> <code>C2A190D7802D4E1D4BEBC4858B2D37DC</code> <code>9BADD9402F9AA494C22F989A237DFBCF</code> <code>523EB79A4870E81D33A134A0108E3A15</code> <code>6834951EE4E29F08F35669B0B8DD7228</code> <code>803C601619013CA0A424A036DD4F5405</code> <code>BEFDEC63344567CA13CA3E293881E38F</code> <code>611D02207899E2CBCB37A07DD5463ED9</code> <code>3D21DE6098F73D57B4865CE58489D4EB</code> <code>4391AF9195AB08CF724BFD5B6CC9331E</code> <code>43D88DE8C2D3F8356AEF78F7BD369298</code> <code>F5DADF01B9749479D8594B10E408A5DB</code> <code>3C54809B02F4347238A20CF74EFF8D2A</code> <code>4973F70521EB3020A4DAE9881A6D0ECE</code> <code>7F73E9079BB77D095EFBC41872427500</code><br> <code>C26C2748</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>BF72AE66</code> (1722708671 in decimal)</td>
<td><code>D67CAE66</code> (1722711254 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B55961461015D12F9A729959CC38A8121E3A55D0192DC66C128C5C5EC5C4F025B
<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 = CDB97A803C4B396F18113566E043087EA1FF978C66A5597D8379F2E737206C9BE578CC10054270D7B8F6C53E65539726673DA5ADA81C89A2DD37AFDFE5DAD9614D36E3E5281FF261F6DDF2515A8200020E360E670314D71BEACAACD68C4962E005885434A35C13D9FAE943AD0558ABFD96EAE5EDAAEEF7B125E693E89CDB2D8419F8EB57A4E786DC60B2482E7EEE8D6F5894EB750B27AD44829549C01EA98E4878C5DFD26CCC3A69D8729E6B4FC0B3155E896CF5DE6AAE8C7EAE8BBC4AF8272A5190D083A32D80D539EBFD27EB5D117ED33A85C906EF3C51219D8C6FA8641F453E8A5B1CDCF041DCC15C1AAA0C5E65B987053B2AD5A65E48B74E985357916293</code></pre>
<pre><code>b = 488B742194B2B37D45C22916124ECF11D98311BA876C50A69433BA0D3A023359BD840D58389EBF223C79097926869213F2715226FD2484B239A3C3D8E6BE303614D9AC3707608747DE436A38F7BAC04AD4D3BFDE63798BE03DF41FF18118D72DB74FBEB7D799E30022D3581454B7AD46822EFF3B32A41690947189FC2B0AC9E1FA76873C2EE87D092192D06320230B11596959A4E71AD220048A56DA3F2BEF566E2EF1F0F11A89B107279269254769BC54C45E7CED7490AED498F2EABEF7769599960503D4F2AE93B288ED991E3F5780F83F8C985CC18CBC73EA431FD3414C4AFBBEF63B1863B61CCB69D2C9F18E780BDACDE059CBC9C9557C7CD029B01ED3E5</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 = 8A2CB602C36171DB8B884A52F73FFD24B53C988587C4110A9D0C99B6093939BD8444B6E2FAD50B0ABFB2D953086F5DD4DAB2F870D4E702434B229B05ABC5AD9D12A6E945EAA86701D84565A8FA99A9DB5AA1A58D3C081E52F4701063E202641975B10531F931639B152B2869BD2B9E7279677D3F5EE56A216365B222B06F94D616390FEC09747A7F9CC55098D9BF6836B5219B88BED2351BE98A45ED6353D2A20974F040496C53CA6C592D5750C5D93BF09CF38C281EA487330572178B0F91F6F4F61903D02953F1F8E0C059357566470F8F1743F8260B3519188815ADCAD95E6F4D9067BFB41FC8E41C6E05F25C5A12BAF39D2070F303BEE13CAC7C4AE90ED5</code></pre>
<pre><code>g_b = 55AEDE83E23F21E7F3E81526E01C2C64FBD8A8C1A9951E828E262226F8B3A81A28C68943F7285BDA3DAC6AC1533283F0BCA77BE945F2F36067CFAA287B67C2B68659CC7543B0601BDA60DA0CF95BC29AD1CA01CD023B69C13DC5D733A741B1E904BEB8F78277B91771F31526E9F2D4A01B41671038E00AF59046F8FFB204DA1AB6878D13B6FCBF91F6D0E9A47320CF9096E46EBA132DB37D2DFC8A36B45317C125D947A526097CB810E69398F918C50F6589C5FEF815ACC28D4127F9D6A1FF767E9108D7B60D5C6E6D68C2A270E2747D7DD35295BD477B4ACFA0BAE3E4CA3E62F3292626EEC7F645F816279C645BC75F704F9EED4DADC05AD2ED7E98D24D88E1</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 59 61 46 10 15 D1 2F 9A 72 99 59 CC
0010 | 38 A8 12 1E 3A 55 D0 19 2D C6 6C 12 8C 5C 5E C5
0020 | C4 F0 25 B1 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 8A 2C B6 02 C3 61 71 DB 8B 88 4A 52 F7 3F FD 24
0040 | B5 3C 98 85 87 C4 11 0A 9D 0C 99 B6 09 39 39 BD
0050 | 84 44 B6 E2 FA D5 0B 0A BF B2 D9 53 08 6F 5D D4
0060 | DA B2 F8 70 D4 E7 02 43 4B 22 9B 05 AB C5 AD 9D
0070 | 12 A6 E9 45 EA A8 67 01 D8 45 65 A8 FA 99 A9 DB
0080 | 5A A1 A5 8D 3C 08 1E 52 F4 70 10 63 E2 02 64 19
0090 | 75 B1 05 31 F9 31 63 9B 15 2B 28 69 BD 2B 9E 72
00A0 | 79 67 7D 3F 5E E5 6A 21 63 65 B2 22 B0 6F 94 D6
00B0 | 16 39 0F EC 09 74 7A 7F 9C C5 50 98 D9 BF 68 36
00C0 | B5 21 9B 88 BE D2 35 1B E9 8A 45 ED 63 53 D2 A2
00D0 | 09 74 F0 40 49 6C 53 CA 6C 59 2D 57 50 C5 D9 3B
00E0 | F0 9C F3 8C 28 1E A4 87 33 05 72 17 8B 0F 91 F6
00F0 | F4 F6 19 03 D0 29 53 F1 F8 E0 C0 59 35 75 66 47
0100 | 0F 8F 17 43 F8 26 0B 35 19 18 88 15 AD CA D9 5E
0110 | 6F 4D 90 67 BF B4 1F C8 E4 1C 6E 05 F2 5C 5A 12
0120 | BA F3 9D 20 70 F3 03 BE E1 3C AC 7C 4A E9 0E D5</code></pre>
<pre><code>0000 | 54 B6 43 66 98 34 7C 45 20 EB E0 DA DB F9 DE F5
0010 | 87 F6 3A 18 9A 91 88 40 20 68 F2 31 91 D9 0C C3
0020 | 31 3C FE D2 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 55 AE DE 83 E2 3F 21 E7 F3 E8 15 26 E0 1C 2C 64
0040 | FB D8 A8 C1 A9 95 1E 82 8E 26 22 26 F8 B3 A8 1A
0050 | 28 C6 89 43 F7 28 5B DA 3D AC 6A C1 53 32 83 F0
0060 | BC A7 7B E9 45 F2 F3 60 67 CF AA 28 7B 67 C2 B6
0070 | 86 59 CC 75 43 B0 60 1B DA 60 DA 0C F9 5B C2 9A
0080 | D1 CA 01 CD 02 3B 69 C1 3D C5 D7 33 A7 41 B1 E9
0090 | 04 BE B8 F7 82 77 B9 17 71 F3 15 26 E9 F2 D4 A0
00A0 | 1B 41 67 10 38 E0 0A F5 90 46 F8 FF B2 04 DA 1A
00B0 | B6 87 8D 13 B6 FC BF 91 F6 D0 E9 A4 73 20 CF 90
00C0 | 96 E4 6E BA 13 2D B3 7D 2D FC 8A 36 B4 53 17 C1
00D0 | 25 D9 47 A5 26 09 7C B8 10 E6 93 98 F9 18 C5 0F
00E0 | 65 89 C5 FE F8 15 AC C2 8D 41 27 F9 D6 A1 FF 76
00F0 | 7E 91 08 D7 B6 0D 5C 6E 6D 68 C2 A2 70 E2 74 7D
0100 | 7D D3 52 95 BD 47 7B 4A CF A0 BA E3 E4 CA 3E 62
0110 | F3 29 26 26 EE C7 F6 45 F8 16 27 9C 64 5B C7 5F
0120 | 70 4F 9E ED 4D AD C0 5A D2 ED 7E 98 D2 4D 88 E1</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 = BA0D89B55961461015D12F9A729959CC38A8121E3A55D0192DC66C128C5C5EC5C4F025B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>5961461015D12F9A729959CC38A8121E</code></td>
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>3A55D0192DC66C128C5C5EC5C4F025B1</code></td>
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001008A2CB602C36171DB8B884A52</code> <code>F73FFD24B53C988587C4110A9D0C99B6</code> <code>093939BD8444B6E2FAD50B0ABFB2D953</code> <code>086F5DD4DAB2F870D4E702434B229B05</code> <code>ABC5AD9D12A6E945EAA86701D84565A8</code> <code>FA99A9DB5AA1A58D3C081E52F4701063</code> <code>E202641975B10531F931639B152B2869</code> <code>BD2B9E7279677D3F5EE56A216365B222</code> <code>B06F94D616390FEC09747A7F9CC55098</code> <code>D9BF6836B5219B88BED2351BE98A45ED</code> <code>6353D2A20974F040496C53CA6C592D57</code> <code>50C5D93BF09CF38C281EA48733057217</code> <code>8B0F91F6F4F61903D02953F1F8E0C059</code> <code>357566470F8F1743F8260B3519188815</code> <code>ADCAD95E6F4D9067BFB41FC8E41C6E05</code> <code>F25C5A12BAF39D2070F303BEE13CAC7C</code><br> <code>4AE90ED5</code></td>
<td><code>FE00010055AEDE83E23F21E7F3E81526</code> <code>E01C2C64FBD8A8C1A9951E828E262226</code> <code>F8B3A81A28C68943F7285BDA3DAC6AC1</code> <code>533283F0BCA77BE945F2F36067CFAA28</code> <code>7B67C2B68659CC7543B0601BDA60DA0C</code> <code>F95BC29AD1CA01CD023B69C13DC5D733</code> <code>A741B1E904BEB8F78277B91771F31526</code> <code>E9F2D4A01B41671038E00AF59046F8FF</code> <code>B204DA1AB6878D13B6FCBF91F6D0E9A4</code> <code>7320CF9096E46EBA132DB37D2DFC8A36</code> <code>B45317C125D947A526097CB810E69398</code> <code>F918C50F6589C5FEF815ACC28D4127F9</code> <code>D6A1FF767E9108D7B60D5C6E6D68C2A2</code> <code>70E2747D7DD35295BD477B4ACFA0BAE3</code> <code>E4CA3E62F3292626EEC7F645F816279C</code> <code>645BC75F704F9EED4DADC05AD2ED7E98</code><br> <code>D24D88E1</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 = BA0D89B55961461015D12F9A729959CC38A8121E3A55D0192DC66C128C5C5EC5C4F025B
<!-- 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 = 54B643665961461015D12F9A729959CC38A8121E3A55D0192DC66C128C5C5EC5C4F025B10000000000000000FE0001008A2CB602C36171DB8B884A52F73FFD24B53C988587C4110A9D0C99B6093939BD8444B6E2FAD50B0ABFB2D953086F5DD4DAB2F870D4E702434B229B05ABC5AD9D12A6E945EAA86701D84565A8FA99A9DB5AA1A58D3C081E52F4701063E202641975B10531F931639B152B2869BD2B9E7279677D3F5EE56A216365B222B06F94D616390FEC09747A7F9CC55098D9BF6836B5219B88BED2351BE98A45ED6353D2A20974F040496C53CA6C592D5750C5D93BF09CF38C281EA487330572178B0F91F6F4F61903D02953F1F8E0C059357566470F8F1743F8260B3519188815ADCAD95E6F4D9067BFB41FC8E41C6E05F25C5A12BAF39D2070F303BEE13CAC7C4AE90ED5
padding = 4ECF342F2E5560E2D79E447D
tmp_aes_key = 8FE1C7AA466D69BC2CA662D231CBA55187624040931DF384876D11FDBB183CEF
tmp_aes_iv = DAE265F5C19D6BA057B409EE108DF6D9ADCA5DBDFF95D662DDB7E9CE4DE43B54</code></pre>
<pre><code>data = 54B6436698347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED20000000000000000FE00010055AEDE83E23F21E7F3E81526E01C2C64FBD8A8C1A9951E828E262226F8B3A81A28C68943F7285BDA3DAC6AC1533283F0BCA77BE945F2F36067CFAA287B67C2B68659CC7543B0601BDA60DA0CF95BC29AD1CA01CD023B69C13DC5D733A741B1E904BEB8F78277B91771F31526E9F2D4A01B41671038E00AF59046F8FFB204DA1AB6878D13B6FCBF91F6D0E9A47320CF9096E46EBA132DB37D2DFC8A36B45317C125D947A526097CB810E69398F918C50F6589C5FEF815ACC28D4127F9D6A1FF767E9108D7B60D5C6E6D68C2A270E2747D7DD35295BD477B4ACFA0BAE3E4CA3E62F3292626EEC7F645F816279C645BC75F704F9EED4DADC05AD2ED7E98D24D88E1
padding = 2083F51E9B7D408A67C913FF
tmp_aes_key = 1FFFA9B5D7E45DB6209F9E01E4696BF605CADC0FDDE85B3DBE7DA3D1340F6FFC
tmp_aes_iv = 775604724F7BA654671797DB82CF137216DA2B7B0508157953386F9E873CC612</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 = 6C7EE84A9DA45C60DC25B3D6BBA412C55EB42F6097CF105E48896297C948BB5F8C070FC25C3F0F31D20AE916A257998F97385FDDE030DF934A84A620B134774D2B160577285F81D375AA32660CE38A1DC16A53C3A752A4AC530B7EF4DEA4928BDAD94F2851F3103CDEC4ED3E04AB5F5FA5EB01B3D3192E0A061657EF4E4DE6812FCB470210D66BE8BDDFC9DE3F38EC259AACAE6348B115759C792F95E6943CA186DFA52BF228F4C92F8A4FC1C84446C748B5B65382EBA2B40E1527D3EEAB048F33F43EA1840B2DBE58B2A48B99A3C86C1A437921A764D4A67374675D6782E2CA0555D83B956B36DAE58C43308396F7F2802939EB4A050E6923E0AE45A6CA85E39B00667429E88341C6E352159E4FCB26BA5A6A5ABF208D28F3E50AB65AE8DA7C3440CE6C09059C45AAD08CD8DC92123189E3DF9107C2173B0A8678F06E0159D55B1708222CCAF69209BEB40498075920</code></pre>
<pre><code>encrypted_data = F7AF24E1D13FA6C6A7FB383972A7CB419E05A4349D5EA125D1AC2BB311030FD3883BAFEF646F8149CC5611B85F1492343F6CC01E9F793B766A995C174C92D49938F9D555087A46E16FBB45B521C75B6E6288D1ED2FA4BAFAF3B094FC59EBB154E6EB42AA9C615F6450F2B2A60EE4C7908435EC3ABC18422841B5D3CEDA9CDFF0192D7B8D7FCB29A8906E1158C85C72C3CD3DB849891C1BDBAB2649B9AA330487B6CA144E99E591D3063D886C0AADDEF67845E9D9EC78A4968405E86C1EAE292B41FC07797DDC98669893A234329B365603FEB638DD879C7A610FF54F053B8218CB95FC184D512339CEA169E1D835BB1D477CACEB89C5DCF9F09A4CE17535BA8255E4E6EB2B62A6E84C48F5B9F9E7DC81A4A9A1ACBC427EC5823A7FBA2ACB9939D1230A5E1135ABC6886B3EFEE09F0467ECA2E6E3B97F622121C1A7552EE955D873BD8DAA8B3C13F60764768BA9550853</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 64 25 05 00 C0 72 AE 66
0010 | 78 01 00 00 1F 5F 04 F5 59 61 46 10 15 D1 2F 9A
0020 | 72 99 59 CC 38 A8 12 1E 3A 55 D0 19 2D C6 6C 12
0030 | 8C 5C 5E C5 C4 F0 25 B1 FE 50 01 00 6C 7E E8 4A
0040 | 9D A4 5C 60 DC 25 B3 D6 BB A4 12 C5 5E B4 2F 60
0050 | 97 CF 10 5E 48 89 62 97 C9 48 BB 5F 8C 07 0F C2
0060 | 5C 3F 0F 31 D2 0A E9 16 A2 57 99 8F 97 38 5F DD
0070 | E0 30 DF 93 4A 84 A6 20 B1 34 77 4D 2B 16 05 77
0080 | 28 5F 81 D3 75 AA 32 66 0C E3 8A 1D C1 6A 53 C3
0090 | A7 52 A4 AC 53 0B 7E F4 DE A4 92 8B DA D9 4F 28
00A0 | 51 F3 10 3C DE C4 ED 3E 04 AB 5F 5F A5 EB 01 B3
00B0 | D3 19 2E 0A 06 16 57 EF 4E 4D E6 81 2F CB 47 02
00C0 | 10 D6 6B E8 BD DF C9 DE 3F 38 EC 25 9A AC AE 63
00D0 | 48 B1 15 75 9C 79 2F 95 E6 94 3C A1 86 DF A5 2B
00E0 | F2 28 F4 C9 2F 8A 4F C1 C8 44 46 C7 48 B5 B6 53
00F0 | 82 EB A2 B4 0E 15 27 D3 EE AB 04 8F 33 F4 3E A1
0100 | 84 0B 2D BE 58 B2 A4 8B 99 A3 C8 6C 1A 43 79 21
0110 | A7 64 D4 A6 73 74 67 5D 67 82 E2 CA 05 55 D8 3B
0120 | 95 6B 36 DA E5 8C 43 30 83 96 F7 F2 80 29 39 EB
0130 | 4A 05 0E 69 23 E0 AE 45 A6 CA 85 E3 9B 00 66 74
0140 | 29 E8 83 41 C6 E3 52 15 9E 4F CB 26 BA 5A 6A 5A
0150 | BF 20 8D 28 F3 E5 0A B6 5A E8 DA 7C 34 40 CE 6C
0160 | 09 05 9C 45 AA D0 8C D8 DC 92 12 31 89 E3 DF 91
0170 | 07 C2 17 3B 0A 86 78 F0 6E 01 59 D5 5B 17 08 22
0180 | 2C CA F6 92 09 BE B4 04 98 07 59 20</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 18 15 0C 00 D6 7C AE 66
0010 | 78 01 00 00 1F 5F 04 F5 98 34 7C 45 20 EB E0 DA
0020 | DB F9 DE F5 87 F6 3A 18 9A 91 88 40 20 68 F2 31
0030 | 91 D9 0C C3 31 3C FE D2 FE 50 01 00 F7 AF 24 E1
0040 | D1 3F A6 C6 A7 FB 38 39 72 A7 CB 41 9E 05 A4 34
0050 | 9D 5E A1 25 D1 AC 2B B3 11 03 0F D3 88 3B AF EF
0060 | 64 6F 81 49 CC 56 11 B8 5F 14 92 34 3F 6C C0 1E
0070 | 9F 79 3B 76 6A 99 5C 17 4C 92 D4 99 38 F9 D5 55
0080 | 08 7A 46 E1 6F BB 45 B5 21 C7 5B 6E 62 88 D1 ED
0090 | 2F A4 BA FA F3 B0 94 FC 59 EB B1 54 E6 EB 42 AA
00A0 | 9C 61 5F 64 50 F2 B2 A6 0E E4 C7 90 84 35 EC 3A
00B0 | BC 18 42 28 41 B5 D3 CE DA 9C DF F0 19 2D 7B 8D
00C0 | 7F CB 29 A8 90 6E 11 58 C8 5C 72 C3 CD 3D B8 49
00D0 | 89 1C 1B DB AB 26 49 B9 AA 33 04 87 B6 CA 14 4E
00E0 | 99 E5 91 D3 06 3D 88 6C 0A AD DE F6 78 45 E9 D9
00F0 | EC 78 A4 96 84 05 E8 6C 1E AE 29 2B 41 FC 07 79
0100 | 7D DC 98 66 98 93 A2 34 32 9B 36 56 03 FE B6 38
0110 | DD 87 9C 7A 61 0F F5 4F 05 3B 82 18 CB 95 FC 18
0120 | 4D 51 23 39 CE A1 69 E1 D8 35 BB 1D 47 7C AC EB
0130 | 89 C5 DC F9 F0 9A 4C E1 75 35 BA 82 55 E4 E6 EB
0140 | 2B 62 A6 E8 4C 48 F5 B9 F9 E7 DC 81 A4 A9 A1 AC
0150 | BC 42 7E C5 82 3A 7F BA 2A CB 99 39 D1 23 0A 5E
0160 | 11 35 AB C6 88 6B 3E FE E0 9F 04 67 EC A2 E6 E3
0170 | B9 7F 62 21 21 C1 A7 55 2E E9 55 D8 73 BD 8D AA
0180 | 8B 3C 13 F6 07 64 76 8B A9 55 08 53</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>64250500C072AE66</code></td>
<td><code>18150C00D67CAE66</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 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>5961461015D12F9A729959CC38A8121E</code></td>
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>3A55D0192DC66C128C5C5EC5C4F025B1</code></td>
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE5001006C7EE84A9DA45C60DC25B3D6</code> <code>BBA412C55EB42F6097CF105E48896297</code> <code>C948BB5F8C070FC25C3F0F31D20AE916</code> <code>A257998F97385FDDE030DF934A84A620</code> <code>B134774D2B160577285F81D375AA3266</code> <code>0CE38A1DC16A53C3A752A4AC530B7EF4</code> <code>DEA4928BDAD94F2851F3103CDEC4ED3E</code> <code>04AB5F5FA5EB01B3D3192E0A061657EF</code> <code>4E4DE6812FCB470210D66BE8BDDFC9DE</code> <code>3F38EC259AACAE6348B115759C792F95</code> <code>E6943CA186DFA52BF228F4C92F8A4FC1</code> <code>C84446C748B5B65382EBA2B40E1527D3</code> <code>EEAB048F33F43EA1840B2DBE58B2A48B</code> <code>99A3C86C1A437921A764D4A67374675D</code> <code>6782E2CA0555D83B956B36DAE58C4330</code> <code>8396F7F2802939EB4A050E6923E0AE45</code> <code>A6CA85E39B00667429E88341C6E35215</code> <code>9E4FCB26BA5A6A5ABF208D28F3E50AB6</code> <code>5AE8DA7C3440CE6C09059C45AAD08CD8</code> <code>DC92123189E3DF9107C2173B0A8678F0</code> <code>6E0159D55B1708222CCAF69209BEB404</code><br> <code>98075920</code></td>
<td><code>FE500100F7AF24E1D13FA6C6A7FB3839</code> <code>72A7CB419E05A4349D5EA125D1AC2BB3</code> <code>11030FD3883BAFEF646F8149CC5611B8</code> <code>5F1492343F6CC01E9F793B766A995C17</code> <code>4C92D49938F9D555087A46E16FBB45B5</code> <code>21C75B6E6288D1ED2FA4BAFAF3B094FC</code> <code>59EBB154E6EB42AA9C615F6450F2B2A6</code> <code>0EE4C7908435EC3ABC18422841B5D3CE</code> <code>DA9CDFF0192D7B8D7FCB29A8906E1158</code> <code>C85C72C3CD3DB849891C1BDBAB2649B9</code> <code>AA330487B6CA144E99E591D3063D886C</code> <code>0AADDEF67845E9D9EC78A4968405E86C</code> <code>1EAE292B41FC07797DDC98669893A234</code> <code>329B365603FEB638DD879C7A610FF54F</code> <code>053B8218CB95FC184D512339CEA169E1</code> <code>D835BB1D477CACEB89C5DCF9F09A4CE1</code> <code>7535BA8255E4E6EB2B62A6E84C48F5B9</code> <code>F9E7DC81A4A9A1ACBC427EC5823A7FBA</code> <code>2ACB9939D1230A5E1135ABC6886B3EFE</code> <code>E09F0467ECA2E6E3B97F622121C1A755</code> <code>2EE955D873BD8DAA8B3C13F60764768B</code><br> <code>A9550853</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 = 3A1797B1E1CC13A1AA51DEB4E8744622F60BE8D49692F3B1FF86A21A6793F54D7BC5E9747CA6D656222EDB0141575AEBD4B468C342F54E91033F7DAADCEBC1E306D634CF2C929273F118290E130FEAEF6DBB26289AD655C667D02DB106585CCC813185ED7E1B642D487FBF58135F31B57840BBB386E377EA7BAB1D4708D9732C531FF8625EB246894B91C1C19EE837472A20BEBE8384836678C4C21EC0432F82048EE3F27A6AB9028BC97342A27C6F98C427A3E99C41803A509CB4C5D03D091EE61B15D2CC0502AEEBCE102352A79DEA4B7208E9A3800AF50053B849761473BF53845D14BDB5F88E1E7A95D243D33A52BB9D178B3A2A0F43470E7FF188914B02</code></pre>
<pre><code>auth_key = 672CE08166CEE9DB5C45EDB97C9721FE361698F28EBE9DDC0DA6E270E6C61DF56C7E0FD5A09CB06754AC7305B3E151020DC4DBC5D4012BE2A4A9C891A0E742D0F6B61C873C77554B3FAC552CCFF51FBCF15F6ADA8EA08D7B4550392A29473408415D0773F8D35351CC636DA33141BA14AA1B78EE06CCFCA023354113B266D88CC7A0067C1465E16E52E7EAFC88E0F37F31FFE966AAD255F12D2D26E678F59B6F37A242C2C939B03E76760DC6B667ABB235031A38B1213935F5C67DBC5C6AF372B860ADE71334B04043373D9054DB14D2C45ED29E3D12CED9D3D239A4851C179AB86BC6C86791630176322E0D17B0EB826095CB51DE03B7E214F45E689DD4291F</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 A4 40 54 C1 72 AE 66
0010 | 8C 00 00 00 34 F7 CB 3B 59 61 46 10 15 D1 2F 9A
0020 | 72 99 59 CC 38 A8 12 1E 3A 55 D0 19 2D C6 6C 12
0030 | 8C 5C 5E C5 C4 F0 25 B1 DA 0C 2F 2A 94 0C 1C 0E
0040 | 06 15 DD B1 B2 2A B0 FF</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 90 0E 24 D7 7C AE 66
0010 | A8 00 00 00 34 F7 CB 3B 98 34 7C 45 20 EB E0 DA
0020 | DB F9 DE F5 87 F6 3A 18 9A 91 88 40 20 68 F2 31
0030 | 91 D9 0C C3 31 3C FE D2 2A B7 BC 7D 2D 87 D7 B8
0040 | 9D 96 2F 86 77 36 53 88</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>01A44054C172AE66</code></td>
<td><code>01900E24D77CAE66</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>8C000000</code> (140 in decimal)</td>
<td><code>A8000000</code> (168 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>5961461015D12F9A729959CC38A8121E</code></td>
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>3A55D0192DC66C128C5C5EC5C4F025B1</code></td>
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>DA0C2F2A940C1C0E0615DDB1B22AB0FF</code></td>
<td><code>2AB7BC7D2D87D7B89D962F8677365388</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>

View file

@ -107,7 +107,7 @@
</tr>
<tr>
<td><a href="/constructor/topPeerCategoryBotsApp">topPeerCategoryBotsApp</a></td>
<td> </td>
<td>Most frequently used <a href="/api/bots/webapps#main-mini-apps">Main Mini Bot Apps</a>.</td>
</tr>
</tbody>
</table></div>