Update content of files

This commit is contained in:
GitHub Action 2024-01-17 21:19:14 +00:00
parent 3d1597a5b5
commit 0422927794
28 changed files with 320 additions and 433 deletions

View file

@ -81,6 +81,7 @@
<a href='/method/account.getChannelRestrictedStatusEmojis'>account.getChannelRestrictedStatusEmojis</a>#35a9e0d5 hash:<a href='/type/long'>long</a> = <a href='/type/EmojiList'>EmojiList</a>;</code></pre>
<p>After reaching at least the <a href="/api/boost">boost level</a> specified in the <a href="/api/config#channel-emoji-status-level-min"><code>channel_emoji_status_level_min</code> config parameter</a>, channels gain the ability to change their status emoji <a href="#setting-an-emoji-status">just as described above</a>. </p>
<p>The only difference is that some specific <a href="/api/custom-emoji">custom emojis</a> cannot be used as channel statuses: use <a href="/method/account.getChannelRestrictedStatusEmojis">account.getChannelRestrictedStatusEmojis</a> to fetch the full list of IDs of custom emojis that cannot be used in channel statuses.</p>
<p>Only custom emoji <a href="/constructor/stickerSet">stickersets</a> with the <code>channel_emoji_status</code> flag set can be used in channel custom emoji statuses.</p>
<h3><a class="anchor" href="#featured-emoji-status-stickersets" id="featured-emoji-status-stickersets" name="featured-emoji-status-stickersets"><i class="anchor-icon"></i></a>Featured emoji status stickersets</h3>
<pre><code><a href='/constructor/emojiStatus'>emojiStatus</a>#929b619d document_id:<a href='/type/long'>long</a> = <a href='/type/EmojiStatus'>EmojiStatus</a>;

View file

