Update content of files

This commit is contained in:
GitHub Action 2024-01-17 21:24:39 +00:00
parent a66b6963a5
commit 42a2129ab0
11 changed files with 239 additions and 248 deletions

View file

@ -301,9 +301,7 @@ While <a href="/method/help.getConfig">help.getConfig</a> returns MTProto-specif
"stories_sent_monthly_limit_default": 30,
"stories_sent_monthly_limit_premium": 3000,
"stories_venue_search_username": "foursquare",
"stories_all_hidden": false,
"stories_entities": "premium",
"stories_export_nopublic_link": true,
"stories_changelog_user_id": 777000,
"authorization_autoconfirm_period": 604800,
"stories_suggested_reactions_limit_default": 1,

View file

@ -118,6 +118,7 @@ Clients should display this message, along with a sticker from the <a href="/con
</li>
</ul>
<p>The <a href="/constructor/messageActionGiftCode">messageActionGiftCode</a>.<code>slug</code> should be used to generate a <a href="/api/links#premium-giftcode-links">giftcode link</a>, that the user can use to redeem the subscription, or re-gift it to someone else. </p>
<p>If <code>winners_are_visible</code> flag is set while starting a giveaway, giveaway winners are public and will be listed in a <a href="/constructor/messageMediaGiveawayResults">messageMediaGiveawayResults</a> message that will be automatically sent to the channel once the giveaway ends. </p>
<p>Any user can invoke <a href="/method/payments.checkGiftCode">payments.checkGiftCode</a> with the link's slug to obtain info about the giveaway, such as the channel that gifted the subscription (<code>from_id</code>), and the user that originally received the gift (<code>to_id</code>).<br>
This can also be useful to channel administrators to precisely determine the winners of a giveaway, for example if the giveaway also included some extra gifts apart from Premium subscriptions (<em>like Teslas</em>): the winners can simply send their link as undisputable proof that they won the giveaway, because the user that received the gift can be viewed in the <code>to_id</code> field returned by Telegram when invoking <a href="/method/payments.checkGiftCode">payments.checkGiftCode</a> on the slug.<br>
Another way for admins to check who received the gifts is to simply use <a href="/method/premium.getBoostsList">premium.getBoostsList</a> while the boosts received by the gifts are still active. </p>

View file

@ -136,7 +136,7 @@
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/messageMediaGiveawayResults">messageMediaGiveawayResults</a> - </li>
<li>Added <a href="/constructor/messageMediaGiveawayResults">messageMediaGiveawayResults</a> - A <a href="/api/giveaway">giveaway</a> with public winners has finished, this constructor contains info about the winners.</li>
<li>Added <a href="/constructor/storyReaction">storyReaction</a> - How a certain peer reacted to a story</li>
<li>Added <a href="/constructor/storyReactionPublicForward">storyReactionPublicForward</a> - A certain peer has forwarded the story as a message to a public chat or channel.</li>
<li>Added <a href="/constructor/storyReactionPublicRepost">storyReactionPublicRepost</a> - A certain peer has reposted the story.</li>

View file

@ -315,7 +315,7 @@ Note that this should be done transparently in a map UI, not in the usual inline
</ul>
</li>
</ul>
<p>Clients may also re-use an existing <a href="/constructor/mediaAreaVenue">mediaAreaVenue</a> from a previously uploaded story.</p>
<p>Clients may only re-use existing <a href="/constructor/mediaAreaVenue">mediaAreaVenue</a>s when repositioning a pre-existing location tag when editing a story; use <a href="/constructor/inputMediaAreaVenue">inputMediaAreaVenue</a> when posting a new story or adding a new location tag to an existing story.</p>
<h4><a class="anchor" href="#reactions" id="reactions" name="reactions"><i class="anchor-icon"></i></a>Reactions</h4>
<p>Schema:</p>
<pre><code><a href='/constructor/reactionEmoji'>reactionEmoji</a>#1b2286b8 emoticon:<a href='/type/string'>string</a> = <a href='/type/Reaction'>Reaction</a>;

View file

@ -79,7 +79,7 @@
<tr>
<td><strong>winners_are_visible</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/constructor/true">true</a></td>
<td> </td>
<td>If set, giveaway winners are public and will be listed in a <a href="/constructor/messageMediaGiveawayResults">messageMediaGiveawayResults</a> message that will be automatically sent to the channel once the giveaway ends.</td>
</tr>
<tr>
<td><strong>boost_peer</strong></td>
@ -126,6 +126,8 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/InputStorePaymentPurpose">InputStorePaymentPurpose</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="#messagemediagiveawayresults" id="messagemediagiveawayresults" name="messagemediagiveawayresults"><i class="anchor-icon"></i></a><a href="/constructor/messageMediaGiveawayResults">messageMediaGiveawayResults</a></h4>
<p>A <a href="/api/giveaway">giveaway</a> with public winners has finished, this constructor contains info about the winners.</p>
<h4><a class="anchor" href="#channel-boosts" id="channel-boosts" name="channel-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>

View file

@ -79,7 +79,7 @@
<tr>
<td><strong>winners_are_visible</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/constructor/true">true</a></td>
<td> </td>
<td>If set, giveaway winners are public and will be listed in a <a href="/constructor/messageMediaGiveawayResults">messageMediaGiveawayResults</a> message that will be automatically sent to the channel once the giveaway ends.</td>
</tr>
<tr>
<td><strong>channels</strong></td>
@ -116,6 +116,8 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/MessageMedia">MessageMedia</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="#messagemediagiveawayresults" id="messagemediagiveawayresults" name="messagemediagiveawayresults"><i class="anchor-icon"></i></a><a href="/constructor/messageMediaGiveawayResults">messageMediaGiveawayResults</a></h4>
<p>A <a href="/api/giveaway">giveaway</a> with public winners has finished, this constructor contains info about the winners.</p>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>

View file

@ -4,30 +4,10 @@
<meta charset="utf-8">
<title>messageMediaGiveawayResults</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
only_new_subscribers
flags.0?true
 
refunded…">
<meta property="description" content="A giveaway with public winners has finished, this constructor contains info about the winners.">
<meta property="og:title" content="messageMediaGiveawayResults">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
only_new_subscribers
flags.0?true
 
refunded…">
<meta property="og:description" content="A giveaway with public winners has finished, this constructor contains info about the winners.">
<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">
@ -62,7 +42,8 @@ refunded…">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageMediaGiveawayResults" >messageMediaGiveawayResults</a></li></ul></div>
<h1 id="dev_page_title">messageMediaGiveawayResults</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>A <a href="/api/giveaway">giveaway</a> with public winners has finished, this constructor contains info about the winners.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 170 <b class="caret"></b></a>
@ -93,47 +74,47 @@ refunded…">
<tr>
<td><strong>only_new_subscribers</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td>
<td> </td>
<td>If set, only new subscribers starting from the giveaway creation date participated in the giveaway.</td>
</tr>
<tr>
<td><strong>refunded</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/constructor/true">true</a></td>
<td> </td>
<td>If set, the giveaway was canceled and was fully refunded.</td>
</tr>
<tr>
<td><strong>channel_id</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td> </td>
<td>ID of the channel that was automatically <a href="/api/boost">boosted</a> by the winners of the giveaway for duration of the Premium subscription.</td>
</tr>
<tr>
<td><strong>additional_peers_count</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/int">int</a></td>
<td> </td>
<td>Number of other channels that participated in the giveaway.</td>
</tr>
<tr>
<td><strong>launch_msg_id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Identifier of the message with the giveaway in <code>channel_id</code>.</td>
</tr>
<tr>
<td><strong>winners_count</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Total number of winners in the giveaway.</td>
</tr>
<tr>
<td><strong>unclaimed_count</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Number of not-yet-claimed prizes.</td>
</tr>
<tr>
<td><strong>winners</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/long">long</a>&gt;</td>
<td> </td>
<td>Up to 100 user identifiers of the winners of the giveaway.</td>
</tr>
<tr>
<td><strong>months</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Duration in months of each <a href="/api/premium">Telegram Premium</a> subscription in the giveaway.</td>
</tr>
<tr>
<td><strong>prize_description</strong></td>
@ -143,12 +124,17 @@ refunded…">
<tr>
<td><strong>until_date</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Point in time (Unix timestamp) when the winners were selected. May be bigger than winners selection date specified in initial parameters of the giveaway.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/MessageMedia">MessageMedia</a></p></div>
<p><a href="/type/MessageMedia">MessageMedia</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="#channel-boosts" id="channel-boosts" name="channel-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p></div>
</div>

View file

@ -171,6 +171,8 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/StickerSet">StickerSet</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="#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>
<h4><a class="anchor" href="#deep-links" id="deep-links" name="deep-links"><i class="anchor-icon"></i></a><a href="/api/links">Deep links</a></h4>
<p>Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.</p>
<h4><a class="anchor" href="#messagesgetcustomemojidocuments" id="messagesgetcustomemojidocuments" name="messagesgetcustomemojidocuments"><i class="anchor-icon"></i></a><a href="/method/messages.getCustomEmojiDocuments">messages.getCustomEmojiDocuments</a></h4>

View file

