Update content of files

This commit is contained in:
GitHub Action 2024-07-25 16:39:57 +00:00
parent 214fc0c2ef
commit bf1ceb04b4
9 changed files with 243 additions and 241 deletions

View file

@ -46,6 +46,7 @@
<p>Below you will find information on schema changes. For more details on the use of layers, see <a href="/api/invoking#layers">Invoking API methods</a>.</p>
<h3><a class="anchor" href="#layer-181" id="layer-181" name="layer-181"><i class="anchor-icon"></i></a><a href="/schema?layer=181">Layer 181</a></h3>
<p>This layer introduces <a href="/api/factcheck">fact-checks »</a>, <a href="/api/stars">Telegram Stars</a> and <a href="/constructor/messageEntityBlockquote">collapsable message quotes »</a>.</p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
@ -82,18 +83,6 @@
<li>Changed type of <strong>provider</strong> from <strong>string</strong> to <strong>flags.3?string</strong> in <a href="/constructor/inputMediaInvoice">inputMediaInvoice</a></li>
<li>Added <strong>flags</strong>, <strong>collapsed</strong> parameters in <a href="/constructor/messageEntityBlockquote">messageEntityBlockquote</a></li>
</ul>
<h4><a class="anchor" href="#push-notification-changes" id="push-notification-changes" name="push-notification-changes"><i class="anchor-icon"></i></a>PUSH notification changes</h4>
<h5><a class="anchor" href="#new-push-notifications" id="new-push-notifications" name="new-push-notifications"><i class="anchor-icon"></i></a>New PUSH notifications</h5>
<ul>
<li>Added <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_PAID_MEDIA</a> - <code>{1} posted a paid post for {2} star</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_PAID_MEDIA</a> - <code>{1} posted a paid post in {2} group for {3} star</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">CHAT_REACT_PAID_MEDIA</a> - <code>{1} reacted {3} in group {2} to your paid post for {4} star</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_PAID_MEDIA</a> - <code>{1} sent you a paid post for {2} star</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">PINNED_PAID_MEDIA</a> - <code>{1} pinned a paid post for {2} star</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">REACT_HIDDEN</a> - <code>New reaction to your message</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">REACT_STORY</a> - <code>{1}: {2} to your story</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">REACT_STORY_HIDDEN</a> - <code>New reaction to your story</code></li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<div><pre><code><a href="/constructor/message">message</a>#94345242 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> post:flags.14?<a href="/constructor/true">true</a> from_scheduled:flags.18?<a href="/constructor/true">true</a> legacy:flags.19?<a href="/constructor/true">true</a> edit_hide:flags.21?<a href="/constructor/true">true</a> pinned:flags.24?<a href="/constructor/true">true</a> noforwards:flags.26?<a href="/constructor/true">true</a> invert_media:flags.27?<a href="/constructor/true">true</a> flags2:<a href="/type/%23">#</a> offline:flags2.1?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:flags.8?<a href="/type/Peer">Peer</a> from_boosts_applied:flags.29?<a href="/type/int">int</a> peer_id:<a href="/type/Peer">Peer</a> saved_peer_id:flags.28?<a href="/type/Peer">Peer</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long">long</a> via_business_bot_id:flags2.0?<a href="/type/long">long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> date:<a href="/type/int">int</a> message:<a href="/type/string">string</a> media:flags.9?<a href="/type/MessageMedia">MessageMedia</a> reply_markup:flags.6?<a href="/type/ReplyMarkup">ReplyMarkup</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt; views:flags.10?<a href="/type/int">int</a> forwards:flags.10?<a href="/type/int">int</a> replies:flags.23?<a href="/type/MessageReplies">MessageReplies</a> edit_date:flags.15?<a href="/type/int">int</a> post_author:flags.16?<a href="/type/string">string</a> grouped_id:flags.17?<a href="/type/long">long</a> reactions:flags.20?<a href="/type/MessageReactions">MessageReactions</a> restriction_reason:flags.22?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/RestrictionReason">RestrictionReason</a>&gt; ttl_period:flags.25?<a href="/type/int">int</a> quick_reply_shortcut_id:flags.30?<a href="/type/int">int</a> effect:flags2.2?<a href="/type/long">long</a> factcheck:flags2.3?<a href="/type/FactCheck">FactCheck</a> = <a href="/type/Message">Message</a>;<br>
<a href="/constructor/inputMediaInvoice">inputMediaInvoice</a>#405fef0d flags:<a href="/type/%23">#</a> title:<a href="/type/string">string</a> description:<a href="/type/string">string</a> photo:flags.0?<a href="/type/InputWebDocument">InputWebDocument</a> invoice:<a href="/type/Invoice">Invoice</a> payload:<a href="/type/bytes">bytes</a> provider:flags.3?<a href="/type/string">string</a> provider_data:<a href="/type/DataJSON">DataJSON</a> start_param:flags.1?<a href="/type/string">string</a> extended_media:flags.2?<a href="/type/InputMedia">InputMedia</a> = <a href="/type/InputMedia">InputMedia</a>;<br>
@ -169,6 +158,13 @@
<a href="/method/messages.getAvailableEffects">messages.getAvailableEffects</a>#dea20a39 hash:<a href="/type/int">int</a> = <a href="/type/messages.AvailableEffects">messages.AvailableEffects</a>;<br>
<a href="/method/channels.searchPosts">channels.searchPosts</a>#d19f987b hashtag:<a href="/type/string">string</a> offset_rate:<a href="/type/int">int</a> offset_peer:<a href="/type/InputPeer">InputPeer</a> offset_id:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> = <a href="/type/messages.Messages">messages.Messages</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-179" id="layer-179" name="layer-179"><i class="anchor-icon"></i></a><a href="/schema?layer=179">Layer 179</a></h3>
<p>Changelog:</p>
<ul>
<li>Add support for <a href="/api/auth#code-types">secret word and secret phrase login codes »</a></li>
<li>Add support for <a href="/api/poll">entities in poll questions and answers »</a></li>
<li>Introduce <a href="/api/emoji-categories">sticker emoji categories »</a></li>
<li>Extract ad revenue balances into a <a href="/constructor/broadcastRevenueBalances">separate constructor »</a> to prepare for revenue transaction updates in the next layer.</li>
</ul>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
@ -205,8 +201,9 @@
<p>This layers introduces the following features:</p>
<ul>
<li><a href="/api/business#re-enable-ads">Telegram Business: re-enable ads »</a></li>
<li><a href="/api/sponsored-messages">Greatly simplify sponsored messages »</a></li>
<li><a href="/api/sponsored-messages">Greatly simplify sponsored messages, see here »</a> for info on how to render the new simplified sponsored messages.</li>
<li><a href="/api/stories#pinned-or-archived-stories">Pin stories to the top of the profile »</a></li>
<li><a href="/api/reactions#notifications-about-reactions">Notifications for story reactions »</a></li>
<li><a href="/api/reactions#notifications-about-reactions">Reaction notification settings »</a></li>
<li><a href="/method/messages.setChatAvailableReactions">Custom unique reactions limit for groups, supergroups and channels »</a></li>
<li><a href="/api/search#global-search">Global channel recommendations in the "Channels" global search tab »</a></li>
@ -247,6 +244,13 @@
<ul>
<li>Removed sponsoredWebPage</li>
</ul>
<h4><a class="anchor" href="#push-notification-changes" id="push-notification-changes" name="push-notification-changes"><i class="anchor-icon"></i></a>PUSH notification changes</h4>
<h5><a class="anchor" href="#new-push-notifications" id="new-push-notifications" name="new-push-notifications"><i class="anchor-icon"></i></a>New PUSH notifications</h5>
<ul>
<li>Added <a href="/api/push-updates#possible-notifications">REACT_HIDDEN</a> - <code>New reaction to your message</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">REACT_STORY</a> - <code>{1}: {2} to your story</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">REACT_STORY_HIDDEN</a> - <code>New reaction to your story</code></li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<div><pre><code><a href="/constructor/chatFull">chatFull</a>#2633421b flags:<a href="/type/%23">#</a> can_set_username:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.8?<a href="/constructor/true">true</a> translations_disabled:flags.19?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> about:<a href="/type/string">string</a> participants:<a href="/type/ChatParticipants">ChatParticipants</a> chat_photo:flags.2?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:flags.13?<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:flags.3?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/BotInfo">BotInfo</a>&gt; pinned_msg_id:flags.6?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> call:flags.12?<a href="/type/InputGroupCall">InputGroupCall</a> ttl_period:flags.14?<a href="/type/int">int</a> groupcall_default_join_as:flags.15?<a href="/type/Peer">Peer</a> theme_emoticon:flags.16?<a href="/type/string">string</a> requests_pending:flags.17?<a href="/type/int">int</a> recent_requesters:flags.17?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/long">long</a>&gt; available_reactions:flags.18?<a href="/type/ChatReactions">ChatReactions</a> reactions_limit:flags.20?<a href="/type/int">int</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
<a href="/constructor/userFull">userFull</a>#cc997720 flags:<a href="/type/%23">#</a> blocked:flags.0?<a href="/constructor/true">true</a> phone_calls_available:flags.4?<a href="/constructor/true">true</a> phone_calls_private:flags.5?<a href="/constructor/true">true</a> can_pin_message:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.12?<a href="/constructor/true">true</a> video_calls_available:flags.13?<a href="/constructor/true">true</a> voice_messages_forbidden:flags.20?<a href="/constructor/true">true</a> translations_disabled:flags.23?<a href="/constructor/true">true</a> stories_pinned_available:flags.26?<a href="/constructor/true">true</a> blocked_my_stories_from:flags.27?<a href="/constructor/true">true</a> wallpaper_overridden:flags.28?<a href="/constructor/true">true</a> contact_require_premium:flags.29?<a href="/constructor/true">true</a> read_dates_private:flags.30?<a href="/constructor/true">true</a> flags2:<a href="/type/%23">#</a> sponsored_enabled:flags2.7?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> about:flags.1?<a href="/type/string">string</a> settings:<a href="/type/PeerSettings">PeerSettings</a> personal_photo:flags.21?<a href="/type/Photo">Photo</a> profile_photo:flags.2?<a href="/type/Photo">Photo</a> fallback_photo:flags.22?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> bot_info:flags.3?<a href="/type/BotInfo">BotInfo</a> pinned_msg_id:flags.6?<a href="/type/int">int</a> common_chats_count:<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> ttl_period:flags.14?<a href="/type/int">int</a> theme_emoticon:flags.15?<a href="/type/string">string</a> private_forward_name:flags.16?<a href="/type/string">string</a> bot_group_admin_rights:flags.17?<a href="/type/ChatAdminRights">ChatAdminRights</a> bot_broadcast_admin_rights:flags.18?<a href="/type/ChatAdminRights">ChatAdminRights</a> premium_gifts:flags.19?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PremiumGiftOption">PremiumGiftOption</a>&gt; wallpaper:flags.24?<a href="/type/WallPaper">WallPaper</a> stories:flags.25?<a href="/type/PeerStories">PeerStories</a> business_work_hours:flags2.0?<a href="/type/BusinessWorkHours">BusinessWorkHours</a> business_location:flags2.1?<a href="/type/BusinessLocation">BusinessLocation</a> business_greeting_message:flags2.2?<a href="/type/BusinessGreetingMessage">BusinessGreetingMessage</a> business_away_message:flags2.3?<a href="/type/BusinessAwayMessage">BusinessAwayMessage</a> business_intro:flags2.4?<a href="/type/BusinessIntro">BusinessIntro</a> birthday:flags2.5?<a href="/type/Birthday">Birthday</a> personal_channel_id:flags2.6?<a href="/type/long">long</a> personal_channel_message:flags2.6?<a href="/type/int">int</a> = <a href="/type/UserFull">UserFull</a>;<br>
@ -269,8 +273,8 @@
<h3><a class="anchor" href="#layer-177" id="layer-177" name="layer-177"><i class="anchor-icon"></i></a><a href="/schema?layer=177">Layer 177</a></h3>
<p>This layer adds the following features:</p>
<ul>
<li><a href="/api/revenue">Channel ad revenue »</a>: Telegram channel owners can now receive 50% of the revenue from ads displayed in their channels, as well as view detailed revenue statistics. </li>
<li><a href="/api/business#connected-bots">Telegram Business connected bots »</a>: <a href="/api/action-bar#manage-a-connected-business-bot">connected business bot action bar »</a> and bot-side constructors. </li>
<li><a href="/api/revenue">Channel ad revenue »</a>: Telegram channel owners can now receive 50% of the revenue from ads displayed in their channels, as well as view detailed revenue statistics.</li>
<li><a href="/api/business#connected-bots">Telegram Business connected bots »</a>: <a href="/api/action-bar#manage-a-connected-business-bot">connected business bot action bar »</a> and bot-side constructors.</li>
<li><a href="/api/business#business-introduction">Telegram Business introduction »</a></li>
<li><a href="/api/business#business-chat-links">Telegram Business chat links »</a></li>
<li><a href="/api/fragment">Fetch info about Fragment collectibles »</a></li>
@ -283,8 +287,8 @@
<li>A refactored and improved <a href="/api/invites#direct-invites">channel/supergroup/group invitation flow »</a></li>
<li>Improvements for <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a>.<br>
Now bots will also receive the selected peer's name, username, photo (if present and requested by the new bot-side <a href="/constructor/inputKeyboardButtonRequestPeer">inputKeyboardButtonRequestPeer</a> button).<br>
Previously, just the peer's ID was sent, which could only be used to fetch the name/photo if the bot had already previously cached the peer's <a href="/api/peers#access-hash">access hash »</a>. <ul>
<li>Bots will now receive the requested info as a <a href="/constructor/messageActionRequestedPeerSentMe">messageActionRequestedPeerSentMe</a> constructor instead of the old <a href="/constructor/messageActionRequestedPeer">messageActionRequestedPeer</a> constructor, which will only be received by users that shared the info. </li>
Previously, just the peer's ID was sent, which could only be used to fetch the name/photo if the bot had already previously cached the peer's <a href="/api/peers#access-hash">access hash »</a>. <ul>
<li>Bots will now receive the requested info as a <a href="/constructor/messageActionRequestedPeerSentMe">messageActionRequestedPeerSentMe</a> constructor instead of the old <a href="/constructor/messageActionRequestedPeer">messageActionRequestedPeer</a> constructor, which will only be received by users that shared the info.</li>
<li>Bots must now use <a href="/constructor/inputKeyboardButtonRequestPeer">inputKeyboardButtonRequestPeer</a> to send <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> buttons.</li>
</ul>
</li>
@ -296,7 +300,7 @@ Previously, just the peer's ID was sent, which could only be used to fetch the n
<li>Added <a href="/method/account.getBotBusinessConnection">account.getBotBusinessConnection</a> - Bots may invoke this method to re-fetch the <a href="/constructor/updateBotBusinessConnect">updateBotBusinessConnect</a> constructor associated with a specific <a href="/api/business#connected-bots">business <code>connection_id</code>, see here »</a> for more info on connected business bots. </li>
<li>Added <a href="/method/account.updateBusinessIntro">account.updateBusinessIntro</a> - Set or remove the <a href="/api/business#business-introduction">Telegram Business introduction »</a>.</li>
<li>Added <a href="/method/stickers.replaceSticker">stickers.replaceSticker</a> - Replace a sticker in a <a href="/api/stickers">stickerset »</a>.</li>
<li>Added <a href="/method/messages.getMyStickers">messages.getMyStickers</a> - Fetch <a href="/api/stickers">stickerset owned by the current user</a>.</li>
<li>Added <a href="/method/messages.getMyStickers">messages.getMyStickers</a> - Fetch all <a href="/api/stickers">stickersets »</a> owned by the current user.</li>
<li>Added <a href="/method/fragment.getCollectibleInfo">fragment.getCollectibleInfo</a> - Fetch information about a <a href="/api/fragment#fetching-info-about-fragment-collectibles">fragment collectible, see here »</a> for more info on the full flow.</li>
<li>Added <a href="/method/account.toggleConnectedBotPaused">account.toggleConnectedBotPaused</a> - Pause or unpause a specific chat, temporarily disconnecting it from all <a href="/api/business#connected-bots">business bots »</a>.</li>
<li>Added <a href="/method/account.disablePeerConnectedBot">account.disablePeerConnectedBot</a> - Permanently disconnect a specific chat from all <a href="/api/business#connected-bots">business bots »</a> (equivalent to specifying it in <code>recipients.exclude_users</code> during initial configuration with <a href="/method/account.updateConnectedBot">account.updateConnectedBot »</a>); to reconnect of a chat disconnected using this method the user must reconnect the entire bot by invoking <a href="/method/account.updateConnectedBot">account.updateConnectedBot »</a>.</li>

