Update content of files

This commit is contained in:
GitHub Action 2024-01-17 20:27:18 +00:00
parent d1b31b8386
commit 3d1597a5b5
16 changed files with 323 additions and 398 deletions

View file

@ -88,12 +88,13 @@
<a href='/constructor/account.emojiStatuses'>account.emojiStatuses</a>#90c467d1 hash:<a href='/type/long'>long</a> statuses:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/EmojiStatus'>EmojiStatus</a>&gt; = <a href='/type/account.EmojiStatuses'>account.EmojiStatuses</a>;
<a href='/constructor/inputStickerSetEmojiDefaultStatuses'>inputStickerSetEmojiDefaultStatuses</a>#29d0f5ee = <a href='/type/InputStickerSet'>InputStickerSet</a>;
<a href='/constructor/inputStickerSetEmojiChannelDefaultStatuses'>inputStickerSetEmojiChannelDefaultStatuses</a>#49748553 = <a href='/type/InputStickerSet'>InputStickerSet</a>;
---functions---
<a href='/method/account.getDefaultEmojiStatuses'>account.getDefaultEmojiStatuses</a>#d6753386 hash:<a href='/type/long'>long</a> = <a href='/type/account.EmojiStatuses'>account.EmojiStatuses</a>;
<a href='/method/account.getChannelDefaultEmojiStatuses'>account.getChannelDefaultEmojiStatuses</a>#7727a7d5 hash:<a href='/type/long'>long</a> = <a href='/type/account.EmojiStatuses'>account.EmojiStatuses</a>;</code></pre>
<p>A set of standard statuses can be fetched by passing <a href="/constructor/inputStickerSetEmojiDefaultStatuses">inputStickerSetEmojiDefaultStatuses</a> to <a href="/method/messages.getStickerSet">messages.getStickerSet</a>, as specified in the <a href="/api/stickers">stickerset documentation »</a>. </p>
<p>A set of standard statuses for users/channels can be fetched by passing <a href="/constructor/inputStickerSetEmojiDefaultStatuses">inputStickerSetEmojiDefaultStatuses</a>/<a href="/constructor/inputStickerSetEmojiChannelDefaultStatuses">inputStickerSetEmojiChannelDefaultStatuses</a> to <a href="/method/messages.getStickerSet">messages.getStickerSet</a>, as specified in the <a href="/api/stickers">stickerset documentation »</a>. </p>
<p><a href="/method/account.getDefaultEmojiStatuses">account.getDefaultEmojiStatuses</a> can also be used to get a list of featured emoji statuses, from multiple featured custom emoji stickersets.<br>
<a href="/method/account.getChannelDefaultEmojiStatuses">account.getChannelDefaultEmojiStatuses</a> is the equivalent method for channel emoji statuses.</p></div>

View file

@ -143,13 +143,13 @@
<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/channelAdminLogEventActionChangePeerColor">channelAdminLogEventActionChangePeerColor</a> - </li>
<li>Added <a href="/constructor/channelAdminLogEventActionChangeProfilePeerColor">channelAdminLogEventActionChangeProfilePeerColor</a> - </li>
<li>Added <a href="/constructor/channelAdminLogEventActionChangeWallpaper">channelAdminLogEventActionChangeWallpaper</a> - </li>
<li>Added <a href="/constructor/channelAdminLogEventActionChangeEmojiStatus">channelAdminLogEventActionChangeEmojiStatus</a> - </li>
<li>Added <a href="/constructor/inputStickerSetEmojiChannelDefaultStatuses">inputStickerSetEmojiChannelDefaultStatuses</a> - </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/inputMediaAreaChannelPost">inputMediaAreaChannelPost</a> - </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>
</ul>

View file