@ -99,7 +99,7 @@
<tr>
<td><strong>chats</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt;</td>
<td> </td>
<td>Mentioned chats</td>
</tr>
<tr>
<td><strong>users</strong></td>

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 80 4D 04 00 5A 3E A8 65
0010 | 14 00 00 00 F1 8E 7E BE D2 AC 74 53 3A 31 3A 58
0020 | 87 0E 49 D5 3B A6 8A 05</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 38 82 0A 00 39 41 A8 65
0010 | 14 00 00 00 F1 8E 7E BE 50 C9 33 C4 AD E5 B6 C3
0020 | B5 B5 5C 41 15 81 CB 21</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>804D04005A3EA865</code></td>
<td><code>38820A003941A865</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>D2AC74533A313A58870E49D53BA68A05</code></td>
<td><code>50C933C4ADE5B6C3B5B55C411581CB21</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 40 72 63 5A 3E A8 65
0010 | 64 00 00 00 63 24 16 05 D2 AC 74 53 3A 31 3A 58
0020 | 87 0E 49 D5 3B A6 8A 05 00 09 D4 B0 4B A7 57 78
0030 | C5 60 95 8C 4F 18 A6 BA 08 18 55 3B 47 CA 48 33
0040 | B3 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 50 FA E1 39 41 A8 65
0010 | 5C 00 00 00 63 24 16 05 50 C9 33 C4 AD E5 B6 C3
0020 | B5 B5 5C 41 15 81 CB 21 FE CE EF E9 4A DA F6 67
0030 | EE 9B 81 67 AC 97 61 C8 08 19 98 AE D4 EB D1 8E
0040 | 23 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>014072635A3EA865</code></td>
<td><code>0150FAE13941A865</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>64000000</code> (100 in decimal)</td>
<td><code>5C000000</code> (92 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td><code>50C933C4ADE5B6C3B5B55C411581CB21</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td><code>FECEEFE94ADAF667EE9B8167AC9761C8</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0818553B47CA4833B3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1753372809453122483</td>
<td><code>081998AED4EBD18E23000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1844416276920897059</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 = 1753372809453122483</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1753372809453122483 = 1027255513 * 1706851691</code></p>
<pre><code>p = 1027255513
q = 1706851691</code></pre>
<pre><code>pq = 1844416276920897059</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1844416276920897059 = 1173828283 * 1571282873</code></p>
<pre><code>p = 1173828283
q = 1571282873</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 18 55 3B 47 CA 48 33 B3 00 00 00
0010 | 04 3D 3A AC D9 00 00 00 04 65 BC 7D 6B 00 00 00
0020 | D2 AC 74 53 3A 31 3A 58 87 0E 49 D5 3B A6 8A 05
0030 | 00 09 D4 B0 4B A7 57 78 C5 60 95 8C 4F 18 A6 BA
0040 | 14 82 ED 11 D3 91 DA 9A 4B A3 AC 53 A5 CC 82 4D
0050 | 1E 11 6D 38 49 FB F1 E1 3A FF 05 C0 48 5B FC 45
<pre><code>0000 | 95 5F F5 A9 08 19 98 AE D4 EB D1 8E 23 00 00 00
0010 | 04 45 F7 32 BB 00 00 00 04 5D A7 DF B9 00 00 00
0020 | 50 C9 33 C4 AD E5 B6 C3 B5 B5 5C 41 15 81 CB 21
0030 | FE CE EF E9 4A DA F6 67 EE 9B 81 67 AC 97 61 C8
0040 | 81 3B 52 FD DC 32 6E D3 8C F0 23 8F 4E 61 F8 CD
0050 | 6A D5 42 4B 2A A6 C5 4F 86 77 88 7D 60 E2 B1 CA
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 = 1706851691</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0818553B47CA4833B3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1753372809453122483</td>
<td><code>081998AED4EBD18E23000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1844416276920897059</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>043D3AACD9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1027255513</td>
<td><code>0445F732BB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1173828283</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>0465BC7D6B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1706851691</td>
<td><code>045DA7DFB9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1571282873</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>D2AC74533A313A58870E49D53BA68A05</code></td>
<td><code>50C933C4ADE5B6C3B5B55C411581CB21</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td><code>FECEEFE94ADAF667EE9B8167AC9761C8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>1482ED11D391DA9A4BA3AC53A5CC824D</code> <code>1E116D3849FBF1E13AFF05C0485BFC45</code></td>
<td><code>813B52FDDC326ED38CF0238F4E61F8CD</code> <code>6AD5424B2AA6C54F8677887D60E2B1CA</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1706851691</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 = 955FF5A90818553B47CA4833B3000000043D3AACD90000000465BC7D6B000000D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA1482ED11D391DA9A4BA3AC53A5CC824D1E116D3849FBF1E13AFF05C0485BFC4502000000
random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77DD4F33846520BEB3EAEF5A0423BFD70C0D2D0629D7A6A3C07954CBBD347E91BC3B3E25A7165553BF722647FDFE358ED7A5C6857F884CBB258DCE9E02F7C0C323</code></pre>
<pre><code>data = 955FF5A9081998AED4EBD18E230000000445F732BB000000045DA7DFB900000050C933C4ADE5B6C3B5B55C411581CB21FECEEFE94ADAF667EE9B8167AC9761C8813B52FDDC326ED38CF0238F4E61F8CD6AD5424B2AA6C54F8677887D60E2B1CA02000000
random_padding_bytes = D41C27B55AC6C90986F05AA29498119E4924CB7AB29542F9CD5138F4B2F73F223852D71E9838F5ECDA53FE8955E97A4B8A53E6ED37EDCE837E68C48B8666C67D8B3E91A30E2F107D4792EF61B7CC792E5297FDA7B7C49F83C1DBA897</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 = 43FFEB0FFD274E0C28BCB989DF1979D84C12B8500A1EB5E0A74A85F17CFC77D525C25B87C7B600B64DD3FC3065CB58C58C157FA3EA35A57780DD1E68A7B5AD97EBE7F756DC7BEE3516F38B5024288705214D11E625DC478F61DC9D86AD18964134D07BBDF2D5FA5980E1D74CC93BCC24BF9735DD09950A09B9D203C57288534E3CEDC3394EEC8560FD388A6B27843166B625A412C7542F907A1A0341C142EBF6FEE41DDE739FE7D3AB0BF5B0290286D7F9AEF9EDDEB36B8E08633480DAC476A887597FD9C48BFFCFAFC8BD8F899DCF675D858E2728F443FB5D80006F56AFD5B82A85DFF3EF59F57F15F83C81A52BA9F30B27FF796DB00DAF6FF9A8263F024005</code></pre>
<pre><code>encrypted_data = 08089F6165330532285E349EC82A8C56B6B6B16FB17FA9EA72B5DDFC96F6E7C4B7DF7FB7F197DB819228CAB957D49AA5E7DAA4CAB4D0DDB1584958BA4C584269C24B752ED796CE59E9A496D1FA5D1756820468DD1430DFFD80CD86780F39A1DDBADD0685C221380B5CF56D4ED57F8DC868259FE5EC75F0204636DDA1F721875BF4788B9843200888C5536AF8954C18C6D6F54E34584A5AD152CA7C3C8A6BDF9E346C5546C7B1AE323BF8D598D8912EB776435F3E604D9511FA19EF75C33A509A328076AA98239510D00061FAC782C41577C330B303E4736A1B1D3E59F58A74EA3FEE697F02EFBFA7DA520A6FAC91F68883351C555F02A4744F5274982CDB9F29</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 84 4D 04 00 5A 3E A8 65
0010 | 40 01 00 00 BE E4 12 D7 D2 AC 74 53 3A 31 3A 58
0020 | 87 0E 49 D5 3B A6 8A 05 00 09 D4 B0 4B A7 57 78
0030 | C5 60 95 8C 4F 18 A6 BA 04 3D 3A AC D9 00 00 00
0040 | 04 65 BC 7D 6B 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 43 FF EB 0F FD 27 4E 0C 28 BC B9 89
0060 | DF 19 79 D8 4C 12 B8 50 0A 1E B5 E0 A7 4A 85 F1
0070 | 7C FC 77 D5 25 C2 5B 87 C7 B6 00 B6 4D D3 FC 30
0080 | 65 CB 58 C5 8C 15 7F A3 EA 35 A5 77 80 DD 1E 68
0090 | A7 B5 AD 97 EB E7 F7 56 DC 7B EE 35 16 F3 8B 50
00A0 | 24 28 87 05 21 4D 11 E6 25 DC 47 8F 61 DC 9D 86
00B0 | AD 18 96 41 34 D0 7B BD F2 D5 FA 59 80 E1 D7 4C
00C0 | C9 3B CC 24 BF 97 35 DD 09 95 0A 09 B9 D2 03 C5
00D0 | 72 88 53 4E 3C ED C3 39 4E EC 85 60 FD 38 8A 6B
00E0 | 27 84 31 66 B6 25 A4 12 C7 54 2F 90 7A 1A 03 41
00F0 | C1 42 EB F6 FE E4 1D DE 73 9F E7 D3 AB 0B F5 B0
0100 | 29 02 86 D7 F9 AE F9 ED DE B3 6B 8E 08 63 34 80
0110 | DA C4 76 A8 87 59 7F D9 C4 8B FF CF AF C8 BD 8F
0120 | 89 9D CF 67 5D 85 8E 27 28 F4 43 FB 5D 80 00 6F
0130 | 56 AF D5 B8 2A 85 DF F3 EF 59 F5 7F 15 F8 3C 81
0140 | A5 2B A9 F3 0B 27 FF 79 6D B0 0D AF 6F F9 A8 26
0150 | 3F 02 40 05</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 EC 53 03 00 3A 41 A8 65
0010 | 40 01 00 00 BE E4 12 D7 50 C9 33 C4 AD E5 B6 C3
0020 | B5 B5 5C 41 15 81 CB 21 FE CE EF E9 4A DA F6 67
0030 | EE 9B 81 67 AC 97 61 C8 04 45 F7 32 BB 00 00 00
0040 | 04 5D A7 DF B9 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 08 08 9F 61 65 33 05 32 28 5E 34 9E
0060 | C8 2A 8C 56 B6 B6 B1 6F B1 7F A9 EA 72 B5 DD FC
0070 | 96 F6 E7 C4 B7 DF 7F B7 F1 97 DB 81 92 28 CA B9
0080 | 57 D4 9A A5 E7 DA A4 CA B4 D0 DD B1 58 49 58 BA
0090 | 4C 58 42 69 C2 4B 75 2E D7 96 CE 59 E9 A4 96 D1
00A0 | FA 5D 17 56 82 04 68 DD 14 30 DF FD 80 CD 86 78
00B0 | 0F 39 A1 DD BA DD 06 85 C2 21 38 0B 5C F5 6D 4E
00C0 | D5 7F 8D C8 68 25 9F E5 EC 75 F0 20 46 36 DD A1
00D0 | F7 21 87 5B F4 78 8B 98 43 20 08 88 C5 53 6A F8
00E0 | 95 4C 18 C6 D6 F5 4E 34 58 4A 5A D1 52 CA 7C 3C
00F0 | 8A 6B DF 9E 34 6C 55 46 C7 B1 AE 32 3B F8 D5 98
0100 | D8 91 2E B7 76 43 5F 3E 60 4D 95 11 FA 19 EF 75
0110 | C3 3A 50 9A 32 80 76 AA 98 23 95 10 D0 00 61 FA
0120 | C7 82 C4 15 77 C3 30 B3 03 E4 73 6A 1B 1D 3E 59
0130 | F5 8A 74 EA 3F EE 69 7F 02 EF BF A7 DA 52 0A 6F
0140 | AC 91 F6 88 83 35 1C 55 5F 02 A4 74 4F 52 74 98
0150 | 2C DB 9F 29</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 = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>844D04005A3EA865</code></td>
<td><code>EC5303003A41A865</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 = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td><code>50C933C4ADE5B6C3B5B55C411581CB21</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td><code>FECEEFE94ADAF667EE9B8167AC9761C8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>043D3AACD9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1027255513</td>
<td><code>0445F732BB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1173828283</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>0465BC7D6B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1706851691</td>
<td><code>045DA7DFB9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1571282873</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 = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE00010043FFEB0FFD274E0C28BCB989</code> <code>DF1979D84C12B8500A1EB5E0A74A85F1</code> <code>7CFC77D525C25B87C7B600B64DD3FC30</code> <code>65CB58C58C157FA3EA35A57780DD1E68</code> <code>A7B5AD97EBE7F756DC7BEE3516F38B50</code> <code>24288705214D11E625DC478F61DC9D86</code> <code>AD18964134D07BBDF2D5FA5980E1D74C</code> <code>C93BCC24BF9735DD09950A09B9D203C5</code> <code>7288534E3CEDC3394EEC8560FD388A6B</code> <code>27843166B625A412C7542F907A1A0341</code> <code>C142EBF6FEE41DDE739FE7D3AB0BF5B0</code> <code>290286D7F9AEF9EDDEB36B8E08633480</code> <code>DAC476A887597FD9C48BFFCFAFC8BD8F</code> <code>899DCF675D858E2728F443FB5D80006F</code> <code>56AFD5B82A85DFF3EF59F57F15F83C81</code> <code>A52BA9F30B27FF796DB00DAF6FF9A826</code><br> <code>3F024005</code></td>
<td><code>FE00010008089F6165330532285E349E</code> <code>C82A8C56B6B6B16FB17FA9EA72B5DDFC</code> <code>96F6E7C4B7DF7FB7F197DB819228CAB9</code> <code>57D49AA5E7DAA4CAB4D0DDB1584958BA</code> <code>4C584269C24B752ED796CE59E9A496D1</code> <code>FA5D1756820468DD1430DFFD80CD8678</code> <code>0F39A1DDBADD0685C221380B5CF56D4E</code> <code>D57F8DC868259FE5EC75F0204636DDA1</code> <code>F721875BF4788B9843200888C5536AF8</code> <code>954C18C6D6F54E34584A5AD152CA7C3C</code> <code>8A6BDF9E346C5546C7B1AE323BF8D598</code> <code>D8912EB776435F3E604D9511FA19EF75</code> <code>C33A509A328076AA98239510D00061FA</code> <code>C782C41577C330B303E4736A1B1D3E59</code> <code>F58A74EA3FEE697F02EFBFA7DA520A6F</code> <code>AC91F68883351C555F02A4744F527498</code><br> <code>2CDB9F29</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D
<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 EC 2D 37 5B 3E A8 65
0010 | D8 02 00 00 5C 07 E8 D0 D2 AC 74 53 3A 31 3A 58
0020 | 87 0E 49 D5 3B A6 8A 05 00 09 D4 B0 4B A7 57 78
0030 | C5 60 95 8C 4F 18 A6 BA FE 50 02 00 A1 60 8F 7B
0040 | B0 72 F2 F2 AB B7 BC D5 2D 5F 0D 2C D3 26 FA 02
0050 | 0E D4 3D D2 00 A1 E9 D3 29 D7 58 4E 67 C3 2E A5
0060 | C0 A3 A0 9B 9B CC DB BC 16 09 B0 56 5C 44 3E 9C
0070 | 5B 46 0F D5 B1 52 47 C1 93 AA E9 78 2B 65 1D EA
0080 | 5D 5B 4F 5E 35 F6 BC AD D5 5F 0B E2 8D F5 AE F4
0090 | FB 2A AE 88 57 9D A4 2C D9 E5 3A 52 83 40 5E 9B
00A0 | F9 63 91 C0 93 59 D4 61 64 3F BF BC 95 78 55 E6
00B0 | 90 2B 68 1B 97 5B 05 8E 8A 89 83 EA C1 7B 5C A9
00C0 | 2B AF 73 1E 9D 30 0A EC E7 F0 71 F0 12 B7 0E AE
00D0 | 2F 6B A6 B0 1F 95 87 09 29 6B BC 78 E9 D5 5D 47
00E0 | 0A DA FF 09 FA AB E7 24 9F 61 DE 6B 3C D4 3E 0F
00F0 | 77 F2 51 F4 2C 0B BD 22 E9 18 21 3A E1 13 41 BB
0100 | CA A1 AE BA D8 43 A4 FB 00 54 B5 F9 09 66 97 0C
0110 | D8 45 8C C3 72 72 2E 1C 47 3E 82 A0 0E 4F 53 80
0120 | 0A F1 33 8A EC 5C 73 DD BF 91 F3 4B 0A A9 4B E4
0130 | B6 8D 3E AF B3 D5 26 7E 3D D1 F6 8B 1B 5A B4 A1
0140 | 01 80 55 F5 8D 3C E5 8C A1 A2 F6 02 B1 2E 49 4B
0150 | CA DE 7E 01 21 E1 C3 11 62 16 2B C8 07 F8 85 9E
0160 | 4A F2 63 6C 49 0F EF A0 4B 83 26 0F A5 4C 94 0F
0170 | AF 0B 71 DA 0E DB 93 BE 75 83 91 B2 BF C4 49 97
0180 | 78 D8 D6 49 2E 58 67 F8 30 AB 45 76 F5 6C FA 55
0190 | 67 C0 3A 9E 6A 55 B6 B7 87 32 39 83 E6 49 94 0F
01A0 | 45 B5 04 A0 7A 44 18 38 1B 9B AA ED 24 44 7D D7
01B0 | 3F 7E 70 41 FF D7 75 43 3D FF F4 80 ED A4 3E 97
01C0 | 4E E6 57 CF 49 C7 E5 A9 F7 3E F7 F9 59 CB 54 B5
01D0 | DE E3 F1 0A A7 57 8A 0A 0C FB 88 07 23 78 D3 81
01E0 | 20 C9 2E B6 DD 35 8D 67 74 DD F4 AB 05 B2 06 AD
01F0 | 6F 78 A2 46 0A 29 1F 90 05 25 09 C8 D6 B7 95 76
0200 | 61 B8 7D 5A A3 8A 30 2C F4 42 FE 51 E6 D4 10 B5
0210 | 66 E6 28 D2 C3 B7 E4 AB 06 F6 9B 67 A0 93 AB DD
0220 | 7A A3 85 3B AF 6B C9 BB C3 A0 E3 55 E2 63 AC 42
0230 | FE 38 B2 B6 0F 41 AE D2 5E 9F 25 48 14 10 61 B9
0240 | 55 0F 3F 84 5C 50 E6 D7 8F 39 54 38 3B 68 9E BB
0250 | EF D6 89 A1 A4 8B 3E C8 54 AB E7 3C 90 40 53 7F
0260 | A5 B0 FE 79 83 E7 0C 31 D3 3F 4D AA A3 2C AD B0
0270 | 09 71 20 6B B1 8F 65 72 50 25 AB 88 01 C3 C6 26
0280 | 6E 6F 9E 79 A0 3F 43 57 96 04 F4 AE</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 A0 DE 9B 3A 41 A8 65
0010 | 78 02 00 00 5C 07 E8 D0 50 C9 33 C4 AD E5 B6 C3
0020 | B5 B5 5C 41 15 81 CB 21 FE CE EF E9 4A DA F6 67
0030 | EE 9B 81 67 AC 97 61 C8 FE 50 02 00 5F 27 37 D5
0040 | 4E 1D E0 51 7F FB 50 46 D7 1F EE 25 B4 D7 9F 55
0050 | F8 81 1C A4 B6 78 17 0E A7 FA 33 30 9F 16 3B C8
0060 | B5 82 0C 50 43 0A 95 E2 49 64 EA 94 66 F3 91 8C
0070 | 63 BA 12 42 85 A4 9E F5 FB 3C CC 8C B3 84 42 31
0080 | 22 F7 41 54 D5 35 C8 29 69 3F F9 C0 5F D7 11 9B
0090 | BC C5 7E 05 AB 38 88 23 D0 25 9B 2A 68 CB 98 06
00A0 | EB 28 F1 51 F3 8E 1F 23 0E 4B 78 19 EA 0F 65 08
00B0 | E9 35 BD 29 16 8E FC 8E FB 01 A0 35 99 18 C2 51
00C0 | 14 92 5A C2 0B D8 FB 9C CE A9 1B D4 11 37 97 0C
00D0 | 64 95 7C FA 57 41 2C 74 63 B4 23 26 48 08 6B C7
00E0 | D8 AC BE 36 9C 70 F4 27 99 76 45 D3 9D F5 59 F8
00F0 | 66 9B FC 4D 33 FB A6 7B 93 04 7B BB 26 C4 DF F6
0100 | 08 9D AE A9 6E C4 76 A8 3D FC 76 71 79 FD 43 19
0110 | 4E C5 73 BE 10 35 07 63 82 AA A5 F0 DD 34 96 9E
0120 | 52 31 4D E7 51 35 8B 07 9E 54 8E BD 57 81 17 18
0130 | 90 A7 93 3E AA 1B 11 EE C1 26 77 0C 04 FC 69 EA
0140 | 5D 18 18 6F 43 AC C5 6B 94 BC E3 D7 FD 75 92 48
0150 | FA D1 2E 43 15 A2 EE AF 8C FF 12 71 4A 38 90 E8
0160 | 7E 40 D7 75 92 A8 7F D2 05 59 7D 06 9B 7A AE 90
0170 | 13 CC 6E 0E 0E 0B 04 FA 3A 80 F2 C4 0C 89 8C 1F
0180 | 5B E7 1A 19 B8 25 2D 70 98 8C 58 51 95 CA 7E 41
0190 | F9 80 66 C0 EB 36 CF AC B8 43 25 82 69 07 00 8B
01A0 | AC 0E 67 8E 2E 2B 1A 99 FC EC 47 D1 FC E6 0C D4
01B0 | 3F 97 7D 5A 98 B2 69 CA 70 D4 D1 C7 B9 56 FB DD
01C0 | A2 A6 B7 16 F6 28 26 0B C2 AF B1 A1 76 60 3C 66
01D0 | A1 F1 10 FC 91 4F 34 A0 05 53 E8 6C 79 67 83 E6
01E0 | 10 5D A6 E5 DE FE EE 1E D5 56 DB A9 75 1B 58 E6
01F0 | 11 E7 3D C8 2F 8F 78 30 CE 08 F1 43 40 62 FC 37
0200 | 6E 7B D4 5D 0F 21 8E BA D7 F5 09 00 FD F7 55 41
0210 | 45 80 94 00 F8 48 1A 01 9F DB F7 4C B1 72 EF BC
0220 | 79 A3 A4 B0 A8 16 74 23 F2 52 05 23 52 BB 00 DA
0230 | 1E D9 95 75 B1 9B A1 8C 1A 80 45 0D B3 4C 9D E5
0240 | 36 E0 35 22 F6 BD CA 4B 9F 89 9E 87 BE 02 62 25
0250 | 85 DE 27 ED 82 5D 4E 25 5B EC DA EF 9F 8F 10 93
0260 | 20 29 30 83 33 8B A2 37 AB 86 E4 F0 9D 03 DD 45
0270 | B8 F3 1F 0F E6 6B AD 92 36 E6 00 59 B0 BF 8C 38
0280 | 89 13 E9 A8 FA D3 0B 78 CB 97 43 43</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 = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01EC2D375B3EA865</code></td>
<td><code>01A0DE9B3A41A865</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>D8020000</code> (728 in decimal)</td>
<td><code>78020000</code> (632 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td><code>50C933C4ADE5B6C3B5B55C411581CB21</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td><code>FECEEFE94ADAF667EE9B8167AC9761C8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE500200A1608F7BB072F2F2ABB7BCD5</code> <code>2D5F0D2CD326FA020ED43DD200A1E9D3</code> <code>29D7584E67C32EA5C0A3A09B9BCCDBBC</code> <code>1609B0565C443E9C5B460FD5B15247C1</code> <code>93AAE9782B651DEA5D5B4F5E35F6BCAD</code> <code>D55F0BE28DF5AEF4FB2AAE88579DA42C</code> <code>D9E53A5283405E9BF96391C09359D461</code> <code>643FBFBC957855E6902B681B975B058E</code> <code>8A8983EAC17B5CA92BAF731E9D300AEC</code> <code>E7F071F012B70EAE2F6BA6B01F958709</code> <code>296BBC78E9D55D470ADAFF09FAABE724</code> <code>9F61DE6B3CD43E0F77F251F42C0BBD22</code> <code>E918213AE11341BBCAA1AEBAD843A4FB</code> <code>0054B5F90966970CD8458CC372722E1C</code> <code>473E82A00E4F53800AF1338AEC5C73DD</code> <code>BF91F34B0AA94BE4B68D3EAFB3D5267E</code> <code>3DD1F68B1B5AB4A1018055F58D3CE58C</code> <code>A1A2F602B12E494BCADE7E0121E1C311</code> <code>62162BC807F8859E4AF2636C490FEFA0</code> <code>4B83260FA54C940FAF0B71DA0EDB93BE</code> <code>758391B2BFC4499778D8D6492E5867F8</code> <code>30AB4576F56CFA5567C03A9E6A55B6B7</code> <code>87323983E649940F45B504A07A441838</code> <code>1B9BAAED24447DD73F7E7041FFD77543</code> <code>3DFFF480EDA43E974EE657CF49C7E5A9</code> <code>F73EF7F959CB54B5DEE3F10AA7578A0A</code> <code>0CFB88072378D38120C92EB6DD358D67</code> <code>74DDF4AB05B206AD6F78A2460A291F90</code> <code>052509C8D6B7957661B87D5AA38A302C</code> <code>F442FE51E6D410B566E628D2C3B7E4AB</code> <code>06F69B67A093ABDD7AA3853BAF6BC9BB</code> <code>C3A0E355E263AC42FE38B2B60F41AED2</code> <code>5E9F2548141061B9550F3F845C50E6D7</code> <code>8F3954383B689EBBEFD689A1A48B3EC8</code> <code>54ABE73C9040537FA5B0FE7983E70C31</code> <code>D33F4DAAA32CADB00971206BB18F6572</code> <code>5025AB8801C3C6266E6F9E79A03F4357</code><br> <code>9604F4AE</code></td>
<td><code>FE5002005F2737D54E1DE0517FFB5046</code> <code>D71FEE25B4D79F55F8811CA4B678170E</code> <code>A7FA33309F163BC8B5820C50430A95E2</code> <code>4964EA9466F3918C63BA124285A49EF5</code> <code>FB3CCC8CB384423122F74154D535C829</code> <code>693FF9C05FD7119BBCC57E05AB388823</code> <code>D0259B2A68CB9806EB28F151F38E1F23</code> <code>0E4B7819EA0F6508E935BD29168EFC8E</code> <code>FB01A0359918C25114925AC20BD8FB9C</code> <code>CEA91BD41137970C64957CFA57412C74</code> <code>63B4232648086BC7D8ACBE369C70F427</code> <code>997645D39DF559F8669BFC4D33FBA67B</code> <code>93047BBB26C4DFF6089DAEA96EC476A8</code> <code>3DFC767179FD43194EC573BE10350763</code> <code>82AAA5F0DD34969E52314DE751358B07</code> <code>9E548EBD5781171890A7933EAA1B11EE</code> <code>C126770C04FC69EA5D18186F43ACC56B</code> <code>94BCE3D7FD759248FAD12E4315A2EEAF</code> <code>8CFF12714A3890E87E40D77592A87FD2</code> <code>05597D069B7AAE9013CC6E0E0E0B04FA</code> <code>3A80F2C40C898C1F5BE71A19B8252D70</code> <code>988C585195CA7E41F98066C0EB36CFAC</code> <code>B84325826907008BAC0E678E2E2B1A99</code> <code>FCEC47D1FCE60CD43F977D5A98B269CA</code> <code>70D4D1C7B956FBDDA2A6B716F628260B</code> <code>C2AFB1A176603C66A1F110FC914F34A0</code> <code>0553E86C796783E6105DA6E5DEFEEE1E</code> <code>D556DBA9751B58E611E73DC82F8F7830</code> <code>CE08F1434062FC376E7BD45D0F218EBA</code> <code>D7F50900FDF7554145809400F8481A01</code> <code>9FDBF74CB172EFBC79A3A4B0A8167423</code> <code>F252052352BB00DA1ED99575B19BA18C</code> <code>1A80450DB34C9DE536E03522F6BDCA4B</code> <code>9F899E87BE02622585DE27ED825D4E25</code> <code>5BECDAEF9F8F109320293083338BA237</code> <code>AB86E4F09D03DD45B8F31F0FE66BAD92</code> <code>36E60059B0BF8C388913E9A8FAD30B78</code><br> <code>CB974343</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D
<!-- 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 = A1608F7BB072F2F2ABB7BCD52D5F0D2CD326FA020ED43DD200A1E9D329D7584E67C32EA5C0A3A09B9BCCDBBC1609B0565C443E9C5B460FD5B15247C193AAE9782B651DEA5D5B4F5E35F6BCADD55F0BE28DF5AEF4FB2AAE88579DA42CD9E53A5283405E9BF96391C09359D461643FBFBC957855E6902B681B975B058E8A8983EAC17B5CA92BAF731E9D300AECE7F071F012B70EAE2F6BA6B01F958709296BBC78E9D55D470ADAFF09FAABE7249F61DE6B3CD43E0F77F251F42C0BBD22E918213AE11341BBCAA1AEBAD843A4FB0054B5F90966970CD8458CC372722E1C473E82A00E4F53800AF1338AEC5C73DDBF91F34B0AA94BE4B68D3EAFB3D5267E3DD1F68B1B5AB4A1018055F58D3CE58CA1A2F602B12E494BCADE7E0121E1C31162162BC807F8859E4AF2636C490FEFA04B83260FA54C940FAF0B71DA0EDB93BE758391B2BFC4499778D8D6492E5867F830AB4576F56CFA5567C03A9E6A55B6B787323983E649940F45B504A07A4418381B9BAAED24447DD73F7E7041FFD775433DFFF480EDA43E974EE657CF49C7E5A9F73EF7F959CB54B5DEE3F10AA7578A0A0CFB88072378D38120C92EB6DD358D6774DDF4AB05B206AD6F78A2460A291F90052509C8D6B7957661B87D5AA38A302CF442FE51E6D410B566E628D2C3B7E4AB06F69B67A093ABDD7AA3853BAF6BC9BBC3A0E355E263AC42FE38B2B60F41AED25E9F2548141061B9550F3F845C50E6D78F3954383B689EBBEFD689A1A48B3EC854ABE73C9040537FA5B0FE7983E70C31D33F4DAAA32CADB00971206BB18F65725025AB8801C3C6266E6F9E79A03F43579604F4AE
tmp_aes_key = F805C7E689A4E7AAD5C85A75FDE99DE29A982EA60DBFF1B8774E7971F940E98A
tmp_aes_iv = 88B8594FE2F8E89F875D1C6AF5E31C22C985AB4A7E4CB009D93DF6DD1482ED11</code></pre>
<pre><code>encrypted_answer = 5F2737D54E1DE0517FFB5046D71FEE25B4D79F55F8811CA4B678170EA7FA33309F163BC8B5820C50430A95E24964EA9466F3918C63BA124285A49EF5FB3CCC8CB384423122F74154D535C829693FF9C05FD7119BBCC57E05AB388823D0259B2A68CB9806EB28F151F38E1F230E4B7819EA0F6508E935BD29168EFC8EFB01A0359918C25114925AC20BD8FB9CCEA91BD41137970C64957CFA57412C7463B4232648086BC7D8ACBE369C70F427997645D39DF559F8669BFC4D33FBA67B93047BBB26C4DFF6089DAEA96EC476A83DFC767179FD43194EC573BE1035076382AAA5F0DD34969E52314DE751358B079E548EBD5781171890A7933EAA1B11EEC126770C04FC69EA5D18186F43ACC56B94BCE3D7FD759248FAD12E4315A2EEAF8CFF12714A3890E87E40D77592A87FD205597D069B7AAE9013CC6E0E0E0B04FA3A80F2C40C898C1F5BE71A19B8252D70988C585195CA7E41F98066C0EB36CFACB84325826907008BAC0E678E2E2B1A99FCEC47D1FCE60CD43F977D5A98B269CA70D4D1C7B956FBDDA2A6B716F628260BC2AFB1A176603C66A1F110FC914F34A00553E86C796783E6105DA6E5DEFEEE1ED556DBA9751B58E611E73DC82F8F7830CE08F1434062FC376E7BD45D0F218EBAD7F50900FDF7554145809400F8481A019FDBF74CB172EFBC79A3A4B0A8167423F252052352BB00DA1ED99575B19BA18C1A80450DB34C9DE536E03522F6BDCA4B9F899E87BE02622585DE27ED825D4E255BECDAEF9F8F109320293083338BA237AB86E4F09D03DD45B8F31F0FE66BAD9236E60059B0BF8C388913E9A8FAD30B78CB974343
tmp_aes_key = FCE0B35A21F44D030F77356DEDAB99EE7DFF47AC34ADB6424364127BEF70E0AA
tmp_aes_iv = 18017C774362086FD3D8059DE21E1F254713F049F8E13DA800D025FA813B52FD</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 965A59B5192F82F8493AEA537A3E45B46B234B6BBA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000191D9C9A43ADD5EEB346D1EB018C5532304F4595FDD9CD3811EBF53E9C9ACE4D8D4119FAFAEA24DB7F18285F5BD922CF4193AEC05C0BB1C8CF0D7D1339EF7CA0BA3EB358CB6C25B4BDF9EFAE82C04DAA5000CB48B6B98857F6FF1A87493A3EDA1FEBA2280F760BC1B0244C9D2D66782EF2B1BC8A94B8E3C919DDCA1114C589444B4444C6235131A7FA3448EAFA96969385159160C86891B7B54CF739F319A906DC99E6370FF6AF96C5B80C1217619143551B165F205F4060B82F4D8C6A49171DDDF09C920BCCE8B46576EDCDF66F26C5BC2A678B7C82A69771A9E6CE4B8905C2EB90A68376F8870E87C1F4F472A4E6E47055420DAFAC80CE39379FCEE1C045C5B3EA86519470D5116BA80A2
answer = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000191D9C9A43ADD5EEB346D1EB018C5532304F4595FDD9CD3811EBF53E9C9ACE4D8D4119FAFAEA24DB7F18285F5BD922CF4193AEC05C0BB1C8CF0D7D1339EF7CA0BA3EB358CB6C25B4BDF9EFAE82C04DAA5000CB48B6B98857F6FF1A87493A3EDA1FEBA2280F760BC1B0244C9D2D66782EF2B1BC8A94B8E3C919DDCA1114C589444B4444C6235131A7FA3448EAFA96969385159160C86891B7B54CF739F319A906DC99E6370FF6AF96C5B80C1217619143551B165F205F4060B82F4D8C6A49171DDDF09C920BCCE8B46576EDCDF66F26C5BC2A678B7C82A69771A9E6CE4B8905C2EB90A68376F8870E87C1F4F472A4E6E47055420DAFAC80CE39379FCEE1C045C5B3EA86519470D5116BA80A2</code></pre>
<pre><code>answer_with_hash = 1F7C8A30D9E7041717B31FBAAC973CA6CD154752BA0D89B550C933C4ADE5B6C3B5B55C411581CB21FECEEFE94ADAF667EE9B8167AC9761C803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009D7238956877A7B51C24895CB1BE674FCFCA14DD0F4DA09D6CF890BB5715D05949074C0B8611FE9A6C1A01D8FDF45215F783DD56B6D54F5020D8ECD08CE49055D21D47F6413D847243872661CF4CEB0A9E49F6DD15838F97227B7AE3F4D9552229BBB31893BF4A773E634EAB5D261E1CD04974B194F3700ECC41DA3A0C6C5955AB5D3E19DBA0AE358BFAE65BF01FF6FCB10C57919058A56B1E182D202C6CD7C0ED33542084B3E56DBCA32D1A0DA9830414D44DB9FDD66624C68C0E61FF1A3711498118918319F10EBD83B4AD518130643CA702EAF02E56BBA57427D00C339A3DCE30CCB4776AD01EF1448FD5ED36A5C212C88B03EC6276EA7DBBEE26C6C87BAA3A41A8655010F8139B52E4AE
answer = BA0D89B550C933C4ADE5B6C3B5B55C411581CB21FECEEFE94ADAF667EE9B8167AC9761C803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009D7238956877A7B51C24895CB1BE674FCFCA14DD0F4DA09D6CF890BB5715D05949074C0B8611FE9A6C1A01D8FDF45215F783DD56B6D54F5020D8ECD08CE49055D21D47F6413D847243872661CF4CEB0A9E49F6DD15838F97227B7AE3F4D9552229BBB31893BF4A773E634EAB5D261E1CD04974B194F3700ECC41DA3A0C6C5955AB5D3E19DBA0AE358BFAE65BF01FF6FCB10C57919058A56B1E182D202C6CD7C0ED33542084B3E56DBCA32D1A0DA9830414D44DB9FDD66624C68C0E61FF1A3711498118918319F10EBD83B4AD518130643CA702EAF02E56BBA57427D00C339A3DCE30CCB4776AD01EF1448FD5ED36A5C212C88B03EC6276EA7DBBEE26C6C87BAA3A41A8655010F8139B52E4AE</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 D2 AC 74 53 3A 31 3A 58 87 0E 49 D5
0010 | 3B A6 8A 05 00 09 D4 B0 4B A7 57 78 C5 60 95 8C
0020 | 4F 18 A6 BA 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 50 C9 33 C4 AD E5 B6 C3 B5 B5 5C 41
0010 | 15 81 CB 21 FE CE EF E9 4A DA F6 67 EE 9B 81 67
0020 | AC 97 61 C8 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 = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B
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 | 01 91 D9 C9 A4 3A DD 5E EB 34 6D 1E B0 18 C5 53
0140 | 23 04 F4 59 5F DD 9C D3 81 1E BF 53 E9 C9 AC E4
0150 | D8 D4 11 9F AF AE A2 4D B7 F1 82 85 F5 BD 92 2C
0160 | F4 19 3A EC 05 C0 BB 1C 8C F0 D7 D1 33 9E F7 CA
0170 | 0B A3 EB 35 8C B6 C2 5B 4B DF 9E FA E8 2C 04 DA
0180 | A5 00 0C B4 8B 6B 98 85 7F 6F F1 A8 74 93 A3 ED
0190 | A1 FE BA 22 80 F7 60 BC 1B 02 44 C9 D2 D6 67 82
01A0 | EF 2B 1B C8 A9 4B 8E 3C 91 9D DC A1 11 4C 58 94
01B0 | 44 B4 44 4C 62 35 13 1A 7F A3 44 8E AF A9 69 69
01C0 | 38 51 59 16 0C 86 89 1B 7B 54 CF 73 9F 31 9A 90
01D0 | 6D C9 9E 63 70 FF 6A F9 6C 5B 80 C1 21 76 19 14
01E0 | 35 51 B1 65 F2 05 F4 06 0B 82 F4 D8 C6 A4 91 71
01F0 | DD DF 09 C9 20 BC CE 8B 46 57 6E DC DF 66 F2 6C
0200 | 5B C2 A6 78 B7 C8 2A 69 77 1A 9E 6C E4 B8 90 5C
0210 | 2E B9 0A 68 37 6F 88 70 E8 7C 1F 4F 47 2A 4E 6E
0220 | 47 05 54 20 DA FA C8 0C E3 93 79 FC EE 1C 04 5C
0230 | 5B 3E A8 65</code></pre>
0130 | 9D 72 38 95 68 77 A7 B5 1C 24 89 5C B1 BE 67 4F
0140 | CF CA 14 DD 0F 4D A0 9D 6C F8 90 BB 57 15 D0 59
0150 | 49 07 4C 0B 86 11 FE 9A 6C 1A 01 D8 FD F4 52 15
0160 | F7 83 DD 56 B6 D5 4F 50 20 D8 EC D0 8C E4 90 55
0170 | D2 1D 47 F6 41 3D 84 72 43 87 26 61 CF 4C EB 0A
0180 | 9E 49 F6 DD 15 83 8F 97 22 7B 7A E3 F4 D9 55 22
0190 | 29 BB B3 18 93 BF 4A 77 3E 63 4E AB 5D 26 1E 1C
01A0 | D0 49 74 B1 94 F3 70 0E CC 41 DA 3A 0C 6C 59 55
01B0 | AB 5D 3E 19 DB A0 AE 35 8B FA E6 5B F0 1F F6 FC
01C0 | B1 0C 57 91 90 58 A5 6B 1E 18 2D 20 2C 6C D7 C0
01D0 | ED 33 54 20 84 B3 E5 6D BC A3 2D 1A 0D A9 83 04
01E0 | 14 D4 4D B9 FD D6 66 24 C6 8C 0E 61 FF 1A 37 11
01F0 | 49 81 18 91 83 19 F1 0E BD 83 B4 AD 51 81 30 64
0200 | 3C A7 02 EA F0 2E 56 BB A5 74 27 D0 0C 33 9A 3D
0210 | CE 30 CC B4 77 6A D0 1E F1 44 8F D5 ED 36 A5 C2
0220 | 12 C8 8B 03 EC 62 76 EA 7D BB EE 26 C6 C8 7B AA
0230 | 3A 41 A8 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 = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td><code>50C933C4ADE5B6C3B5B55C411581CB21</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td><code>FECEEFE94ADAF667EE9B8167AC9761C8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001000191D9C9A43ADD5EEB346D1E</code> <code>B018C5532304F4595FDD9CD3811EBF53</code> <code>E9C9ACE4D8D4119FAFAEA24DB7F18285</code> <code>F5BD922CF4193AEC05C0BB1C8CF0D7D1</code> <code>339EF7CA0BA3EB358CB6C25B4BDF9EFA</code> <code>E82C04DAA5000CB48B6B98857F6FF1A8</code> <code>7493A3EDA1FEBA2280F760BC1B0244C9</code> <code>D2D66782EF2B1BC8A94B8E3C919DDCA1</code> <code>114C589444B4444C6235131A7FA3448E</code> <code>AFA96969385159160C86891B7B54CF73</code> <code>9F319A906DC99E6370FF6AF96C5B80C1</code> <code>217619143551B165F205F4060B82F4D8</code> <code>C6A49171DDDF09C920BCCE8B46576EDC</code> <code>DF66F26C5BC2A678B7C82A69771A9E6C</code> <code>E4B8905C2EB90A68376F8870E87C1F4F</code> <code>472A4E6E47055420DAFAC80CE39379FC</code><br> <code>EE1C045C</code></td>
<td><code>FE0001009D7238956877A7B51C24895C</code> <code>B1BE674FCFCA14DD0F4DA09D6CF890BB</code> <code>5715D05949074C0B8611FE9A6C1A01D8</code> <code>FDF45215F783DD56B6D54F5020D8ECD0</code> <code>8CE49055D21D47F6413D847243872661</code> <code>CF4CEB0A9E49F6DD15838F97227B7AE3</code> <code>F4D9552229BBB31893BF4A773E634EAB</code> <code>5D261E1CD04974B194F3700ECC41DA3A</code> <code>0C6C5955AB5D3E19DBA0AE358BFAE65B</code> <code>F01FF6FCB10C57919058A56B1E182D20</code> <code>2C6CD7C0ED33542084B3E56DBCA32D1A</code> <code>0DA9830414D44DB9FDD66624C68C0E61</code> <code>FF1A3711498118918319F10EBD83B4AD</code> <code>518130643CA702EAF02E56BBA57427D0</code> <code>0C339A3DCE30CCB4776AD01EF1448FD5</code> <code>ED36A5C212C88B03EC6276EA7DBBEE26</code><br> <code>C6C87BAA</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>5B3EA865</code> (1705524827 in decimal)</td>
<td><code>3A41A865</code> (1705525562 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B
<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 = 9ECDD388AF28E2E9331B545F04F70C9523AA4DE19040D32B03B8F726BDBB76F0D9BAE78D117F43A25581556CECE3566A7B1A1A1CADA4B74E8BE751FF704A70300081906313BAD8F250639135D0A47FA6C69D47FFBE89B6C8A02959B87FD6FCEC223FDCA26838FD0426170BAAD37880662A87055DBBDA282AB0966BD1B8D1923A230439CDB95AFA872F16D5323950843414F4ED0547CA90FCB02E3D1E05B6933821FD17C6F2ECAD84D6BDD30B08925A45720134562E07A8E8C92C8FA3769CE62EB2CCCC199FB0607DB5FB1420159B9B373AC4C149A628F6D690655B4D7D698C75E647774E7CAED53C152E76D3F365A9F9E332C9C2C3A72B2940A711F239FB54B6</code></pre>
<pre><code>b = 8A3840F0DC6666A90077F545E9BFE309F1C291503FDA9DB9F7D9C3F3E2AC81A0C5E9AE776C12055DC5B35E5A689F441E52E30CDECF351B232BA788496AB82ED0AA74AC928DE21CC088AC573C55939082E5F2ED96330BAE75C2B131EFDCE08D45CD926A32C1AA2B86E5BD2D5A7085FA754ADAE942E3C0D6DC6A00CFCAD4E22FCC34473AF56D6723321DB9B7ED2EBDFA75C2332F60237FFAF98909C54108D484389BA5DAA35452E94F879833674F759FDBE4A2B382E6D139A9990ECDF2803601E2FAC13B395D7D6901D57E1E1905C48026A5C71AE13E957786339CC5E20DAB698A782F7C971F9842E60F5A727A3383DE454CA76E051F589577D6CEEC55A50E5368</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 = 2045E19A8796B889E5E907163BB68826E6DA69FE4092453D62718A5B5078DAC8A7F37BA27A13A55ACBD2C7665746AACE4CC5F5E67BB099E1A0A36639A560649E173AF621F3660F1CF1E9C06F920511A01A0C20794E30F926D29243772B554292BE6B5D706DEB624013586E6DAC720C5CF7916251C64122FD46E9E64F34DB37FA3E897BBD1177A4F8082B3D17C27B1A707C4DE257941DA95E5CBC0D09442ED99F06044DB0D0B0A60E7C219B5B46D24DF701635EF95A3024AB013F1E234CAE7D534182D74A3F4F64D5F2BC883B875D6D87C90DC2DE09E82FF1BE110ADA5E936C84F1AEEE0BB0F083B0A739EEEE251AA011DFF69B0CBAFB8B0710EEBD003180B615</code></pre>
<pre><code>g_b = 59BC5E63BF9C753326C9D5E076C8E2B0C6C05FFD50A2E928C3E2946184D118693B7989DDE27C8D10CF6869CEFFF5AA1CE333DC057435B9B5B2A51BB655199423378918F4AF2F94E93551DAD3EE07A69ABE5D1BC56D29C2F12EE813AB915277CC97190D04B623708608DBB2E4C260765ABD91BC3835F7D658BA9F26CC7CEFEE3BA7E89CAFE79EC7048F93FC3B1DF4D625837F3BCA2F8F0527BA5E935F6B1B83B17F6FA5588CDD5E052CF2923B89E0C9E8705F990EEAE7804CBDCE10256B441D0E2FB42011D7690EAF935BB7442BE02D511E93C13B93C5C3AA02CF93D57DE26C1AE39C0B95E2B7D3758545F99C327DC6D871764F1CC76A3DFBC5768CE6ED21BB64</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 D2 AC 74 53 3A 31 3A 58 87 0E 49 D5
0010 | 3B A6 8A 05 00 09 D4 B0 4B A7 57 78 C5 60 95 8C
0020 | 4F 18 A6 BA 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 20 45 E1 9A 87 96 B8 89 E5 E9 07 16 3B B6 88 26
0040 | E6 DA 69 FE 40 92 45 3D 62 71 8A 5B 50 78 DA C8
0050 | A7 F3 7B A2 7A 13 A5 5A CB D2 C7 66 57 46 AA CE
0060 | 4C C5 F5 E6 7B B0 99 E1 A0 A3 66 39 A5 60 64 9E
0070 | 17 3A F6 21 F3 66 0F 1C F1 E9 C0 6F 92 05 11 A0
0080 | 1A 0C 20 79 4E 30 F9 26 D2 92 43 77 2B 55 42 92
0090 | BE 6B 5D 70 6D EB 62 40 13 58 6E 6D AC 72 0C 5C
00A0 | F7 91 62 51 C6 41 22 FD 46 E9 E6 4F 34 DB 37 FA
00B0 | 3E 89 7B BD 11 77 A4 F8 08 2B 3D 17 C2 7B 1A 70
00C0 | 7C 4D E2 57 94 1D A9 5E 5C BC 0D 09 44 2E D9 9F
00D0 | 06 04 4D B0 D0 B0 A6 0E 7C 21 9B 5B 46 D2 4D F7
00E0 | 01 63 5E F9 5A 30 24 AB 01 3F 1E 23 4C AE 7D 53
00F0 | 41 82 D7 4A 3F 4F 64 D5 F2 BC 88 3B 87 5D 6D 87
0100 | C9 0D C2 DE 09 E8 2F F1 BE 11 0A DA 5E 93 6C 84
0110 | F1 AE EE 0B B0 F0 83 B0 A7 39 EE EE 25 1A A0 11
0120 | DF F6 9B 0C BA FB 8B 07 10 EE BD 00 31 80 B6 15</code></pre>
<pre><code>0000 | 54 B6 43 66 50 C9 33 C4 AD E5 B6 C3 B5 B5 5C 41
0010 | 15 81 CB 21 FE CE EF E9 4A DA F6 67 EE 9B 81 67
0020 | AC 97 61 C8 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 59 BC 5E 63 BF 9C 75 33 26 C9 D5 E0 76 C8 E2 B0
0040 | C6 C0 5F FD 50 A2 E9 28 C3 E2 94 61 84 D1 18 69
0050 | 3B 79 89 DD E2 7C 8D 10 CF 68 69 CE FF F5 AA 1C
0060 | E3 33 DC 05 74 35 B9 B5 B2 A5 1B B6 55 19 94 23
0070 | 37 89 18 F4 AF 2F 94 E9 35 51 DA D3 EE 07 A6 9A
0080 | BE 5D 1B C5 6D 29 C2 F1 2E E8 13 AB 91 52 77 CC
0090 | 97 19 0D 04 B6 23 70 86 08 DB B2 E4 C2 60 76 5A
00A0 | BD 91 BC 38 35 F7 D6 58 BA 9F 26 CC 7C EF EE 3B
00B0 | A7 E8 9C AF E7 9E C7 04 8F 93 FC 3B 1D F4 D6 25
00C0 | 83 7F 3B CA 2F 8F 05 27 BA 5E 93 5F 6B 1B 83 B1
00D0 | 7F 6F A5 58 8C DD 5E 05 2C F2 92 3B 89 E0 C9 E8
00E0 | 70 5F 99 0E EA E7 80 4C BD CE 10 25 6B 44 1D 0E
00F0 | 2F B4 20 11 D7 69 0E AF 93 5B B7 44 2B E0 2D 51
0100 | 1E 93 C1 3B 93 C5 C3 AA 02 CF 93 D5 7D E2 6C 1A
0110 | E3 9C 0B 95 E2 B7 D3 75 85 45 F9 9C 32 7D C6 D8
0120 | 71 76 4F 1C C7 6A 3D FB C5 76 8C E6 ED 21 BB 64</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 = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td><code>50C933C4ADE5B6C3B5B55C411581CB21</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td><code>FECEEFE94ADAF667EE9B8167AC9761C8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001002045E19A8796B889E5E90716</code> <code>3BB68826E6DA69FE4092453D62718A5B</code> <code>5078DAC8A7F37BA27A13A55ACBD2C766</code> <code>5746AACE4CC5F5E67BB099E1A0A36639</code> <code>A560649E173AF621F3660F1CF1E9C06F</code> <code>920511A01A0C20794E30F926D2924377</code> <code>2B554292BE6B5D706DEB624013586E6D</code> <code>AC720C5CF7916251C64122FD46E9E64F</code> <code>34DB37FA3E897BBD1177A4F8082B3D17</code> <code>C27B1A707C4DE257941DA95E5CBC0D09</code> <code>442ED99F06044DB0D0B0A60E7C219B5B</code> <code>46D24DF701635EF95A3024AB013F1E23</code> <code>4CAE7D534182D74A3F4F64D5F2BC883B</code> <code>875D6D87C90DC2DE09E82FF1BE110ADA</code> <code>5E936C84F1AEEE0BB0F083B0A739EEEE</code> <code>251AA011DFF69B0CBAFB8B0710EEBD00</code><br> <code>3180B615</code></td>
<td><code>FE00010059BC5E63BF9C753326C9D5E0</code> <code>76C8E2B0C6C05FFD50A2E928C3E29461</code> <code>84D118693B7989DDE27C8D10CF6869CE</code> <code>FFF5AA1CE333DC057435B9B5B2A51BB6</code> <code>55199423378918F4AF2F94E93551DAD3</code> <code>EE07A69ABE5D1BC56D29C2F12EE813AB</code> <code>915277CC97190D04B623708608DBB2E4</code> <code>C260765ABD91BC3835F7D658BA9F26CC</code> <code>7CEFEE3BA7E89CAFE79EC7048F93FC3B</code> <code>1DF4D625837F3BCA2F8F0527BA5E935F</code> <code>6B1B83B17F6FA5588CDD5E052CF2923B</code> <code>89E0C9E8705F990EEAE7804CBDCE1025</code> <code>6B441D0E2FB42011D7690EAF935BB744</code> <code>2BE02D511E93C13B93C5C3AA02CF93D5</code> <code>7DE26C1AE39C0B95E2B7D3758545F99C</code> <code>327DC6D871764F1CC76A3DFBC5768CE6</code><br> <code>ED21BB64</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 = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B
<!-- 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 = 54B64366D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA0000000000000000FE0001002045E19A8796B889E5E907163BB68826E6DA69FE4092453D62718A5B5078DAC8A7F37BA27A13A55ACBD2C7665746AACE4CC5F5E67BB099E1A0A36639A560649E173AF621F3660F1CF1E9C06F920511A01A0C20794E30F926D29243772B554292BE6B5D706DEB624013586E6DAC720C5CF7916251C64122FD46E9E64F34DB37FA3E897BBD1177A4F8082B3D17C27B1A707C4DE257941DA95E5CBC0D09442ED99F06044DB0D0B0A60E7C219B5B46D24DF701635EF95A3024AB013F1E234CAE7D534182D74A3F4F64D5F2BC883B875D6D87C90DC2DE09E82FF1BE110ADA5E936C84F1AEEE0BB0F083B0A739EEEE251AA011DFF69B0CBAFB8B0710EEBD003180B615
padding = 5F0D1DE79F61579108272399
tmp_aes_key = F805C7E689A4E7AAD5C85A75FDE99DE29A982EA60DBFF1B8774E7971F940E98A
tmp_aes_iv = 88B8594FE2F8E89F875D1C6AF5E31C22C985AB4A7E4CB009D93DF6DD1482ED11</code></pre>
<pre><code>data = 54B6436650C933C4ADE5B6C3B5B55C411581CB21FECEEFE94ADAF667EE9B8167AC9761C80000000000000000FE00010059BC5E63BF9C753326C9D5E076C8E2B0C6C05FFD50A2E928C3E2946184D118693B7989DDE27C8D10CF6869CEFFF5AA1CE333DC057435B9B5B2A51BB655199423378918F4AF2F94E93551DAD3EE07A69ABE5D1BC56D29C2F12EE813AB915277CC97190D04B623708608DBB2E4C260765ABD91BC3835F7D658BA9F26CC7CEFEE3BA7E89CAFE79EC7048F93FC3B1DF4D625837F3BCA2F8F0527BA5E935F6B1B83B17F6FA5588CDD5E052CF2923B89E0C9E8705F990EEAE7804CBDCE10256B441D0E2FB42011D7690EAF935BB7442BE02D511E93C13B93C5C3AA02CF93D57DE26C1AE39C0B95E2B7D3758545F99C327DC6D871764F1CC76A3DFBC5768CE6ED21BB64
padding = 6A867FA67771656D6C92FD59
tmp_aes_key = FCE0B35A21F44D030F77356DEDAB99EE7DFF47AC34ADB6424364127BEF70E0AA
tmp_aes_iv = 18017C774362086FD3D8059DE21E1F254713F049F8E13DA800D025FA813B52FD</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 = 37201A6355370E8BDF93202F9FCC87F354FADD9339765F45589AB3C83CCB2B7C4A61A131690B47864D65C2D0303B9C1F3B96953FD00E18E1FDB4F3588100B9C0924472EEF1B8EB26DD87D624CD9D12B665C34A7B3742C141B0C3B266213289527EF2F1DFAA9F92C83B99299DCA36B81F069B8FD6C7D14541F3C14724EB29325D130AA97DB0EE6AB4AEBB6A3F9064FF8B87BF213226314E323BCA00EB3852113D7632C625F1E973DBC3D6A29FF925F6EBA7CFF3EFCD8E77D0B1AC1E55EA2BAD3EDBA1982C8CC82D5EFD50C3E7DDD67C5634AFC05213A897EABD82E1A0E35760C26DAEA60EDDA2CB28B63F8159028F4C61D78267AB57161577731F0B3FB419EB8A1550835BC884FD17BD8C0CDB7A71DAC531028FED9120DF89027ADA57BF1DEC5C8FC74EDFC2D8B686966E57A2F935C91A0682DE90A326BD32BC4E116EE91D2503E224047828D3C2CFA8A3BF5F8D911752</code></pre>
<pre><code>encrypted_data = FDDE3B612F5636DB66A70D975BD4FE92467E0AF40C3FDB9929A074686A0DFEB85F7FB17B7090C7995675BA0959DDF6A7786607BB783CD731B1C369DD6B1A3D6AE429A7BF6F312842CA91540E368913B40AFBA3F01A6068D62B53AB12832181DDD1F4E413679984FEA52C7F93B34009C7427D6BA4EFBB79538B046E38142DFEC6531F7B801C2C57D07B230C9FF279B7316B7918973C4E779705E9F92C5BCB5303C6D4E9472C554AA297C45CAB3E2F2DBBED740122EA46FB4FE300C84B9762C9CD0C506A6F7F0E30494405DFA9FD2A2F6B845C85FC2A25AACD42A88C2843BEDA0C995A0A36B68DBCF852498D4CC68FCBE220BACA68BC7358307D4E30FFED4503345593B299E4ACFAE15EC727E9EC4C9697BA25F352CCD6F1EFEE1B0A12D0F2DE4AF6653A35111AB8456CB3955470228D2C3FFB4646F1A0A7EF1DC21F5071B856F9CA55F75777734B7BBF1D21AF17535045</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 04 11 00 00 5B 3E A8 65
0010 | 78 01 00 00 1F 5F 04 F5 D2 AC 74 53 3A 31 3A 58
0020 | 87 0E 49 D5 3B A6 8A 05 00 09 D4 B0 4B A7 57 78
0030 | C5 60 95 8C 4F 18 A6 BA FE 50 01 00 37 20 1A 63
0040 | 55 37 0E 8B DF 93 20 2F 9F CC 87 F3 54 FA DD 93
0050 | 39 76 5F 45 58 9A B3 C8 3C CB 2B 7C 4A 61 A1 31
0060 | 69 0B 47 86 4D 65 C2 D0 30 3B 9C 1F 3B 96 95 3F
0070 | D0 0E 18 E1 FD B4 F3 58 81 00 B9 C0 92 44 72 EE
0080 | F1 B8 EB 26 DD 87 D6 24 CD 9D 12 B6 65 C3 4A 7B
0090 | 37 42 C1 41 B0 C3 B2 66 21 32 89 52 7E F2 F1 DF
00A0 | AA 9F 92 C8 3B 99 29 9D CA 36 B8 1F 06 9B 8F D6
00B0 | C7 D1 45 41 F3 C1 47 24 EB 29 32 5D 13 0A A9 7D
00C0 | B0 EE 6A B4 AE BB 6A 3F 90 64 FF 8B 87 BF 21 32
00D0 | 26 31 4E 32 3B CA 00 EB 38 52 11 3D 76 32 C6 25
00E0 | F1 E9 73 DB C3 D6 A2 9F F9 25 F6 EB A7 CF F3 EF
00F0 | CD 8E 77 D0 B1 AC 1E 55 EA 2B AD 3E DB A1 98 2C
0100 | 8C C8 2D 5E FD 50 C3 E7 DD D6 7C 56 34 AF C0 52
0110 | 13 A8 97 EA BD 82 E1 A0 E3 57 60 C2 6D AE A6 0E
0120 | DD A2 CB 28 B6 3F 81 59 02 8F 4C 61 D7 82 67 AB
0130 | 57 16 15 77 73 1F 0B 3F B4 19 EB 8A 15 50 83 5B
0140 | C8 84 FD 17 BD 8C 0C DB 7A 71 DA C5 31 02 8F ED
0150 | 91 20 DF 89 02 7A DA 57 BF 1D EC 5C 8F C7 4E DF
0160 | C2 D8 B6 86 96 6E 57 A2 F9 35 C9 1A 06 82 DE 90
0170 | A3 26 BD 32 BC 4E 11 6E E9 1D 25 03 E2 24 04 78
0180 | 28 D3 C2 CF A8 A3 BF 5F 8D 91 17 52</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 98 FE 0B 00 3A 41 A8 65
0010 | 78 01 00 00 1F 5F 04 F5 50 C9 33 C4 AD E5 B6 C3
0020 | B5 B5 5C 41 15 81 CB 21 FE CE EF E9 4A DA F6 67
0030 | EE 9B 81 67 AC 97 61 C8 FE 50 01 00 FD DE 3B 61
0040 | 2F 56 36 DB 66 A7 0D 97 5B D4 FE 92 46 7E 0A F4
0050 | 0C 3F DB 99 29 A0 74 68 6A 0D FE B8 5F 7F B1 7B
0060 | 70 90 C7 99 56 75 BA 09 59 DD F6 A7 78 66 07 BB
0070 | 78 3C D7 31 B1 C3 69 DD 6B 1A 3D 6A E4 29 A7 BF
0080 | 6F 31 28 42 CA 91 54 0E 36 89 13 B4 0A FB A3 F0
0090 | 1A 60 68 D6 2B 53 AB 12 83 21 81 DD D1 F4 E4 13
00A0 | 67 99 84 FE A5 2C 7F 93 B3 40 09 C7 42 7D 6B A4
00B0 | EF BB 79 53 8B 04 6E 38 14 2D FE C6 53 1F 7B 80
00C0 | 1C 2C 57 D0 7B 23 0C 9F F2 79 B7 31 6B 79 18 97
00D0 | 3C 4E 77 97 05 E9 F9 2C 5B CB 53 03 C6 D4 E9 47
00E0 | 2C 55 4A A2 97 C4 5C AB 3E 2F 2D BB ED 74 01 22
00F0 | EA 46 FB 4F E3 00 C8 4B 97 62 C9 CD 0C 50 6A 6F
0100 | 7F 0E 30 49 44 05 DF A9 FD 2A 2F 6B 84 5C 85 FC
0110 | 2A 25 AA CD 42 A8 8C 28 43 BE DA 0C 99 5A 0A 36
0120 | B6 8D BC F8 52 49 8D 4C C6 8F CB E2 20 BA CA 68
0130 | BC 73 58 30 7D 4E 30 FF ED 45 03 34 55 93 B2 99
0140 | E4 AC FA E1 5E C7 27 E9 EC 4C 96 97 BA 25 F3 52
0150 | CC D6 F1 EF EE 1B 0A 12 D0 F2 DE 4A F6 65 3A 35
0160 | 11 1A B8 45 6C B3 95 54 70 22 8D 2C 3F FB 46 46
0170 | F1 A0 A7 EF 1D C2 1F 50 71 B8 56 F9 CA 55 F7 57
0180 | 77 73 4B 7B BF 1D 21 AF 17 53 50 45</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>041100005B3EA865</code></td>
<td><code>98FE0B003A41A865</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>D2AC74533A313A58870E49D53BA68A05</code></td>
<td><code>50C933C4ADE5B6C3B5B55C411581CB21</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td><code>FECEEFE94ADAF667EE9B8167AC9761C8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010037201A6355370E8BDF93202F</code> <code>9FCC87F354FADD9339765F45589AB3C8</code> <code>3CCB2B7C4A61A131690B47864D65C2D0</code> <code>303B9C1F3B96953FD00E18E1FDB4F358</code> <code>8100B9C0924472EEF1B8EB26DD87D624</code> <code>CD9D12B665C34A7B3742C141B0C3B266</code> <code>213289527EF2F1DFAA9F92C83B99299D</code> <code>CA36B81F069B8FD6C7D14541F3C14724</code> <code>EB29325D130AA97DB0EE6AB4AEBB6A3F</code> <code>9064FF8B87BF213226314E323BCA00EB</code> <code>3852113D7632C625F1E973DBC3D6A29F</code> <code>F925F6EBA7CFF3EFCD8E77D0B1AC1E55</code> <code>EA2BAD3EDBA1982C8CC82D5EFD50C3E7</code> <code>DDD67C5634AFC05213A897EABD82E1A0</code> <code>E35760C26DAEA60EDDA2CB28B63F8159</code> <code>028F4C61D78267AB57161577731F0B3F</code> <code>B419EB8A1550835BC884FD17BD8C0CDB</code> <code>7A71DAC531028FED9120DF89027ADA57</code> <code>BF1DEC5C8FC74EDFC2D8B686966E57A2</code> <code>F935C91A0682DE90A326BD32BC4E116E</code> <code>E91D2503E224047828D3C2CFA8A3BF5F</code><br> <code>8D911752</code></td>
<td><code>FE500100FDDE3B612F5636DB66A70D97</code> <code>5BD4FE92467E0AF40C3FDB9929A07468</code> <code>6A0DFEB85F7FB17B7090C7995675BA09</code> <code>59DDF6A7786607BB783CD731B1C369DD</code> <code>6B1A3D6AE429A7BF6F312842CA91540E</code> <code>368913B40AFBA3F01A6068D62B53AB12</code> <code>832181DDD1F4E413679984FEA52C7F93</code> <code>B34009C7427D6BA4EFBB79538B046E38</code> <code>142DFEC6531F7B801C2C57D07B230C9F</code> <code>F279B7316B7918973C4E779705E9F92C</code> <code>5BCB5303C6D4E9472C554AA297C45CAB</code> <code>3E2F2DBBED740122EA46FB4FE300C84B</code> <code>9762C9CD0C506A6F7F0E30494405DFA9</code> <code>FD2A2F6B845C85FC2A25AACD42A88C28</code> <code>43BEDA0C995A0A36B68DBCF852498D4C</code> <code>C68FCBE220BACA68BC7358307D4E30FF</code> <code>ED4503345593B299E4ACFAE15EC727E9</code> <code>EC4C9697BA25F352CCD6F1EFEE1B0A12</code> <code>D0F2DE4AF6653A35111AB8456CB39554</code> <code>70228D2C3FFB4646F1A0A7EF1DC21F50</code> <code>71B856F9CA55F75777734B7BBF1D21AF</code><br> <code>17535045</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 = 835F6EB517D11E41A5F6338F29D4F8438DF9771D54A6D9BA0B96BCACFDF1F14F0A7ABC0504976D9A6ED84E87258033ED015AE48331C90C7D697917CD14C9056F3FF142DC81BB942D675E2A5034702D83F63FAE694380F1222E747779EC012F7780E4359427A0B1676414CD6BF64B6FECF7A758BAD66D56FFDAF58BD56434AE67B64C28DBBD81E9D91A7A7E66462DE6689F7348859B10302D9D238BEB9205EA39A437B0FF526DEA5664AA9AEE462AB103AEBABCE740B88E43CB0A3FB7BDDE92E0F6DECAFB808BF9581CF4BD6B0BA016915276731F7F18550C510B1FF0C369F0C96A8ADD4E09D1333E87C84E7295B8803B5DC9F1BD37F358A831D47DB766E03648</code></pre>
<pre><code>auth_key = 4D26BD0566B8B667C5F700D2807B47C30EA5CA75C0AA3F669AF19A81C89993AEFBB9788FBAF6CC49C176E6BB39E8D55846F886A55ED6C500CC81DBAD5C36510FF20DC537CE9724780380EB55680C40054AA13815D52456C72667EDDCB0767FF2535A6225C787C07258C47358AD381B8ABC8F4AACE3BCD128C0017B14783B2ABFFBF01FDEF8E39B8EE57F9E5AD1EADA3A8D840E7B4841F250D0AD2B720A32EF7B2F451E725CDCDA6C42CCD36106A68F399CC3F293B0C19F08FC42D5AEE4002007EAC8A44A16463F64327A439F8831A83150C8742A0539AB3049904ECB7CA951FE9ED9252829829FF8721A2690E71DB00E60B777C03785796C2A8A3A7F2D37FAC8</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 6C E6 E5 5B 3E A8 65
0010 | 5C 00 00 00 34 F7 CB 3B D2 AC 74 53 3A 31 3A 58
0020 | 87 0E 49 D5 3B A6 8A 05 00 09 D4 B0 4B A7 57 78
0030 | C5 60 95 8C 4F 18 A6 BA 03 83 CA 93 75 5E BD 34
0040 | FA 87 21 8C DF 8C C2 E7</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 40 01 75 3B 41 A8 65
0010 | 9C 00 00 00 34 F7 CB 3B 50 C9 33 C4 AD E5 B6 C3
0020 | B5 B5 5C 41 15 81 CB 21 FE CE EF E9 4A DA F6 67
0030 | EE 9B 81 67 AC 97 61 C8 07 BC 70 E5 42 D1 25 6A
0040 | 17 46 A3 B4 99 70 F6 98</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>016CE6E55B3EA865</code></td>
<td><code>014001753B41A865</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>5C000000</code> (92 in decimal)</td>
<td><code>9C000000</code> (156 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>D2AC74533A313A58870E49D53BA68A05</code></td>
<td><code>50C933C4ADE5B6C3B5B55C411581CB21</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td><code>FECEEFE94ADAF667EE9B8167AC9761C8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>0383CA93755EBD34FA87218CDF8CC2E7</code></td>
<td><code>07BC70E542D1256A1746A3B49970F698</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

@ -148,7 +148,7 @@
</tr>
<tr>
<td><a href="/constructor/messageMediaGiveawayResults">messageMediaGiveawayResults</a></td>
<td> </td>
<td>A <a href="/api/giveaway">giveaway</a> with public winners has finished, this constructor contains info about the winners.</td>
</tr>
</tbody>
</table>