@ -138,20 +138,20 @@
<ul>
<li>Added <a href="/constructor/messageMediaGiveawayResults">messageMediaGiveawayResults</a> - </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.</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>
<li>Added <a href="/constructor/stories.storyReactionsList">stories.storyReactionsList</a> - List of peers that reacted to or intercated with a specific <a href="/api/stories">story</a></li>
<li>Added <a href="/constructor/storyViewPublicForward">storyViewPublicForward</a> - </li>
<li>Added <a href="/constructor/storyViewPublicRepost">storyViewPublicRepost</a> - </li>
<li>Added <a href="/constructor/storyViewPublicForward">storyViewPublicForward</a> - A certain peer has forwarded the story as a message to a public chat or channel.</li>
<li>Added <a href="/constructor/storyViewPublicRepost">storyViewPublicRepost</a> - A certain peer has reposted the story.</li>
<li>Added <a href="/constructor/channelAdminLogEventActionChangePeerColor">channelAdminLogEventActionChangePeerColor</a> - The <a href="/api/colors">message accent color</a> was changed</li>
<li>Added <a href="/constructor/channelAdminLogEventActionChangeProfilePeerColor">channelAdminLogEventActionChangeProfilePeerColor</a> - The <a href="/api/colors">profile accent color</a> was changed</li>
<li>Added <a href="/constructor/channelAdminLogEventActionChangeWallpaper">channelAdminLogEventActionChangeWallpaper</a> - The <a href="/api/wallpapers">wallpaper</a> was changed</li>
<li>Added <a href="/constructor/channelAdminLogEventActionChangeEmojiStatus">channelAdminLogEventActionChangeEmojiStatus</a> - The <a href="/api/emoji-status">emoji status</a> was changed</li>
<li>Added <a href="/constructor/inputStickerSetEmojiChannelDefaultStatuses">inputStickerSetEmojiChannelDefaultStatuses</a> - Default <a href="/api/emoji-status">custom emoji status</a> stickerset for channel statuses</li>
<li>Added <a href="/constructor/mediaAreaChannelPost">mediaAreaChannelPost</a> - </li>
<li>Added <a href="/constructor/mediaAreaChannelPost">mediaAreaChannelPost</a> - Represents a channel post.</li>
<li>Added <a href="/constructor/inputMediaAreaChannelPost">inputMediaAreaChannelPost</a> - Represents a channel post</li>
<li>Added <a href="/constructor/updateBotMessageReaction">updateBotMessageReaction</a> - </li>
<li>Added <a href="/constructor/updateBotMessageReactions">updateBotMessageReactions</a> - </li>
<li>Added <a href="/constructor/updateBotMessageReaction">updateBotMessageReaction</a> - Bots only: a user has changed their reactions on a message with public reactions.</li>
<li>Added <a href="/constructor/updateBotMessageReactions">updateBotMessageReactions</a> - Bots only: the number of reactions on a message with anonymous reactions has changed.</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
@ -1172,7 +1172,7 @@ Third-party apps may log in using any of the other code delivery methods (Telegr
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a> - Send a chosen peer, as requested by a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</li>
<li>Added <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a> - Send one or more chosen peers, as requested by a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</li>
<li>Added <a href="/method/account.getDefaultProfilePhotoEmojis">account.getDefaultProfilePhotoEmojis</a> - Get a set of suggested <a href="/api/custom-emoji">custom emoji stickers</a> that can be <a href="/api/files#sticker-profile-pictures">used as profile picture</a></li>
<li>Added <a href="/method/account.getDefaultGroupPhotoEmojis">account.getDefaultGroupPhotoEmojis</a> - Get a set of suggested <a href="/api/custom-emoji">custom emoji stickers</a> that can be <a href="/api/files#sticker-profile-pictures">used as group picture</a></li>
<li>Added <a href="/method/auth.requestFirebaseSms">auth.requestFirebaseSms</a> - Request an SMS code via Firebase.</li>
@ -1194,11 +1194,11 @@ Third-party apps may log in using any of the other code delivery methods (Telegr
<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/auth.sentCodeSuccess">auth.sentCodeSuccess</a> - The user successfully authorized using <a href="/api/auth#future-auth-tokens">future auth tokens</a></li>
<li>Added <a href="/constructor/messageActionRequestedPeer">messageActionRequestedPeer</a> - Contains info about a peer that the user shared with the bot after clicking on a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</li>
<li>Added <a href="/constructor/messageActionRequestedPeer">messageActionRequestedPeer</a> - Contains info about one or more peers that the user shared with the bot after clicking on a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</li>
<li>Added <a href="/constructor/requestPeerTypeUser">requestPeerTypeUser</a> - Choose a user.</li>
<li>Added <a href="/constructor/requestPeerTypeChat">requestPeerTypeChat</a> - Choose a chat or supergroup</li>
<li>Added <a href="/constructor/requestPeerTypeBroadcast">requestPeerTypeBroadcast</a> - Choose a channel</li>
<li>Added <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> - Prompts the user to select and share a peer with the bot using <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></li>
<li>Added <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> - Prompts the user to select and share one or more peers with the bot using <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></li>
<li>Added <a href="/constructor/emojiListNotModified">emojiListNotModified</a> - The list of <a href="/api/custom-emoji">custom emojis</a> hasn't changed.</li>
<li>Added <a href="/constructor/emojiList">emojiList</a> - Represents a list of <a href="/api/custom-emoji">custom emojis</a>.</li>
<li>Added <a href="/constructor/auth.sentCodeTypeFirebaseSms">auth.sentCodeTypeFirebaseSms</a> - An authentication code should be delivered via SMS after Firebase attestation, as described in the <a href="/api/auth">auth documentation »</a>.</li>

View file

@ -74,7 +74,7 @@
<tr>
<td><strong>channel</strong></td>
<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td>
<td>The channel that originally posted the message</td>
<td>The channel that posted the message</td>
</tr>
<tr>
<td><strong>msg_id</strong></td>

View file

@ -99,7 +99,7 @@
<tr>
<td><strong>prize_description</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/string">string</a></td>
<td> </td>
<td>Can contain a textual description of additional giveaway prizes.</td>
</tr>
<tr>
<td><strong>random_id</strong></td>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>keyboardButtonRequestPeer</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Prompts the user to select and share a peer with the bot using messages.sendBotRequestedPeer">
<meta property="description" content="Prompts the user to select and share one or more peers with the bot using messages.sendBotRequestedPeer">
<meta property="og:title" content="keyboardButtonRequestPeer">
<meta property="og:image" content="">
<meta property="og:description" content="Prompts the user to select and share a peer with the bot using messages.sendBotRequestedPeer">
<meta property="og:description" content="Prompts the user to select and share one or more peers with the bot using messages.sendBotRequestedPeer">
<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">
@ -42,7 +42,7 @@
<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/keyboardButtonRequestPeer" >keyboardButtonRequestPeer</a></li></ul></div>
<h1 id="dev_page_title">keyboardButtonRequestPeer</h1>
<div id="dev_page_content"><p>Prompts the user to select and share a peer with the bot using <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></p>
<div id="dev_page_content"><p>Prompts the user to select and share one or more peers with the bot using <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -79,12 +79,12 @@
<tr>
<td><strong>peer_type</strong></td>
<td style="text-align: center;"><a href="/type/RequestPeerType">RequestPeerType</a></td>
<td>Filtering criteria to use for the peer selection list shown to the user. <br>The list should display all existing peers of the specified type, and should also offer an option for the user to create and immediately use a peer of the specified type, if needed.</td>
<td>Filtering criteria to use for the peer selection list shown to the user. <br>The list should display all existing peers of the specified type, and should also offer an option for the user to create and immediately use one or more (up to <code>max_quantity</code>) peers of the specified type, if needed.</td>
</tr>
<tr>
<td><strong>max_quantity</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Maximum number of peers that can be chosne.</td>
</tr>
</tbody>
</table>
@ -92,7 +92,7 @@
<p><a href="/type/KeyboardButton">KeyboardButton</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="#messagessendbotrequestedpeer" id="messagessendbotrequestedpeer" name="messagessendbotrequestedpeer"><i class="anchor-icon"></i></a><a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></h4>
<p>Send a chosen peer, as requested by a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</p></div>
<p>Send one or more chosen peers, as requested by a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</p></div>
</div>

View file

@ -4,38 +4,24 @@
<meta charset="utf-8">
<title>mediaAreaChannelPost</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
<meta property="description" content="Represents a channel post.
Parameters
Name
Type
Description
coordinates
MediaAreaCoordinates
 
channel_id
long
 
msg_id
int
 
Type
MediaArea">
The size and location of the…">
<meta property="og:title" content="mediaAreaChannelPost">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
<meta property="og:description" content="Represents a channel post.
Parameters
Name
Type
Description
coordinates
MediaAreaCoordinates
 
channel_id
long
 
msg_id
int
 
Type
MediaArea">
The size and location of the…">
<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">
@ -70,7 +56,8 @@ MediaArea">
<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/mediaAreaChannelPost" >mediaAreaChannelPost</a></li></ul></div>
<h1 id="dev_page_title">mediaAreaChannelPost</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Represents a channel post.</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>
@ -96,17 +83,17 @@ MediaArea">
<tr>
<td><strong>coordinates</strong></td>
<td style="text-align: center;"><a href="/type/MediaAreaCoordinates">MediaAreaCoordinates</a></td>
<td> </td>
<td>The size and location of the media area corresponding to the location sticker on top of the story media.</td>
</tr>
<tr>
<td><strong>channel_id</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td> </td>
<td>The channel that posted the message</td>
</tr>
<tr>
<td><strong>msg_id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>ID of the channel message</td>
</tr>
</tbody>
</table>

View file

@ -99,22 +99,22 @@
<tr>
<td><strong>currency</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td>
<td> </td>
<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td>
</tr>
<tr>
<td><strong>amount</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/long">long</a></td>
<td> </td>
<td>Total price in the smallest units of the currency (integer, not float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the exp parameter in <a href="/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td>
</tr>
<tr>
<td><strong>crypto_currency</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/string">string</a></td>
<td> </td>
<td>If set, the gift was made using the specified cryptocurrency.</td>
</tr>
<tr>
<td><strong>crypto_amount</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/long">long</a></td>
<td> </td>
<td>If <code>crypto_currency</code> is set, contains the paid amount, in the smallest units of the cryptocurrency.</td>
</tr>
</tbody>
</table>
@ -128,7 +128,8 @@
<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>
<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="#bot-payments-api" id="bot-payments-api" name="bot-payments-api"><i class="anchor-icon"></i></a><a href="/bots/payments">Bot Payments API</a></h4></div>
</div>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>messageActionRequestedPeer</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Contains info about a peer that the user shared with the bot after clicking on a keyboardButtonRequestPeer button.">
<meta property="description" content="Contains info about one or more peers that the user shared with the bot after clicking on a keyboardButtonRequestPeer button.">
<meta property="og:title" content="messageActionRequestedPeer">
<meta property="og:image" content="">
<meta property="og:description" content="Contains info about a peer that the user shared with the bot after clicking on a keyboardButtonRequestPeer button.">
<meta property="og:description" content="Contains info about one or more peers that the user shared with the bot after clicking on a keyboardButtonRequestPeer button.">
<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">
@ -42,7 +42,7 @@
<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/messageActionRequestedPeer" >messageActionRequestedPeer</a></li></ul></div>
<h1 id="dev_page_title">messageActionRequestedPeer</h1>
<div id="dev_page_content"><p>Contains info about a peer that the user shared with the bot after clicking on a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</p>
<div id="dev_page_content"><p>Contains info about one or more peers that the user shared with the bot after clicking on a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -74,7 +74,7 @@
<tr>
<td><strong>peers</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Peer">Peer</a>&gt;</td>
<td> </td>
<td>The shared peers</td>
</tr>
</tbody>
</table>
@ -82,7 +82,7 @@
<p><a href="/type/MessageAction">MessageAction</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="#keyboardbuttonrequestpeer" id="keyboardbuttonrequestpeer" name="keyboardbuttonrequestpeer"><i class="anchor-icon"></i></a><a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a></h4>
<p>Prompts the user to select and share a peer with the bot using <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></p></div>
<p>Prompts the user to select and share one or more peers with the bot using <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></p></div>
</div>

View file

@ -94,7 +94,7 @@
<tr>
<td><strong>prize_description</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/string">string</a></td>
<td> </td>
<td>Can contain a textual description of additional giveaway prizes.</td>
</tr>
<tr>
<td><strong>quantity</strong></td>

View file

@ -138,7 +138,7 @@ refunded…">
<tr>
<td><strong>prize_description</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/string">string</a></td>
<td> </td>
<td>Can contain a textual description of additional giveaway prizes.</td>
</tr>
<tr>
<td><strong>until_date</strong></td>

View file

@ -109,7 +109,7 @@
<tr>
<td><strong>channel_emoji_status</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/constructor/true">true</a></td>
<td> </td>
<td>If set, this custom emoji stickerset can be used in <a href="/api/emoji-status">channel emoji statuses</a>.</td>
</tr>
<tr>
<td><strong>installed_date</strong></td>

View file

@ -79,12 +79,12 @@
<tr>
<td><strong>views_count</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Total number of story views</td>
</tr>
<tr>
<td><strong>forwards_count</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Total number of story forwards/reposts</td>
</tr>
<tr>
<td><strong>reactions_count</strong></td>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>storyReactionPublicForward</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="A certain peer has forwarded the story as a message.">
<meta property="description" content="A certain peer has forwarded the story as a message to a public chat or channel.">
<meta property="og:title" content="storyReactionPublicForward">
<meta property="og:image" content="">
<meta property="og:description" content="A certain peer has forwarded the story as a message.">
<meta property="og:description" content="A certain peer has forwarded the story as a message to a public chat or channel.">
<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">
@ -42,7 +42,7 @@
<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/storyReactionPublicForward" >storyReactionPublicForward</a></li></ul></div>
<h1 id="dev_page_title">storyReactionPublicForward</h1>
<div id="dev_page_content"><p>A certain peer has forwarded the story as a message.</p>
<div id="dev_page_content"><p>A certain peer has forwarded the story as a message to a public chat or channel.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">

View file

@ -4,30 +4,10 @@
<meta charset="utf-8">
<title>storyViewPublicForward</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
blocked
flags.0?true
 
blocked_my_stories_from…">
<meta property="description" content="A certain peer has forwarded the story as a message to a public chat or channel.">
<meta property="og:title" content="storyViewPublicForward">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
blocked
flags.0?true
 
blocked_my_stories_from…">
<meta property="og:description" content="A certain peer has forwarded the story as a message to a public chat or channel.">
<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 @@ blocked_my_stories_from…">
<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/storyViewPublicForward" >storyViewPublicForward</a></li></ul></div>
<h1 id="dev_page_title">storyViewPublicForward</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>A certain peer has forwarded the story as a message to a public chat or channel.</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,22 +74,25 @@ blocked_my_stories_from…">
<tr>
<td><strong>blocked</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>Whether we have <a href="/api/block">completely blocked</a> this user, including from viewing more of our stories.</td>
</tr>
<tr>
<td><strong>blocked_my_stories_from</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/constructor/true">true</a></td>
<td> </td>
<td>Whether we have <a href="/api/block">blocked</a> this user from viewing more of our stories.</td>
</tr>
<tr>
<td><strong>message</strong></td>
<td style="text-align: center;"><a href="/type/Message">Message</a></td>
<td> </td>
<td>The message with the forwarded story.</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/StoryView">StoryView</a></p></div>
<p><a href="/type/StoryView">StoryView</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="#blocklist" id="blocklist" name="blocklist"><i class="anchor-icon"></i></a><a href="/api/block">Blocklist</a></h4>
<p>Working with the blocklist.</p></div>
</div>

View file

@ -4,30 +4,10 @@
<meta charset="utf-8">
<title>storyViewPublicRepost</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
blocked
flags.0?true
 
blocked_my_stories_from…">
<meta property="description" content="A certain peer has reposted the story.">
<meta property="og:title" content="storyViewPublicRepost">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
blocked
flags.0?true
 
blocked_my_stories_from…">
<meta property="og:description" content="A certain peer has reposted the story.">
<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 @@ blocked_my_stories_from…">
<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/storyViewPublicRepost" >storyViewPublicRepost</a></li></ul></div>
<h1 id="dev_page_title">storyViewPublicRepost</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>A certain peer has reposted the story.</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,27 +74,30 @@ blocked_my_stories_from…">
<tr>
<td><strong>blocked</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>Whether we have <a href="/api/block">completely blocked</a> this user, including from viewing more of our stories.</td>
</tr>
<tr>
<td><strong>blocked_my_stories_from</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/constructor/true">true</a></td>
<td> </td>
<td>Whether we have <a href="/api/block">blocked</a> this user from viewing more of our stories.</td>
</tr>
<tr>
<td><strong>peer_id</strong></td>
<td style="text-align: center;"><a href="/type/Peer">Peer</a></td>
<td> </td>
<td>The peer that reposted the story.</td>
</tr>
<tr>
<td><strong>story</strong></td>
<td style="text-align: center;"><a href="/type/StoryItem">StoryItem</a></td>
<td> </td>
<td>The reposted story.</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/StoryView">StoryView</a></p></div>
<p><a href="/type/StoryView">StoryView</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="#blocklist" id="blocklist" name="blocklist"><i class="anchor-icon"></i></a><a href="/api/block">Blocklist</a></h4>
<p>Working with the blocklist.</p></div>
</div>

View file

@ -4,48 +4,10 @@
<meta charset="utf-8">
<title>updateBotMessageReaction</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
peer
Peer
 
msg_id
int
 
date
int
 
actor
Peer
 
old_reactions
Vector&lt;Reaction&gt;
 
new_reactions…">
<meta property="description" content="Bots only: a user has changed their reactions on a message with public reactions.">
<meta property="og:title" content="updateBotMessageReaction">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
peer
Peer
 
msg_id
int
 
date
int
 
actor
Peer
 
old_reactions
Vector&lt;Reaction&gt;
 
new_reactions…">
<meta property="og:description" content="Bots only: a user has changed their reactions on a message with public reactions.">
<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">
@ -80,7 +42,8 @@ new_reactions…">
<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/updateBotMessageReaction" >updateBotMessageReaction</a></li></ul></div>
<h1 id="dev_page_title">updateBotMessageReaction</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Bots only: a user has changed their reactions on a message with public reactions.</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>
@ -106,42 +69,45 @@ new_reactions…">
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/Peer">Peer</a></td>
<td> </td>
<td>Peer of the reacted-to message.</td>
</tr>
<tr>
<td><strong>msg_id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>ID of the reacted-to message.</td>
</tr>
<tr>
<td><strong>date</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Date of the change.</td>
</tr>
<tr>
<td><strong>actor</strong></td>
<td style="text-align: center;"><a href="/type/Peer">Peer</a></td>
<td> </td>
<td>The user that (un)reacted to the message.</td>
</tr>
<tr>
<td><strong>old_reactions</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Reaction">Reaction</a>&gt;</td>
<td> </td>
<td>Old reactions</td>
</tr>
<tr>
<td><strong>new_reactions</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Reaction">Reaction</a>&gt;</td>
<td> </td>
<td>New reactions</td>
</tr>
<tr>
<td><strong>qts</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td><a href="/api/updates">QTS</a> event sequence identifier</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/Update">Update</a></p></div>
<p><a href="/type/Update">Update</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="#working-with-updates" id="working-with-updates" name="working-with-updates"><i class="anchor-icon"></i></a><a href="/api/updates">Working with Updates</a></h4>
<p>How to subscribe to updates and handle them properly.</p></div>
</div>

View file

@ -4,50 +4,10 @@
<meta charset="utf-8">
<title>updateBotMessageReactions</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
peer
Peer
 
msg_id
int
 
date
int
 
reactions
Vector&lt;ReactionCount&gt;
 
qts
int
 
Type
Update">
<meta property="description" content="Bots only: the number of reactions on a message with anonymous reactions has changed.">
<meta property="og:title" content="updateBotMessageReactions">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
peer
Peer
 
msg_id
int
 
date
int
 
reactions
Vector&lt;ReactionCount&gt;
 
qts
int
 
Type
Update">
<meta property="og:description" content="Bots only: the number of reactions on a message with anonymous reactions has changed.">
<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">
@ -82,7 +42,8 @@ Update">
<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/updateBotMessageReactions" >updateBotMessageReactions</a></li></ul></div>
<h1 id="dev_page_title">updateBotMessageReactions</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Bots only: the number of reactions on a message with anonymous reactions has changed.</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>
@ -108,32 +69,35 @@ Update">
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/Peer">Peer</a></td>
<td> </td>
<td>Peer of the reacted-to message.</td>
</tr>
<tr>
<td><strong>msg_id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>ID of the reacted-to message.</td>
</tr>
<tr>
<td><strong>date</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Date of the change.</td>
</tr>
<tr>
<td><strong>reactions</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/ReactionCount">ReactionCount</a>&gt;</td>
<td> </td>
<td>New reaction counters.</td>
</tr>
<tr>
<td><strong>qts</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td><a href="/api/updates">QTS</a> event sequence identifier</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/Update">Update</a></p></div>
<p><a href="/type/Update">Update</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="#working-with-updates" id="working-with-updates" name="working-with-updates"><i class="anchor-icon"></i></a><a href="/api/updates">Working with Updates</a></h4>
<p>How to subscribe to updates and handle them properly.</p></div>
</div>

View file

@ -114,7 +114,7 @@
<tr>
<td><strong>emoticon</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.7?<a href="/type/string">string</a></td>
<td> </td>
<td>If set, this wallpaper can be used as a channel wallpaper and is represented by the specified UTF-8 emoji.</td>
</tr>
</tbody>
</table>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>messages.sendBotRequestedPeer</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Send a chosen peer, as requested by a keyboardButtonRequestPeer button.">
<meta property="description" content="Send one or more chosen peers, as requested by a keyboardButtonRequestPeer button.">
<meta property="og:title" content="messages.sendBotRequestedPeer">
<meta property="og:image" content="">
<meta property="og:description" content="Send a chosen peer, as requested by a keyboardButtonRequestPeer button.">
<meta property="og:description" content="Send one or more chosen peers, as requested by a keyboardButtonRequestPeer button.">
<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">
@ -42,7 +42,7 @@
<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="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.sendBotRequestedPeer" >messages.sendBotRequestedPeer</a></li></ul></div>
<h1 id="dev_page_title">messages.sendBotRequestedPeer</h1>
<div id="dev_page_content"><p>Send a chosen peer, as requested by a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</p>
<div id="dev_page_content"><p>Send one or more chosen peers, as requested by a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -92,7 +92,7 @@
<tr>
<td><strong>requested_peers</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputPeer">InputPeer</a>&gt;</td>
<td> </td>
<td>The chosen peers.</td>
</tr>
</tbody>
</table>
@ -101,7 +101,7 @@
<h3><a class="anchor" href="#bots-can-use-this-method" id="bots-can-use-this-method" name="bots-can-use-this-method"><i class="anchor-icon"></i></a>Bots can use this method</h3>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#keyboardbuttonrequestpeer" id="keyboardbuttonrequestpeer" name="keyboardbuttonrequestpeer"><i class="anchor-icon"></i></a><a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a></h4>
<p>Prompts the user to select and share a peer with the bot using <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></p></div>
<p>Prompts the user to select and share one or more peers with the bot using <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></p></div>
</div>

View file

@ -1930,7 +1930,7 @@ Look for updates of telegram&#39;s terms of service…">
</tr>
<tr>
<td><a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></td>
<td>Send a chosen peer, as requested by a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</td>
<td>Send one or more chosen peers, as requested by a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</td>
</tr>
</tbody>
</table>

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 E4 99 0A 00 9D 36 A8 65
0010 | 14 00 00 00 F1 8E 7E BE 9A AF A7 4E 29 5C CF C9
0020 | 7B C5 93 19 50 7B 21 BC</code></pre>
<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>
<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>E4990A009D36A865</code></td>
<td><code>804D04005A3EA865</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>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td><code>D2AC74533A313A58870E49D53BA68A05</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 88 9E 03 9E 36 A8 65
0010 | 68 00 00 00 63 24 16 05 9A AF A7 4E 29 5C CF C9
0020 | 7B C5 93 19 50 7B 21 BC 05 4D 38 FE DC 2F 29 EC
0030 | 2C B5 82 83 2E F5 17 72 08 16 D2 E3 CF 36 19 C1
0040 | 0B 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 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
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>01889E039E36A865</code></td>
<td><code>014072635A3EA865</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>68000000</code> (104 in decimal)</td>
<td><code>64000000</code> (100 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0816D2E3CF3619C10B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1644627293049045259</td>
<td><code>0818553B47CA4833B3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1753372809453122483</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 = 1644627293049045259</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1644627293049045259 = 1057485463 * 1555224493</code></p>
<pre><code>p = 1057485463
q = 1555224493</code></pre>
<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>
<!-- 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 16 D2 E3 CF 36 19 C1 0B 00 00 00
0010 | 04 3F 07 F2 97 00 00 00 04 5C B2 D7 AD 00 00 00
0020 | 9A AF A7 4E 29 5C CF C9 7B C5 93 19 50 7B 21 BC
0030 | 05 4D 38 FE DC 2F 29 EC 2C B5 82 83 2E F5 17 72
0040 | E7 53 D9 DE 36 B0 2B 0E F4 88 51 DB 37 AF 3E B8
0050 | DF 36 F4 38 E4 50 B9 F2 DF 37 32 5D 03 62 28 E2
<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
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 = 1555224493</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0816D2E3CF3619C10B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1644627293049045259</td>
<td><code>0818553B47CA4833B3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1753372809453122483</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>043F07F297000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1057485463</td>
<td><code>043D3AACD9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1027255513</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>045CB2D7AD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1555224493</td>
<td><code>0465BC7D6B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1706851691</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>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>E753D9DE36B02B0EF48851DB37AF3EB8</code> <code>DF36F438E450B9F2DF37325D036228E2</code></td>
<td><code>1482ED11D391DA9A4BA3AC53A5CC824D</code> <code>1E116D3849FBF1E13AFF05C0485BFC45</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1555224493</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 = 955FF5A90816D2E3CF3619C10B000000043F07F297000000045CB2D7AD0000009AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF51772E753D9DE36B02B0EF48851DB37AF3EB8DF36F438E450B9F2DF37325D036228E202000000
random_padding_bytes = 689372C5F440976397FB5093F99EA81B7ECD1FE29E04222A9A3FAB455FB5FF03D914E9DC780F98D9513FDB8D5B9D8A996ADBADC1896CE1D52BDE8550299E2C720627E8F2BF56D6D1CCDCBE62EDCD26D604BC142759E8B2B292E2894A</code></pre>
<pre><code>data = 955FF5A90818553B47CA4833B3000000043D3AACD90000000465BC7D6B000000D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA1482ED11D391DA9A4BA3AC53A5CC824D1E116D3849FBF1E13AFF05C0485BFC4502000000
random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77DD4F33846520BEB3EAEF5A0423BFD70C0D2D0629D7A6A3C07954CBBD347E91BC3B3E25A7165553BF722647FDFE358ED7A5C6857F884CBB258DCE9E02F7C0C323</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 = 57C834C4C90A149B9998EBDA6E2D7AEE192DD0EE1DFD41CDE82998F7632085F70C96AC549B51E234905770402EA632A964213206BD56AA0B3FD8F3AB9F959524B86084A67CFCDAF229329968248D5721175DF5D3112E98D6F837B7172AC316DACB8F962EA965AF2F17984A1997A63F5FE2B13B49189C16AA8BDB9481968E9D33674ED7644E8A78652174F437655DB3170F09A1735ECE4834FCB78D772E5A40A4A850F6BE5D3EA009993FF467608E2A8B0216CAC0197C425C208A9F4BFA1D5112F954DE1AE93DC44F18B0046721DDB938C5EAD8FE39325670BC607A7AB1E5FA2681C7D1053E8E605044A75DA1A7ADF5C230AF5032AAA2519E6AEB4C95B0C0AE0B</code></pre>
<pre><code>encrypted_data = 43FFEB0FFD274E0C28BCB989DF1979D84C12B8500A1EB5E0A74A85F17CFC77D525C25B87C7B600B64DD3FC3065CB58C58C157FA3EA35A57780DD1E68A7B5AD97EBE7F756DC7BEE3516F38B5024288705214D11E625DC478F61DC9D86AD18964134D07BBDF2D5FA5980E1D74CC93BCC24BF9735DD09950A09B9D203C57288534E3CEDC3394EEC8560FD388A6B27843166B625A412C7542F907A1A0341C142EBF6FEE41DDE739FE7D3AB0BF5B0290286D7F9AEF9EDDEB36B8E08633480DAC476A887597FD9C48BFFCFAFC8BD8F899DCF675D858E2728F443FB5D80006F56AFD5B82A85DFF3EF59F57F15F83C81A52BA9F30B27FF796DB00DAF6FF9A8263F024005</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 30 AD 05 00 9E 36 A8 65
0010 | 40 01 00 00 BE E4 12 D7 9A AF A7 4E 29 5C CF C9
0020 | 7B C5 93 19 50 7B 21 BC 05 4D 38 FE DC 2F 29 EC
0030 | 2C B5 82 83 2E F5 17 72 04 3F 07 F2 97 00 00 00
0040 | 04 5C B2 D7 AD 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 57 C8 34 C4 C9 0A 14 9B 99 98 EB DA
0060 | 6E 2D 7A EE 19 2D D0 EE 1D FD 41 CD E8 29 98 F7
0070 | 63 20 85 F7 0C 96 AC 54 9B 51 E2 34 90 57 70 40
0080 | 2E A6 32 A9 64 21 32 06 BD 56 AA 0B 3F D8 F3 AB
0090 | 9F 95 95 24 B8 60 84 A6 7C FC DA F2 29 32 99 68
00A0 | 24 8D 57 21 17 5D F5 D3 11 2E 98 D6 F8 37 B7 17
00B0 | 2A C3 16 DA CB 8F 96 2E A9 65 AF 2F 17 98 4A 19
00C0 | 97 A6 3F 5F E2 B1 3B 49 18 9C 16 AA 8B DB 94 81
00D0 | 96 8E 9D 33 67 4E D7 64 4E 8A 78 65 21 74 F4 37
00E0 | 65 5D B3 17 0F 09 A1 73 5E CE 48 34 FC B7 8D 77
00F0 | 2E 5A 40 A4 A8 50 F6 BE 5D 3E A0 09 99 3F F4 67
0100 | 60 8E 2A 8B 02 16 CA C0 19 7C 42 5C 20 8A 9F 4B
0110 | FA 1D 51 12 F9 54 DE 1A E9 3D C4 4F 18 B0 04 67
0120 | 21 DD B9 38 C5 EA D8 FE 39 32 56 70 BC 60 7A 7A
0130 | B1 E5 FA 26 81 C7 D1 05 3E 8E 60 50 44 A7 5D A1
0140 | A7 AD F5 C2 30 AF 50 32 AA A2 51 9E 6A EB 4C 95
0150 | B0 C0 AE 0B</code></pre>
<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>
<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 = 689372C5F440976397FB5093F99EA81B7ECD1FE29E04222A9A3FAB455
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>30AD05009E36A865</code></td>
<td><code>844D04005A3EA865</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 = 689372C5F440976397FB5093F99EA81B7ECD1FE29E04222A9A3FAB455
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>043F07F297000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1057485463</td>
<td><code>043D3AACD9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1027255513</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>045CB2D7AD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1555224493</td>
<td><code>0465BC7D6B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1706851691</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 = 689372C5F440976397FB5093F99EA81B7ECD1FE29E04222A9A3FAB455
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE00010057C834C4C90A149B9998EBDA</code> <code>6E2D7AEE192DD0EE1DFD41CDE82998F7</code> <code>632085F70C96AC549B51E23490577040</code> <code>2EA632A964213206BD56AA0B3FD8F3AB</code> <code>9F959524B86084A67CFCDAF229329968</code> <code>248D5721175DF5D3112E98D6F837B717</code> <code>2AC316DACB8F962EA965AF2F17984A19</code> <code>97A63F5FE2B13B49189C16AA8BDB9481</code> <code>968E9D33674ED7644E8A78652174F437</code> <code>655DB3170F09A1735ECE4834FCB78D77</code> <code>2E5A40A4A850F6BE5D3EA009993FF467</code> <code>608E2A8B0216CAC0197C425C208A9F4B</code> <code>FA1D5112F954DE1AE93DC44F18B00467</code> <code>21DDB938C5EAD8FE39325670BC607A7A</code> <code>B1E5FA2681C7D1053E8E605044A75DA1</code> <code>A7ADF5C230AF5032AAA2519E6AEB4C95</code><br> <code>B0C0AE0B</code></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>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 689372C5F440976397FB5093F99EA81B7ECD1FE29E04222A9A3FAB455
<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 58 1F B0 9E 36 A8 65
0010 | B8 02 00 00 5C 07 E8 D0 9A AF A7 4E 29 5C CF C9
0020 | 7B C5 93 19 50 7B 21 BC 05 4D 38 FE DC 2F 29 EC
0030 | 2C B5 82 83 2E F5 17 72 FE 50 02 00 CF 6B 6F 69
0040 | 5F CF 77 5D 01 50 D0 FB 02 9F 7A BB 2C F7 E3 8B
0050 | 33 C9 D8 58 E0 8A BC 66 1C FE F3 A5 8B D9 A4 0E
0060 | A5 52 19 48 DD D0 B7 40 5D BA D7 5F 96 93 56 D1
0070 | 72 72 7A 9F 06 D0 C9 84 05 C5 4F E6 C6 47 AB C2
0080 | 59 EA C5 CF 50 03 62 32 18 17 A7 DF 4E 61 6E DD
0090 | 81 6A FC DF 63 CC AB 2C 8A 27 B3 3A CE A3 FE 2A
00A0 | C4 2C C3 E8 9D 18 62 0D E4 0E 2F F0 BF 74 BB 28
00B0 | 8E 8A 48 05 B6 43 00 99 BF 08 E8 16 0E CF 56 8E
00C0 | F4 63 20 BB 80 B4 1F DE 5B A8 26 A1 10 C1 BC CF
00D0 | F1 23 52 09 A1 7E 66 48 E2 EB C9 45 00 8A 9D B0
00E0 | FC 14 A3 34 7D AA FB C9 D5 BC BC C6 60 43 B9 0F
00F0 | BF 7C 82 24 73 41 5A BA 26 9D 99 49 54 AD B3 3F
0100 | C3 8D 4D AF 26 E5 64 2B CD 30 3D 67 25 01 58 01
0110 | FE 9D 7B B6 15 28 F5 B4 66 85 FD 12 EF 99 36 15
0120 | 09 EB 6C 23 00 DC 26 AB 9D F3 D7 12 26 4A 7F FE
0130 | 1D C9 75 73 DE B1 55 0C 53 55 C0 08 13 A2 A6 9C
0140 | EE F5 DA B6 5A A4 08 4A 51 AB 1A AA 58 BF BB A5
0150 | C7 F7 8C 62 4F 81 7B 21 29 79 FF 45 38 AC 0D A5
0160 | CA AD 2B 78 6A 0A 63 DD 9B BF 48 96 15 31 64 D1
0170 | 7F CC 0C 13 61 30 28 4D 3C 36 3B 07 6C 2C F7 8B
0180 | 34 0F F4 16 13 20 5B A5 1A 68 31 B1 FB 02 16 84
0190 | 06 90 32 53 9E 3B 96 63 FE 53 38 CF 95 7B 0A 81
01A0 | 47 39 DB 1C 89 45 18 90 B3 79 C3 43 F5 CF 96 23
01B0 | 03 97 3B 71 0A AB D3 9F 17 BE EA 24 48 13 EF A9
01C0 | E0 C7 F0 AE 70 5B 9A FA E8 49 FC E8 B7 C6 97 04
01D0 | D5 2C E6 39 AC 34 3A 52 69 C4 B2 CB 10 B5 01 47
01E0 | 5A 22 A8 6A D3 7B 87 2B 6E D7 FB 98 1E 09 0B 32
01F0 | 87 DB CF 5D 8C 4C 2B 3A 7A A8 E7 D2 C6 8C 1D FD
0200 | F5 23 7B 22 67 5E C9 99 03 A3 55 C4 90 E1 E9 4F
0210 | 13 7E 90 47 79 C7 0C 60 22 56 77 E7 35 54 D2 69
0220 | FB 22 ED A4 DE 09 1A 57 8F F0 49 49 6A D6 B1 6B
0230 | 59 68 A5 92 85 B8 0F 4A 63 E3 EC DB 32 8B 0E C0
0240 | 63 C0 77 89 60 F1 B4 A3 D4 B6 8A F6 77 FF 5D 70
0250 | B7 EB C6 8D C1 37 1B 9A D8 84 0E 2D 1B C9 B0 87
0260 | 84 45 62 3F 18 C6 7C C5 52 29 17 96 F6 F0 A6 9A
0270 | 68 61 C3 80 E9 D8 D1 A6 74 E5 F7 65 1E A4 16 3A
0280 | 41 F5 20 A8 4A ED 73 50 45 AF 8A 57</code></pre>
<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>
<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 = 689372C5F440976397FB5093F99EA81B7ECD1FE29E04222A9A3FAB455
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01581FB09E36A865</code></td>
<td><code>01EC2D375B3EA865</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>B8020000</code> (696 in decimal)</td>
<td><code>D8020000</code> (728 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 689372C5F440976397FB5093F99EA81B7ECD1FE29E04222A9A3FAB455
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE500200CF6B6F695FCF775D0150D0FB</code> <code>029F7ABB2CF7E38B33C9D858E08ABC66</code> <code>1CFEF3A58BD9A40EA5521948DDD0B740</code> <code>5DBAD75F969356D172727A9F06D0C984</code> <code>05C54FE6C647ABC259EAC5CF50036232</code> <code>1817A7DF4E616EDD816AFCDF63CCAB2C</code> <code>8A27B33ACEA3FE2AC42CC3E89D18620D</code> <code>E40E2FF0BF74BB288E8A4805B6430099</code> <code>BF08E8160ECF568EF46320BB80B41FDE</code> <code>5BA826A110C1BCCFF1235209A17E6648</code> <code>E2EBC945008A9DB0FC14A3347DAAFBC9</code> <code>D5BCBCC66043B90FBF7C822473415ABA</code> <code>269D994954ADB33FC38D4DAF26E5642B</code> <code>CD303D6725015801FE9D7BB61528F5B4</code> <code>6685FD12EF99361509EB6C2300DC26AB</code> <code>9DF3D712264A7FFE1DC97573DEB1550C</code> <code>5355C00813A2A69CEEF5DAB65AA4084A</code> <code>51AB1AAA58BFBBA5C7F78C624F817B21</code> <code>2979FF4538AC0DA5CAAD2B786A0A63DD</code> <code>9BBF4896153164D17FCC0C136130284D</code> <code>3C363B076C2CF78B340FF41613205BA5</code> <code>1A6831B1FB021684069032539E3B9663</code> <code>FE5338CF957B0A814739DB1C89451890</code> <code>B379C343F5CF962303973B710AABD39F</code> <code>17BEEA244813EFA9E0C7F0AE705B9AFA</code> <code>E849FCE8B7C69704D52CE639AC343A52</code> <code>69C4B2CB10B501475A22A86AD37B872B</code> <code>6ED7FB981E090B3287DBCF5D8C4C2B3A</code> <code>7AA8E7D2C68C1DFDF5237B22675EC999</code> <code>03A355C490E1E94F137E904779C70C60</code> <code>225677E73554D269FB22EDA4DE091A57</code> <code>8FF049496AD6B16B5968A59285B80F4A</code> <code>63E3ECDB328B0EC063C0778960F1B4A3</code> <code>D4B68AF677FF5D70B7EBC68DC1371B9A</code> <code>D8840E2D1BC9B0878445623F18C67CC5</code> <code>52291796F6F0A69A6861C380E9D8D1A6</code> <code>74E5F7651EA4163A41F520A84AED7350</code><br> <code>45AF8A57</code></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>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 689372C5F440976397FB5093F99EA81B7ECD1FE29E04222A9A3FAB455
<!-- 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 = CF6B6F695FCF775D0150D0FB029F7ABB2CF7E38B33C9D858E08ABC661CFEF3A58BD9A40EA5521948DDD0B7405DBAD75F969356D172727A9F06D0C98405C54FE6C647ABC259EAC5CF500362321817A7DF4E616EDD816AFCDF63CCAB2C8A27B33ACEA3FE2AC42CC3E89D18620DE40E2FF0BF74BB288E8A4805B6430099BF08E8160ECF568EF46320BB80B41FDE5BA826A110C1BCCFF1235209A17E6648E2EBC945008A9DB0FC14A3347DAAFBC9D5BCBCC66043B90FBF7C822473415ABA269D994954ADB33FC38D4DAF26E5642BCD303D6725015801FE9D7BB61528F5B46685FD12EF99361509EB6C2300DC26AB9DF3D712264A7FFE1DC97573DEB1550C5355C00813A2A69CEEF5DAB65AA4084A51AB1AAA58BFBBA5C7F78C624F817B212979FF4538AC0DA5CAAD2B786A0A63DD9BBF4896153164D17FCC0C136130284D3C363B076C2CF78B340FF41613205BA51A6831B1FB021684069032539E3B9663FE5338CF957B0A814739DB1C89451890B379C343F5CF962303973B710AABD39F17BEEA244813EFA9E0C7F0AE705B9AFAE849FCE8B7C69704D52CE639AC343A5269C4B2CB10B501475A22A86AD37B872B6ED7FB981E090B3287DBCF5D8C4C2B3A7AA8E7D2C68C1DFDF5237B22675EC99903A355C490E1E94F137E904779C70C60225677E73554D269FB22EDA4DE091A578FF049496AD6B16B5968A59285B80F4A63E3ECDB328B0EC063C0778960F1B4A3D4B68AF677FF5D70B7EBC68DC1371B9AD8840E2D1BC9B0878445623F18C67CC552291796F6F0A69A6861C380E9D8D1A674E5F7651EA4163A41F520A84AED735045AF8A57
tmp_aes_key = 5A92A9C13DAE7AD44F48EE21479299AFD3680211ABDA9D54F009B6846D8EFEA1
tmp_aes_iv = E99F3BAD6AB94F5C30B04635A75C66CFD2AB5A68B8D4C50DCE7F384DE753D9DE</code></pre>
<pre><code>encrypted_answer = A1608F7BB072F2F2ABB7BCD52D5F0D2CD326FA020ED43DD200A1E9D329D7584E67C32EA5C0A3A09B9BCCDBBC1609B0565C443E9C5B460FD5B15247C193AAE9782B651DEA5D5B4F5E35F6BCADD55F0BE28DF5AEF4FB2AAE88579DA42CD9E53A5283405E9BF96391C09359D461643FBFBC957855E6902B681B975B058E8A8983EAC17B5CA92BAF731E9D300AECE7F071F012B70EAE2F6BA6B01F958709296BBC78E9D55D470ADAFF09FAABE7249F61DE6B3CD43E0F77F251F42C0BBD22E918213AE11341BBCAA1AEBAD843A4FB0054B5F90966970CD8458CC372722E1C473E82A00E4F53800AF1338AEC5C73DDBF91F34B0AA94BE4B68D3EAFB3D5267E3DD1F68B1B5AB4A1018055F58D3CE58CA1A2F602B12E494BCADE7E0121E1C31162162BC807F8859E4AF2636C490FEFA04B83260FA54C940FAF0B71DA0EDB93BE758391B2BFC4499778D8D6492E5867F830AB4576F56CFA5567C03A9E6A55B6B787323983E649940F45B504A07A4418381B9BAAED24447DD73F7E7041FFD775433DFFF480EDA43E974EE657CF49C7E5A9F73EF7F959CB54B5DEE3F10AA7578A0A0CFB88072378D38120C92EB6DD358D6774DDF4AB05B206AD6F78A2460A291F90052509C8D6B7957661B87D5AA38A302CF442FE51E6D410B566E628D2C3B7E4AB06F69B67A093ABDD7AA3853BAF6BC9BBC3A0E355E263AC42FE38B2B60F41AED25E9F2548141061B9550F3F845C50E6D78F3954383B689EBBEFD689A1A48B3EC854ABE73C9040537FA5B0FE7983E70C31D33F4DAAA32CADB00971206BB18F65725025AB8801C3C6266E6F9E79A03F43579604F4AE
tmp_aes_key = F805C7E689A4E7AAD5C85A75FDE99DE29A982EA60DBFF1B8774E7971F940E98A
tmp_aes_iv = 88B8594FE2F8E89F875D1C6AF5E31C22C985AB4A7E4CB009D93DF6DD1482ED11</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 8A2B4F65A663F8005035B220241C64DFA3A4A078BA0D89B59AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF5177203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002C0AF2EA836117BEA3BCF6F213BF04679BB389698290EEED2EE4C4583719EC6E55784CE2FCA01A3FA576AAB1606C89DA6701330C7A2A0E7304CE95DAD3A6CE631657EDD4F5A0FDABC1B5167F6AE66C380175100F7B20D1B16A2A329F71615A7E27BAB707C3EDF8657B8D52A82D7CF15F5743A97F78939504E07A2A621C395C2332AF46B3943D8599A9120685675747A9EB987F5A9BCF0E89034717BF77C5A881D3551997F02AAB08EDAB3173274A4BAF20F7EA0E6BA26F95A6DB2EEAF55E9355E0B4AED0F89CE52B00650615CFFEDDEFF0E9964561D2703A635D2CD6D27ACE60B098A51636D79BC3F58C0C265B30B2E2272F1D2337B39DF7F879159C2DE9DC579E36A8657E139AC1E4C03A76
answer = BA0D89B59AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF5177203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002C0AF2EA836117BEA3BCF6F213BF04679BB389698290EEED2EE4C4583719EC6E55784CE2FCA01A3FA576AAB1606C89DA6701330C7A2A0E7304CE95DAD3A6CE631657EDD4F5A0FDABC1B5167F6AE66C380175100F7B20D1B16A2A329F71615A7E27BAB707C3EDF8657B8D52A82D7CF15F5743A97F78939504E07A2A621C395C2332AF46B3943D8599A9120685675747A9EB987F5A9BCF0E89034717BF77C5A881D3551997F02AAB08EDAB3173274A4BAF20F7EA0E6BA26F95A6DB2EEAF55E9355E0B4AED0F89CE52B00650615CFFEDDEFF0E9964561D2703A635D2CD6D27ACE60B098A51636D79BC3F58C0C265B30B2E2272F1D2337B39DF7F879159C2DE9DC579E36A8657E139AC1E4C03A76</code></pre>
<pre><code>answer_with_hash = 965A59B5192F82F8493AEA537A3E45B46B234B6BBA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000191D9C9A43ADD5EEB346D1EB018C5532304F4595FDD9CD3811EBF53E9C9ACE4D8D4119FAFAEA24DB7F18285F5BD922CF4193AEC05C0BB1C8CF0D7D1339EF7CA0BA3EB358CB6C25B4BDF9EFAE82C04DAA5000CB48B6B98857F6FF1A87493A3EDA1FEBA2280F760BC1B0244C9D2D66782EF2B1BC8A94B8E3C919DDCA1114C589444B4444C6235131A7FA3448EAFA96969385159160C86891B7B54CF739F319A906DC99E6370FF6AF96C5B80C1217619143551B165F205F4060B82F4D8C6A49171DDDF09C920BCCE8B46576EDCDF66F26C5BC2A678B7C82A69771A9E6CE4B8905C2EB90A68376F8870E87C1F4F472A4E6E47055420DAFAC80CE39379FCEE1C045C5B3EA86519470D5116BA80A2
answer = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000191D9C9A43ADD5EEB346D1EB018C5532304F4595FDD9CD3811EBF53E9C9ACE4D8D4119FAFAEA24DB7F18285F5BD922CF4193AEC05C0BB1C8CF0D7D1339EF7CA0BA3EB358CB6C25B4BDF9EFAE82C04DAA5000CB48B6B98857F6FF1A87493A3EDA1FEBA2280F760BC1B0244C9D2D66782EF2B1BC8A94B8E3C919DDCA1114C589444B4444C6235131A7FA3448EAFA96969385159160C86891B7B54CF739F319A906DC99E6370FF6AF96C5B80C1217619143551B165F205F4060B82F4D8C6A49171DDDF09C920BCCE8B46576EDCDF66F26C5BC2A678B7C82A69771A9E6CE4B8905C2EB90A68376F8870E87C1F4F472A4E6E47055420DAFAC80CE39379FCEE1C045C5B3EA86519470D5116BA80A2</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 9A AF A7 4E 29 5C CF C9 7B C5 93 19
0010 | 50 7B 21 BC 05 4D 38 FE DC 2F 29 EC 2C B5 82 83
0020 | 2E F5 17 72 03 00 00 00 FE 00 01 00 C7 1C AE B9
<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
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 = BA0D89B59AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF5177
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 | 2C 0A F2 EA 83 61 17 BE A3 BC F6 F2 13 BF 04 67
0140 | 9B B3 89 69 82 90 EE ED 2E E4 C4 58 37 19 EC 6E
0150 | 55 78 4C E2 FC A0 1A 3F A5 76 AA B1 60 6C 89 DA
0160 | 67 01 33 0C 7A 2A 0E 73 04 CE 95 DA D3 A6 CE 63
0170 | 16 57 ED D4 F5 A0 FD AB C1 B5 16 7F 6A E6 6C 38
0180 | 01 75 10 0F 7B 20 D1 B1 6A 2A 32 9F 71 61 5A 7E
0190 | 27 BA B7 07 C3 ED F8 65 7B 8D 52 A8 2D 7C F1 5F
01A0 | 57 43 A9 7F 78 93 95 04 E0 7A 2A 62 1C 39 5C 23
01B0 | 32 AF 46 B3 94 3D 85 99 A9 12 06 85 67 57 47 A9
01C0 | EB 98 7F 5A 9B CF 0E 89 03 47 17 BF 77 C5 A8 81
01D0 | D3 55 19 97 F0 2A AB 08 ED AB 31 73 27 4A 4B AF
01E0 | 20 F7 EA 0E 6B A2 6F 95 A6 DB 2E EA F5 5E 93 55
01F0 | E0 B4 AE D0 F8 9C E5 2B 00 65 06 15 CF FE DD EF
0200 | F0 E9 96 45 61 D2 70 3A 63 5D 2C D6 D2 7A CE 60
0210 | B0 98 A5 16 36 D7 9B C3 F5 8C 0C 26 5B 30 B2 E2
0220 | 27 2F 1D 23 37 B3 9D F7 F8 79 15 9C 2D E9 DC 57
0230 | 9E 36 A8 65</code></pre>
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>
<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 = BA0D89B59AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF5177
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B59AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF5177
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001002C0AF2EA836117BEA3BCF6F2</code> <code>13BF04679BB389698290EEED2EE4C458</code> <code>3719EC6E55784CE2FCA01A3FA576AAB1</code> <code>606C89DA6701330C7A2A0E7304CE95DA</code> <code>D3A6CE631657EDD4F5A0FDABC1B5167F</code> <code>6AE66C380175100F7B20D1B16A2A329F</code> <code>71615A7E27BAB707C3EDF8657B8D52A8</code> <code>2D7CF15F5743A97F78939504E07A2A62</code> <code>1C395C2332AF46B3943D8599A9120685</code> <code>675747A9EB987F5A9BCF0E89034717BF</code> <code>77C5A881D3551997F02AAB08EDAB3173</code> <code>274A4BAF20F7EA0E6BA26F95A6DB2EEA</code> <code>F55E9355E0B4AED0F89CE52B00650615</code> <code>CFFEDDEFF0E9964561D2703A635D2CD6</code> <code>D27ACE60B098A51636D79BC3F58C0C26</code> <code>5B30B2E2272F1D2337B39DF7F879159C</code><br> <code>2DE9DC57</code></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>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>9E36A865</code> (1705522846 in decimal)</td>
<td><code>5B3EA865</code> (1705524827 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B59AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF5177
<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 = 09DA60C95DE494D1DC93E312B4360DCE03264CA0D780F5054953AA123BE384D0F2D9622E94EAEAEF7899772FA52F9002EFFC5B359AEE4BA4AEC1B13ED3B4C4209BABC349C7596FF732E22919D232600EAC2934B8602FE2633D661C378BEE8D503C68C2E1E9C7A1B15A96AD1530C5936CF7150AB604C860060BFEE1728F45877BB7BAF1D24263C9E8C248E0171E0634DA84C3667A276BC024C421191F79290178F47999DF1CA46C0C523B9D3B6B020551D4AC79699A1C7DA431349CFBA2FDD191BE84881E12C848265CAACF1815B977C4325AA9EFB513F50039059F7E61EFD2B66FD6EEFA1520B1AB48BC2E2512F8DC3D1AEAE2011656FC9C42B69A5B26E4A39D</code></pre>
<pre><code>b = 9ECDD388AF28E2E9331B545F04F70C9523AA4DE19040D32B03B8F726BDBB76F0D9BAE78D117F43A25581556CECE3566A7B1A1A1CADA4B74E8BE751FF704A70300081906313BAD8F250639135D0A47FA6C69D47FFBE89B6C8A02959B87FD6FCEC223FDCA26838FD0426170BAAD37880662A87055DBBDA282AB0966BD1B8D1923A230439CDB95AFA872F16D5323950843414F4ED0547CA90FCB02E3D1E05B6933821FD17C6F2ECAD84D6BDD30B08925A45720134562E07A8E8C92C8FA3769CE62EB2CCCC199FB0607DB5FB1420159B9B373AC4C149A628F6D690655B4D7D698C75E647774E7CAED53C152E76D3F365A9F9E332C9C2C3A72B2940A711F239FB54B6</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 = 2C8CCBFB2588782B28078C6F4629EEA9C5BB65CE59C26D18D7DBE1224C3F9336073C2EE089387F7C66306EA495BC08E1ADF042C7E3D91EFC9BC075AAAB844F4C7AFEF8D05796FC5104C0A57E55F69F75CD584A4D1AA46D139F9455035900E7ECB56D71074AE08E1901C5F9D90391DFD93DAC28B3CC5674701A0B1E8B39DACD67D3F524710456CD7E147221AC5E2256E12A68C77FCB1F6F7191F9FA0D99EB15A02E00E65A7FA59A4BBA7C7860A300AD43036150C3B4BE9023089F87493DB98D0088E0ACB4C145C72720F7DFDDDCD3F1469BD8EC2D2ED80B849ACC0B6B013F37437D49DCEAACD7360638C02B387932F7FF4BA8409128D78C3FFE7213AD30E83527</code></pre>
<pre><code>g_b = 2045E19A8796B889E5E907163BB68826E6DA69FE4092453D62718A5B5078DAC8A7F37BA27A13A55ACBD2C7665746AACE4CC5F5E67BB099E1A0A36639A560649E173AF621F3660F1CF1E9C06F920511A01A0C20794E30F926D29243772B554292BE6B5D706DEB624013586E6DAC720C5CF7916251C64122FD46E9E64F34DB37FA3E897BBD1177A4F8082B3D17C27B1A707C4DE257941DA95E5CBC0D09442ED99F06044DB0D0B0A60E7C219B5B46D24DF701635EF95A3024AB013F1E234CAE7D534182D74A3F4F64D5F2BC883B875D6D87C90DC2DE09E82FF1BE110ADA5E936C84F1AEEE0BB0F083B0A739EEEE251AA011DFF69B0CBAFB8B0710EEBD003180B615</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 9A AF A7 4E 29 5C CF C9 7B C5 93 19
0010 | 50 7B 21 BC 05 4D 38 FE DC 2F 29 EC 2C B5 82 83
0020 | 2E F5 17 72 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 2C 8C CB FB 25 88 78 2B 28 07 8C 6F 46 29 EE A9
0040 | C5 BB 65 CE 59 C2 6D 18 D7 DB E1 22 4C 3F 93 36
0050 | 07 3C 2E E0 89 38 7F 7C 66 30 6E A4 95 BC 08 E1
0060 | AD F0 42 C7 E3 D9 1E FC 9B C0 75 AA AB 84 4F 4C
0070 | 7A FE F8 D0 57 96 FC 51 04 C0 A5 7E 55 F6 9F 75
0080 | CD 58 4A 4D 1A A4 6D 13 9F 94 55 03 59 00 E7 EC
0090 | B5 6D 71 07 4A E0 8E 19 01 C5 F9 D9 03 91 DF D9
00A0 | 3D AC 28 B3 CC 56 74 70 1A 0B 1E 8B 39 DA CD 67
00B0 | D3 F5 24 71 04 56 CD 7E 14 72 21 AC 5E 22 56 E1
00C0 | 2A 68 C7 7F CB 1F 6F 71 91 F9 FA 0D 99 EB 15 A0
00D0 | 2E 00 E6 5A 7F A5 9A 4B BA 7C 78 60 A3 00 AD 43
00E0 | 03 61 50 C3 B4 BE 90 23 08 9F 87 49 3D B9 8D 00
00F0 | 88 E0 AC B4 C1 45 C7 27 20 F7 DF DD DC D3 F1 46
0100 | 9B D8 EC 2D 2E D8 0B 84 9A CC 0B 6B 01 3F 37 43
0110 | 7D 49 DC EA AC D7 36 06 38 C0 2B 38 79 32 F7 FF
0120 | 4B A8 40 91 28 D7 8C 3F FE 72 13 AD 30 E8 35 27</code></pre>
<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>
<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 = BA0D89B59AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF5177
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001002C8CCBFB2588782B28078C6F</code> <code>4629EEA9C5BB65CE59C26D18D7DBE122</code> <code>4C3F9336073C2EE089387F7C66306EA4</code> <code>95BC08E1ADF042C7E3D91EFC9BC075AA</code> <code>AB844F4C7AFEF8D05796FC5104C0A57E</code> <code>55F69F75CD584A4D1AA46D139F945503</code> <code>5900E7ECB56D71074AE08E1901C5F9D9</code> <code>0391DFD93DAC28B3CC5674701A0B1E8B</code> <code>39DACD67D3F524710456CD7E147221AC</code> <code>5E2256E12A68C77FCB1F6F7191F9FA0D</code> <code>99EB15A02E00E65A7FA59A4BBA7C7860</code> <code>A300AD43036150C3B4BE9023089F8749</code> <code>3DB98D0088E0ACB4C145C72720F7DFDD</code> <code>DCD3F1469BD8EC2D2ED80B849ACC0B6B</code> <code>013F37437D49DCEAACD7360638C02B38</code> <code>7932F7FF4BA8409128D78C3FFE7213AD</code><br> <code>30E83527</code></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>Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding</td>
</tr>
<tr>
@ -684,47 +684,47 @@ answer = BA0D89B59AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF5177
<!-- 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 = 54B643669AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF517720000000000000000FE0001002C8CCBFB2588782B28078C6F4629EEA9C5BB65CE59C26D18D7DBE1224C3F9336073C2EE089387F7C66306EA495BC08E1ADF042C7E3D91EFC9BC075AAAB844F4C7AFEF8D05796FC5104C0A57E55F69F75CD584A4D1AA46D139F9455035900E7ECB56D71074AE08E1901C5F9D90391DFD93DAC28B3CC5674701A0B1E8B39DACD67D3F524710456CD7E147221AC5E2256E12A68C77FCB1F6F7191F9FA0D99EB15A02E00E65A7FA59A4BBA7C7860A300AD43036150C3B4BE9023089F87493DB98D0088E0ACB4C145C72720F7DFDDDCD3F1469BD8EC2D2ED80B849ACC0B6B013F37437D49DCEAACD7360638C02B387932F7FF4BA8409128D78C3FFE7213AD30E83527
padding = 170DEC31F5A11DE115D057FC
tmp_aes_key = 5A92A9C13DAE7AD44F48EE21479299AFD3680211ABDA9D54F009B6846D8EFEA1
tmp_aes_iv = E99F3BAD6AB94F5C30B04635A75C66CFD2AB5A68B8D4C50DCE7F384DE753D9DE</code></pre>
<pre><code>data = 54B64366D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA0000000000000000FE0001002045E19A8796B889E5E907163BB68826E6DA69FE4092453D62718A5B5078DAC8A7F37BA27A13A55ACBD2C7665746AACE4CC5F5E67BB099E1A0A36639A560649E173AF621F3660F1CF1E9C06F920511A01A0C20794E30F926D29243772B554292BE6B5D706DEB624013586E6DAC720C5CF7916251C64122FD46E9E64F34DB37FA3E897BBD1177A4F8082B3D17C27B1A707C4DE257941DA95E5CBC0D09442ED99F06044DB0D0B0A60E7C219B5B46D24DF701635EF95A3024AB013F1E234CAE7D534182D74A3F4F64D5F2BC883B875D6D87C90DC2DE09E82FF1BE110ADA5E936C84F1AEEE0BB0F083B0A739EEEE251AA011DFF69B0CBAFB8B0710EEBD003180B615
padding = 5F0D1DE79F61579108272399
tmp_aes_key = F805C7E689A4E7AAD5C85A75FDE99DE29A982EA60DBFF1B8774E7971F940E98A
tmp_aes_iv = 88B8594FE2F8E89F875D1C6AF5E31C22C985AB4A7E4CB009D93DF6DD1482ED11</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 = 19D136DB0431F30C8204159B7547FC223ADA5F91CF9395C2466CC1C0430705F68DAEE69BF38C6D915B04B212503860CC0F2E770F58DBA12E0BC2BFE175B7F05C224E2CA03E9EF0216AD4DD2710C6D43337CE055D6FFD5657905D8ED35073D4D33BFE476903D8576FB34C388C3390432D8BF2C4F86726890B338E42C3EE5F4AA77E0618CA4AEFE578F9AFAA7899FF55F7EE0EC759CA506CD17E029D50FA631EB51C79A1C2B4E7FDDF47F08CF9466E3550857386E9A763DFB5214D47FF8C05E7DAA8BA6E628486F3160050DAEE78F600A4C567EFFAB504B950A62CAFBC2934887CA81433001D0934BD0DD875C0D9274C38C652FF2EC90C8BB22A9CACF77C1081EB4B28882705E8EEDB1BE3B5214EF0ABFCFEC8F7CCCCE4315C625A063FC6988F03192436010EA3F73070E728D357C5FBA4827E1463DC8308A14ABACEEE6B48D315F203D0CBC74E8560C7036068357B292C</code></pre>
<pre><code>encrypted_data = 37201A6355370E8BDF93202F9FCC87F354FADD9339765F45589AB3C83CCB2B7C4A61A131690B47864D65C2D0303B9C1F3B96953FD00E18E1FDB4F3588100B9C0924472EEF1B8EB26DD87D624CD9D12B665C34A7B3742C141B0C3B266213289527EF2F1DFAA9F92C83B99299DCA36B81F069B8FD6C7D14541F3C14724EB29325D130AA97DB0EE6AB4AEBB6A3F9064FF8B87BF213226314E323BCA00EB3852113D7632C625F1E973DBC3D6A29FF925F6EBA7CFF3EFCD8E77D0B1AC1E55EA2BAD3EDBA1982C8CC82D5EFD50C3E7DDD67C5634AFC05213A897EABD82E1A0E35760C26DAEA60EDDA2CB28B63F8159028F4C61D78267AB57161577731F0B3FB419EB8A1550835BC884FD17BD8C0CDB7A71DAC531028FED9120DF89027ADA57BF1DEC5C8FC74EDFC2D8B686966E57A2F935C91A0682DE90A326BD32BC4E116EE91D2503E224047828D3C2CFA8A3BF5F8D911752</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 34 AD 05 00 9E 36 A8 65
0010 | 78 01 00 00 1F 5F 04 F5 9A AF A7 4E 29 5C CF C9
0020 | 7B C5 93 19 50 7B 21 BC 05 4D 38 FE DC 2F 29 EC
0030 | 2C B5 82 83 2E F5 17 72 FE 50 01 00 19 D1 36 DB
0040 | 04 31 F3 0C 82 04 15 9B 75 47 FC 22 3A DA 5F 91
0050 | CF 93 95 C2 46 6C C1 C0 43 07 05 F6 8D AE E6 9B
0060 | F3 8C 6D 91 5B 04 B2 12 50 38 60 CC 0F 2E 77 0F
0070 | 58 DB A1 2E 0B C2 BF E1 75 B7 F0 5C 22 4E 2C A0
0080 | 3E 9E F0 21 6A D4 DD 27 10 C6 D4 33 37 CE 05 5D
0090 | 6F FD 56 57 90 5D 8E D3 50 73 D4 D3 3B FE 47 69
00A0 | 03 D8 57 6F B3 4C 38 8C 33 90 43 2D 8B F2 C4 F8
00B0 | 67 26 89 0B 33 8E 42 C3 EE 5F 4A A7 7E 06 18 CA
00C0 | 4A EF E5 78 F9 AF AA 78 99 FF 55 F7 EE 0E C7 59
00D0 | CA 50 6C D1 7E 02 9D 50 FA 63 1E B5 1C 79 A1 C2
00E0 | B4 E7 FD DF 47 F0 8C F9 46 6E 35 50 85 73 86 E9
00F0 | A7 63 DF B5 21 4D 47 FF 8C 05 E7 DA A8 BA 6E 62
0100 | 84 86 F3 16 00 50 DA EE 78 F6 00 A4 C5 67 EF FA
0110 | B5 04 B9 50 A6 2C AF BC 29 34 88 7C A8 14 33 00
0120 | 1D 09 34 BD 0D D8 75 C0 D9 27 4C 38 C6 52 FF 2E
0130 | C9 0C 8B B2 2A 9C AC F7 7C 10 81 EB 4B 28 88 27
0140 | 05 E8 EE DB 1B E3 B5 21 4E F0 AB FC FE C8 F7 CC
0150 | CC E4 31 5C 62 5A 06 3F C6 98 8F 03 19 24 36 01
0160 | 0E A3 F7 30 70 E7 28 D3 57 C5 FB A4 82 7E 14 63
0170 | DC 83 08 A1 4A BA CE EE 6B 48 D3 15 F2 03 D0 CB
0180 | C7 4E 85 60 C7 03 60 68 35 7B 29 2C</code></pre>
<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>
<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>34AD05009E36A865</code></td>
<td><code>041100005B3EA865</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>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010019D136DB0431F30C8204159B</code> <code>7547FC223ADA5F91CF9395C2466CC1C0</code> <code>430705F68DAEE69BF38C6D915B04B212</code> <code>503860CC0F2E770F58DBA12E0BC2BFE1</code> <code>75B7F05C224E2CA03E9EF0216AD4DD27</code> <code>10C6D43337CE055D6FFD5657905D8ED3</code> <code>5073D4D33BFE476903D8576FB34C388C</code> <code>3390432D8BF2C4F86726890B338E42C3</code> <code>EE5F4AA77E0618CA4AEFE578F9AFAA78</code> <code>99FF55F7EE0EC759CA506CD17E029D50</code> <code>FA631EB51C79A1C2B4E7FDDF47F08CF9</code> <code>466E3550857386E9A763DFB5214D47FF</code> <code>8C05E7DAA8BA6E628486F3160050DAEE</code> <code>78F600A4C567EFFAB504B950A62CAFBC</code> <code>2934887CA81433001D0934BD0DD875C0</code> <code>D9274C38C652FF2EC90C8BB22A9CACF7</code> <code>7C1081EB4B28882705E8EEDB1BE3B521</code> <code>4EF0ABFCFEC8F7CCCCE4315C625A063F</code> <code>C6988F03192436010EA3F73070E728D3</code> <code>57C5FBA4827E1463DC8308A14ABACEEE</code> <code>6B48D315F203D0CBC74E8560C7036068</code><br> <code>357B292C</code></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>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 = 8C359D419DCD976B43054226DF43AE8E4CE7FCEB812AF52B54255FEA88984E436AA02BAB9B20D8D6DCA5DFE28B594C3BE7F622B0C1DDB9263B8CFD31DBE713F897C162ABAAFCE7E9ED16A344A26E55DC4211EEB291107601898FD18AAC9F016FFA70A099CE280EC4C3255DD7956BBB6E6164473727887CF92578FEE11F7CF2D112CEC1754BA1AA0D4B9BD8C5A33C6273F819D8617CD0E07638B61866A4298F373ED0F46BC272C7E6A07A32CD2B34A8761778849840ACCBE06A7B169C294945F258C8F9B3A25EE209D8B610F4821A49C4ABA136B512631935DEE5B35A280353DDFCF8FB34BB54FA76E3F019C9DF7650632252F81C81B2BB8A7D5F50ACFDDA3B62</code></pre>
<pre><code>auth_key = 835F6EB517D11E41A5F6338F29D4F8438DF9771D54A6D9BA0B96BCACFDF1F14F0A7ABC0504976D9A6ED84E87258033ED015AE48331C90C7D697917CD14C9056F3FF142DC81BB942D675E2A5034702D83F63FAE694380F1222E747779EC012F7780E4359427A0B1676414CD6BF64B6FECF7A758BAD66D56FFDAF58BD56434AE67B64C28DBBD81E9D91A7A7E66462DE6689F7348859B10302D9D238BEB9205EA39A437B0FF526DEA5664AA9AEE462AB103AEBABCE740B88E43CB0A3FB7BDDE92E0F6DECAFB808BF9581CF4BD6B0BA016915276731F7F18550C510B1FF0C369F0C96A8ADD4E09D1333E87C84E7295B8803B5DC9F1BD37F358A831D47DB766E03648</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 20 5E E4 9F 36 A8 65
0010 | 5C 00 00 00 34 F7 CB 3B 9A AF A7 4E 29 5C CF C9
0020 | 7B C5 93 19 50 7B 21 BC 05 4D 38 FE DC 2F 29 EC
0030 | 2C B5 82 83 2E F5 17 72 4F C0 EE 0B 29 27 F6 92
0040 | BE D8 95 F7 9C D6 6A 3A</code></pre>
<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>
<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,7 +817,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>01205EE49F36A865</code></td>
<td><code>016CE6E55B3EA865</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>
@ -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>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td><code>D2AC74533A313A58870E49D53BA68A05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td><code>0009D4B04BA75778C560958C4F18A6BA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>4FC0EE0B2927F692BED895F79CD66A3A</code></td>
<td><code>0383CA93755EBD34FA87218CDF8CC2E7</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

@ -142,7 +142,7 @@
</tr>
<tr>
<td><a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a></td>
<td>Prompts the user to select and share a peer with the bot using <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></td>
<td>Prompts the user to select and share one or more peers with the bot using <a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></td>
</tr>
</tbody>
</table></div>

View file

@ -88,7 +88,7 @@
</tr>
<tr>
<td><a href="/constructor/mediaAreaChannelPost">mediaAreaChannelPost</a></td>
<td> </td>
<td>Represents a channel post.</td>
</tr>
<tr>
<td><a href="/constructor/inputMediaAreaChannelPost">inputMediaAreaChannelPost</a></td>

View file

@ -251,7 +251,7 @@
</tr>
<tr>
<td><a href="/constructor/messageActionRequestedPeer">messageActionRequestedPeer</a></td>
<td>Contains info about a peer that the user shared with the bot after clicking on a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</td>
<td>Contains info about one or more peers that the user shared with the bot after clicking on a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</td>
</tr>
<tr>
<td><a href="/constructor/messageActionSetChatWallPaper">messageActionSetChatWallPaper</a></td>

View file

@ -73,7 +73,7 @@
</tr>
<tr>
<td><a href="/constructor/storyReactionPublicForward">storyReactionPublicForward</a></td>
<td>A certain peer has forwarded the story as a message.</td>
<td>A certain peer has forwarded the story as a message to a public chat or channel.</td>
</tr>
<tr>
<td><a href="/constructor/storyReactionPublicRepost">storyReactionPublicRepost</a></td>

View file

@ -73,11 +73,11 @@
</tr>
<tr>
<td><a href="/constructor/storyViewPublicForward">storyViewPublicForward</a></td>
<td> </td>
<td>A certain peer has forwarded the story as a message to a public chat or channel.</td>
</tr>
<tr>
<td><a href="/constructor/storyViewPublicRepost">storyViewPublicRepost</a></td>
<td> </td>
<td>A certain peer has reposted the story.</td>
</tr>
</tbody>
</table>

View file

@ -670,11 +670,11 @@
</tr>
<tr>
<td><a href="/constructor/updateBotMessageReaction">updateBotMessageReaction</a></td>
<td> </td>
<td>Bots only: a user has changed their reactions on a message with public reactions.</td>
</tr>
<tr>
<td><a href="/constructor/updateBotMessageReactions">updateBotMessageReactions</a></td>
<td> </td>
<td>Bots only: the number of reactions on a message with anonymous reactions has changed.</td>
</tr>
<tr>
<td><a href="/constructor/updateSavedDialogPinned">updateSavedDialogPinned</a></td>

View file

@ -545,7 +545,7 @@
</tr>
<tr>
<td><a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></td>
<td>Send a chosen peer, as requested by a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</td>
<td>Send one or more chosen peers, as requested by a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</td>
</tr>
<tr>
<td><a href="/method/chatlists.joinChatlistInvite">chatlists.joinChatlistInvite</a></td>