@ -189,10 +189,19 @@ When the stories of a user are marked as hidden, the <code>stories_hidden</code>
<p>Stories can be shared as messages to any chat by simply using <a href="/method/messages.sendMedia">messages.sendMedia</a>, passing an <a href="/constructor/inputMediaStory">inputMediaStory</a> referencing the shared story. </p>
<p>The story will be shared as a <a href="/constructor/messageMediaStory">messageMediaStory</a>, and should be displayed as a message forwarded from the poster of the story (even though <a href="/method/messages.forwardMessages">messages.forwardMessages</a> was not used an the <code>fwd_from</code> field of the <a href="/constructor/message">message</a> <strong>won't</strong> be set). </p>
<p>A message containing a <a href="/constructor/messageMediaStory">messageMediaStory</a> with the <code>via_mention</code> flag coming from the story poster will also be generated automatically if the poster mentions us in the story's caption. </p>
<h3><a class="anchor" href="#fetching-the-viewer-list" id="fetching-the-viewer-list" name="fetching-the-viewer-list"><i class="anchor-icon"></i></a>Fetching the viewer list</h3>
<h3><a class="anchor" href="#fetching-the-interaction-list" id="fetching-the-interaction-list" name="fetching-the-interaction-list"><i class="anchor-icon"></i></a>Fetching the interaction list</h3>
<pre><code><a href='/constructor/storyView'>storyView</a>#b0bdeac5 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> blocked_my_stories_from:flags.1?<a href='/constructor/true'>true</a> user_id:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> reaction:flags.2?<a href='/type/Reaction'>Reaction</a> = <a href='/type/StoryView'>StoryView</a>;
<a href='/constructor/storyViewPublicForward'>storyViewPublicForward</a>#9083670b flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> blocked_my_stories_from:flags.1?<a href='/constructor/true'>true</a> message:<a href='/type/Message'>Message</a> = <a href='/type/StoryView'>StoryView</a>;
<a href='/constructor/storyViewPublicRepost'>storyViewPublicRepost</a>#bd74cf49 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> blocked_my_stories_from:flags.1?<a href='/constructor/true'>true</a> peer_id:<a href='/type/Peer'>Peer</a> story:<a href='/type/StoryItem'>StoryItem</a> = <a href='/type/StoryView'>StoryView</a>;
<a href='/constructor/stories.storyViewsList'>stories.storyViewsList</a>#59d78fc5 flags:<a href='/type/%23'>#</a> count:<a href='/type/int'>int</a> views_count:<a href='/type/int'>int</a> forwards_count:<a href='/type/int'>int</a> reactions_count:<a href='/type/int'>int</a> views:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/StoryView'>StoryView</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; next_offset:flags.0?<a href='/type/string'>string</a> = <a href='/type/stories.StoryViewsList'>stories.StoryViewsList</a>;
<a href='/constructor/storyReaction'>storyReaction</a>#6090d6d5 peer_id:<a href='/type/Peer'>Peer</a> date:<a href='/type/int'>int</a> reaction:<a href='/type/Reaction'>Reaction</a> = <a href='/type/StoryReaction'>StoryReaction</a>;
<a href='/constructor/storyReactionPublicForward'>storyReactionPublicForward</a>#bbab2643 message:<a href='/type/Message'>Message</a> = <a href='/type/StoryReaction'>StoryReaction</a>;
<a href='/constructor/storyReactionPublicRepost'>storyReactionPublicRepost</a>#cfcd0f13 peer_id:<a href='/type/Peer'>Peer</a> story:<a href='/type/StoryItem'>StoryItem</a> = <a href='/type/StoryReaction'>StoryReaction</a>;
<a href='/constructor/stories.storyReactionsList'>stories.storyReactionsList</a>#aa5f789c flags:<a href='/type/%23'>#</a> count:<a href='/type/int'>int</a> reactions:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/StoryReaction'>StoryReaction</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; next_offset:flags.0?<a href='/type/string'>string</a> = <a href='/type/stories.StoryReactionsList'>stories.StoryReactionsList</a>;
<a href='/constructor/storyViews'>storyViews</a>#8d595cd6 flags:<a href='/type/%23'>#</a> has_viewers:flags.1?<a href='/constructor/true'>true</a> views_count:<a href='/type/int'>int</a> forwards_count:flags.2?<a href='/type/int'>int</a> reactions:flags.3?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/ReactionCount'>ReactionCount</a>&gt; reactions_count:flags.4?<a href='/type/int'>int</a> recent_viewers:flags.0?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt; = <a href='/type/StoryViews'>StoryViews</a>;
<a href='/constructor/stories.storyViews'>stories.storyViews</a>#de9eed1d views:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/StoryViews'>StoryViews</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/stories.StoryViews'>stories.StoryViews</a>;
@ -200,9 +209,22 @@ When the stories of a user are marked as hidden, the <code>stories_hidden</code>
<a href='/method/stories.getStoryViewsList'>stories.getStoryViewsList</a>#7ed23c57 flags:<a href='/type/%23'>#</a> just_contacts:flags.0?<a href='/constructor/true'>true</a> reactions_first:flags.2?<a href='/constructor/true'>true</a> forwards_first:flags.3?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:flags.1?<a href='/type/string'>string</a> id:<a href='/type/int'>int</a> offset:<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/stories.StoryViewsList'>stories.StoryViewsList</a>;
<a href='/method/stories.getStoryReactionsList'>stories.getStoryReactionsList</a>#b9b2881f flags:<a href='/type/%23'>#</a> forwards_first:flags.2?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> reaction:flags.0?<a href='/type/Reaction'>Reaction</a> offset:flags.1?<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/stories.StoryReactionsList'>stories.StoryReactionsList</a>;
<a href='/method/stories.getStoriesViews'>stories.getStoriesViews</a>#28e16cc8 peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/int'>int</a>&gt; = <a href='/type/stories.StoryViews'>stories.StoryViews</a>;</code></pre>
<p>Use <a href="/method/stories.getStoryViewsList">stories.getStoryViewsList</a> to obtain the full list of users that have viewed a specific story we posted, returned as a list of <a href="/constructor/storyView">storyView</a> constructors; pass the returned <code>next_offset</code> (if present) to <code>offset</code> to paginate through the results; the full list is available at all times only to <a href="/api/premium">Premium</a> users, and will be deleted on stories posted by non-<a href="/api/premium">Premium</a> users <a href="/api/config#story-viewers-expire-period">story_viewers_expire_period »</a> seconds after the story expires; if it's still viewable, the <code>has_viewers</code> flag will be set. </p>
<p>Use <a href="/method/stories.getStoriesViews">stories.getStoriesViews</a> to obtain info about the view count, forward count, reactions and recent viewers list of one or more stories, using a single, unpaginated method call, obviously potentially returning less info than <a href="/method/stories.getStoryViewsList">stories.getStoryViewsList</a>. </p>
<p>Use <a href="/method/stories.getStoryViewsList">stories.getStoryViewsList</a> to obtain the full list of users that have interacted with a specific story we posted as a user, returned as a list of <a href="/type/StoryView">StoryView</a> constructors; pass the returned <code>next_offset</code> (if present) to <code>offset</code> to paginate through the results; the full list is available at all times only to <a href="/api/premium">Premium</a> users, and will be deleted on stories posted by non-<a href="/api/premium">Premium</a> users <a href="/api/config#story-viewers-expire-period">story_viewers_expire_period »</a> seconds after the story expires; if it's still viewable, the <code>has_viewers</code> flag will be set. </p>
<p>The above method can only be used for stories posted by users, to fetch almost the exact same information for stories posted by channels, use <a href="/method/stories.getStoryReactionsList">stories.getStoryReactionsList</a>: the data returned by both methods is actually almost exactly the same, the only difference is that:</p>
<ul>
<li><a href="/method/stories.getStoryViewsList">stories.getStoryViewsList</a> can only be used for stories posted by the current user and also contains view and <a href="/api/block">blocklist</a> information. </li>
<li><a href="/method/stories.getStoryReactionsList">stories.getStoryReactionsList</a> can only be used for stories posted by channels we're an admin of and does not contain view information</li>
</ul>
<p>For the rest, both methods return information about:</p>
<ul>
<li>Story reactions: <a href="/constructor/storyView">storyView</a>/<a href="/constructor/storyReaction">storyReaction</a></li>
<li>Story forwards as a message to a public chat/channel: <a href="/constructor/storyViewPublicForward">storyViewPublicForward</a>/<a href="/constructor/storyReactionPublicForward">storyReactionPublicForward</a></li>
<li>Story reposts (as a story to a public channel/user): <a href="/constructor/storyViewPublicRepost">storyViewPublicRepost</a>/<a href="/constructor/storyReactionPublicRepost">storyReactionPublicRepost</a></li>
</ul>
<p>Additionally, <a href="/method/stories.getStoriesViews">stories.getStoriesViews</a> can be used to obtain info about the view count, forward count, reactions and recent viewers list of one or more stories, using a single, unpaginated method call, obviously potentially returning less info than <a href="/method/stories.getStoryViewsList">stories.getStoryViewsList</a>. </p>
<h3><a class="anchor" href="#replying-to-stories" id="replying-to-stories" name="replying-to-stories"><i class="anchor-icon"></i></a>Replying to stories</h3>
<pre><code><a href='/constructor/inputReplyToStory'>inputReplyToStory</a>#15b0f283 user_id:<a href='/type/InputUser'>InputUser</a> story_id:<a href='/type/int'>int</a> = <a href='/type/InputReplyTo'>InputReplyTo</a>;
@ -264,6 +286,12 @@ When the stories of a user are marked as hidden, the <code>stories_hidden</code>
<p>Stories can have so-called "media areas": clickable rectangular areas with animated overlays on top of the story offering functionality like location tags or reactions. </p>
<p>The coordinates and size of each media area is specified in a <a href="/constructor/mediaAreaCoordinates">mediaAreaCoordinates</a> constructor attached to each <a href="/type/MediaArea">MediaArea</a>, see <a href="/constructor/mediaAreaCoordinates">the constructor page »</a> for more info. </p>
<p>After construction, the vector of <a href="/type/MediaArea">MediaArea</a> constructors can be passed to <a href="/method/stories.sendStory">stories.sendStory</a> or <a href="/method/stories.editStory">stories.editStory</a>.</p>
<h4><a class="anchor" href="#channel-posts" id="channel-posts" name="channel-posts"><i class="anchor-icon"></i></a>Channel posts</h4>
<pre><code><a href='/constructor/inputMediaAreaChannelPost'>inputMediaAreaChannelPost</a>#2271f2bf coordinates:<a href='/type/MediaAreaCoordinates'>MediaAreaCoordinates</a> channel:<a href='/type/InputChannel'>InputChannel</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/MediaArea'>MediaArea</a>;
<a href='/constructor/mediaAreaChannelPost'>mediaAreaChannelPost</a>#770416af coordinates:<a href='/type/MediaAreaCoordinates'>MediaAreaCoordinates</a> channel_id:<a href='/type/long'>long</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/MediaArea'>MediaArea</a>;</code></pre>
<p>Messages from channels can be reposted to stories using <a href="/constructor/inputMediaAreaChannelPost">inputMediaAreaChannelPost</a>/<a href="/constructor/mediaAreaChannelPost">mediaAreaChannelPost</a>.</p>
<p>Clients should fetch and display a copy of the channel post on top of the story according to the <a href="#media-areas">media area</a> <code>coordinates</code>: clicking on the media area should open the linked post.</p>
<h4><a class="anchor" href="#location-tags" id="location-tags" name="location-tags"><i class="anchor-icon"></i></a>Location tags</h4>
<p>Schema:</p>
<pre><code><a href='/constructor/geoPoint'>geoPoint</a>#b2a2f663 flags:<a href='/type/%23'>#</a> long:<a href='/type/double'>double</a> lat:<a href='/type/double'>double</a> access_hash:<a href='/type/long'>long</a> accuracy_radius:flags.0?<a href='/type/int'>int</a> = <a href='/type/GeoPoint'>GeoPoint</a>;
@ -297,27 +325,16 @@ Note that this should be done transparently in a map UI, not in the usual inline
<a href='/constructor/updateSentStoryReaction'>updateSentStoryReaction</a>#7d627683 peer:<a href='/type/Peer'>Peer</a> story_id:<a href='/type/int'>int</a> reaction:<a href='/type/Reaction'>Reaction</a> = <a href='/type/Update'>Update</a>;
<a href='/constructor/storyReaction'>storyReaction</a>#6090d6d5 peer_id:<a href='/type/Peer'>Peer</a> date:<a href='/type/int'>int</a> reaction:<a href='/type/Reaction'>Reaction</a> = <a href='/type/StoryReaction'>StoryReaction</a>;
<a href='/constructor/stories.storyViewsList'>stories.storyViewsList</a>#59d78fc5 flags:<a href='/type/%23'>#</a> count:<a href='/type/int'>int</a> views_count:<a href='/type/int'>int</a> forwards_count:<a href='/type/int'>int</a> reactions_count:<a href='/type/int'>int</a> views:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/StoryView'>StoryView</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; next_offset:flags.0?<a href='/type/string'>string</a> = <a href='/type/stories.StoryViewsList'>stories.StoryViewsList</a>;
<a href='/constructor/stories.storyReactionsList'>stories.storyReactionsList</a>#aa5f789c flags:<a href='/type/%23'>#</a> count:<a href='/type/int'>int</a> reactions:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/StoryReaction'>StoryReaction</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; next_offset:flags.0?<a href='/type/string'>string</a> = <a href='/type/stories.StoryReactionsList'>stories.StoryReactionsList</a>;
---functions---
<a href='/method/stories.sendReaction'>stories.sendReaction</a>#7fd736b2 flags:<a href='/type/%23'>#</a> add_to_recent:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> story_id:<a href='/type/int'>int</a> reaction:<a href='/type/Reaction'>Reaction</a> = <a href='/type/Updates'>Updates</a>;
<a href='/method/stories.getStoryViewsList'>stories.getStoryViewsList</a>#7ed23c57 flags:<a href='/type/%23'>#</a> just_contacts:flags.0?<a href='/constructor/true'>true</a> reactions_first:flags.2?<a href='/constructor/true'>true</a> forwards_first:flags.3?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:flags.1?<a href='/type/string'>string</a> id:<a href='/type/int'>int</a> offset:<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/stories.StoryViewsList'>stories.StoryViewsList</a>;
<a href='/method/stories.getStoryReactionsList'>stories.getStoryReactionsList</a>#b9b2881f flags:<a href='/type/%23'>#</a> forwards_first:flags.2?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> reaction:flags.0?<a href='/type/Reaction'>Reaction</a> offset:flags.1?<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/stories.StoryReactionsList'>stories.StoryReactionsList</a>;</code></pre>
<a href='/method/stories.sendReaction'>stories.sendReaction</a>#7fd736b2 flags:<a href='/type/%23'>#</a> add_to_recent:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> story_id:<a href='/type/int'>int</a> reaction:<a href='/type/Reaction'>Reaction</a> = <a href='/type/Updates'>Updates</a>;</code></pre>
<p>Story <a href="/api/reactions">reactions</a> are implemented using a simple in-UI button that allows the user to send any reaction using <a href="/method/stories.sendReaction">stories.sendReaction</a>. </p>
<p>Sending this method will return an <a href="/constructor/updateSentStoryReaction">updateSentStoryReaction</a> update to all logged-in sessions. </p>
<p>However, the poster of a story may also use <a href="/constructor/mediaAreaSuggestedReaction">mediaAreaSuggestedReaction</a> <a href="#media-areas">media areas »</a> to suggest some specific reactions as simple clickable buttons: they're rendered as a round comic-style thought bubble with its "tail" on the right, white background and the <a href="/api/reactions">reaction »</a> from the <code>reaction</code> field located in its center.<br>
If the <code>dark</code> flag is set, the background should be black.<br>
If the <code>flipped</code> flag is set, the "tail" should be located on the left.</p>
<p>Clicking it should invoke <a href="/method/stories.sendReaction">stories.sendReaction</a> as usual.</p>
<p>To get the reaction list of a <a href="/api/stories">story</a> posted as a user, use <a href="/method/stories.getStoryViewsList">stories.getStoryViewsList</a>, see <a href="#fetching-the-viewer-list">here »</a> for more info on how to use the method.<br>
To get the reaction list of a <a href="/api/stories">story</a> posted as a channel, use <a href="/method/stories.getStoryReactionsList">stories.getStoryReactionsList</a>, see <a href="#fetching-the-viewer-list">here »</a> for more info on how to use the method (the parameters and behavior is pretty much the same as for <a href="/method/stories.getStoryViewsList">stories.getStoryViewsList</a>, the only difference is that the viewer list cannot be fetched with it). </p>
<p>See <a href="#fetching-the-interaction-list">here »</a> to get more info on how to fetch the reaction list of a <a href="/api/stories">story</a>.</p>
<h3><a class="anchor" href="#stealth-mode" id="stealth-mode" name="stealth-mode"><i class="anchor-icon"></i></a>Stealth mode</h3>
<p><a href="/api/premium">Premium users</a> may enable <a href="https://telegram.org/tour/stories#stealth-mode">stealth mode</a>, erasing their views from any stories they opened in the past <a href="/api/config#stories-stealth-past-period"><code>stories_stealth_past_period</code> seconds »</a>, and hiding their views on stories for the next <a href="/api/config#stories-stealth-future-period"><code>stories_stealth_future_period</code> seconds »</a>, as specified by the <a href="/api/config#client-configuration">client configuration »</a>.</p>
<p>Schema:</p>

View file

@ -264,17 +264,17 @@
<tr>
<td><strong>profile_color</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.8?<a href="/type/PeerColor">PeerColor</a></td>
<td> </td>
<td>The channel's <a href="/api/colors">profile color</a>.</td>
</tr>
<tr>
<td><strong>emoji_status</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.9?<a href="/type/EmojiStatus">EmojiStatus</a></td>
<td> </td>
<td><a href="/api/emoji-status">Emoji status</a></td>
</tr>
<tr>
<td><strong>level</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.10?<a href="/type/int">int</a></td>
<td> </td>
<td><a href="/api/boost">Boost level</a></td>
</tr>
</tbody>
</table>
@ -302,7 +302,11 @@
<h4><a class="anchor" href="#admin-banned-default-rights" id="admin-banned-default-rights" name="admin-banned-default-rights"><i class="anchor-icon"></i></a><a href="/api/rights">Admin, banned, default rights</a></h4>
<p>How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.</p>
<h4><a class="anchor" href="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p></div>
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p>
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>
<p>Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.</p>
<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></div>
</div>

View file

@ -4,32 +4,10 @@
<meta charset="utf-8">
<title>channelAdminLogEventActionChangeEmojiStatus</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
prev_value
EmojiStatus
 
new_value
EmojiStatus
 
Type
ChannelAdminLogEventAction">
<meta property="description" content="The emoji status was changed">
<meta property="og:title" content="channelAdminLogEventActionChangeEmojiStatus">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
prev_value
EmojiStatus
 
new_value
EmojiStatus
 
Type
ChannelAdminLogEventAction">
<meta property="og:description" content="The emoji status was 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">
@ -64,7 +42,8 @@ ChannelAdminLogEventAction">
<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/channelAdminLogEventActionChangeEmojiStatus" >channelAdminLogEventActionChangeEmojiStatus</a></li></ul></div>
<h1 id="dev_page_title">channelAdminLogEventActionChangeEmojiStatus</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>The <a href="/api/emoji-status">emoji status</a> was 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>
@ -90,17 +69,20 @@ ChannelAdminLogEventAction">
<tr>
<td><strong>prev_value</strong></td>
<td style="text-align: center;"><a href="/type/EmojiStatus">EmojiStatus</a></td>
<td> </td>
<td>Previous emoji status</td>
</tr>
<tr>
<td><strong>new_value</strong></td>
<td style="text-align: center;"><a href="/type/EmojiStatus">EmojiStatus</a></td>
<td> </td>
<td>New emoji status</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/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div>
<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>
<p>Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.</p></div>
</div>

View file

@ -4,32 +4,10 @@
<meta charset="utf-8">
<title>channelAdminLogEventActionChangePeerColor</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
prev_value
PeerColor
 
new_value
PeerColor
 
Type
ChannelAdminLogEventAction">
<meta property="description" content="The message accent color was changed">
<meta property="og:title" content="channelAdminLogEventActionChangePeerColor">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
prev_value
PeerColor
 
new_value
PeerColor
 
Type
ChannelAdminLogEventAction">
<meta property="og:description" content="The message accent color was 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">
@ -64,7 +42,8 @@ ChannelAdminLogEventAction">
<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/channelAdminLogEventActionChangePeerColor" >channelAdminLogEventActionChangePeerColor</a></li></ul></div>
<h1 id="dev_page_title">channelAdminLogEventActionChangePeerColor</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>The <a href="/api/colors">message accent color</a> was 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>
@ -90,17 +69,20 @@ ChannelAdminLogEventAction">
<tr>
<td><strong>prev_value</strong></td>
<td style="text-align: center;"><a href="/type/PeerColor">PeerColor</a></td>
<td> </td>
<td>Previous accent palette</td>
</tr>
<tr>
<td><strong>new_value</strong></td>
<td style="text-align: center;"><a href="/type/PeerColor">PeerColor</a></td>
<td> </td>
<td>New accent palette</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/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div>
<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</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="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p></div>
</div>

View file

@ -4,32 +4,10 @@
<meta charset="utf-8">
<title>channelAdminLogEventActionChangeProfilePeerColor</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
prev_value
PeerColor
 
new_value
PeerColor
 
Type
ChannelAdminLogEventAction">
<meta property="description" content="The profile accent color was changed">
<meta property="og:title" content="channelAdminLogEventActionChangeProfilePeerColor">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
prev_value
PeerColor
 
new_value
PeerColor
 
Type
ChannelAdminLogEventAction">
<meta property="og:description" content="The profile accent color was 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">
@ -64,7 +42,8 @@ ChannelAdminLogEventAction">
<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/channelAdminLogEventActionChangeProfilePeerColor" >channelAdminLogEventActionChangeProfilePeerColor</a></li></ul></div>
<h1 id="dev_page_title">channelAdminLogEventActionChangeProfilePeerColor</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>The <a href="/api/colors">profile accent color</a> was 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>
@ -90,17 +69,20 @@ ChannelAdminLogEventAction">
<tr>
<td><strong>prev_value</strong></td>
<td style="text-align: center;"><a href="/type/PeerColor">PeerColor</a></td>
<td> </td>
<td>Previous accent palette</td>
</tr>
<tr>
<td><strong>new_value</strong></td>
<td style="text-align: center;"><a href="/type/PeerColor">PeerColor</a></td>
<td> </td>
<td>New accent palette</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/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div>
<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</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="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p></div>
</div>

View file

@ -4,32 +4,10 @@
<meta charset="utf-8">
<title>channelAdminLogEventActionChangeWallpaper</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
prev_value
WallPaper
 
new_value
WallPaper
 
Type
ChannelAdminLogEventAction">
<meta property="description" content="The wallpaper was changed">
<meta property="og:title" content="channelAdminLogEventActionChangeWallpaper">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
prev_value
WallPaper
 
new_value
WallPaper
 
Type
ChannelAdminLogEventAction">
<meta property="og:description" content="The wallpaper was 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">
@ -64,7 +42,8 @@ ChannelAdminLogEventAction">
<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/channelAdminLogEventActionChangeWallpaper" >channelAdminLogEventActionChangeWallpaper</a></li></ul></div>
<h1 id="dev_page_title">channelAdminLogEventActionChangeWallpaper</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>The <a href="/api/wallpapers">wallpaper</a> was 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>
@ -90,17 +69,20 @@ ChannelAdminLogEventAction">
<tr>
<td><strong>prev_value</strong></td>
<td style="text-align: center;"><a href="/type/WallPaper">WallPaper</a></td>
<td> </td>
<td>Previous wallpaper</td>
</tr>
<tr>
<td><strong>new_value</strong></td>
<td style="text-align: center;"><a href="/type/WallPaper">WallPaper</a></td>
<td> </td>
<td>New wallpaper</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/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div>
<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</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="#wallpapers" id="wallpapers" name="wallpapers"><i class="anchor-icon"></i></a><a href="/api/wallpapers">Wallpapers</a></h4>
<p>Telegram apps support generating, sharing and synchronizing chat backgrounds.</p></div>
</div>

View file

@ -329,7 +329,7 @@
<tr>
<td><strong>wallpaper</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.7?<a href="/type/WallPaper">WallPaper</a></td>
<td> </td>
<td><a href="/api/wallpapers">Wallpaper</a></td>
</tr>
</tbody>
</table>
@ -370,7 +370,9 @@
<h4><a class="anchor" href="#invites" id="invites" name="invites"><i class="anchor-icon"></i></a><a href="/api/invites">Invites</a></h4>
<p>Chats and channels may have a public username or a private invite link: private invite links may be further enhanced with per-user join requests.</p>
<h4><a class="anchor" href="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p></div>
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p>
<h4><a class="anchor" href="#wallpapers" id="wallpapers" name="wallpapers"><i class="anchor-icon"></i></a><a href="/api/wallpapers">Wallpapers</a></h4>
<p>Telegram apps support generating, sharing and synchronizing chat backgrounds.</p></div>
</div>

View file

@ -94,13 +94,15 @@
<tr>
<td><strong>channel_min_level</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/int">int</a></td>
<td> </td>
<td>Channels can use this palette only after reaching at least the <a href="/api/boost">boost level</a> specified in this field.</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/help.PeerColorOption">help.PeerColorOption</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#channel-boosts" id="channel-boosts" name="channel-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p></div>

View file

@ -4,38 +4,10 @@
<meta charset="utf-8">
<title>inputMediaAreaChannelPost</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
coordinates
MediaAreaCoordinates
 
channel
InputChannel
 
msg_id
int
 
Type
MediaArea">
<meta property="description" content="Represents a channel post">
<meta property="og:title" content="inputMediaAreaChannelPost">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
coordinates
MediaAreaCoordinates
 
channel
InputChannel
 
msg_id
int
 
Type
MediaArea">
<meta property="og:description" content="Represents a channel post">
<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 +42,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/inputMediaAreaChannelPost" >inputMediaAreaChannelPost</a></li></ul></div>
<h1 id="dev_page_title">inputMediaAreaChannelPost</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 +69,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</strong></td>
<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td>
<td> </td>
<td>The channel that originally 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

@ -4,16 +4,10 @@
<meta charset="utf-8">
<title>inputStickerSetEmojiChannelDefaultStatuses</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
This constructor does not require any parameters.
Type
InputStickerSet">
<meta property="description" content="Default custom emoji status stickerset for channel statuses">
<meta property="og:title" content="inputStickerSetEmojiChannelDefaultStatuses">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
This constructor does not require any parameters.
Type
InputStickerSet">
<meta property="og:description" content="Default custom emoji status stickerset for channel statuses">
<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">
@ -48,7 +42,8 @@ InputStickerSet">
<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/inputStickerSetEmojiChannelDefaultStatuses" >inputStickerSetEmojiChannelDefaultStatuses</a></li></ul></div>
<h1 id="dev_page_title">inputStickerSetEmojiChannelDefaultStatuses</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Default <a href="/api/emoji-status">custom emoji status</a> stickerset for channel statuses</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>
@ -64,7 +59,10 @@ InputStickerSet">
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
<p>This constructor does not require any parameters.</p>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/InputStickerSet">InputStickerSet</a></p></div>
<p><a href="/type/InputStickerSet">InputStickerSet</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>
<p>Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.</p></div>
</div>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 A8 C7 0B 00 05 2E A8 65
0010 | 14 00 00 00 F1 8E 7E BE 59 EB 4E A1 77 C2 B0 4D
0020 | C7 A2 21 A2 C0 80 F0 A3</code></pre>
<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>
<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>A8C70B00052EA865</code></td>
<td><code>E4990A009D36A865</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>59EB4EA177C2B04DC7A221A2C080F0A3</code></td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</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 28 AB 03 06 2E A8 65
0010 | 58 00 00 00 63 24 16 05 59 EB 4E A1 77 C2 B0 4D
0020 | C7 A2 21 A2 C0 80 F0 A3 7F 5A B2 77 88 A5 39 5E
0030 | 7C 08 6E BA F4 74 75 86 08 19 EC DA 36 66 B5 54
0040 | A7 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 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
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>0128AB03062EA865</code></td>
<td><code>01889E039E36A865</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>58000000</code> (88 in decimal)</td>
<td><code>68000000</code> (104 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>59EB4EA177C2B04DC7A221A2C080F0A3</code></td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>7F5AB27788A5395E7C086EBAF4747586</code></td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0819ECDA3666B554A7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1868107872638162087</td>
<td><code>0816D2E3CF3619C10B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1644627293049045259</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 = 1868107872638162087</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1868107872638162087 = 1176978853 * 1587205979</code></p>
<pre><code>p = 1176978853
q = 1587205979</code></pre>
<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>
<!-- 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 19 EC DA 36 66 B5 54 A7 00 00 00
0010 | 04 46 27 45 A5 00 00 00 04 5E 9A D7 5B 00 00 00
0020 | 59 EB 4E A1 77 C2 B0 4D C7 A2 21 A2 C0 80 F0 A3
0030 | 7F 5A B2 77 88 A5 39 5E 7C 08 6E BA F4 74 75 86
0040 | 5D EE 58 8E FF 79 DA 1F E7 31 07 A1 C0 23 B6 CD
0050 | 11 3E D8 2D 68 7C 4E 37 D5 2F 24 42 83 8A 24 CB
<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
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 = 1587205979</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0819ECDA3666B554A7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1868107872638162087</td>
<td><code>0816D2E3CF3619C10B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1644627293049045259</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>04462745A5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1176978853</td>
<td><code>043F07F297000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1057485463</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>045E9AD75B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1587205979</td>
<td><code>045CB2D7AD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1555224493</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>59EB4EA177C2B04DC7A221A2C080F0A3</code></td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>7F5AB27788A5395E7C086EBAF4747586</code></td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>5DEE588EFF79DA1FE73107A1C023B6CD</code> <code>113ED82D687C4E37D52F2442838A24CB</code></td>
<td><code>E753D9DE36B02B0EF48851DB37AF3EB8</code> <code>DF36F438E450B9F2DF37325D036228E2</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1587205979</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 = 955FF5A90819ECDA3666B554A700000004462745A5000000045E9AD75B00000059EB4EA177C2B04DC7A221A2C080F0A37F5AB27788A5395E7C086EBAF47475865DEE588EFF79DA1FE73107A1C023B6CD113ED82D687C4E37D52F2442838A24CB02000000
random_padding_bytes = A586B9E34683FA8194230A718DF69B262AE3F6A05BC1252B1C36EA406B1A51724C7E0AAAF9B55333567509DDEC97EA483725E6114DD92D3B606BA1C1F76D5225AD0C94240D5112F5AB7C761B5A54207EA99ECE277E6970E45CCF268E</code></pre>
<pre><code>data = 955FF5A90816D2E3CF3619C10B000000043F07F297000000045CB2D7AD0000009AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF51772E753D9DE36B02B0EF48851DB37AF3EB8DF36F438E450B9F2DF37325D036228E202000000
random_padding_bytes = 689372C5F440976397FB5093F99EA81B7ECD1FE29E04222A9A3FAB455FB5FF03D914E9DC780F98D9513FDB8D5B9D8A996ADBADC1896CE1D52BDE8550299E2C720627E8F2BF56D6D1CCDCBE62EDCD26D604BC142759E8B2B292E2894A</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 = 314F92A41A5DAFDA1FC7F0E157B935D4DF2B1F398F30697FE76B83E0F63A50282A7402EEF3F1178B0DE0B8AC34672D628E139747429ABBCEF3402EBF135E45A9A2BCB42EC268693414E830AAF0874EF6AA914EC04EF8DDAF68426F61DCAA995B625D57FFAD1CFD63374495EAF9E5AC2DA9316C90A05761833083DF5160F019315379A2F25B3F183AEF404F9B4065CE585198C635F62C4A2CD9BBFABA3E36649A20AA2617E7E84B4DD4928B1A82896596745EB0ABE6A5D4048D0D2817FED8B830357767E14C88D6F0F5120384E897EA8F13300503B6084E78D855A0EB1A6A22F8AADA95996CABB2609807479D4BA9E763265AF0C1C3489542B7C2262D9135BB9A</code></pre>
<pre><code>encrypted_data = 57C834C4C90A149B9998EBDA6E2D7AEE192DD0EE1DFD41CDE82998F7632085F70C96AC549B51E234905770402EA632A964213206BD56AA0B3FD8F3AB9F959524B86084A67CFCDAF229329968248D5721175DF5D3112E98D6F837B7172AC316DACB8F962EA965AF2F17984A1997A63F5FE2B13B49189C16AA8BDB9481968E9D33674ED7644E8A78652174F437655DB3170F09A1735ECE4834FCB78D772E5A40A4A850F6BE5D3EA009993FF467608E2A8B0216CAC0197C425C208A9F4BFA1D5112F954DE1AE93DC44F18B0046721DDB938C5EAD8FE39325670BC607A7AB1E5FA2681C7D1053E8E605044A75DA1A7ADF5C230AF5032AAA2519E6AEB4C95B0C0AE0B</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 C8 F3 0D 00 05 2E A8 65
0010 | 40 01 00 00 BE E4 12 D7 59 EB 4E A1 77 C2 B0 4D
0020 | C7 A2 21 A2 C0 80 F0 A3 7F 5A B2 77 88 A5 39 5E
0030 | 7C 08 6E BA F4 74 75 86 04 46 27 45 A5 00 00 00
0040 | 04 5E 9A D7 5B 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 31 4F 92 A4 1A 5D AF DA 1F C7 F0 E1
0060 | 57 B9 35 D4 DF 2B 1F 39 8F 30 69 7F E7 6B 83 E0
0070 | F6 3A 50 28 2A 74 02 EE F3 F1 17 8B 0D E0 B8 AC
0080 | 34 67 2D 62 8E 13 97 47 42 9A BB CE F3 40 2E BF
0090 | 13 5E 45 A9 A2 BC B4 2E C2 68 69 34 14 E8 30 AA
00A0 | F0 87 4E F6 AA 91 4E C0 4E F8 DD AF 68 42 6F 61
00B0 | DC AA 99 5B 62 5D 57 FF AD 1C FD 63 37 44 95 EA
00C0 | F9 E5 AC 2D A9 31 6C 90 A0 57 61 83 30 83 DF 51
00D0 | 60 F0 19 31 53 79 A2 F2 5B 3F 18 3A EF 40 4F 9B
00E0 | 40 65 CE 58 51 98 C6 35 F6 2C 4A 2C D9 BB FA BA
00F0 | 3E 36 64 9A 20 AA 26 17 E7 E8 4B 4D D4 92 8B 1A
0100 | 82 89 65 96 74 5E B0 AB E6 A5 D4 04 8D 0D 28 17
0110 | FE D8 B8 30 35 77 67 E1 4C 88 D6 F0 F5 12 03 84
0120 | E8 97 EA 8F 13 30 05 03 B6 08 4E 78 D8 55 A0 EB
0130 | 1A 6A 22 F8 AA DA 95 99 6C AB B2 60 98 07 47 9D
0140 | 4B A9 E7 63 26 5A F0 C1 C3 48 95 42 B7 C2 26 2D
0150 | 91 35 BB 9A</code></pre>
<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>
<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 = A586B9E34683FA8194230A718DF69B262AE3F6A05BC1252B1C36EA406
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>C8F30D00052EA865</code></td>
<td><code>30AD05009E36A865</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 = A586B9E34683FA8194230A718DF69B262AE3F6A05BC1252B1C36EA406
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>59EB4EA177C2B04DC7A221A2C080F0A3</code></td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>7F5AB27788A5395E7C086EBAF4747586</code></td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>04462745A5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1176978853</td>
<td><code>043F07F297000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1057485463</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>045E9AD75B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1587205979</td>
<td><code>045CB2D7AD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1555224493</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 = A586B9E34683FA8194230A718DF69B262AE3F6A05BC1252B1C36EA406
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE000100314F92A41A5DAFDA1FC7F0E1</code> <code>57B935D4DF2B1F398F30697FE76B83E0</code> <code>F63A50282A7402EEF3F1178B0DE0B8AC</code> <code>34672D628E139747429ABBCEF3402EBF</code> <code>135E45A9A2BCB42EC268693414E830AA</code> <code>F0874EF6AA914EC04EF8DDAF68426F61</code> <code>DCAA995B625D57FFAD1CFD63374495EA</code> <code>F9E5AC2DA9316C90A05761833083DF51</code> <code>60F019315379A2F25B3F183AEF404F9B</code> <code>4065CE585198C635F62C4A2CD9BBFABA</code> <code>3E36649A20AA2617E7E84B4DD4928B1A</code> <code>82896596745EB0ABE6A5D4048D0D2817</code> <code>FED8B830357767E14C88D6F0F5120384</code> <code>E897EA8F13300503B6084E78D855A0EB</code> <code>1A6A22F8AADA95996CABB2609807479D</code> <code>4BA9E763265AF0C1C3489542B7C2262D</code><br> <code>9135BB9A</code></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>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = A586B9E34683FA8194230A718DF69B262AE3F6A05BC1252B1C36EA406
<h5><a class="anchor" href="#6-server-responds-with" id="6-server-responds-with" name="6-server-responds-with"><i class="anchor-icon"></i></a>6) Server responds with:</h5>
<!-- start server_DH_params_ok -->
<p>Received payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 EC 7D A1 06 2E A8 65
0010 | 8C 02 00 00 5C 07 E8 D0 59 EB 4E A1 77 C2 B0 4D
0020 | C7 A2 21 A2 C0 80 F0 A3 7F 5A B2 77 88 A5 39 5E
0030 | 7C 08 6E BA F4 74 75 86 FE 50 02 00 01 A2 6C 8C
0040 | 77 D3 7C C8 FD A2 7A DC 77 45 30 F7 EA 13 8A EA
0050 | EB 8E 51 92 B0 86 4F 8B 45 D1 39 D0 54 73 A3 DB
0060 | FB 4C A9 67 28 84 AC 1E 9A 0D 1F BC 49 C6 05 27
0070 | 3B 11 5C 76 EA EA 93 6B FF 52 4C 49 EB 82 F7 A8
0080 | 10 FF 74 94 61 B9 F0 F8 D8 E0 3D 8D 29 8C 45 CF
0090 | F1 08 75 D6 76 1D B7 71 C7 35 9B 04 B9 34 EC 23
00A0 | 69 5E 33 70 FB 84 CF 36 9A 8F AD 08 4B 92 AC 6F
00B0 | FE 33 29 D4 BF 65 7E 4F E0 C3 8F 92 18 A7 B1 50
00C0 | BD F8 8A 7F 8E E8 BF B2 89 1E E2 AC BD C0 AC D6
00D0 | 3C 3F 1B A9 FB F0 EC 94 BD D8 B5 C2 E4 EC 71 67
00E0 | 6E 28 67 84 87 8E 80 E2 12 5E 8C 8A 14 F1 30 14
00F0 | 17 59 EF BF 59 36 FF 67 4F FB 56 CC 86 F4 39 BE
0100 | 84 76 FE 1B BB 83 BC B6 8C D2 76 7D 71 AA 47 02
0110 | 54 4B A8 1E 70 8F F3 00 34 8D 6C F0 CA 0E B1 93
0120 | 22 05 D9 4F C3 60 0B A0 35 53 28 2B 79 9E 85 75
0130 | 74 C6 0A E4 36 4F E3 34 39 E6 C8 C2 5F 7C 85 2E
0140 | 69 F2 93 87 FD 6C 85 0D CD B0 3E 10 82 23 8B 92
0150 | F8 00 31 C0 44 00 9B C2 7F 0D 54 85 B4 24 DB 93
0160 | 55 7E 93 16 C9 CB 15 FC 89 EA 11 F4 5C C5 99 0B
0170 | DF 02 E5 CC 07 2D 49 43 EA 84 A2 31 A2 58 E2 A3
0180 | 19 55 10 62 3C 96 52 FD 63 28 2F 04 AC F2 37 0A
0190 | F2 DD 56 B1 38 18 55 2F 34 D3 03 10 31 66 A5 37
01A0 | D7 1F AA 26 B5 04 62 01 48 C0 11 15 37 96 5B 26
01B0 | E8 86 90 D5 DD 85 CA 54 7D 09 9C 29 76 52 61 9E
01C0 | 4E CA 97 40 B9 9F 18 12 35 22 D6 12 24 7C C2 8D
01D0 | BB 85 93 13 28 F1 3A 00 20 CE 99 FA 0C 83 8B EE
01E0 | F5 0B 51 48 67 3C FF 45 FF EF DA 3B BA 54 5B 4E
01F0 | 8A 13 CC DE 2A 1B 65 20 E9 EA BD BE A7 3F 21 47
0200 | 2A E5 AA 03 0C D1 90 2F EF 15 43 17 B0 61 C0 E2
0210 | C7 28 14 4A 67 2A 35 8A 90 01 39 D7 F1 2E 06 28
0220 | B2 CE 5E 6B 16 AA BE 2E CE 10 82 3B 93 0E B8 7E
0230 | 40 14 DF DA 34 3B D8 0F A1 F6 AB 14 18 D1 48 0A
0240 | DE CD 5D 16 44 48 D7 FB 17 50 4E 40 84 09 52 B9
0250 | 25 CB 56 00 4A 15 68 C0 2D AB 8C C3 FE 8F 5E 41
0260 | 66 C1 98 79 35 97 23 FF E8 B6 A9 4A 0A DD 07 14
0270 | 5A 26 E6 CF 70 4E 79 1F 5F ED 94 50 67 11 3E 2C
0280 | CA AD D8 A2 CC AA 3E AF 32 BC AA C0</code></pre>
<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>
<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 = A586B9E34683FA8194230A718DF69B262AE3F6A05BC1252B1C36EA406
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01EC7DA1062EA865</code></td>
<td><code>01581FB09E36A865</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>8C020000</code> (652 in decimal)</td>
<td><code>B8020000</code> (696 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = A586B9E34683FA8194230A718DF69B262AE3F6A05BC1252B1C36EA406
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>59EB4EA177C2B04DC7A221A2C080F0A3</code></td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>7F5AB27788A5395E7C086EBAF4747586</code></td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE50020001A26C8C77D37CC8FDA27ADC</code> <code>774530F7EA138AEAEB8E5192B0864F8B</code> <code>45D139D05473A3DBFB4CA9672884AC1E</code> <code>9A0D1FBC49C605273B115C76EAEA936B</code> <code>FF524C49EB82F7A810FF749461B9F0F8</code> <code>D8E03D8D298C45CFF10875D6761DB771</code> <code>C7359B04B934EC23695E3370FB84CF36</code> <code>9A8FAD084B92AC6FFE3329D4BF657E4F</code> <code>E0C38F9218A7B150BDF88A7F8EE8BFB2</code> <code>891EE2ACBDC0ACD63C3F1BA9FBF0EC94</code> <code>BDD8B5C2E4EC71676E286784878E80E2</code> <code>125E8C8A14F130141759EFBF5936FF67</code> <code>4FFB56CC86F439BE8476FE1BBB83BCB6</code> <code>8CD2767D71AA4702544BA81E708FF300</code> <code>348D6CF0CA0EB1932205D94FC3600BA0</code> <code>3553282B799E857574C60AE4364FE334</code> <code>39E6C8C25F7C852E69F29387FD6C850D</code> <code>CDB03E1082238B92F80031C044009BC2</code> <code>7F0D5485B424DB93557E9316C9CB15FC</code> <code>89EA11F45CC5990BDF02E5CC072D4943</code> <code>EA84A231A258E2A3195510623C9652FD</code> <code>63282F04ACF2370AF2DD56B13818552F</code> <code>34D303103166A537D71FAA26B5046201</code> <code>48C0111537965B26E88690D5DD85CA54</code> <code>7D099C297652619E4ECA9740B99F1812</code> <code>3522D612247CC28DBB85931328F13A00</code> <code>20CE99FA0C838BEEF50B5148673CFF45</code> <code>FFEFDA3BBA545B4E8A13CCDE2A1B6520</code> <code>E9EABDBEA73F21472AE5AA030CD1902F</code> <code>EF154317B061C0E2C728144A672A358A</code> <code>900139D7F12E0628B2CE5E6B16AABE2E</code> <code>CE10823B930EB87E4014DFDA343BD80F</code> <code>A1F6AB1418D1480ADECD5D164448D7FB</code> <code>17504E40840952B925CB56004A1568C0</code> <code>2DAB8CC3FE8F5E4166C19879359723FF</code> <code>E8B6A94A0ADD07145A26E6CF704E791F</code> <code>5FED945067113E2CCAADD8A2CCAA3EAF</code><br> <code>32BCAAC0</code></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>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = A586B9E34683FA8194230A718DF69B262AE3F6A05BC1252B1C36EA406
<!-- 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 = 01A26C8C77D37CC8FDA27ADC774530F7EA138AEAEB8E5192B0864F8B45D139D05473A3DBFB4CA9672884AC1E9A0D1FBC49C605273B115C76EAEA936BFF524C49EB82F7A810FF749461B9F0F8D8E03D8D298C45CFF10875D6761DB771C7359B04B934EC23695E3370FB84CF369A8FAD084B92AC6FFE3329D4BF657E4FE0C38F9218A7B150BDF88A7F8EE8BFB2891EE2ACBDC0ACD63C3F1BA9FBF0EC94BDD8B5C2E4EC71676E286784878E80E2125E8C8A14F130141759EFBF5936FF674FFB56CC86F439BE8476FE1BBB83BCB68CD2767D71AA4702544BA81E708FF300348D6CF0CA0EB1932205D94FC3600BA03553282B799E857574C60AE4364FE33439E6C8C25F7C852E69F29387FD6C850DCDB03E1082238B92F80031C044009BC27F0D5485B424DB93557E9316C9CB15FC89EA11F45CC5990BDF02E5CC072D4943EA84A231A258E2A3195510623C9652FD63282F04ACF2370AF2DD56B13818552F34D303103166A537D71FAA26B504620148C0111537965B26E88690D5DD85CA547D099C297652619E4ECA9740B99F18123522D612247CC28DBB85931328F13A0020CE99FA0C838BEEF50B5148673CFF45FFEFDA3BBA545B4E8A13CCDE2A1B6520E9EABDBEA73F21472AE5AA030CD1902FEF154317B061C0E2C728144A672A358A900139D7F12E0628B2CE5E6B16AABE2ECE10823B930EB87E4014DFDA343BD80FA1F6AB1418D1480ADECD5D164448D7FB17504E40840952B925CB56004A1568C02DAB8CC3FE8F5E4166C19879359723FFE8B6A94A0ADD07145A26E6CF704E791F5FED945067113E2CCAADD8A2CCAA3EAF32BCAAC0
tmp_aes_key = 2D98C430FADBBEF521A985A86D5FEC89B0D80C57012AB00E52CBDBEF385BA609
tmp_aes_iv = 252E68B91E3D4AC180E8FA4B7CC58EACA72F868303EE469B66B95D325DEE588E</code></pre>
<pre><code>encrypted_answer = CF6B6F695FCF775D0150D0FB029F7ABB2CF7E38B33C9D858E08ABC661CFEF3A58BD9A40EA5521948DDD0B7405DBAD75F969356D172727A9F06D0C98405C54FE6C647ABC259EAC5CF500362321817A7DF4E616EDD816AFCDF63CCAB2C8A27B33ACEA3FE2AC42CC3E89D18620DE40E2FF0BF74BB288E8A4805B6430099BF08E8160ECF568EF46320BB80B41FDE5BA826A110C1BCCFF1235209A17E6648E2EBC945008A9DB0FC14A3347DAAFBC9D5BCBCC66043B90FBF7C822473415ABA269D994954ADB33FC38D4DAF26E5642BCD303D6725015801FE9D7BB61528F5B46685FD12EF99361509EB6C2300DC26AB9DF3D712264A7FFE1DC97573DEB1550C5355C00813A2A69CEEF5DAB65AA4084A51AB1AAA58BFBBA5C7F78C624F817B212979FF4538AC0DA5CAAD2B786A0A63DD9BBF4896153164D17FCC0C136130284D3C363B076C2CF78B340FF41613205BA51A6831B1FB021684069032539E3B9663FE5338CF957B0A814739DB1C89451890B379C343F5CF962303973B710AABD39F17BEEA244813EFA9E0C7F0AE705B9AFAE849FCE8B7C69704D52CE639AC343A5269C4B2CB10B501475A22A86AD37B872B6ED7FB981E090B3287DBCF5D8C4C2B3A7AA8E7D2C68C1DFDF5237B22675EC99903A355C490E1E94F137E904779C70C60225677E73554D269FB22EDA4DE091A578FF049496AD6B16B5968A59285B80F4A63E3ECDB328B0EC063C0778960F1B4A3D4B68AF677FF5D70B7EBC68DC1371B9AD8840E2D1BC9B0878445623F18C67CC552291796F6F0A69A6861C380E9D8D1A674E5F7651EA4163A41F520A84AED735045AF8A57
tmp_aes_key = 5A92A9C13DAE7AD44F48EE21479299AFD3680211ABDA9D54F009B6846D8EFEA1
tmp_aes_iv = E99F3BAD6AB94F5C30B04635A75C66CFD2AB5A68B8D4C50DCE7F384DE753D9DE</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 1AC4EED45496F12EB1552F300E6F567E749F7CE9BA0D89B559EB4EA177C2B04DC7A221A2C080F0A37F5AB27788A5395E7C086EBAF474758603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100016580A48B6D7744D3C0C674241411E844E1CE29BF23763A63E3ED32DF24B969FE60C55CB1CDFFE92F45733036A5A4B0BFBFE9A1622760DA6261CC549C70858A93F073C6A6A099CE63C8084463ED0C4D1F1393A715B71895B06DB2399745B0EA303CD8AFF1B47F057930E6CA70F4F25D3D15E29E268BF9F5A0AD1DA84D216458A2CE6E6EFDC4A1F2AB214D5C8D984919050450A710857C8F625CA4361785923FEFF4089D40A4EB3DB95AA2912753CA255D7CD8BC6220610381B5D082CDF84FC2F9B46DF449FE526435E3D74347C9F19A29391DBCD2F20479F45A7B683D9843640C6589034375356F8606E8CB81CAC69D06CC012F109DF322CB3508FAD4C31A09062EA8656DF821CDED12445D
answer = BA0D89B559EB4EA177C2B04DC7A221A2C080F0A37F5AB27788A5395E7C086EBAF474758603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100016580A48B6D7744D3C0C674241411E844E1CE29BF23763A63E3ED32DF24B969FE60C55CB1CDFFE92F45733036A5A4B0BFBFE9A1622760DA6261CC549C70858A93F073C6A6A099CE63C8084463ED0C4D1F1393A715B71895B06DB2399745B0EA303CD8AFF1B47F057930E6CA70F4F25D3D15E29E268BF9F5A0AD1DA84D216458A2CE6E6EFDC4A1F2AB214D5C8D984919050450A710857C8F625CA4361785923FEFF4089D40A4EB3DB95AA2912753CA255D7CD8BC6220610381B5D082CDF84FC2F9B46DF449FE526435E3D74347C9F19A29391DBCD2F20479F45A7B683D9843640C6589034375356F8606E8CB81CAC69D06CC012F109DF322CB3508FAD4C31A09062EA8656DF821CDED12445D</code></pre>
<pre><code>answer_with_hash = 8A2B4F65A663F8005035B220241C64DFA3A4A078BA0D89B59AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF5177203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002C0AF2EA836117BEA3BCF6F213BF04679BB389698290EEED2EE4C4583719EC6E55784CE2FCA01A3FA576AAB1606C89DA6701330C7A2A0E7304CE95DAD3A6CE631657EDD4F5A0FDABC1B5167F6AE66C380175100F7B20D1B16A2A329F71615A7E27BAB707C3EDF8657B8D52A82D7CF15F5743A97F78939504E07A2A621C395C2332AF46B3943D8599A9120685675747A9EB987F5A9BCF0E89034717BF77C5A881D3551997F02AAB08EDAB3173274A4BAF20F7EA0E6BA26F95A6DB2EEAF55E9355E0B4AED0F89CE52B00650615CFFEDDEFF0E9964561D2703A635D2CD6D27ACE60B098A51636D79BC3F58C0C265B30B2E2272F1D2337B39DF7F879159C2DE9DC579E36A8657E139AC1E4C03A76
answer = BA0D89B59AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF5177203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002C0AF2EA836117BEA3BCF6F213BF04679BB389698290EEED2EE4C4583719EC6E55784CE2FCA01A3FA576AAB1606C89DA6701330C7A2A0E7304CE95DAD3A6CE631657EDD4F5A0FDABC1B5167F6AE66C380175100F7B20D1B16A2A329F71615A7E27BAB707C3EDF8657B8D52A82D7CF15F5743A97F78939504E07A2A621C395C2332AF46B3943D8599A9120685675747A9EB987F5A9BCF0E89034717BF77C5A881D3551997F02AAB08EDAB3173274A4BAF20F7EA0E6BA26F95A6DB2EEAF55E9355E0B4AED0F89CE52B00650615CFFEDDEFF0E9964561D2703A635D2CD6D27ACE60B098A51636D79BC3F58C0C265B30B2E2272F1D2337B39DF7F879159C2DE9DC579E36A8657E139AC1E4C03A76</code></pre>
<!-- end server_DH_inner_data_output -->
<!-- start server_DH_inner_data -->
<p>Generated payload (excluding transport headers/trailers):</p>
<pre><code>0000 | BA 0D 89 B5 59 EB 4E A1 77 C2 B0 4D C7 A2 21 A2
0010 | C0 80 F0 A3 7F 5A B2 77 88 A5 39 5E 7C 08 6E BA
0020 | F4 74 75 86 03 00 00 00 FE 00 01 00 C7 1C AE B9
<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
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 = BA0D89B559EB4EA177C2B04DC7A221A2C080F0A37F5AB27788A5395E7C086EBAF474758
0100 | F4 7B F9 59 D9 56 85 0C E9 29 85 1F 0D 81 15 F6
0110 | 35 B1 05 EE 2E 4E 15 D0 4B 24 54 BF 6F 4F AD F0
0120 | 34 B1 04 03 11 9C D8 E3 B9 2F CC 5B FE 00 01 00
0130 | 01 65 80 A4 8B 6D 77 44 D3 C0 C6 74 24 14 11 E8
0140 | 44 E1 CE 29 BF 23 76 3A 63 E3 ED 32 DF 24 B9 69
0150 | FE 60 C5 5C B1 CD FF E9 2F 45 73 30 36 A5 A4 B0
0160 | BF BF E9 A1 62 27 60 DA 62 61 CC 54 9C 70 85 8A
0170 | 93 F0 73 C6 A6 A0 99 CE 63 C8 08 44 63 ED 0C 4D
0180 | 1F 13 93 A7 15 B7 18 95 B0 6D B2 39 97 45 B0 EA
0190 | 30 3C D8 AF F1 B4 7F 05 79 30 E6 CA 70 F4 F2 5D
01A0 | 3D 15 E2 9E 26 8B F9 F5 A0 AD 1D A8 4D 21 64 58
01B0 | A2 CE 6E 6E FD C4 A1 F2 AB 21 4D 5C 8D 98 49 19
01C0 | 05 04 50 A7 10 85 7C 8F 62 5C A4 36 17 85 92 3F
01D0 | EF F4 08 9D 40 A4 EB 3D B9 5A A2 91 27 53 CA 25
01E0 | 5D 7C D8 BC 62 20 61 03 81 B5 D0 82 CD F8 4F C2
01F0 | F9 B4 6D F4 49 FE 52 64 35 E3 D7 43 47 C9 F1 9A
0200 | 29 39 1D BC D2 F2 04 79 F4 5A 7B 68 3D 98 43 64
0210 | 0C 65 89 03 43 75 35 6F 86 06 E8 CB 81 CA C6 9D
0220 | 06 CC 01 2F 10 9D F3 22 CB 35 08 FA D4 C3 1A 09
0230 | 06 2E A8 65</code></pre>
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>
<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 = BA0D89B559EB4EA177C2B04DC7A221A2C080F0A37F5AB27788A5395E7C086EBAF474758
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>59EB4EA177C2B04DC7A221A2C080F0A3</code></td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>7F5AB27788A5395E7C086EBAF4747586</code></td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B559EB4EA177C2B04DC7A221A2C080F0A37F5AB27788A5395E7C086EBAF474758
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE000100016580A48B6D7744D3C0C674</code> <code>241411E844E1CE29BF23763A63E3ED32</code> <code>DF24B969FE60C55CB1CDFFE92F457330</code> <code>36A5A4B0BFBFE9A1622760DA6261CC54</code> <code>9C70858A93F073C6A6A099CE63C80844</code> <code>63ED0C4D1F1393A715B71895B06DB239</code> <code>9745B0EA303CD8AFF1B47F057930E6CA</code> <code>70F4F25D3D15E29E268BF9F5A0AD1DA8</code> <code>4D216458A2CE6E6EFDC4A1F2AB214D5C</code> <code>8D984919050450A710857C8F625CA436</code> <code>1785923FEFF4089D40A4EB3DB95AA291</code> <code>2753CA255D7CD8BC6220610381B5D082</code> <code>CDF84FC2F9B46DF449FE526435E3D743</code> <code>47C9F19A29391DBCD2F20479F45A7B68</code> <code>3D9843640C6589034375356F8606E8CB</code> <code>81CAC69D06CC012F109DF322CB3508FA</code><br> <code>D4C31A09</code></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>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>062EA865</code> (1705520646 in decimal)</td>
<td><code>9E36A865</code> (1705522846 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B559EB4EA177C2B04DC7A221A2C080F0A37F5AB27788A5395E7C086EBAF474758
<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 = 2E790C97AFEC39FDDFF632D55A899D103A91AF3B96E37B623D8CFB6AE218703978AE81A3FFFE06E18290E22AAF85D05C14E18985C2B7BE33DEB780739EED71B79DDEFE8892E27E5529D8827338C12B10E1D8335A1F42CAF3C55B25DD8DA6A2F6787AA1FB6C2A3E2ACB95F274D68ECF7F92D5EA7B6F2845F093346649CC7E8F8D738D8B23A88BDB796C484DC7BAC18D3AC710A41636936C4F0FDDA8AF643A1A6C2B2B2EA0A6D51D023CEBF3D4AA50649130B99DC03E0256A01F9CBE120A0FB91686269AB815B6E6B71B0527092022B44DAC38B4307FAAE6F12B838BBD04C50278E8DB061BBC62CA7E5F9AF016B16B705B943C3096EE04800D77E1DE468BCF892E</code></pre>
<pre><code>b = 09DA60C95DE494D1DC93E312B4360DCE03264CA0D780F5054953AA123BE384D0F2D9622E94EAEAEF7899772FA52F9002EFFC5B359AEE4BA4AEC1B13ED3B4C4209BABC349C7596FF732E22919D232600EAC2934B8602FE2633D661C378BEE8D503C68C2E1E9C7A1B15A96AD1530C5936CF7150AB604C860060BFEE1728F45877BB7BAF1D24263C9E8C248E0171E0634DA84C3667A276BC024C421191F79290178F47999DF1CA46C0C523B9D3B6B020551D4AC79699A1C7DA431349CFBA2FDD191BE84881E12C848265CAACF1815B977C4325AA9EFB513F50039059F7E61EFD2B66FD6EEFA1520B1AB48BC2E2512F8DC3D1AEAE2011656FC9C42B69A5B26E4A39D</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 = ADB2E31A0D4B144B226DF3D17C7C23F9326646A06C9848085B7E2ADA605F220FE05D955E5FAF4F05F173F1E34D9AA7C382E590EDD5EA22488DFAFC362A69B044D6DC95A220DADE9CDA01079093C406F80DB702A3F3175CDC5734CC5BFB94767503EEC027D92CBF86DF4665060193C0CA5F5860C0E48E9D948861F5716F545B1FD7DCB033C6AC93D62FD1627B386B0F59847953694300E20AF3E19F828852AFE0C1B87319F73FD71DD10EF5395239E5CF448B2449D97904EA242F6938A70320467FFB58C8CDE037AC21923A44E8E6F7DEFEFBB03409BABD622510359F93451AE78EE93B79D2FCC857CB58D9A2B6CA7A97935C8D41C5B8823A6F7D8C69968FF979</code></pre>
<pre><code>g_b = 2C8CCBFB2588782B28078C6F4629EEA9C5BB65CE59C26D18D7DBE1224C3F9336073C2EE089387F7C66306EA495BC08E1ADF042C7E3D91EFC9BC075AAAB844F4C7AFEF8D05796FC5104C0A57E55F69F75CD584A4D1AA46D139F9455035900E7ECB56D71074AE08E1901C5F9D90391DFD93DAC28B3CC5674701A0B1E8B39DACD67D3F524710456CD7E147221AC5E2256E12A68C77FCB1F6F7191F9FA0D99EB15A02E00E65A7FA59A4BBA7C7860A300AD43036150C3B4BE9023089F87493DB98D0088E0ACB4C145C72720F7DFDDDCD3F1469BD8EC2D2ED80B849ACC0B6B013F37437D49DCEAACD7360638C02B387932F7FF4BA8409128D78C3FFE7213AD30E83527</code></pre>
<!-- end g_b -->
<h6>7.1) generation of encrypted_data</h6>
<!-- start client_DH_inner_data -->
<p>Generated payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 54 B6 43 66 59 EB 4E A1 77 C2 B0 4D C7 A2 21 A2
0010 | C0 80 F0 A3 7F 5A B2 77 88 A5 39 5E 7C 08 6E BA
0020 | F4 74 75 86 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | AD B2 E3 1A 0D 4B 14 4B 22 6D F3 D1 7C 7C 23 F9
0040 | 32 66 46 A0 6C 98 48 08 5B 7E 2A DA 60 5F 22 0F
0050 | E0 5D 95 5E 5F AF 4F 05 F1 73 F1 E3 4D 9A A7 C3
0060 | 82 E5 90 ED D5 EA 22 48 8D FA FC 36 2A 69 B0 44
0070 | D6 DC 95 A2 20 DA DE 9C DA 01 07 90 93 C4 06 F8
0080 | 0D B7 02 A3 F3 17 5C DC 57 34 CC 5B FB 94 76 75
0090 | 03 EE C0 27 D9 2C BF 86 DF 46 65 06 01 93 C0 CA
00A0 | 5F 58 60 C0 E4 8E 9D 94 88 61 F5 71 6F 54 5B 1F
00B0 | D7 DC B0 33 C6 AC 93 D6 2F D1 62 7B 38 6B 0F 59
00C0 | 84 79 53 69 43 00 E2 0A F3 E1 9F 82 88 52 AF E0
00D0 | C1 B8 73 19 F7 3F D7 1D D1 0E F5 39 52 39 E5 CF
00E0 | 44 8B 24 49 D9 79 04 EA 24 2F 69 38 A7 03 20 46
00F0 | 7F FB 58 C8 CD E0 37 AC 21 92 3A 44 E8 E6 F7 DE
0100 | FE FB B0 34 09 BA BD 62 25 10 35 9F 93 45 1A E7
0110 | 8E E9 3B 79 D2 FC C8 57 CB 58 D9 A2 B6 CA 7A 97
0120 | 93 5C 8D 41 C5 B8 82 3A 6F 7D 8C 69 96 8F F9 79</code></pre>
<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>
<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 = BA0D89B559EB4EA177C2B04DC7A221A2C080F0A37F5AB27788A5395E7C086EBAF474758
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>59EB4EA177C2B04DC7A221A2C080F0A3</code></td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>7F5AB27788A5395E7C086EBAF4747586</code></td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE000100ADB2E31A0D4B144B226DF3D1</code> <code>7C7C23F9326646A06C9848085B7E2ADA</code> <code>605F220FE05D955E5FAF4F05F173F1E3</code> <code>4D9AA7C382E590EDD5EA22488DFAFC36</code> <code>2A69B044D6DC95A220DADE9CDA010790</code> <code>93C406F80DB702A3F3175CDC5734CC5B</code> <code>FB94767503EEC027D92CBF86DF466506</code> <code>0193C0CA5F5860C0E48E9D948861F571</code> <code>6F545B1FD7DCB033C6AC93D62FD1627B</code> <code>386B0F59847953694300E20AF3E19F82</code> <code>8852AFE0C1B87319F73FD71DD10EF539</code> <code>5239E5CF448B2449D97904EA242F6938</code> <code>A70320467FFB58C8CDE037AC21923A44</code> <code>E8E6F7DEFEFBB03409BABD622510359F</code> <code>93451AE78EE93B79D2FCC857CB58D9A2</code> <code>B6CA7A97935C8D41C5B8823A6F7D8C69</code><br> <code>968FF979</code></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>Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding</td>
</tr>
<tr>
@ -684,47 +684,47 @@ answer = BA0D89B559EB4EA177C2B04DC7A221A2C080F0A37F5AB27788A5395E7C086EBAF474758
<!-- 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 = 54B6436659EB4EA177C2B04DC7A221A2C080F0A37F5AB27788A5395E7C086EBAF47475860000000000000000FE000100ADB2E31A0D4B144B226DF3D17C7C23F9326646A06C9848085B7E2ADA605F220FE05D955E5FAF4F05F173F1E34D9AA7C382E590EDD5EA22488DFAFC362A69B044D6DC95A220DADE9CDA01079093C406F80DB702A3F3175CDC5734CC5BFB94767503EEC027D92CBF86DF4665060193C0CA5F5860C0E48E9D948861F5716F545B1FD7DCB033C6AC93D62FD1627B386B0F59847953694300E20AF3E19F828852AFE0C1B87319F73FD71DD10EF5395239E5CF448B2449D97904EA242F6938A70320467FFB58C8CDE037AC21923A44E8E6F7DEFEFBB03409BABD622510359F93451AE78EE93B79D2FCC857CB58D9A2B6CA7A97935C8D41C5B8823A6F7D8C69968FF979
padding = B906094C1C397547E2487EF2
tmp_aes_key = 2D98C430FADBBEF521A985A86D5FEC89B0D80C57012AB00E52CBDBEF385BA609
tmp_aes_iv = 252E68B91E3D4AC180E8FA4B7CC58EACA72F868303EE469B66B95D325DEE588E</code></pre>
<pre><code>data = 54B643669AAFA74E295CCFC97BC59319507B21BC054D38FEDC2F29EC2CB582832EF517720000000000000000FE0001002C8CCBFB2588782B28078C6F4629EEA9C5BB65CE59C26D18D7DBE1224C3F9336073C2EE089387F7C66306EA495BC08E1ADF042C7E3D91EFC9BC075AAAB844F4C7AFEF8D05796FC5104C0A57E55F69F75CD584A4D1AA46D139F9455035900E7ECB56D71074AE08E1901C5F9D90391DFD93DAC28B3CC5674701A0B1E8B39DACD67D3F524710456CD7E147221AC5E2256E12A68C77FCB1F6F7191F9FA0D99EB15A02E00E65A7FA59A4BBA7C7860A300AD43036150C3B4BE9023089F87493DB98D0088E0ACB4C145C72720F7DFDDDCD3F1469BD8EC2D2ED80B849ACC0B6B013F37437D49DCEAACD7360638C02B387932F7FF4BA8409128D78C3FFE7213AD30E83527
padding = 170DEC31F5A11DE115D057FC
tmp_aes_key = 5A92A9C13DAE7AD44F48EE21479299AFD3680211ABDA9D54F009B6846D8EFEA1
tmp_aes_iv = E99F3BAD6AB94F5C30B04635A75C66CFD2AB5A68B8D4C50DCE7F384DE753D9DE</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 = 4FF005BF31BB1AFB6A86D3AFB20336875ADB2DD803501AD99DC3DB1BEE9625D0804B85D055566BF73B8982B4E505A1EBE3D7290EEEEDB3B66BE4656E29B9CFEBC2A3BF71B805E28F7614A4991C0B4F83EB5F9C15B2E884098803AC148E75239484E7525F2031989832F75CBDBC2204C2FB1D9AD54B503636D376F69A7F552B6006B977115655F22D653FC6784591009B2F35E82C931C83422031FD45CB66B1F15AA3578A37AF06F0161222A2C2073B37083CB5785E3307A1B5C06DEA46C708DF93A3A1DDA10A521A25DC0C6BCDD7D506E9ED9C17B9609CFC6D407AB79748EF6D7D73FC5FBA9EB1310C1E4C460FD972A8A1BE76FA451D5BF3F5B82659DAE1C50A601AE37315F216516B1035E4F9ED5F0FB39F6C8BA9FC7D32CFDDD6CD515936FE0163E980B44F3C465F19D8AED4178762133526B67FEFA64B2B5E7AAD37A4FAB8C95DA2F4D687DF42A88F0226A0621C45</code></pre>
<pre><code>encrypted_data = 19D136DB0431F30C8204159B7547FC223ADA5F91CF9395C2466CC1C0430705F68DAEE69BF38C6D915B04B212503860CC0F2E770F58DBA12E0BC2BFE175B7F05C224E2CA03E9EF0216AD4DD2710C6D43337CE055D6FFD5657905D8ED35073D4D33BFE476903D8576FB34C388C3390432D8BF2C4F86726890B338E42C3EE5F4AA77E0618CA4AEFE578F9AFAA7899FF55F7EE0EC759CA506CD17E029D50FA631EB51C79A1C2B4E7FDDF47F08CF9466E3550857386E9A763DFB5214D47FF8C05E7DAA8BA6E628486F3160050DAEE78F600A4C567EFFAB504B950A62CAFBC2934887CA81433001D0934BD0DD875C0D9274C38C652FF2EC90C8BB22A9CACF77C1081EB4B28882705E8EEDB1BE3B5214EF0ABFCFEC8F7CCCCE4315C625A063FC6988F03192436010EA3F73070E728D357C5FBA4827E1463DC8308A14ABACEEE6B48D315F203D0CBC74E8560C7036068357B292C</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 CC 14 06 00 06 2E A8 65
0010 | 78 01 00 00 1F 5F 04 F5 59 EB 4E A1 77 C2 B0 4D
0020 | C7 A2 21 A2 C0 80 F0 A3 7F 5A B2 77 88 A5 39 5E
0030 | 7C 08 6E BA F4 74 75 86 FE 50 01 00 4F F0 05 BF
0040 | 31 BB 1A FB 6A 86 D3 AF B2 03 36 87 5A DB 2D D8
0050 | 03 50 1A D9 9D C3 DB 1B EE 96 25 D0 80 4B 85 D0
0060 | 55 56 6B F7 3B 89 82 B4 E5 05 A1 EB E3 D7 29 0E
0070 | EE ED B3 B6 6B E4 65 6E 29 B9 CF EB C2 A3 BF 71
0080 | B8 05 E2 8F 76 14 A4 99 1C 0B 4F 83 EB 5F 9C 15
0090 | B2 E8 84 09 88 03 AC 14 8E 75 23 94 84 E7 52 5F
00A0 | 20 31 98 98 32 F7 5C BD BC 22 04 C2 FB 1D 9A D5
00B0 | 4B 50 36 36 D3 76 F6 9A 7F 55 2B 60 06 B9 77 11
00C0 | 56 55 F2 2D 65 3F C6 78 45 91 00 9B 2F 35 E8 2C
00D0 | 93 1C 83 42 20 31 FD 45 CB 66 B1 F1 5A A3 57 8A
00E0 | 37 AF 06 F0 16 12 22 A2 C2 07 3B 37 08 3C B5 78
00F0 | 5E 33 07 A1 B5 C0 6D EA 46 C7 08 DF 93 A3 A1 DD
0100 | A1 0A 52 1A 25 DC 0C 6B CD D7 D5 06 E9 ED 9C 17
0110 | B9 60 9C FC 6D 40 7A B7 97 48 EF 6D 7D 73 FC 5F
0120 | BA 9E B1 31 0C 1E 4C 46 0F D9 72 A8 A1 BE 76 FA
0130 | 45 1D 5B F3 F5 B8 26 59 DA E1 C5 0A 60 1A E3 73
0140 | 15 F2 16 51 6B 10 35 E4 F9 ED 5F 0F B3 9F 6C 8B
0150 | A9 FC 7D 32 CF DD D6 CD 51 59 36 FE 01 63 E9 80
0160 | B4 4F 3C 46 5F 19 D8 AE D4 17 87 62 13 35 26 B6
0170 | 7F EF A6 4B 2B 5E 7A AD 37 A4 FA B8 C9 5D A2 F4
0180 | D6 87 DF 42 A8 8F 02 26 A0 62 1C 45</code></pre>
<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>
<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>CC140600062EA865</code></td>
<td><code>34AD05009E36A865</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>59EB4EA177C2B04DC7A221A2C080F0A3</code></td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>7F5AB27788A5395E7C086EBAF4747586</code></td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE5001004FF005BF31BB1AFB6A86D3AF</code> <code>B20336875ADB2DD803501AD99DC3DB1B</code> <code>EE9625D0804B85D055566BF73B8982B4</code> <code>E505A1EBE3D7290EEEEDB3B66BE4656E</code> <code>29B9CFEBC2A3BF71B805E28F7614A499</code> <code>1C0B4F83EB5F9C15B2E884098803AC14</code> <code>8E75239484E7525F2031989832F75CBD</code> <code>BC2204C2FB1D9AD54B503636D376F69A</code> <code>7F552B6006B977115655F22D653FC678</code> <code>4591009B2F35E82C931C83422031FD45</code> <code>CB66B1F15AA3578A37AF06F0161222A2</code> <code>C2073B37083CB5785E3307A1B5C06DEA</code> <code>46C708DF93A3A1DDA10A521A25DC0C6B</code> <code>CDD7D506E9ED9C17B9609CFC6D407AB7</code> <code>9748EF6D7D73FC5FBA9EB1310C1E4C46</code> <code>0FD972A8A1BE76FA451D5BF3F5B82659</code> <code>DAE1C50A601AE37315F216516B1035E4</code> <code>F9ED5F0FB39F6C8BA9FC7D32CFDDD6CD</code> <code>515936FE0163E980B44F3C465F19D8AE</code> <code>D4178762133526B67FEFA64B2B5E7AAD</code> <code>37A4FAB8C95DA2F4D687DF42A88F0226</code><br> <code>A0621C45</code></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>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 = 04F81FB9B944F83BB701D8BE1B11784C74E3A2ED9E9B0E9E272B1F6935EF8291E3A073C5E5AC89FEA805DFCB3F4B9C7E40D364DAD866B0E9452A265E766CE051326B7391B532170D44BA18AA5CFA97881D6B29A39F04B4D564A483902574A79E1864F702D28A922A884D3D155D73F923EBC7F975A3C7D4CA7EF123707E712EBC46E1FB8950B0A1FE36C82BE449DC734F34D76D15528FABB5A7DAD8246C7B68377471D2268045D29F58B6F5C23445526A0F5249BA622F580D2EDD9F2432F0377812F0850853C27C539C1D932006D57C9D3EE269980957B49C61C51614C9D6F288C06124A0964FDBA8BA6AA11B7E46D79FBABE69C2D2A9F9DE708F03E205E0895F</code></pre>
<pre><code>auth_key = 8C359D419DCD976B43054226DF43AE8E4CE7FCEB812AF52B54255FEA88984E436AA02BAB9B20D8D6DCA5DFE28B594C3BE7F622B0C1DDB9263B8CFD31DBE713F897C162ABAAFCE7E9ED16A344A26E55DC4211EEB291107601898FD18AAC9F016FFA70A099CE280EC4C3255DD7956BBB6E6164473727887CF92578FEE11F7CF2D112CEC1754BA1AA0D4B9BD8C5A33C6273F819D8617CD0E07638B61866A4298F373ED0F46BC272C7E6A07A32CD2B34A8761778849840ACCBE06A7B169C294945F258C8F9B3A25EE209D8B610F4821A49C4ABA136B512631935DEE5B35A280353DDFCF8FB34BB54FA76E3F019C9DF7650632252F81C81B2BB8A7D5F50ACFDDA3B62</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 1C FC 85 07 2E A8 65
0010 | 84 00 00 00 34 F7 CB 3B 59 EB 4E A1 77 C2 B0 4D
0020 | C7 A2 21 A2 C0 80 F0 A3 7F 5A B2 77 88 A5 39 5E
0030 | 7C 08 6E BA F4 74 75 86 80 F2 5E 86 60 70 01 35
0040 | AF AD C1 45 22 0C 7C 72</code></pre>
<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>
<p>Payload (de)serialization:</p>
<pre><code>dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;</code></pre>
<table class="table">
@ -817,13 +817,13 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>011CFC85072EA865</code></td>
<td><code>01205EE49F36A865</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>84000000</code> (132 in decimal)</td>
<td><code>5C000000</code> (92 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>59EB4EA177C2B04DC7A221A2C080F0A3</code></td>
<td><code>9AAFA74E295CCFC97BC59319507B21BC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>7F5AB27788A5395E7C086EBAF4747586</code></td>
<td><code>054D38FEDC2F29EC2CB582832EF51772</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>80F25E8660700135AFADC145220C7C72</code></td>
<td><code>4FC0EE0B2927F692BED895F79CD66A3A</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

@ -285,19 +285,19 @@
</tr>
<tr>
<td><a href="/constructor/channelAdminLogEventActionChangePeerColor">channelAdminLogEventActionChangePeerColor</a></td>
<td> </td>
<td>The <a href="/api/colors">message accent color</a> was changed</td>
</tr>
<tr>
<td><a href="/constructor/channelAdminLogEventActionChangeProfilePeerColor">channelAdminLogEventActionChangeProfilePeerColor</a></td>
<td> </td>
<td>The <a href="/api/colors">profile accent color</a> was changed</td>
</tr>
<tr>
<td><a href="/constructor/channelAdminLogEventActionChangeWallpaper">channelAdminLogEventActionChangeWallpaper</a></td>
<td> </td>
<td>The <a href="/api/wallpapers">wallpaper</a> was changed</td>
</tr>
<tr>
<td><a href="/constructor/channelAdminLogEventActionChangeEmojiStatus">channelAdminLogEventActionChangeEmojiStatus</a></td>
<td> </td>
<td>The <a href="/api/emoji-status">emoji status</a> was changed</td>
</tr>
</tbody>
</table></div>

View file

@ -117,7 +117,7 @@
</tr>
<tr>
<td><a href="/constructor/inputStickerSetEmojiChannelDefaultStatuses">inputStickerSetEmojiChannelDefaultStatuses</a></td>
<td> </td>
<td>Default <a href="/api/emoji-status">custom emoji status</a> stickerset for channel statuses</td>
</tr>
</tbody>
</table></div>

View file

@ -92,7 +92,7 @@
</tr>
<tr>
<td><a href="/constructor/inputMediaAreaChannelPost">inputMediaAreaChannelPost</a></td>
<td> </td>
<td>Represents a channel post</td>
</tr>
</tbody>
</table>