View file

@ -1107,7 +1107,7 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
<tr>
<td>REACT_STORY</td>
<td>{1}: {2} to your story</td>
<td>1. User name<br>2. Reaction</td>
<td>1. Peer where the story was posted<br>2. Reaction</td>
</tr>
<tr>
<td>REACT_STORY_HIDDEN</td>

View file

@ -62,18 +62,16 @@ sponsoredMessage#bdedf566 flags:# recommended:flags.5?true can_report:flags.12?t
<p><a href="https://t.me/durov/172">More about sponsored messages on Telegram</a></p>
</blockquote>
<h4><a class="anchor" href="#displaying-sponsored-messages" id="displaying-sponsored-messages" name="displaying-sponsored-messages"><i class="anchor-icon"></i></a>Displaying sponsored messages</h4>
<p>Sponsored messages must be displayed below all other posts in the channel, after the user scrolls further down, past the last message. The message should contain a button at the bottom with one of the following labels:</p>
<p>Sponsored messages must be displayed below all other posts in the channel, after the user scrolls further down, past the last message. </p>
<p>Sponsored messages have:</p>
<ul>
<li><mark><strong>View Bot</strong></mark> — if a bot is being promoted. Tapping the button must open the chat with the bot. If <code>start_param</code> is specified, the app must use the <a href="/api/links#bot-links">deep linking mechanism</a> to open the bot.</li>
<li><mark><strong>View Channel</strong></mark> — if a channel is being promoted. Tapping the button must open the channel in <code>from_id</code>.</li>
<li><mark><strong>View Post</strong></mark> — if a channel is being promoted and <code>channel_post</code> is specified. Tapping the button must open the particular channel post.</li>
<li><mark><strong>Launch App</strong></mark> — if the <code>app</code> flag is set, the specified <a href="/api/bots/webapps">Mini App</a> should be opened when clicking on the button. </li>
<li><mark><strong>Open Website</strong></mark> — If the <code>url</code> flag is set, clicking on the button should open the external website specified in <code>url</code>. </li>
<li>The contents of the <code>button_text</code> field — if the <code>button_text</code> field is set.</li>
<li>A title (contained in <code>title</code>)</li>
<li>A text (contained in <code>message</code>+<code>entities</code>)</li>
<li>A button at the button (label in <code>button_text</code>) that when clicked, opens the URL in <code>url</code>.<br>
A confirmation prompt should be shown before opening the URL, unless the host part of the URL matches the following regex: <code>(^|\\.)(telegram\.(org|me|dog)|t\.me|te\.?legra\.ph|graph\.org|fragment\.com|telesco\.pe)$</code>, in which case the URL should be opened without confirmation (and if it's a <a href="/api/links">deep link »</a>, it should be opened directly in-app, without passing through the browser). </li>
</ul>
<p>The message should be marked as "Recommended" instead of "Sponsored" if the <code>recommended</code> flag is set. </p>
<p>If the <code>photo</code> flag is set, it should be used to display a profile photo bubble for the sponsored message, like for messages sent in groups. </p>
<p>If the <code>title</code> flag is set, it should be used as <em>sender name</em> for the sponsored message, like for messages sent in groups.</p>
<p>If the <code>sponsor_info</code> or <code>additional_info</code> flags are set, an additional "Sponsor info" menu item must be present in the message context menu (the menu that pops up when clicking on a button), that when clicked, displays the contents of the flags. </p>
<p>If set, the sponsored message should use the <a href="/api/colors">message accent color »</a> specified in <code>color</code>.</p>
<h4><a class="anchor" href="#counting-sponsored-message-views" id="counting-sponsored-message-views" name="counting-sponsored-message-views"><i class="anchor-icon"></i></a>Counting sponsored message views</h4>

View file

@ -89,12 +89,12 @@
<tr>
<td><strong>url</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td>If set, contains a URL to open when the user clicks on the sponsored message.</td>
<td>Contains the URL to open when the user clicks on the sponsored message.</td>
</tr>
<tr>
<td><strong>title</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td>If set, contains a custom sender name should be displayed for the sponsored message, like for messages sent in groups.</td>
<td>Contains the title of the sponsored message.</td>
</tr>
<tr>
<td><strong>message</strong></td>
@ -104,7 +104,7 @@
<tr>
<td><strong>entities</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt;</td>
<td><a href="/api/entities">Message entities for styled text</a></td>
<td><a href="/api/entities">Message entities for styled text</a> in <code>message</code>.</td>
</tr>
<tr>
<td><strong>photo</strong></td>
@ -119,7 +119,7 @@
<tr>
<td><strong>button_text</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td>Text of the sponsored message button.</td>
<td>Label of the sponsored message button.</td>
</tr>
<tr>
<td><strong>sponsor_info</strong></td>

View file

@ -74,7 +74,7 @@
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/Peer">Peer</a></td>
<td> </td>
<td>The peer where the story was posted.</td>
</tr>
<tr>
<td><strong>reaction</strong></td>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>messages.getMyStickers</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Fetch stickerset owned by the current user.">
<meta property="description" content="Fetch all stickersets » owned by the current user.">
<meta property="og:title" content="messages.getMyStickers">
<meta property="og:image" content="">
<meta property="og:description" content="Fetch stickerset owned by the current user.">
<meta property="og:description" content="Fetch all stickersets » owned by the current user.">
<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">

View file

@ -1928,7 +1928,7 @@ Look for updates of telegram&#39;s terms of service…">
</tr>
<tr>
<td><a href="/method/messages.getMyStickers">messages.getMyStickers</a></td>
<td>Fetch <a href="/api/stickers">stickerset owned by the current user</a>.</td>
<td>Fetch all <a href="/api/stickers">stickersets »</a> owned by the current user.</td>
</tr>
<tr>
<td><a href="/method/stickers.removeStickerFromSet">stickers.removeStickerFromSet</a></td>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 0C E8 09 00 72 64 A2 66
0010 | 14 00 00 00 F1 8E 7E BE 8B FC FA 60 96 C5 00 12
0020 | F6 4C 5A DF 97 62 83 FB</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 28 1E 0B 00 6F 7E A2 66
0010 | 14 00 00 00 F1 8E 7E BE 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2</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>0CE809007264A266</code></td>
<td><code>281E0B006F7EA266</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>8BFCFA6096C50012F64C5ADF976283FB</code></td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</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 04 50 73 72 64 A2 66
0010 | 7C 00 00 00 63 24 16 05 8B FC FA 60 96 C5 00 12
0020 | F6 4C 5A DF 97 62 83 FB E3 0B C5 CB 5D 67 71 98
0030 | 50 5F 75 42 9F 74 75 BF 08 0F 51 1E E3 5C D8 E9
0040 | 17 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 04 D5 D9 6F 7E A2 66
0010 | BC 00 00 00 63 24 16 05 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1
0030 | 4C F7 5A 8A 5D 4F 9E 5C 08 10 69 D1 E8 78 0E 37
0040 | 25 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>010450737264A266</code></td>
<td><code>0104D5D96F7EA266</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>7C000000</code> (124 in decimal)</td>
<td><code>BC000000</code> (188 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>8BFCFA6096C50012F64C5ADF976283FB</code></td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>E30BC5CB5D677198505F75429F7475BF</code></td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>080F511EE35CD8E917000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1103697345546610967</td>
<td><code>081069D1E8780E3725000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1182707173538281253</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 = 1103697345546610967</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1103697345546610967 = 1014582419 * 1087834093</code></p>
<pre><code>p = 1014582419
q = 1087834093</code></pre>
<pre><code>pq = 1182707173538281253</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1182707173538281253 = 1078298003 * 1096827751</code></p>
<pre><code>p = 1078298003
q = 1096827751</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 0F 51 1E E3 5C D8 E9 17 00 00 00
0010 | 04 3C 79 4C 93 00 00 00 04 40 D7 07 ED 00 00 00
0020 | 8B FC FA 60 96 C5 00 12 F6 4C 5A DF 97 62 83 FB
0030 | E3 0B C5 CB 5D 67 71 98 50 5F 75 42 9F 74 75 BF
0040 | 9E BF DF 4C 03 6E 07 CB 8C A8 4D 19 4C F9 DD 8C
0050 | 9A 5C D6 EC 71 01 B3 DE 00 5C B3 9E 9D BE 9B C4
<pre><code>0000 | 95 5F F5 A9 08 10 69 D1 E8 78 0E 37 25 00 00 00
0010 | 04 40 45 85 93 00 00 00 04 41 60 43 67 00 00 00
0020 | 92 63 8E CF 53 C6 21 AC 5A 56 9F A7 D8 24 8D D2
0030 | 81 32 9E 3B 6E D3 C9 C1 4C F7 5A 8A 5D 4F 9E 5C
0040 | 38 DD 22 3E CA ED DA E7 C5 BB FA 37 3B 0E BB 43
0050 | 1E 09 F4 94 D6 DF BC DC DF 42 A4 B7 9A E8 53 5D
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 = 1087834093</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>080F511EE35CD8E917000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1103697345546610967</td>
<td><code>081069D1E8780E3725000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1182707173538281253</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>043C794C93000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1014582419</td>
<td><code>0440458593000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1078298003</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>0440D707ED000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1087834093</td>
<td><code>0441604367000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1096827751</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>8BFCFA6096C50012F64C5ADF976283FB</code></td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>E30BC5CB5D677198505F75429F7475BF</code></td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>9EBFDF4C036E07CB8CA84D194CF9DD8C</code> <code>9A5CD6EC7101B3DE005CB39E9DBE9BC4</code></td>
<td><code>38DD223ECAEDDAE7C5BBFA373B0EBB43</code> <code>1E09F494D6DFBCDCDF42A4B79AE8535D</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1087834093</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 = 955FF5A9080F511EE35CD8E917000000043C794C930000000440D707ED0000008BFCFA6096C50012F64C5ADF976283FBE30BC5CB5D677198505F75429F7475BF9EBFDF4C036E07CB8CA84D194CF9DD8C9A5CD6EC7101B3DE005CB39E9DBE9BC402000000
random_padding_bytes = 2C2821466EBB7D4973FCD6FBEDC8A53A1115334BBFC29B21B2C3E3B674FBEF9E7BCAC760DA776F1C59236A30CCE1470C83C1EFA3F487B0DE9BA4DC6A68C4C2E5FBB57B4D5AD04273E146786D39C5B779620FABAC01AA423410B6EE8D</code></pre>
<pre><code>data = 955FF5A9081069D1E8780E37250000000440458593000000044160436700000092638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5C38DD223ECAEDDAE7C5BBFA373B0EBB431E09F494D6DFBCDCDF42A4B79AE8535D02000000
random_padding_bytes = 36BC32FCFD16542DAA475870C8D2B5F292D1528FA6DCA73533C04201A88255BD4D45DA41CA3C1649B54EB3856D8378D6F98DE38562C5EBEC143F2D64B558D2476578B8F406DB632774296B96CF0B518F3E7BAF90336BF6DF6184EE92</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 = 64567DA3790EF92C6CA990DB6C5EE25ACAE4D30EC0A83225423DD67BEC17CC9E1170331BD9C3D46E6817424CD8788A70D00E681FB5760E273F40A15DA279F812C1E65D429712AC31603292404F3256E87B4FD14C21EACED3075D2EC792630D8C9D752325CE986033385566108937E98BE43D0C3CD986E8B3F9F3C09BA482DE75ED59FB9A7218652056F6FAA65C37BC058BD483E8936AD883AB949F0A5C8012FBBD6E649F673E33FF335CA91E18E0B072086DD3F390BCDBF42EBD86532F4695E3244B9FEF5A537909D7EDD26E5671C1615C2DF30C77EB1C43CF880031A97DB1CF76644E8F61DD321DE9662DF9A902C3A3DD1ED3EB8A0A9F98CFE6A66326AD3578</code></pre>
<pre><code>encrypted_data = 3F5C01340DB35237AAAD2C0BAEF9EA263633CB2CE3B6138BB2E90BA40A9D1604ED43BA2B309F74CD9487FB0FD2288211651B6F3E10A04164E3D24F964832F83CAB5D43BDFC5D3C3F6F21B517B3ED63307A2087BA057FF0A15BC110781D6DB73F17DA58D47373A3BB24D3946D126B78D0166423EDF10E39B51228C8EDB6F8B68CFD92D66A3696C9F3FF6ECAFA2F1E8BA4EC0F7E38715B77BBC9F38D231D1BEF3529E1698922C9332877BC42C929D4BFDD492108953E805EF55E44CEE939D8F759BA673FED970382500672EC7B0D5DCDD9D42BE029C20B05C248775DF37CF2EA86E3CCC1A0968C93F4CE3418A3490118411EA877EA2E8B0BE7FB3144FFEFC4F003</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 10 E8 09 00 72 64 A2 66
0010 | 40 01 00 00 BE E4 12 D7 8B FC FA 60 96 C5 00 12
0020 | F6 4C 5A DF 97 62 83 FB E3 0B C5 CB 5D 67 71 98
0030 | 50 5F 75 42 9F 74 75 BF 04 3C 79 4C 93 00 00 00
0040 | 04 40 D7 07 ED 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 64 56 7D A3 79 0E F9 2C 6C A9 90 DB
0060 | 6C 5E E2 5A CA E4 D3 0E C0 A8 32 25 42 3D D6 7B
0070 | EC 17 CC 9E 11 70 33 1B D9 C3 D4 6E 68 17 42 4C
0080 | D8 78 8A 70 D0 0E 68 1F B5 76 0E 27 3F 40 A1 5D
0090 | A2 79 F8 12 C1 E6 5D 42 97 12 AC 31 60 32 92 40
00A0 | 4F 32 56 E8 7B 4F D1 4C 21 EA CE D3 07 5D 2E C7
00B0 | 92 63 0D 8C 9D 75 23 25 CE 98 60 33 38 55 66 10
00C0 | 89 37 E9 8B E4 3D 0C 3C D9 86 E8 B3 F9 F3 C0 9B
00D0 | A4 82 DE 75 ED 59 FB 9A 72 18 65 20 56 F6 FA A6
00E0 | 5C 37 BC 05 8B D4 83 E8 93 6A D8 83 AB 94 9F 0A
00F0 | 5C 80 12 FB BD 6E 64 9F 67 3E 33 FF 33 5C A9 1E
0100 | 18 E0 B0 72 08 6D D3 F3 90 BC DB F4 2E BD 86 53
0110 | 2F 46 95 E3 24 4B 9F EF 5A 53 79 09 D7 ED D2 6E
0120 | 56 71 C1 61 5C 2D F3 0C 77 EB 1C 43 CF 88 00 31
0130 | A9 7D B1 CF 76 64 4E 8F 61 DD 32 1D E9 66 2D F9
0140 | A9 02 C3 A3 DD 1E D3 EB 8A 0A 9F 98 CF E6 A6 63
0150 | 26 AD 35 78</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 2C 1E 0B 00 6F 7E A2 66
0010 | 40 01 00 00 BE E4 12 D7 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1
0030 | 4C F7 5A 8A 5D 4F 9E 5C 04 40 45 85 93 00 00 00
0040 | 04 41 60 43 67 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 3F 5C 01 34 0D B3 52 37 AA AD 2C 0B
0060 | AE F9 EA 26 36 33 CB 2C E3 B6 13 8B B2 E9 0B A4
0070 | 0A 9D 16 04 ED 43 BA 2B 30 9F 74 CD 94 87 FB 0F
0080 | D2 28 82 11 65 1B 6F 3E 10 A0 41 64 E3 D2 4F 96
0090 | 48 32 F8 3C AB 5D 43 BD FC 5D 3C 3F 6F 21 B5 17
00A0 | B3 ED 63 30 7A 20 87 BA 05 7F F0 A1 5B C1 10 78
00B0 | 1D 6D B7 3F 17 DA 58 D4 73 73 A3 BB 24 D3 94 6D
00C0 | 12 6B 78 D0 16 64 23 ED F1 0E 39 B5 12 28 C8 ED
00D0 | B6 F8 B6 8C FD 92 D6 6A 36 96 C9 F3 FF 6E CA FA
00E0 | 2F 1E 8B A4 EC 0F 7E 38 71 5B 77 BB C9 F3 8D 23
00F0 | 1D 1B EF 35 29 E1 69 89 22 C9 33 28 77 BC 42 C9
0100 | 29 D4 BF DD 49 21 08 95 3E 80 5E F5 5E 44 CE E9
0110 | 39 D8 F7 59 BA 67 3F ED 97 03 82 50 06 72 EC 7B
0120 | 0D 5D CD D9 D4 2B E0 29 C2 0B 05 C2 48 77 5D F3
0130 | 7C F2 EA 86 E3 CC C1 A0 96 8C 93 F4 CE 34 18 A3
0140 | 49 01 18 41 1E A8 77 EA 2E 8B 0B E7 FB 31 44 FF
0150 | EF C4 F0 03</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 = 2C2821466EBB7D4973FCD6FBEDC8A53A1115334BBFC29B21B2C3E3B67
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>10E809007264A266</code></td>
<td><code>2C1E0B006F7EA266</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 = 2C2821466EBB7D4973FCD6FBEDC8A53A1115334BBFC29B21B2C3E3B67
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>8BFCFA6096C50012F64C5ADF976283FB</code></td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>E30BC5CB5D677198505F75429F7475BF</code></td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>043C794C93000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1014582419</td>
<td><code>0440458593000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1078298003</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>0440D707ED000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1087834093</td>
<td><code>0441604367000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1096827751</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 = 2C2821466EBB7D4973FCD6FBEDC8A53A1115334BBFC29B21B2C3E3B67
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE00010064567DA3790EF92C6CA990DB</code> <code>6C5EE25ACAE4D30EC0A83225423DD67B</code> <code>EC17CC9E1170331BD9C3D46E6817424C</code> <code>D8788A70D00E681FB5760E273F40A15D</code> <code>A279F812C1E65D429712AC3160329240</code> <code>4F3256E87B4FD14C21EACED3075D2EC7</code> <code>92630D8C9D752325CE98603338556610</code> <code>8937E98BE43D0C3CD986E8B3F9F3C09B</code> <code>A482DE75ED59FB9A7218652056F6FAA6</code> <code>5C37BC058BD483E8936AD883AB949F0A</code> <code>5C8012FBBD6E649F673E33FF335CA91E</code> <code>18E0B072086DD3F390BCDBF42EBD8653</code> <code>2F4695E3244B9FEF5A537909D7EDD26E</code> <code>5671C1615C2DF30C77EB1C43CF880031</code> <code>A97DB1CF76644E8F61DD321DE9662DF9</code> <code>A902C3A3DD1ED3EB8A0A9F98CFE6A663</code><br> <code>26AD3578</code></td>
<td><code>FE0001003F5C01340DB35237AAAD2C0B</code> <code>AEF9EA263633CB2CE3B6138BB2E90BA4</code> <code>0A9D1604ED43BA2B309F74CD9487FB0F</code> <code>D2288211651B6F3E10A04164E3D24F96</code> <code>4832F83CAB5D43BDFC5D3C3F6F21B517</code> <code>B3ED63307A2087BA057FF0A15BC11078</code> <code>1D6DB73F17DA58D47373A3BB24D3946D</code> <code>126B78D0166423EDF10E39B51228C8ED</code> <code>B6F8B68CFD92D66A3696C9F3FF6ECAFA</code> <code>2F1E8BA4EC0F7E38715B77BBC9F38D23</code> <code>1D1BEF3529E1698922C9332877BC42C9</code> <code>29D4BFDD492108953E805EF55E44CEE9</code> <code>39D8F759BA673FED970382500672EC7B</code> <code>0D5DCDD9D42BE029C20B05C248775DF3</code> <code>7CF2EA86E3CCC1A0968C93F4CE3418A3</code> <code>490118411EA877EA2E8B0BE7FB3144FF</code><br> <code>EFC4F003</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 2C2821466EBB7D4973FCD6FBEDC8A53A1115334BBFC29B21B2C3E3B67
<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 7C EE 13 73 64 A2 66
0010 | 78 02 00 00 5C 07 E8 D0 8B FC FA 60 96 C5 00 12
0020 | F6 4C 5A DF 97 62 83 FB E3 0B C5 CB 5D 67 71 98
0030 | 50 5F 75 42 9F 74 75 BF FE 50 02 00 C9 9A 9D EF
0040 | 2A 9F 3D 05 90 FB 9A A3 41 C6 2C AD 3D 28 3C E4
0050 | A6 09 54 60 18 8A 1B 7C 32 D3 FB 8C E4 40 AF 3E
0060 | 4C 3E 0F F4 5F 1F 53 36 6C 2B 13 E2 DC A4 80 6E
0070 | F3 4E DE 1C 5D C1 82 C7 C0 E8 1E 44 0D 07 C3 E9
0080 | 41 6E A5 82 BE 9E 6D 33 BC 5A 30 40 89 54 B4 1B
0090 | AB 62 41 6C 3C F8 86 25 E8 18 47 38 5A FB D4 3A
00A0 | 45 30 CD 86 27 95 57 A0 0F 76 D1 00 F8 31 2C 03
00B0 | 45 FB 93 73 B4 D8 32 6E F3 CA 71 75 DB ED 83 C0
00C0 | F4 F4 40 A9 3E DA 0E C5 42 9D DE 02 77 44 8D 87
00D0 | 90 A0 D1 10 7E 94 E3 AA B1 56 50 86 E4 ED 4F F3
00E0 | 1A EC B0 D8 95 6E F5 F2 0A 1C 6A 73 6E A4 94 8F
00F0 | E7 63 1B 80 85 DB FA B7 C3 78 2F 40 C5 D9 62 85
0100 | 07 D5 2E F9 6C 66 3C 00 4A 8F 14 82 FA 5B 78 F0
0110 | 9C D6 6A F1 A1 51 64 43 23 B4 4B 0F D0 16 5E EE
0120 | 6E EA D8 F7 81 3F 27 5C D2 EE 3D CC CF E2 A8 42
0130 | EB 8C AE E0 56 2F 20 6D C9 EA 06 F0 95 35 5C D0
0140 | 53 12 94 CD 89 42 4C 3D 9E 88 50 D9 43 C7 FD D0
0150 | 0A A3 31 AE 0F 02 8F 21 5F 5C D3 EF 4F 1E DD 26
0160 | 90 10 0F 2E CA BD B6 B2 02 55 AD 4B 35 BD 03 CA
0170 | B5 68 6B D7 49 77 6C 49 86 E3 2D 5B 92 6F 15 C3
0180 | 33 E4 42 3D 42 75 EE 7F 49 F8 D5 12 99 09 32 EF
0190 | 32 1F FB 4D 17 C8 C6 FB 3B A9 5A 49 C3 D1 72 3A
01A0 | EB EC EC 7A DB C6 6F 52 7E 64 E4 5E D7 A9 A6 4B
01B0 | 2B AB 27 5E 37 2D C1 4E A8 A7 2C 20 BD 6A F8 2C
01C0 | 40 FE 43 E7 9B 77 D6 A8 20 DB B7 29 F7 86 82 F2
01D0 | 5C 86 45 46 93 0A 57 AA B5 18 F2 C2 CF 77 83 67
01E0 | 81 65 B4 28 C0 A3 37 6B 8D C7 E7 14 10 E1 CE EF
01F0 | 31 67 26 02 8C 04 BF 65 17 1F 24 0B 82 A6 8F 8C
0200 | D1 B0 F3 B5 B2 40 BA 13 EE 98 DC 07 09 E5 BA 55
0210 | 34 C6 C4 E1 79 AB EC 35 AE BB 75 9C 1A 3E 5D 6A
0220 | FA 21 D4 7F 38 BD 1F 8A ED B3 84 6E C0 8D 17 15
0230 | 44 EE B4 A6 E3 43 89 9B 86 C6 A8 62 95 2B 70 DA
0240 | C2 8D E2 00 01 29 BE 05 55 99 3C 6F 22 CB 2C 59
0250 | 04 9C BE 8E C1 81 82 84 BF D9 1E DF 7B 3F B9 61
0260 | E0 F9 55 06 DE 80 32 08 15 78 A3 61 8B AE 8A D5
0270 | D3 F8 73 54 3C 70 C8 2C 62 ED 99 AA E9 A6 D3 EA
0280 | 7E A9 2A B6 50 47 31 D6 1E DD F1 FE</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 30 CA 95 70 7E A2 66
0010 | A8 02 00 00 5C 07 E8 D0 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1
0030 | 4C F7 5A 8A 5D 4F 9E 5C FE 50 02 00 4A 6A 11 FB
0040 | 97 0A C5 BB 6D 54 76 57 BF 18 6B CF 62 9E EA 5C
0050 | 2E 48 93 F2 62 79 D6 26 75 C1 CB FB 1F 45 67 73
0060 | 3F 41 4A D6 61 A9 C5 73 1B A9 CD E1 F9 95 79 F3
0070 | 1E 3B 0F E9 69 A8 40 15 C5 93 8E 51 C0 6E E5 32
0080 | 9A E9 3E 5A E3 30 3B D9 85 02 91 86 C3 C5 4E 80
0090 | AE 84 25 5F 1A E2 88 15 02 41 87 D2 4E 72 10 1F
00A0 | 33 2C 42 94 68 4D 5E 10 DB E4 1B 51 EE CD 54 CF
00B0 | DC 71 C2 94 AF F3 76 E4 B7 8D D8 89 E6 A2 E8 5B
00C0 | 02 9B EE 34 EC 99 20 28 74 74 70 AD 85 28 E4 73
00D0 | F0 4B 6D BE 47 BF 58 0C 65 5A CA 44 A6 30 A2 95
00E0 | 61 03 42 7B F3 3D 34 39 D8 70 F8 86 65 73 6E 65
00F0 | 04 B8 A2 14 A6 BE 1C F6 72 57 4D B1 98 02 68 BC
0100 | 78 3F 22 B8 34 39 48 8B 33 52 F3 F9 EA 90 CD A2
0110 | 2A B2 00 47 BE 70 3E 3F 2F 42 10 39 A2 28 53 74
0120 | 06 19 C1 91 9B FE 77 D3 BA 43 CC 55 10 05 E5 0E
0130 | 21 8B 9C 5E C9 9E 8B EE B1 FD D5 02 74 95 E9 2D
0140 | 49 8A AF 0A 46 32 5B BD D9 52 BB A8 4E CF 87 58
0150 | 42 F2 A5 98 08 25 69 4E 5C 41 F3 A5 CB E6 F6 06
0160 | DA 68 19 99 53 F2 36 E3 66 B1 B0 5C FE 33 80 E6
0170 | E4 0B 3F 78 26 02 D6 B1 65 FE EA 28 E8 9A D2 BA
0180 | 4B B1 43 BA 9C E8 92 2C 6F 97 0C 99 4D 7F 8F 89
0190 | 97 65 00 D5 41 FF 1B BB 2B CD 7D 3C AE 73 FC 9E
01A0 | AE 6E 40 F6 79 10 11 5F BD 7D 36 98 34 D1 31 BD
01B0 | 91 53 FC 82 36 CD 6C E1 E3 2E 65 B9 FA 4F 2C 15
01C0 | E2 79 63 57 6E 29 8F 4F D9 64 25 2F 4B E3 D5 80
01D0 | 89 88 6C 28 1C 8E F9 F6 53 CB D5 7F 75 07 6E 57
01E0 | E0 1D 79 23 6E A4 BE 9A E9 9F 16 86 A1 7F A7 EF
01F0 | 83 84 47 F9 C6 C5 22 89 6C A1 CD 52 04 88 BA 05
0200 | 4D 1E D2 BF 9C 28 37 AD F2 37 D4 44 D4 AD EF A3
0210 | 97 90 D5 60 4E C9 20 E1 BD C3 86 2B A1 D6 C7 BC
0220 | AE 8C E1 CA 78 9C 03 97 98 16 E3 63 39 A3 13 D2
0230 | 10 18 0F 8C 9B DC E0 9A 17 7C 46 9D A9 13 30 18
0240 | AF 50 20 43 10 72 E3 38 C7 FC E7 77 E7 6F BF E5
0250 | 9E 01 40 F8 6E 13 E7 8A FF 7D 82 76 DB 16 79 40
0260 | 4F 04 94 30 B1 A8 85 8B CA 07 E0 68 12 4F 2F AA
0270 | 32 36 A7 66 07 B6 8A 86 28 40 59 23 8B 9A CE B6
0280 | 97 9B 9C 1F 17 9E EF 5A 62 B8 4C C6</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 = 2C2821466EBB7D4973FCD6FBEDC8A53A1115334BBFC29B21B2C3E3B67
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>017CEE137364A266</code></td>
<td><code>0130CA95707EA266</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>78020000</code> (632 in decimal)</td>
<td><code>A8020000</code> (680 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 2C2821466EBB7D4973FCD6FBEDC8A53A1115334BBFC29B21B2C3E3B67
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>8BFCFA6096C50012F64C5ADF976283FB</code></td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>E30BC5CB5D677198505F75429F7475BF</code></td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE500200C99A9DEF2A9F3D0590FB9AA3</code> <code>41C62CAD3D283CE4A6095460188A1B7C</code> <code>32D3FB8CE440AF3E4C3E0FF45F1F5336</code> <code>6C2B13E2DCA4806EF34EDE1C5DC182C7</code> <code>C0E81E440D07C3E9416EA582BE9E6D33</code> <code>BC5A30408954B41BAB62416C3CF88625</code> <code>E81847385AFBD43A4530CD86279557A0</code> <code>0F76D100F8312C0345FB9373B4D8326E</code> <code>F3CA7175DBED83C0F4F440A93EDA0EC5</code> <code>429DDE0277448D8790A0D1107E94E3AA</code> <code>B1565086E4ED4FF31AECB0D8956EF5F2</code> <code>0A1C6A736EA4948FE7631B8085DBFAB7</code> <code>C3782F40C5D9628507D52EF96C663C00</code> <code>4A8F1482FA5B78F09CD66AF1A1516443</code> <code>23B44B0FD0165EEE6EEAD8F7813F275C</code> <code>D2EE3DCCCFE2A842EB8CAEE0562F206D</code> <code>C9EA06F095355CD0531294CD89424C3D</code> <code>9E8850D943C7FDD00AA331AE0F028F21</code> <code>5F5CD3EF4F1EDD2690100F2ECABDB6B2</code> <code>0255AD4B35BD03CAB5686BD749776C49</code> <code>86E32D5B926F15C333E4423D4275EE7F</code> <code>49F8D512990932EF321FFB4D17C8C6FB</code> <code>3BA95A49C3D1723AEBECEC7ADBC66F52</code> <code>7E64E45ED7A9A64B2BAB275E372DC14E</code> <code>A8A72C20BD6AF82C40FE43E79B77D6A8</code> <code>20DBB729F78682F25C864546930A57AA</code> <code>B518F2C2CF7783678165B428C0A3376B</code> <code>8DC7E71410E1CEEF316726028C04BF65</code> <code>171F240B82A68F8CD1B0F3B5B240BA13</code> <code>EE98DC0709E5BA5534C6C4E179ABEC35</code> <code>AEBB759C1A3E5D6AFA21D47F38BD1F8A</code> <code>EDB3846EC08D171544EEB4A6E343899B</code> <code>86C6A862952B70DAC28DE2000129BE05</code> <code>55993C6F22CB2C59049CBE8EC1818284</code> <code>BFD91EDF7B3FB961E0F95506DE803208</code> <code>1578A3618BAE8AD5D3F873543C70C82C</code> <code>62ED99AAE9A6D3EA7EA92AB6504731D6</code><br> <code>1EDDF1FE</code></td>
<td><code>FE5002004A6A11FB970AC5BB6D547657</code> <code>BF186BCF629EEA5C2E4893F26279D626</code> <code>75C1CBFB1F4567733F414AD661A9C573</code> <code>1BA9CDE1F99579F31E3B0FE969A84015</code> <code>C5938E51C06EE5329AE93E5AE3303BD9</code> <code>85029186C3C54E80AE84255F1AE28815</code> <code>024187D24E72101F332C4294684D5E10</code> <code>DBE41B51EECD54CFDC71C294AFF376E4</code> <code>B78DD889E6A2E85B029BEE34EC992028</code> <code>747470AD8528E473F04B6DBE47BF580C</code> <code>655ACA44A630A2956103427BF33D3439</code> <code>D870F88665736E6504B8A214A6BE1CF6</code> <code>72574DB1980268BC783F22B83439488B</code> <code>3352F3F9EA90CDA22AB20047BE703E3F</code> <code>2F421039A22853740619C1919BFE77D3</code> <code>BA43CC551005E50E218B9C5EC99E8BEE</code> <code>B1FDD5027495E92D498AAF0A46325BBD</code> <code>D952BBA84ECF875842F2A5980825694E</code> <code>5C41F3A5CBE6F606DA68199953F236E3</code> <code>66B1B05CFE3380E6E40B3F782602D6B1</code> <code>65FEEA28E89AD2BA4BB143BA9CE8922C</code> <code>6F970C994D7F8F89976500D541FF1BBB</code> <code>2BCD7D3CAE73FC9EAE6E40F67910115F</code> <code>BD7D369834D131BD9153FC8236CD6CE1</code> <code>E32E65B9FA4F2C15E27963576E298F4F</code> <code>D964252F4BE3D58089886C281C8EF9F6</code> <code>53CBD57F75076E57E01D79236EA4BE9A</code> <code>E99F1686A17FA7EF838447F9C6C52289</code> <code>6CA1CD520488BA054D1ED2BF9C2837AD</code> <code>F237D444D4ADEFA39790D5604EC920E1</code> <code>BDC3862BA1D6C7BCAE8CE1CA789C0397</code> <code>9816E36339A313D210180F8C9BDCE09A</code> <code>177C469DA9133018AF5020431072E338</code> <code>C7FCE777E76FBFE59E0140F86E13E78A</code> <code>FF7D8276DB1679404F049430B1A8858B</code> <code>CA07E068124F2FAA3236A76607B68A86</code> <code>284059238B9ACEB6979B9C1F179EEF5A</code><br> <code>62B84CC6</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 2C2821466EBB7D4973FCD6FBEDC8A53A1115334BBFC29B21B2C3E3B67
<!-- 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 = C99A9DEF2A9F3D0590FB9AA341C62CAD3D283CE4A6095460188A1B7C32D3FB8CE440AF3E4C3E0FF45F1F53366C2B13E2DCA4806EF34EDE1C5DC182C7C0E81E440D07C3E9416EA582BE9E6D33BC5A30408954B41BAB62416C3CF88625E81847385AFBD43A4530CD86279557A00F76D100F8312C0345FB9373B4D8326EF3CA7175DBED83C0F4F440A93EDA0EC5429DDE0277448D8790A0D1107E94E3AAB1565086E4ED4FF31AECB0D8956EF5F20A1C6A736EA4948FE7631B8085DBFAB7C3782F40C5D9628507D52EF96C663C004A8F1482FA5B78F09CD66AF1A151644323B44B0FD0165EEE6EEAD8F7813F275CD2EE3DCCCFE2A842EB8CAEE0562F206DC9EA06F095355CD0531294CD89424C3D9E8850D943C7FDD00AA331AE0F028F215F5CD3EF4F1EDD2690100F2ECABDB6B20255AD4B35BD03CAB5686BD749776C4986E32D5B926F15C333E4423D4275EE7F49F8D512990932EF321FFB4D17C8C6FB3BA95A49C3D1723AEBECEC7ADBC66F527E64E45ED7A9A64B2BAB275E372DC14EA8A72C20BD6AF82C40FE43E79B77D6A820DBB729F78682F25C864546930A57AAB518F2C2CF7783678165B428C0A3376B8DC7E71410E1CEEF316726028C04BF65171F240B82A68F8CD1B0F3B5B240BA13EE98DC0709E5BA5534C6C4E179ABEC35AEBB759C1A3E5D6AFA21D47F38BD1F8AEDB3846EC08D171544EEB4A6E343899B86C6A862952B70DAC28DE2000129BE0555993C6F22CB2C59049CBE8EC1818284BFD91EDF7B3FB961E0F95506DE8032081578A3618BAE8AD5D3F873543C70C82C62ED99AAE9A6D3EA7EA92AB6504731D61EDDF1FE
tmp_aes_key = F05610AA46B5986B74F2E9DE05DC9CC1BE6D92A6C893B252B49D8E05B46DABFA
tmp_aes_iv = 082C119CE869890D52BEE3A7015B770B0AC0B012A2BDB09DCB420CE19EBFDF4C</code></pre>
<pre><code>encrypted_answer = 4A6A11FB970AC5BB6D547657BF186BCF629EEA5C2E4893F26279D62675C1CBFB1F4567733F414AD661A9C5731BA9CDE1F99579F31E3B0FE969A84015C5938E51C06EE5329AE93E5AE3303BD985029186C3C54E80AE84255F1AE28815024187D24E72101F332C4294684D5E10DBE41B51EECD54CFDC71C294AFF376E4B78DD889E6A2E85B029BEE34EC992028747470AD8528E473F04B6DBE47BF580C655ACA44A630A2956103427BF33D3439D870F88665736E6504B8A214A6BE1CF672574DB1980268BC783F22B83439488B3352F3F9EA90CDA22AB20047BE703E3F2F421039A22853740619C1919BFE77D3BA43CC551005E50E218B9C5EC99E8BEEB1FDD5027495E92D498AAF0A46325BBDD952BBA84ECF875842F2A5980825694E5C41F3A5CBE6F606DA68199953F236E366B1B05CFE3380E6E40B3F782602D6B165FEEA28E89AD2BA4BB143BA9CE8922C6F970C994D7F8F89976500D541FF1BBB2BCD7D3CAE73FC9EAE6E40F67910115FBD7D369834D131BD9153FC8236CD6CE1E32E65B9FA4F2C15E27963576E298F4FD964252F4BE3D58089886C281C8EF9F653CBD57F75076E57E01D79236EA4BE9AE99F1686A17FA7EF838447F9C6C522896CA1CD520488BA054D1ED2BF9C2837ADF237D444D4ADEFA39790D5604EC920E1BDC3862BA1D6C7BCAE8CE1CA789C03979816E36339A313D210180F8C9BDCE09A177C469DA9133018AF5020431072E338C7FCE777E76FBFE59E0140F86E13E78AFF7D8276DB1679404F049430B1A8858BCA07E068124F2FAA3236A76607B68A86284059238B9ACEB6979B9C1F179EEF5A62B84CC6
tmp_aes_key = 9B2DB3607E4868AB72C98C0FAA723450C93F5D03DC01F3FD919CF5E015C70210
tmp_aes_iv = 717BECED312445E965C2A534DFA9A07681B16D91A159E96CF2CB727F38DD223E</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 036C9B17A32F0950AE2FC3DFC05F32220541F1FCBA0D89B58BFCFA6096C50012F64C5ADF976283FBE30BC5CB5D677198505F75429F7475BF03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100A555F396881111625E62DB0733DAD37CE5F78062BC0DCBD11B12E3709BAB97E1EE7F7894DB79A09B8459B7ACE32AAB6D6F2FD1895EEF7746115F594E8DE48DA2DD30CE26F65C8365945392B959B6AFA5535C34919A76F2A94EC04C8FE708539291BA4E28C1C245DBF362FC7B356B30EE53EC735F28985AD186976461A138EC083A0095316B7C3E3676A165E0931CBC78F78DDE60131BBEE8D11B3AC53DDA3AD5A93832B644A672E390959A36C589DC8901BFEEAA2956F58AC8D768863FB53CB55EA7C31FDE707C7C6EADBE2CCF15044F03BD924B1B6AD47B0ECDC1361E26F00E40FC98FC1E99B7639A64D460006B27E080493F914C02D80F49750D9F30AF10F77364A266EADA3CA5A0B8F9C0
answer = BA0D89B58BFCFA6096C50012F64C5ADF976283FBE30BC5CB5D677198505F75429F7475BF03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100A555F396881111625E62DB0733DAD37CE5F78062BC0DCBD11B12E3709BAB97E1EE7F7894DB79A09B8459B7ACE32AAB6D6F2FD1895EEF7746115F594E8DE48DA2DD30CE26F65C8365945392B959B6AFA5535C34919A76F2A94EC04C8FE708539291BA4E28C1C245DBF362FC7B356B30EE53EC735F28985AD186976461A138EC083A0095316B7C3E3676A165E0931CBC78F78DDE60131BBEE8D11B3AC53DDA3AD5A93832B644A672E390959A36C589DC8901BFEEAA2956F58AC8D768863FB53CB55EA7C31FDE707C7C6EADBE2CCF15044F03BD924B1B6AD47B0ECDC1361E26F00E40FC98FC1E99B7639A64D460006B27E080493F914C02D80F49750D9F30AF10F77364A266EADA3CA5A0B8F9C0</code></pre>
<pre><code>answer_with_hash = 275BF3A03306402F7DFA72ED4E2D817BB3DD2960BA0D89B592638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000C68334471841DEA570C80A4FAA55311D859A67D0F084D40648AFEA0A5121BE22E28CF3EFB6D160C52A13B31BB5B69A915FF598DBD7255E75AD0E0B15A9EA208AFCC1E8E7008575E71EBBFB2FCF3700D2269107D3DF02D82B7545A691ECC58098ECDBA37B2A0BE6374F3B3B09A52FF1871CA9CB08B1B64D49BFEA518BEE2CFD2FF755529DEAE5E300238D88754DD192E0F4055B3E6E5690B91F9912A8B727446221461CE12AB102A4D6644FCA2B7590D053C152E812F1317E7609226EE5D880E1F57F353EDB29D8F175B0E424E88E51B53BD278FBD733EA738AB1B31A0D943C32AEC019131364488C78FC1A481151A2626299A8BA60EE1B93C7ED8300D83D4A4707EA26688B738ADE93C2AE0
answer = BA0D89B592638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000C68334471841DEA570C80A4FAA55311D859A67D0F084D40648AFEA0A5121BE22E28CF3EFB6D160C52A13B31BB5B69A915FF598DBD7255E75AD0E0B15A9EA208AFCC1E8E7008575E71EBBFB2FCF3700D2269107D3DF02D82B7545A691ECC58098ECDBA37B2A0BE6374F3B3B09A52FF1871CA9CB08B1B64D49BFEA518BEE2CFD2FF755529DEAE5E300238D88754DD192E0F4055B3E6E5690B91F9912A8B727446221461CE12AB102A4D6644FCA2B7590D053C152E812F1317E7609226EE5D880E1F57F353EDB29D8F175B0E424E88E51B53BD278FBD733EA738AB1B31A0D943C32AEC019131364488C78FC1A481151A2626299A8BA60EE1B93C7ED8300D83D4A4707EA26688B738ADE93C2AE0</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 8B FC FA 60 96 C5 00 12 F6 4C 5A DF
0010 | 97 62 83 FB E3 0B C5 CB 5D 67 71 98 50 5F 75 42
0020 | 9F 74 75 BF 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 92 63 8E CF 53 C6 21 AC 5A 56 9F A7
0010 | D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1 4C F7 5A 8A
0020 | 5D 4F 9E 5C 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 = BA0D89B58BFCFA6096C50012F64C5ADF976283FBE30BC5CB5D677198505F75429F7475B
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 | A5 55 F3 96 88 11 11 62 5E 62 DB 07 33 DA D3 7C
0140 | E5 F7 80 62 BC 0D CB D1 1B 12 E3 70 9B AB 97 E1
0150 | EE 7F 78 94 DB 79 A0 9B 84 59 B7 AC E3 2A AB 6D
0160 | 6F 2F D1 89 5E EF 77 46 11 5F 59 4E 8D E4 8D A2
0170 | DD 30 CE 26 F6 5C 83 65 94 53 92 B9 59 B6 AF A5
0180 | 53 5C 34 91 9A 76 F2 A9 4E C0 4C 8F E7 08 53 92
0190 | 91 BA 4E 28 C1 C2 45 DB F3 62 FC 7B 35 6B 30 EE
01A0 | 53 EC 73 5F 28 98 5A D1 86 97 64 61 A1 38 EC 08
01B0 | 3A 00 95 31 6B 7C 3E 36 76 A1 65 E0 93 1C BC 78
01C0 | F7 8D DE 60 13 1B BE E8 D1 1B 3A C5 3D DA 3A D5
01D0 | A9 38 32 B6 44 A6 72 E3 90 95 9A 36 C5 89 DC 89
01E0 | 01 BF EE AA 29 56 F5 8A C8 D7 68 86 3F B5 3C B5
01F0 | 5E A7 C3 1F DE 70 7C 7C 6E AD BE 2C CF 15 04 4F
0200 | 03 BD 92 4B 1B 6A D4 7B 0E CD C1 36 1E 26 F0 0E
0210 | 40 FC 98 FC 1E 99 B7 63 9A 64 D4 60 00 6B 27 E0
0220 | 80 49 3F 91 4C 02 D8 0F 49 75 0D 9F 30 AF 10 F7
0230 | 73 64 A2 66</code></pre>
0130 | 0C 68 33 44 71 84 1D EA 57 0C 80 A4 FA A5 53 11
0140 | D8 59 A6 7D 0F 08 4D 40 64 8A FE A0 A5 12 1B E2
0150 | 2E 28 CF 3E FB 6D 16 0C 52 A1 3B 31 BB 5B 69 A9
0160 | 15 FF 59 8D BD 72 55 E7 5A D0 E0 B1 5A 9E A2 08
0170 | AF CC 1E 8E 70 08 57 5E 71 EB BF B2 FC F3 70 0D
0180 | 22 69 10 7D 3D F0 2D 82 B7 54 5A 69 1E CC 58 09
0190 | 8E CD BA 37 B2 A0 BE 63 74 F3 B3 B0 9A 52 FF 18
01A0 | 71 CA 9C B0 8B 1B 64 D4 9B FE A5 18 BE E2 CF D2
01B0 | FF 75 55 29 DE AE 5E 30 02 38 D8 87 54 DD 19 2E
01C0 | 0F 40 55 B3 E6 E5 69 0B 91 F9 91 2A 8B 72 74 46
01D0 | 22 14 61 CE 12 AB 10 2A 4D 66 44 FC A2 B7 59 0D
01E0 | 05 3C 15 2E 81 2F 13 17 E7 60 92 26 EE 5D 88 0E
01F0 | 1F 57 F3 53 ED B2 9D 8F 17 5B 0E 42 4E 88 E5 1B
0200 | 53 BD 27 8F BD 73 3E A7 38 AB 1B 31 A0 D9 43 C3
0210 | 2A EC 01 91 31 36 44 88 C7 8F C1 A4 81 15 1A 26
0220 | 26 29 9A 8B A6 0E E1 B9 3C 7E D8 30 0D 83 D4 A4
0230 | 70 7E A2 66</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B58BFCFA6096C50012F64C5ADF976283FBE30BC5CB5D677198505F75429F7475B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>8BFCFA6096C50012F64C5ADF976283FB</code></td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>E30BC5CB5D677198505F75429F7475BF</code></td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B58BFCFA6096C50012F64C5ADF976283FBE30BC5CB5D677198505F75429F7475B
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE000100A555F396881111625E62DB07</code> <code>33DAD37CE5F78062BC0DCBD11B12E370</code> <code>9BAB97E1EE7F7894DB79A09B8459B7AC</code> <code>E32AAB6D6F2FD1895EEF7746115F594E</code> <code>8DE48DA2DD30CE26F65C8365945392B9</code> <code>59B6AFA5535C34919A76F2A94EC04C8F</code> <code>E708539291BA4E28C1C245DBF362FC7B</code> <code>356B30EE53EC735F28985AD186976461</code> <code>A138EC083A0095316B7C3E3676A165E0</code> <code>931CBC78F78DDE60131BBEE8D11B3AC5</code> <code>3DDA3AD5A93832B644A672E390959A36</code> <code>C589DC8901BFEEAA2956F58AC8D76886</code> <code>3FB53CB55EA7C31FDE707C7C6EADBE2C</code> <code>CF15044F03BD924B1B6AD47B0ECDC136</code> <code>1E26F00E40FC98FC1E99B7639A64D460</code> <code>006B27E080493F914C02D80F49750D9F</code><br> <code>30AF10F7</code></td>
<td><code>FE0001000C68334471841DEA570C80A4</code> <code>FAA55311D859A67D0F084D40648AFEA0</code> <code>A5121BE22E28CF3EFB6D160C52A13B31</code> <code>BB5B69A915FF598DBD7255E75AD0E0B1</code> <code>5A9EA208AFCC1E8E7008575E71EBBFB2</code> <code>FCF3700D2269107D3DF02D82B7545A69</code> <code>1ECC58098ECDBA37B2A0BE6374F3B3B0</code> <code>9A52FF1871CA9CB08B1B64D49BFEA518</code> <code>BEE2CFD2FF755529DEAE5E300238D887</code> <code>54DD192E0F4055B3E6E5690B91F9912A</code> <code>8B727446221461CE12AB102A4D6644FC</code> <code>A2B7590D053C152E812F1317E7609226</code> <code>EE5D880E1F57F353EDB29D8F175B0E42</code> <code>4E88E51B53BD278FBD733EA738AB1B31</code> <code>A0D943C32AEC019131364488C78FC1A4</code> <code>81151A2626299A8BA60EE1B93C7ED830</code><br> <code>0D83D4A4</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>7364A266</code> (1721918579 in decimal)</td>
<td><code>707EA266</code> (1721925232 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B58BFCFA6096C50012F64C5ADF976283FBE30BC5CB5D677198505F75429F7475B
<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 = 5119C4A04A88A4B4DF4FF479D64F8C0818F3CE62A12CDB2406E487A0E7B9EB9C642BCE244979A9878ADF4ED846F1CABA1EAF9B22B819CB8BC2487EAD668AA6F574E6B76E2D670B7584CCA56B8AA53EA8E0C74A71E0880FB359F5E22BE83036579BD90F1907D674003D544C3D1B08148C22360CAE4020C463D7CC1D10DE27C34C4BACDE653FFDF06259CCAEEF8F02A1DA5DBC347F7459CBFF3A9E5CF01E89AE56E0E5E245C1814C2ADC71A937EAFBBAF28469D88E871F0119D39ECFA5B142C41B396679CD3E150E6A2F8912661294E3A3CD31F913A733D1DCC4C6796F7765AD9D6AEC96796D7681DC1A8EE223B1504F35412255C098579A3E3ECDE0B0E5AD94AD</code></pre>
<pre><code>b = 1840B50088DA0DC4578C07F6EB06641EF319E5E2D020EAB4EC8751AAE39667B4D657CFB741A2A2B54A3FFA5FF91134BE2035C31855E3FCA3279852E0797C7D0B1CA1DD904D15B82E26C220276DBBF9FCC701EF6F995B5719C9AE7DB57BCE98FA4B7E3D60F6D432F4AC844A43554181998D259A61DE4EB2F523AA6DAD34A9AB0F8648F109F111F0BC617CEE7D538C7B8A36258A2F5C372D58D25A42DF7B8CB0C8D7C07955FAEAAA126F16D97BBEDF961839E52F2D4273D7AAF2A1B285922EA87FC0ECF136FBA0C8AD99318BCFED07E58590F67016B4E8B3CC8A99EA7C01EF72FCF907E5D7A73E066B65E93ECDEB53D552386BB007F2ED31070F2F041946227E3C</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 = 77C1344D47A63FC14017EE1D34F5AA90B878D1F9BBBDA2374190AD70682755193721BE123E877E9D23E01570790DA8595515C1487523BBD82CC814A07D7F4BE0892A485553C42187569EBA0DDBEC63E7F19D7A965C5AAF2D8751439912D54E5677C2A651C3FC018C6798CBE9640E4868CE28FBE94BAA5FD60BB63698AF567751465EE7B37B4F01AD82D9C68822173CB0AB40CBB5B8675ABB991448DDA990F05DCD41CA196AFBE1AB4CE3D9F698C543EFF5B25873B079F1F50D3EF23A48F82980CA5869E5B643284CC606AE420A58D2285ED935A0644A860FA40E42D5F6F480D9043840CF63166B4DE49F0681ACBE3243F861B1F41C818F71EC1D6924FD62D1E5</code></pre>
<pre><code>g_b = 6891C7A59696CDB5942FD0A8B5FAA47FE78B5B0EA12ED2FB72907BE893C82CBD079C15FB57D2E8AA2FA9137CADE959E8D33788335F9C47724E1A4E69D6847BC801BEFB9E4B76A5576EC51C0F03CA867FBDE38B968B794C3AC46E8778B62DCCAC92765FB26D60EFB3B744E39E61576AA9DC0005B67ED889B38215CE6D2465EFA4F5D61D79960E7A4AA148CFCE9034425149D35AEEE5810E959A570EA8BEBF211EEC7F209F4780FC480D0C0F0047572B4F589A25F3C388F46AA4C3919F1F027DA968BDF28EACE21F53F51861CDCC4174B761A6FF9B4BC90A614C3722EB6953E6E11A3368F20BBD05A286BDB71E8F95C3A6080BBB8A6737095B7E7B63B14D14AF16</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 8B FC FA 60 96 C5 00 12 F6 4C 5A DF
0010 | 97 62 83 FB E3 0B C5 CB 5D 67 71 98 50 5F 75 42
0020 | 9F 74 75 BF 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 77 C1 34 4D 47 A6 3F C1 40 17 EE 1D 34 F5 AA 90
0040 | B8 78 D1 F9 BB BD A2 37 41 90 AD 70 68 27 55 19
0050 | 37 21 BE 12 3E 87 7E 9D 23 E0 15 70 79 0D A8 59
0060 | 55 15 C1 48 75 23 BB D8 2C C8 14 A0 7D 7F 4B E0
0070 | 89 2A 48 55 53 C4 21 87 56 9E BA 0D DB EC 63 E7
0080 | F1 9D 7A 96 5C 5A AF 2D 87 51 43 99 12 D5 4E 56
0090 | 77 C2 A6 51 C3 FC 01 8C 67 98 CB E9 64 0E 48 68
00A0 | CE 28 FB E9 4B AA 5F D6 0B B6 36 98 AF 56 77 51
00B0 | 46 5E E7 B3 7B 4F 01 AD 82 D9 C6 88 22 17 3C B0
00C0 | AB 40 CB B5 B8 67 5A BB 99 14 48 DD A9 90 F0 5D
00D0 | CD 41 CA 19 6A FB E1 AB 4C E3 D9 F6 98 C5 43 EF
00E0 | F5 B2 58 73 B0 79 F1 F5 0D 3E F2 3A 48 F8 29 80
00F0 | CA 58 69 E5 B6 43 28 4C C6 06 AE 42 0A 58 D2 28
0100 | 5E D9 35 A0 64 4A 86 0F A4 0E 42 D5 F6 F4 80 D9
0110 | 04 38 40 CF 63 16 6B 4D E4 9F 06 81 AC BE 32 43
0120 | F8 61 B1 F4 1C 81 8F 71 EC 1D 69 24 FD 62 D1 E5</code></pre>
<pre><code>0000 | 54 B6 43 66 92 63 8E CF 53 C6 21 AC 5A 56 9F A7
0010 | D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1 4C F7 5A 8A
0020 | 5D 4F 9E 5C 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 68 91 C7 A5 96 96 CD B5 94 2F D0 A8 B5 FA A4 7F
0040 | E7 8B 5B 0E A1 2E D2 FB 72 90 7B E8 93 C8 2C BD
0050 | 07 9C 15 FB 57 D2 E8 AA 2F A9 13 7C AD E9 59 E8
0060 | D3 37 88 33 5F 9C 47 72 4E 1A 4E 69 D6 84 7B C8
0070 | 01 BE FB 9E 4B 76 A5 57 6E C5 1C 0F 03 CA 86 7F
0080 | BD E3 8B 96 8B 79 4C 3A C4 6E 87 78 B6 2D CC AC
0090 | 92 76 5F B2 6D 60 EF B3 B7 44 E3 9E 61 57 6A A9
00A0 | DC 00 05 B6 7E D8 89 B3 82 15 CE 6D 24 65 EF A4
00B0 | F5 D6 1D 79 96 0E 7A 4A A1 48 CF CE 90 34 42 51
00C0 | 49 D3 5A EE E5 81 0E 95 9A 57 0E A8 BE BF 21 1E
00D0 | EC 7F 20 9F 47 80 FC 48 0D 0C 0F 00 47 57 2B 4F
00E0 | 58 9A 25 F3 C3 88 F4 6A A4 C3 91 9F 1F 02 7D A9
00F0 | 68 BD F2 8E AC E2 1F 53 F5 18 61 CD CC 41 74 B7
0100 | 61 A6 FF 9B 4B C9 0A 61 4C 37 22 EB 69 53 E6 E1
0110 | 1A 33 68 F2 0B BD 05 A2 86 BD B7 1E 8F 95 C3 A6
0120 | 08 0B BB 8A 67 37 09 5B 7E 7B 63 B1 4D 14 AF 16</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 = BA0D89B58BFCFA6096C50012F64C5ADF976283FBE30BC5CB5D677198505F75429F7475B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>8BFCFA6096C50012F64C5ADF976283FB</code></td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>E30BC5CB5D677198505F75429F7475BF</code></td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE00010077C1344D47A63FC14017EE1D</code> <code>34F5AA90B878D1F9BBBDA2374190AD70</code> <code>682755193721BE123E877E9D23E01570</code> <code>790DA8595515C1487523BBD82CC814A0</code> <code>7D7F4BE0892A485553C42187569EBA0D</code> <code>DBEC63E7F19D7A965C5AAF2D87514399</code> <code>12D54E5677C2A651C3FC018C6798CBE9</code> <code>640E4868CE28FBE94BAA5FD60BB63698</code> <code>AF567751465EE7B37B4F01AD82D9C688</code> <code>22173CB0AB40CBB5B8675ABB991448DD</code> <code>A990F05DCD41CA196AFBE1AB4CE3D9F6</code> <code>98C543EFF5B25873B079F1F50D3EF23A</code> <code>48F82980CA5869E5B643284CC606AE42</code> <code>0A58D2285ED935A0644A860FA40E42D5</code> <code>F6F480D9043840CF63166B4DE49F0681</code> <code>ACBE3243F861B1F41C818F71EC1D6924</code><br> <code>FD62D1E5</code></td>
<td><code>FE0001006891C7A59696CDB5942FD0A8</code> <code>B5FAA47FE78B5B0EA12ED2FB72907BE8</code> <code>93C82CBD079C15FB57D2E8AA2FA9137C</code> <code>ADE959E8D33788335F9C47724E1A4E69</code> <code>D6847BC801BEFB9E4B76A5576EC51C0F</code> <code>03CA867FBDE38B968B794C3AC46E8778</code> <code>B62DCCAC92765FB26D60EFB3B744E39E</code> <code>61576AA9DC0005B67ED889B38215CE6D</code> <code>2465EFA4F5D61D79960E7A4AA148CFCE</code> <code>9034425149D35AEEE5810E959A570EA8</code> <code>BEBF211EEC7F209F4780FC480D0C0F00</code> <code>47572B4F589A25F3C388F46AA4C3919F</code> <code>1F027DA968BDF28EACE21F53F51861CD</code> <code>CC4174B761A6FF9B4BC90A614C3722EB</code> <code>6953E6E11A3368F20BBD05A286BDB71E</code> <code>8F95C3A6080BBB8A6737095B7E7B63B1</code><br> <code>4D14AF16</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 = BA0D89B58BFCFA6096C50012F64C5ADF976283FBE30BC5CB5D677198505F75429F7475B
<!-- 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 = 54B643668BFCFA6096C50012F64C5ADF976283FBE30BC5CB5D677198505F75429F7475BF0000000000000000FE00010077C1344D47A63FC14017EE1D34F5AA90B878D1F9BBBDA2374190AD70682755193721BE123E877E9D23E01570790DA8595515C1487523BBD82CC814A07D7F4BE0892A485553C42187569EBA0DDBEC63E7F19D7A965C5AAF2D8751439912D54E5677C2A651C3FC018C6798CBE9640E4868CE28FBE94BAA5FD60BB63698AF567751465EE7B37B4F01AD82D9C68822173CB0AB40CBB5B8675ABB991448DDA990F05DCD41CA196AFBE1AB4CE3D9F698C543EFF5B25873B079F1F50D3EF23A48F82980CA5869E5B643284CC606AE420A58D2285ED935A0644A860FA40E42D5F6F480D9043840CF63166B4DE49F0681ACBE3243F861B1F41C818F71EC1D6924FD62D1E5
padding = 5E397C84C1E846D9EC94E56F
tmp_aes_key = F05610AA46B5986B74F2E9DE05DC9CC1BE6D92A6C893B252B49D8E05B46DABFA
tmp_aes_iv = 082C119CE869890D52BEE3A7015B770B0AC0B012A2BDB09DCB420CE19EBFDF4C</code></pre>
<pre><code>data = 54B6436692638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5C0000000000000000FE0001006891C7A59696CDB5942FD0A8B5FAA47FE78B5B0EA12ED2FB72907BE893C82CBD079C15FB57D2E8AA2FA9137CADE959E8D33788335F9C47724E1A4E69D6847BC801BEFB9E4B76A5576EC51C0F03CA867FBDE38B968B794C3AC46E8778B62DCCAC92765FB26D60EFB3B744E39E61576AA9DC0005B67ED889B38215CE6D2465EFA4F5D61D79960E7A4AA148CFCE9034425149D35AEEE5810E959A570EA8BEBF211EEC7F209F4780FC480D0C0F0047572B4F589A25F3C388F46AA4C3919F1F027DA968BDF28EACE21F53F51861CDCC4174B761A6FF9B4BC90A614C3722EB6953E6E11A3368F20BBD05A286BDB71E8F95C3A6080BBB8A6737095B7E7B63B14D14AF16
padding = 13EB1DB04EB9EDDD42C44712
tmp_aes_key = 9B2DB3607E4868AB72C98C0FAA723450C93F5D03DC01F3FD919CF5E015C70210
tmp_aes_iv = 717BECED312445E965C2A534DFA9A07681B16D91A159E96CF2CB727F38DD223E</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 = A652F3A948D94C22F2277451692467980A87FB3ECBB23D54C59D68AFB7C887E84079E089F9ED473C77C58A40533C0162B18E173429D45E74D199BB3202BE403B3A80BB6B5CD80F3ACC98811F63BB58079371627B2A55151856F724CC1036E4DFBD11F8A07FAD9606EEE04E40B9A7B9C76518D66F46D1BC232DE813DE89F7C7ACE00887E3D70DEBFD4ADD3CE826E26B641C3F10B7D1DA73431D4EA253590F89DF2E48CB4AA696C4DF33F17C7FFC1D4132CA12A3B63D37CB58179ABB3BE4DCE0763172349EFFACA8E73F957B9DD79577901FE2FF678807D395B9FDB86D7AB5B80279B4DD011F211E999DB948224E691AFB2FDA89A9B68529333C4BDD796DA931B031F834038BA7C0DB10D554E157F71537DBA4EB8A5839CC789B75EFA5A5A244C5ABC1BBFD85434C94981142077C7F356E553BBBD886A7729E03D1ADAEEB4244FDAF5847060507CFD82DF11A7ADE9B44F1</code></pre>
<pre><code>encrypted_data = 57FB7D62F641FB4AC199BED27A3C1231DF85D99079CB4EE37A289F5C3367409FBF957C33F98259512A879321EFAA6A9AC948B905E02E50675F026C2951EBF7BE5C8F919C7DDA0E65EF616F2E458DC5776CF61EA4D56EC6BCB249C4485CAE4C3E0132E4EDF4507F8C261C9A702EDB7358A0A9DA3327A8AE722E617E28A59BC3CE85F565D443C7CE753C51C6D8D0D334DFDA0082A647CE51B351A8F21D8C20FEFE83B6C5DD7B832024285DC9A8D2388DB4D28A5EC5C89E883B6C7D8128AE5F9384D4D69E563F0D3E2CE696F84D8F3E3634AB290C58C44226EBDD966D9F6119E1AA3B712BFFDF7865E9B335634DFF768B8D71AA37FBB223A7DEEF5E8BAD8FCB25768573BF66BE741D7A204912C9C6AF77409F7036D8D4C990AE0B366516A8330370EDB22F363EFB37727F42C2933255E221F13C9E21F8F4666741F46850A3975317BA74671356AA736581FA0DD241309D41</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 84 EC 06 00 73 64 A2 66
0010 | 78 01 00 00 1F 5F 04 F5 8B FC FA 60 96 C5 00 12
0020 | F6 4C 5A DF 97 62 83 FB E3 0B C5 CB 5D 67 71 98
0030 | 50 5F 75 42 9F 74 75 BF FE 50 01 00 A6 52 F3 A9
0040 | 48 D9 4C 22 F2 27 74 51 69 24 67 98 0A 87 FB 3E
0050 | CB B2 3D 54 C5 9D 68 AF B7 C8 87 E8 40 79 E0 89
0060 | F9 ED 47 3C 77 C5 8A 40 53 3C 01 62 B1 8E 17 34
0070 | 29 D4 5E 74 D1 99 BB 32 02 BE 40 3B 3A 80 BB 6B
0080 | 5C D8 0F 3A CC 98 81 1F 63 BB 58 07 93 71 62 7B
0090 | 2A 55 15 18 56 F7 24 CC 10 36 E4 DF BD 11 F8 A0
00A0 | 7F AD 96 06 EE E0 4E 40 B9 A7 B9 C7 65 18 D6 6F
00B0 | 46 D1 BC 23 2D E8 13 DE 89 F7 C7 AC E0 08 87 E3
00C0 | D7 0D EB FD 4A DD 3C E8 26 E2 6B 64 1C 3F 10 B7
00D0 | D1 DA 73 43 1D 4E A2 53 59 0F 89 DF 2E 48 CB 4A
00E0 | A6 96 C4 DF 33 F1 7C 7F FC 1D 41 32 CA 12 A3 B6
00F0 | 3D 37 CB 58 17 9A BB 3B E4 DC E0 76 31 72 34 9E
0100 | FF AC A8 E7 3F 95 7B 9D D7 95 77 90 1F E2 FF 67
0110 | 88 07 D3 95 B9 FD B8 6D 7A B5 B8 02 79 B4 DD 01
0120 | 1F 21 1E 99 9D B9 48 22 4E 69 1A FB 2F DA 89 A9
0130 | B6 85 29 33 3C 4B DD 79 6D A9 31 B0 31 F8 34 03
0140 | 8B A7 C0 DB 10 D5 54 E1 57 F7 15 37 DB A4 EB 8A
0150 | 58 39 CC 78 9B 75 EF A5 A5 A2 44 C5 AB C1 BB FD
0160 | 85 43 4C 94 98 11 42 07 7C 7F 35 6E 55 3B BB D8
0170 | 86 A7 72 9E 03 D1 AD AE EB 42 44 FD AF 58 47 06
0180 | 05 07 CF D8 2D F1 1A 7A DE 9B 44 F1</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 1C 07 05 00 70 7E A2 66
0010 | 78 01 00 00 1F 5F 04 F5 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1
0030 | 4C F7 5A 8A 5D 4F 9E 5C FE 50 01 00 57 FB 7D 62
0040 | F6 41 FB 4A C1 99 BE D2 7A 3C 12 31 DF 85 D9 90
0050 | 79 CB 4E E3 7A 28 9F 5C 33 67 40 9F BF 95 7C 33
0060 | F9 82 59 51 2A 87 93 21 EF AA 6A 9A C9 48 B9 05
0070 | E0 2E 50 67 5F 02 6C 29 51 EB F7 BE 5C 8F 91 9C
0080 | 7D DA 0E 65 EF 61 6F 2E 45 8D C5 77 6C F6 1E A4
0090 | D5 6E C6 BC B2 49 C4 48 5C AE 4C 3E 01 32 E4 ED
00A0 | F4 50 7F 8C 26 1C 9A 70 2E DB 73 58 A0 A9 DA 33
00B0 | 27 A8 AE 72 2E 61 7E 28 A5 9B C3 CE 85 F5 65 D4
00C0 | 43 C7 CE 75 3C 51 C6 D8 D0 D3 34 DF DA 00 82 A6
00D0 | 47 CE 51 B3 51 A8 F2 1D 8C 20 FE FE 83 B6 C5 DD
00E0 | 7B 83 20 24 28 5D C9 A8 D2 38 8D B4 D2 8A 5E C5
00F0 | C8 9E 88 3B 6C 7D 81 28 AE 5F 93 84 D4 D6 9E 56
0100 | 3F 0D 3E 2C E6 96 F8 4D 8F 3E 36 34 AB 29 0C 58
0110 | C4 42 26 EB DD 96 6D 9F 61 19 E1 AA 3B 71 2B FF
0120 | DF 78 65 E9 B3 35 63 4D FF 76 8B 8D 71 AA 37 FB
0130 | B2 23 A7 DE EF 5E 8B AD 8F CB 25 76 85 73 BF 66
0140 | BE 74 1D 7A 20 49 12 C9 C6 AF 77 40 9F 70 36 D8
0150 | D4 C9 90 AE 0B 36 65 16 A8 33 03 70 ED B2 2F 36
0160 | 3E FB 37 72 7F 42 C2 93 32 55 E2 21 F1 3C 9E 21
0170 | F8 F4 66 67 41 F4 68 50 A3 97 53 17 BA 74 67 13
0180 | 56 AA 73 65 81 FA 0D D2 41 30 9D 41</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>84EC06007364A266</code></td>
<td><code>1C070500707EA266</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>8BFCFA6096C50012F64C5ADF976283FB</code></td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>E30BC5CB5D677198505F75429F7475BF</code></td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE500100A652F3A948D94C22F2277451</code> <code>692467980A87FB3ECBB23D54C59D68AF</code> <code>B7C887E84079E089F9ED473C77C58A40</code> <code>533C0162B18E173429D45E74D199BB32</code> <code>02BE403B3A80BB6B5CD80F3ACC98811F</code> <code>63BB58079371627B2A55151856F724CC</code> <code>1036E4DFBD11F8A07FAD9606EEE04E40</code> <code>B9A7B9C76518D66F46D1BC232DE813DE</code> <code>89F7C7ACE00887E3D70DEBFD4ADD3CE8</code> <code>26E26B641C3F10B7D1DA73431D4EA253</code> <code>590F89DF2E48CB4AA696C4DF33F17C7F</code> <code>FC1D4132CA12A3B63D37CB58179ABB3B</code> <code>E4DCE0763172349EFFACA8E73F957B9D</code> <code>D79577901FE2FF678807D395B9FDB86D</code> <code>7AB5B80279B4DD011F211E999DB94822</code> <code>4E691AFB2FDA89A9B68529333C4BDD79</code> <code>6DA931B031F834038BA7C0DB10D554E1</code> <code>57F71537DBA4EB8A5839CC789B75EFA5</code> <code>A5A244C5ABC1BBFD85434C9498114207</code> <code>7C7F356E553BBBD886A7729E03D1ADAE</code> <code>EB4244FDAF5847060507CFD82DF11A7A</code><br> <code>DE9B44F1</code></td>
<td><code>FE50010057FB7D62F641FB4AC199BED2</code> <code>7A3C1231DF85D99079CB4EE37A289F5C</code> <code>3367409FBF957C33F98259512A879321</code> <code>EFAA6A9AC948B905E02E50675F026C29</code> <code>51EBF7BE5C8F919C7DDA0E65EF616F2E</code> <code>458DC5776CF61EA4D56EC6BCB249C448</code> <code>5CAE4C3E0132E4EDF4507F8C261C9A70</code> <code>2EDB7358A0A9DA3327A8AE722E617E28</code> <code>A59BC3CE85F565D443C7CE753C51C6D8</code> <code>D0D334DFDA0082A647CE51B351A8F21D</code> <code>8C20FEFE83B6C5DD7B832024285DC9A8</code> <code>D2388DB4D28A5EC5C89E883B6C7D8128</code> <code>AE5F9384D4D69E563F0D3E2CE696F84D</code> <code>8F3E3634AB290C58C44226EBDD966D9F</code> <code>6119E1AA3B712BFFDF7865E9B335634D</code> <code>FF768B8D71AA37FBB223A7DEEF5E8BAD</code> <code>8FCB25768573BF66BE741D7A204912C9</code> <code>C6AF77409F7036D8D4C990AE0B366516</code> <code>A8330370EDB22F363EFB37727F42C293</code> <code>3255E221F13C9E21F8F4666741F46850</code> <code>A3975317BA74671356AA736581FA0DD2</code><br> <code>41309D41</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 = 48C943699A50A2677F9ED3E5E4D4EFBCC83C0578F739092CDE6D8E52581ECCEB3FDAF1E7B9A368D2B6A31182907C3DBE6B1873C0EBC0FCC34820BF2208AA1CDD0000647DB09BEAEEF1D631BE8F130E84AEE5ABBC7C7D2D80669D01FADF18512376EFDC7A0EF58502E31BCC174BF2ED9B6262825791F09FB2808FB9783628E67BB02BCE6EF83C3107B87CF8D64C41AE2DB3CC9486D7D4C4FD3B8F74298D2A462AFC37999BF3BF054942B459429DB1F6C4D36C0948A10720B5BF025A3A60475150005E18DB7A439632BCA2BA591F1C3F3AE65E80FC6245CAF5FF4F5F59F65FB354C48302BFCA0DEE2D64C7E56A52E0E11CCA204E4CE32F6858C976835F4786E167</code></pre>
<pre><code>auth_key = 2EDAB8AA240CECA596ED70730B81372D914A08B43581358B3AFAB5F35D59334C00CFD1716655045A595310552C162496C67CD53CC2C3724A666D89B3BE30E95B314281DD39C9BEB1BC2BCCC6D26696532019BCDF2CCE825A58392F288FE979E1AD55FBE4A37E3A4CF121CC7EDF525442EDB8A71A11D36097F82E1E181B5251B65B91D300898C59AA4FB471CC50052D8692DB527BF4E5D0B3C73106FE1AF6143CA57CCA3D281EAEB624B456C4A15646976FEF93E2A2DECE0C8909FEF3E98443AC9DE79153934423125C4A121275471F6F785A793B0E45A92687FB2897D82480825606FA38F0C68D4A1A6F67507E9731778CDEE9B2119A789CB4DAF9D1A5EF41D1</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 34 7A CC 73 64 A2 66
0010 | A0 00 00 00 34 F7 CB 3B 8B FC FA 60 96 C5 00 12
0020 | F6 4C 5A DF 97 62 83 FB E3 0B C5 CB 5D 67 71 98
0030 | 50 5F 75 42 9F 74 75 BF 18 30 B1 37 56 0A 3F A0
0040 | F6 07 2D 3D EF 86 B6 72</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 C4 15 0E 71 7E A2 66
0010 | A0 00 00 00 34 F7 CB 3B 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1
0030 | 4C F7 5A 8A 5D 4F 9E 5C 23 0B 1D 76 15 E4 CF 65
0040 | A1 99 33 B0 1D 8C 24 6D</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;</code></pre>
<table class="table">
@ -817,7 +817,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01347ACC7364A266</code></td>
<td><code>01C4150E717EA266</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>8BFCFA6096C50012F64C5ADF976283FB</code></td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>E30BC5CB5D677198505F75429F7475BF</code></td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>1830B137560A3FA0F6072D3DEF86B672</code></td>
<td><code>230B1D7615E4CF65A19933B01D8C246D</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

@ -86,7 +86,7 @@
<tbody>
<tr>
<td><a href="/method/messages.getMyStickers">messages.getMyStickers</a></td>
<td>Fetch <a href="/api/stickers">stickerset owned by the current user</a>.</td>
<td>Fetch all <a href="/api/stickers">stickersets »</a> owned by the current user.</td>
</tr>
</tbody>
</table>