Update content of files

This commit is contained in:
GitHub Action 2024-06-25 20:08:25 +00:00
parent 3445b817e1
commit cc23da0ccb
48 changed files with 303 additions and 299 deletions

View file

@ -2,12 +2,12 @@
<html class="">
<head>
<meta charset="utf-8">
<title>Channel boosts</title>
<title>Channel and supergroup boosts</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.">
<meta property="og:title" content="Channel boosts">
<meta property="description" content="Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.">
<meta property="og:title" content="Channel and supergroup boosts">
<meta property="og:image" content="">
<meta property="og:description" content="Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.">
<meta property="og:description" content="Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.">
<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">
@ -39,13 +39,13 @@
<div class="container clearfix">
<div class="dev_page">
<div id="dev_page_content_wrap" class=" ">
<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="/api/boost" >Channel boosts</a></li></ul></div>
<h1 id="dev_page_title">Channel boosts</h1>
<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="/api/boost" >Channel and supergroup boosts</a></li></ul></div>
<h1 id="dev_page_title">Channel and supergroup boosts</h1>
<div id="dev_page_content"><!-- scroll_nav -->
<p><a href="/api/premium">Telegram Premium</a> users can grant their favorite channels additional features like the ability to post <a href="/api/stories">stories</a> by giving them <strong>boosts</strong>. </p>
<p>Channels level up as they gain more boosts and for each level, they gain additional features. </p>
<p><a href="/api/premium">Telegram Premium</a> users can grant their favorite channels and supergroups additional features like the ability to post <a href="/api/stories">stories</a> by giving them <strong>boosts</strong>. </p>
<p>Channels and supergroups level up as they gain more boosts and for each level, they gain additional features. </p>
<p>Additionally, channel admins may gain even more boosts by starting <a href="/api/giveaways">giveaways »</a>. </p>
<p>The maximum possible boost level for a channel is specified in the <a href="/api/config#boosts-channel-level-max">boosts_channel_level_max</a> config key.</p>
<p>Schema:</p>
@ -73,17 +73,17 @@
<a href='/method/premium.getUserBoosts'>premium.getUserBoosts</a>#39854d1f peer:<a href='/type/InputPeer'>InputPeer</a> user_id:<a href='/type/InputUser'>InputUser</a> = <a href='/type/premium.BoostsList'>premium.BoostsList</a>;
<a href='/method/premium.getBoostsList'>premium.getBoostsList</a>#60f67660 flags:<a href='/type/%23'>#</a> gifts:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> offset:<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/premium.BoostsList'>premium.BoostsList</a>;</code></pre>
<p>Each user has a certain number of boost slots that can be assigned to channels: the precise number depends on whether they bought or were gifted a <a href="/api/premium">Premium</a> subscription, and can be fetched using <a href="/method/premium.getMyBoosts">premium.getMyBoosts</a>, along with info about the channels currently occupying each slot, if any. </p>
<p>Each user has a certain number of boost slots that can be assigned to channels and supergroups: the precise number depends on whether they bought or were gifted a <a href="/api/premium">Premium</a> subscription, and can be fetched using <a href="/method/premium.getMyBoosts">premium.getMyBoosts</a>, along with info about the channels and supergroups currently occupying each slot, if any. </p>
<p><a href="/api/premium#gifting-telegram-premium">Gifting a Telegram Premium</a> subscription to another user will create <a href="/api/config#boosts-per-sent-gift">boosts_per_sent_gift</a> new boost slots for us, and one boost slot for the destination user. </p>
<p>Use <a href="/method/premium.applyBoost">premium.applyBoost</a> to assign some of your boost slots to a channel. </p>
<p>Use <a href="/method/premium.applyBoost">premium.applyBoost</a> to assign some of your boost slots to a channel or supergroup. </p>
<p>A <code>PREMIUM_ACCOUNT_REQUIRED</code> error will be returned if the current account does not have a <a href="/api/premium">Telegram Premium</a> subscription.<br>
A <code>BOOST_NOT_MODIFIED</code> RPC error will be returned when calling any of the two methods if the user is already boosting the specified channel with the same slots. </p>
<p>After assigning a slot a channel, the user may not change the boosted channel for that slot for a certain cooldown period, specified in the <a href="/constructor/myBoost">myBoost</a>.<code>cooldown_until_date</code> field: if the cooldown period isn't over yet, the method will return a 420 <code>FLOOD_WAIT_X</code> error, indicating the number of seconds left before a different channel can be boosted. </p>
<p>Users may also invoke <a href="/method/premium.getBoostsStatus">premium.getBoostsStatus</a>, to get the current boost status of a channel as a <a href="/constructor/premium.boostsStatus">premium.boostsStatus</a> constructor, check out the <a href="/constructor/premium.boostsStatus">constructor page</a> for more info.</p>
<p>Channel administrators may invoke <a href="/method/premium.getBoostsList">premium.getBoostsList</a> to fetch the list of users currently boosting the channel, and <a href="/method/premium.getUserBoosts">premium.getUserBoosts</a> to get info about the boosts sent to a channel by a specific user.</p>
A <code>BOOST_NOT_MODIFIED</code> RPC error will be returned when calling any of the two methods if the user is already boosting the specified channel or supergroup with the same slots. </p>
<p>After assigning a slot a channel or supergroup, the user may not change the boosted channel or supergroup for that slot for a certain cooldown period, specified in the <a href="/constructor/myBoost">myBoost</a>.<code>cooldown_until_date</code> field: if the cooldown period isn't over yet, the method will return a 420 <code>FLOOD_WAIT_X</code> error, indicating the number of seconds left before a different channel or supergroup can be boosted. </p>
<p>Users may also invoke <a href="/method/premium.getBoostsStatus">premium.getBoostsStatus</a>, to get the current boost status of a channel or supergroup as a <a href="/constructor/premium.boostsStatus">premium.boostsStatus</a> constructor, check out the <a href="/constructor/premium.boostsStatus">constructor page</a> for more info.</p>
<p>Channel or supergroup administrators may invoke <a href="/method/premium.getBoostsList">premium.getBoostsList</a> to fetch the list of users currently boosting the channel or supergroup, and <a href="/method/premium.getUserBoosts">premium.getUserBoosts</a> to get info about the boosts sent to a channel or supergroup by a specific user.</p>
<h3><a class="anchor" href="#features" id="features" name="features"><i class="anchor-icon"></i></a>Features</h3>
<h4><a class="anchor" href="#posting-stories-as-a-channel" id="posting-stories-as-a-channel" name="posting-stories-as-a-channel"><i class="anchor-icon"></i></a>Posting stories as a channel</h4>
<p>With each boost, channels can post 1 additional story per day to their subscribers' story feeds.</p>
<h4><a class="anchor" href="#posting-stories-as-a-channel-or-supergroup" id="posting-stories-as-a-channel-or-supergroup" name="posting-stories-as-a-channel-or-supergroup"><i class="anchor-icon"></i></a>Posting stories as a channel or supergroup</h4>
<p>With each boost, channels and supergroups can post 1 additional story per day to their subscribers' story feeds.</p>
<pre><code><a href='/constructor/inputPeerChannel'>inputPeerChannel</a>#27bcbbfc channel_id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>;
<a href='/constructor/messages.chats'>messages.chats</a>#64ff9fd5 chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; = <a href='/type/messages.Chats'>messages.Chats</a>;
@ -92,7 +92,7 @@ A <code>BOOST_NOT_MODIFIED</code> RPC error will be returned when calling any of
<a href='/method/stories.getChatsToSend'>stories.getChatsToSend</a>#a56a8b60 = <a href='/type/messages.Chats'>messages.Chats</a>;</code></pre>
<p>Everything works exactly the same as when <a href="/api/stories#posting-stories">posting stories as a user</a>, with the only difference that clients should pass the appropriate <a href="/constructor/inputPeerChannel">inputPeerChannel</a> instead of <a href="/constructor/inputPeerSelf">inputPeerSelf</a> to <a href="/method/stories.canSendStory">stories.canSendStory</a>, <a href="/method/stories.sendStory">stories.sendStory</a> and all the other story methods, see the <a href="/api/stories#posting-stories">main documentation »</a> for more info. </p>
<p>Use <a href="/method/stories.getChatsToSend">stories.getChatsToSend</a> to obtain a list of channels where the user can post stories; <a href="/method/stories.canSendStory">stories.canSendStory</a> must still be used before uploading a story to make sure no other limit was reached, as described in the <a href="/api/stories#posting-stories">main documentation »</a>.</p>
<p>Use <a href="/method/stories.getChatsToSend">stories.getChatsToSend</a> to obtain a list of channels or supergroups where the user can post stories; <a href="/method/stories.canSendStory">stories.canSendStory</a> must still be used before uploading a story to make sure no other limit was reached, as described in the <a href="/api/stories#posting-stories">main documentation »</a>.</p>
<h4><a class="anchor" href="#changing-message-accent-color" id="changing-message-accent-color" name="changing-message-accent-color"><i class="anchor-icon"></i></a>Changing message accent color</h4>
<p>After reaching at least the boost level specified in the <code>channel_min_level</code> field of the <a href="/constructor/help.peerColorOption">help.peerColorOption</a> constructor for the chosen palette, channels gain the ability to change their <a href="/api/colors">message accent palette »</a>. </p>
<h4><a class="anchor" href="#changing-message-accent-emoji" id="changing-message-accent-emoji" name="changing-message-accent-emoji"><i class="anchor-icon"></i></a>Changing message accent emoji</h4>

View file

@ -127,11 +127,11 @@
<p><a href="/type/Boost">Boost</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<h4><a class="anchor" href="#paymentsapplygiftcode" id="paymentsapplygiftcode" name="paymentsapplygiftcode"><i class="anchor-icon"></i></a><a href="/method/payments.applyGiftCode">payments.applyGiftCode</a></h4>
<p>Apply a <a href="/api/giveaways">Telegram Premium giftcode »</a></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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -305,8 +305,8 @@
<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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -114,7 +114,7 @@
<p>If a user enables their <strong>new_noncontact_peers_require_premium</strong> <a href="/api/privacy#global-privacy-settings">global privacy setting</a>, represented in <a href="/constructor/userFull">userFull</a>.<code>contact_require_premium</code>, only users that have a premium account, are in our contact list, or already have a private chat with them can write to them in private.</p>
<p>To easily check whether we can write to a user with this flag enabled, if we haven't yet cached all the required information (for example we don't have the <a href="/constructor/userFull">userFull</a> or history of all users while displaying the chat list in the sharing UI) this method may be invoked, passing the list of users currently visible in the UI, returning a list of booleans that directly specify whether we can or cannot write to each user.</p>
<p>This list may then be used, for example, to display a lock near the avatar of each user that we cannot write to, with an appropriate tooltip to purchase a <a href="/api/premium">Premium</a> subscription.</p>
<p>Note that this method should <strong>only</strong> be invoked if we don't have a <a href="/api/premium">Premium</a> subscription, for users whose full info (<a href="/constructor/userFull">userFull</a> + message history information + contact information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual <a href="/api/updates">updates</a>.</p>
<p>Note that this method should <strong>only</strong> be invoked if we don't have a <a href="/api/premium">Premium</a> subscription, only for users whose full info (<a href="/constructor/userFull">userFull</a> + message history information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual <a href="/api/updates">updates</a>.</p>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p></div>

View file

@ -106,8 +106,8 @@
<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="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups 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

@ -84,13 +84,13 @@
<h4><a class="anchor" href="#inputstorepaymentpremiumgiveaway" id="inputstorepaymentpremiumgiveaway" name="inputstorepaymentpremiumgiveaway"><i class="anchor-icon"></i></a><a href="/constructor/inputStorePaymentPremiumGiveaway">inputStorePaymentPremiumGiveaway</a></h4>
<p>Used to pay for a <a href="/api/giveaways">giveaway, see here »</a> for more info.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<h4><a class="anchor" href="#inputstorepaymentpremiumgiftcode" id="inputstorepaymentpremiumgiftcode" name="inputstorepaymentpremiumgiftcode"><i class="anchor-icon"></i></a><a href="/constructor/inputStorePaymentPremiumGiftCode">inputStorePaymentPremiumGiftCode</a></h4>
<p>Used to gift <a href="/api/premium">Telegram Premium</a> subscriptions only to some specific subscribers of a channel or to some of our contacts, see <a href="/api/giveaways">here »</a> for more info on giveaways and gifts.</p>
<h4><a class="anchor" href="#paymentsgetpremiumgiftcodeoptions" id="paymentsgetpremiumgiftcodeoptions" name="paymentsgetpremiumgiftcodeoptions"><i class="anchor-icon"></i></a><a href="/method/payments.getPremiumGiftCodeOptions">payments.getPremiumGiftCodeOptions</a></h4>
<p>Obtain a list of Telegram Premium <a href="/api/giveaways">giveaway/gift code »</a> options.</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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -98,10 +98,10 @@
<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="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<h4><a class="anchor" href="#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="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<h4><a class="anchor" href="#bot-payments-api" id="bot-payments-api" name="bot-payments-api"><i class="anchor-icon"></i></a><a href="/bots/payments">Bot Payments API</a></h4></div>
</div>

View file

@ -128,10 +128,10 @@
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#messagemediagiveawayresults" id="messagemediagiveawayresults" name="messagemediagiveawayresults"><i class="anchor-icon"></i></a><a href="/constructor/messageMediaGiveawayResults">messageMediaGiveawayResults</a></h4>
<p>A <a href="/api/giveaways">giveaway</a> with public winners has finished, this constructor contains info about the winners.</p>
<h4><a class="anchor" href="#channel-boosts" id="channel-boosts" name="channel-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4>
<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</p>
<h4><a class="anchor" href="#bot-payments-api" id="bot-payments-api" name="bot-payments-api"><i class="anchor-icon"></i></a><a href="/bots/payments">Bot Payments API</a></h4></div>

View file

@ -149,7 +149,7 @@
<tr>
<td><strong>from_boosts_applied</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.29?<a href="/type/int">int</a></td>
<td> </td>
<td>Supergroups only, contains the number of <a href="/api/boost">boosts</a> this user has given the current supergroup. <br>Only present for incoming messages from non-anonymous supergroup members that have boosted the supergroup. <br>Note that this counter should be locally updated for non-anonymous <em>outgoing</em> messages, according to the current value of <a href="/constructor/channelFull">channelFull</a>.<code>boosts_applied</code>, to ensure the value is correct even for messages sent by the current user before a supergroup was boosted (or after a boost has expired or the number of boosts has changed); do not update this value for incoming messages from other users, even if their boosts have changed.</td>
</tr>
<tr>
<td><strong>peer_id</strong></td>
@ -277,6 +277,10 @@
<p>Telegram allows scheduling messages</p>
<h4><a class="anchor" href="#pinned-messages" id="pinned-messages" name="pinned-messages"><i class="anchor-icon"></i></a><a href="/api/pin">Pinned messages</a></h4>
<p>Telegram allows pinning multiple messages on top of a specific chat.</p>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#channelfull" id="channelfull" name="channelfull"><i class="anchor-icon"></i></a><a href="/constructor/channelFull">channelFull</a></h4>
<p>Full info about a <a href="/api/channel#channels">channel</a>, <a href="/api/channel#supergroups">supergroup</a> or <a href="/api/channel#gigagroups">gigagroup</a>.</p>
<h4><a class="anchor" href="#saved-messages" id="saved-messages" name="saved-messages"><i class="anchor-icon"></i></a><a href="/api/saved-messages">Saved messages</a></h4>
<p>The Saved Messages chat allows users to bookmark messages and media: it's a personal cloud storage for any messages or media you may want to send or forward there.</p>
<h4><a class="anchor" href="#inputpeerself" id="inputpeerself" name="inputpeerself"><i class="anchor-icon"></i></a><a href="/constructor/inputPeerSelf">inputPeerSelf</a></h4>

View file

@ -122,11 +122,11 @@
<p><a href="/type/MessageAction">MessageAction</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<h4><a class="anchor" href="#deep-links" id="deep-links" name="deep-links"><i class="anchor-icon"></i></a><a href="/api/links">Deep links</a></h4>
<p>Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.</p>
<h4><a class="anchor" href="#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="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<h4><a class="anchor" href="#bot-payments-api" id="bot-payments-api" name="bot-payments-api"><i class="anchor-icon"></i></a><a href="/bots/payments">Bot Payments API</a></h4></div>

View file

@ -62,7 +62,7 @@
<p><a href="/type/MessageAction">MessageAction</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -82,7 +82,7 @@
<p><a href="/type/MessageAction">MessageAction</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -121,7 +121,7 @@
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -131,12 +131,12 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/MessageMedia">MessageMedia</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#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="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -101,8 +101,8 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/MyBoost">MyBoost</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></div>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -122,7 +122,7 @@
<p><a href="/type/payments.CheckedGiftCode">payments.CheckedGiftCode</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<h4><a class="anchor" href="#deep-links" id="deep-links" name="deep-links"><i class="anchor-icon"></i></a><a href="/api/links">Deep links</a></h4>

View file

@ -108,7 +108,7 @@
<p><a href="/type/payments.GiveawayInfo">payments.GiveawayInfo</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<h4><a class="anchor" href="#messagemediagiveaway" id="messagemediagiveaway" name="messagemediagiveaway"><i class="anchor-icon"></i></a><a href="/constructor/messageMediaGiveaway">messageMediaGiveaway</a></h4>
<p>Contains info about a <a href="/api/giveaways">giveaway, see here »</a> for more info.</p></div>

View file

@ -114,7 +114,7 @@
<h4><a class="anchor" href="#deep-links" id="deep-links" name="deep-links"><i class="anchor-icon"></i></a><a href="/api/links">Deep links</a></h4>
<p>Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -96,8 +96,8 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/premium.BoostsList">premium.BoostsList</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="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p></div>

View file

@ -127,11 +127,11 @@
<p><a href="/type/premium.BoostsStatus">premium.BoostsStatus</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<h4><a class="anchor" href="#deep-links" id="deep-links" name="deep-links"><i class="anchor-icon"></i></a><a href="/api/links">Deep links</a></h4>
<p>Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.</p>
<h4><a class="anchor" href="#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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -86,8 +86,8 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/premium.MyBoosts">premium.MyBoosts</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></div>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -110,7 +110,7 @@
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<h4><a class="anchor" href="#bot-payments-api" id="bot-payments-api" name="bot-payments-api"><i class="anchor-icon"></i></a><a href="/bots/payments">Bot Payments API</a></h4>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -94,7 +94,7 @@
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -88,8 +88,8 @@
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#working-with-updates" id="working-with-updates" name="working-with-updates"><i class="anchor-icon"></i></a><a href="/api/updates">Working with Updates</a></h4>
<p>How to subscribe to updates and handle them properly.</p>
<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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -307,7 +307,7 @@
<p>If a user enables their <strong>new_noncontact_peers_require_premium</strong> <a href="/api/privacy#global-privacy-settings">global privacy setting</a>, represented in <a href="/constructor/userFull">userFull</a>.<code>contact_require_premium</code>, only users that have a premium account, are in our contact list, or already have a private chat with them can write to them in private.</p>
<p>To easily check whether we can write to a user with this flag enabled, if we haven't yet cached all the required information (for example we don't have the <a href="/constructor/userFull">userFull</a> or history of all users while displaying the chat list in the sharing UI) this method may be invoked, passing the list of users currently visible in the UI, returning a list of booleans that directly specify whether we can or cannot write to each user.</p>
<p>This list may then be used, for example, to display a lock near the avatar of each user that we cannot write to, with an appropriate tooltip to purchase a <a href="/api/premium">Premium</a> subscription.</p>
<p>Note that this method should <strong>only</strong> be invoked if we don't have a <a href="/api/premium">Premium</a> subscription, for users whose full info (<a href="/constructor/userFull">userFull</a> + message history information + contact information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual <a href="/api/updates">updates</a>.</p>
<p>Note that this method should <strong>only</strong> be invoked if we don't have a <a href="/api/premium">Premium</a> subscription, only for users whose full info (<a href="/constructor/userFull">userFull</a> + message history information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual <a href="/api/updates">updates</a>.</p>
<h4><a class="anchor" href="#accountsetglobalprivacysettings" id="accountsetglobalprivacysettings" name="accountsetglobalprivacysettings"><i class="anchor-icon"></i></a><a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a></h4>
<p>Set global privacy settings</p>
<h4><a class="anchor" href="#messagesgetoutboxreaddate" id="messagesgetoutboxreaddate" name="messagesgetoutboxreaddate"><i class="anchor-icon"></i></a><a href="/method/messages.getOutboxReadDate">messages.getOutboxReadDate</a></h4>

View file

@ -128,8 +128,8 @@
<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>
<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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -112,7 +112,7 @@
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -101,7 +101,7 @@
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -104,7 +104,7 @@
<h4><a class="anchor" href="#messageactiongiveawaylaunch" id="messageactiongiveawaylaunch" name="messageactiongiveawaylaunch"><i class="anchor-icon"></i></a><a href="/constructor/messageActionGiveawayLaunch">messageActionGiveawayLaunch</a></h4>
<p>A <a href="/api/giveaways">giveaway</a> was started.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -83,7 +83,7 @@
<p><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PremiumGiftCodeOption">PremiumGiftCodeOption</a>&gt;</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -112,7 +112,7 @@
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -115,8 +115,8 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -121,7 +121,7 @@
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p>
<h4><a class="anchor" href="#premiumboostslist" id="premiumboostslist" name="premiumboostslist"><i class="anchor-icon"></i></a><a href="/constructor/premium.boostsList">premium.boostsList</a></h4>
<p>List of <a href="/api/boost">boosts</a> that were applied to a peer by multiple users.</p>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>

View file

@ -95,8 +95,8 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -63,8 +63,8 @@
<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3>
<p><a href="/type/premium.MyBoosts">premium.MyBoosts</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></div>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -126,8 +126,8 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#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="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4>
<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</p>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>

View file

@ -224,8 +224,8 @@
<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</p>
<h4><a class="anchor" href="#privacy" id="privacy" name="privacy"><i class="anchor-icon"></i></a><a href="/api/privacy">Privacy</a></h4>
<p>Telegram allows users to specify granular privacy settings, choosing which users can or can't interact with them in certain ways.</p>
<h4><a class="anchor" href="#channel-boosts" id="channel-boosts" name="channel-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p></div>

View file

@ -3178,7 +3178,7 @@ Look for updates of telegram&#39;s terms of service…">
</tr>
<tr>
<td><a href="/method/users.getIsPremiumRequiredToContact">users.getIsPremiumRequiredToContact</a></td>
<td>Check whether we can write to the specified user (non-<a href="/api/premium">Premium</a> users only).<br><br>If a user enables their <strong>new_noncontact_peers_require_premium</strong> <a href="/api/privacy#global-privacy-settings">global privacy setting</a>, represented in <a href="/constructor/userFull">userFull</a>.<code>contact_require_premium</code>, only users that have a premium account, are in our contact list, or already have a private chat with them can write to them in private.<br><br>To easily check whether we can write to a user with this flag enabled, if we haven't yet cached all the required information (for example we don't have the <a href="/constructor/userFull">userFull</a> or history of all users while displaying the chat list in the sharing UI) this method may be invoked, passing the list of users currently visible in the UI, returning a list of booleans that directly specify whether we can or cannot write to each user.<br><br>This list may then be used, for example, to display a lock near the avatar of each user that we cannot write to, with an appropriate tooltip to purchase a <a href="/api/premium">Premium</a> subscription.<br><br>Note that this method should <strong>only</strong> be invoked if we don't have a <a href="/api/premium">Premium</a> subscription, for users whose full info (<a href="/constructor/userFull">userFull</a> + message history information + contact information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual <a href="/api/updates">updates</a>.</td>
<td>Check whether we can write to the specified user (non-<a href="/api/premium">Premium</a> users only).<br><br>If a user enables their <strong>new_noncontact_peers_require_premium</strong> <a href="/api/privacy#global-privacy-settings">global privacy setting</a>, represented in <a href="/constructor/userFull">userFull</a>.<code>contact_require_premium</code>, only users that have a premium account, are in our contact list, or already have a private chat with them can write to them in private.<br><br>To easily check whether we can write to a user with this flag enabled, if we haven't yet cached all the required information (for example we don't have the <a href="/constructor/userFull">userFull</a> or history of all users while displaying the chat list in the sharing UI) this method may be invoked, passing the list of users currently visible in the UI, returning a list of booleans that directly specify whether we can or cannot write to each user.<br><br>This list may then be used, for example, to display a lock near the avatar of each user that we cannot write to, with an appropriate tooltip to purchase a <a href="/api/premium">Premium</a> subscription.<br><br>Note that this method should <strong>only</strong> be invoked if we don't have a <a href="/api/premium">Premium</a> subscription, only for users whose full info (<a href="/constructor/userFull">userFull</a> + message history information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual <a href="/api/updates">updates</a>.</td>
</tr>
<tr>
<td><a href="/method/channels.setBoostsToUnblockRestrictions">channels.setBoostsToUnblockRestrictions</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 14 E9 05 00 50 BA 79 66
0010 | 14 00 00 00 F1 8E 7E BE 89 66 1B 73 7A 31 36 75
0020 | 4D C8 B0 EE C3 20 B4 5A</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 3C B9 0E 00 73 22 7B 66
0010 | 14 00 00 00 F1 8E 7E BE C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47</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>14E9050050BA7966</code></td>
<td><code>3CB90E0073227B66</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>89661B737A3136754DC8B0EEC320B45A</code></td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</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 D0 71 60 50 BA 79 66
0010 | A4 00 00 00 63 24 16 05 89 66 1B 73 7A 31 36 75
0020 | 4D C8 B0 EE C3 20 B4 5A 5B 48 21 9D 38 80 3F AC
0030 | A0 A5 21 5A 41 BD 8B 78 08 1C 7D 70 DB 91 B6 E5
0040 | BD 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 E0 CC 03 74 22 7B 66
0010 | A4 00 00 00 63 24 16 05 C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
0030 | FC 98 9D 20 BA 91 C0 BC 08 22 1F 49 3A A2 24 37
0040 | 3F 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,7 +132,7 @@
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01D0716050BA7966</code></td>
<td><code>01E0CC0374227B66</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>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>89661B737A3136754DC8B0EEC320B45A</code></td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>5B48219D38803FACA0A5215A41BD8B78</code></td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>081C7D70DB91B6E5BD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2052921093495645629</td>
<td><code>08221F493AA224373F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2458764437744793407</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 = 2052921093495645629</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2052921093495645629 = 1354718059 * 1515386231</code></p>
<pre><code>p = 1354718059
q = 1515386231</code></pre>
<pre><code>pq = 2458764437744793407</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2458764437744793407 = 1381929973 * 1779225059</code></p>
<pre><code>p = 1381929973
q = 1779225059</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 1C 7D 70 DB 91 B6 E5 BD 00 00 00
0010 | 04 50 BF 5B 6B 00 00 00 04 5A 52 F5 77 00 00 00
0020 | 89 66 1B 73 7A 31 36 75 4D C8 B0 EE C3 20 B4 5A
0030 | 5B 48 21 9D 38 80 3F AC A0 A5 21 5A 41 BD 8B 78
0040 | 0A F0 B6 F6 4E 8F E8 F2 D6 0F A2 BB B5 E8 F2 FE
0050 | 14 F5 D1 91 D7 FA 92 F2 D4 B2 3E 28 E0 01 7A B8
<pre><code>0000 | 95 5F F5 A9 08 22 1F 49 3A A2 24 37 3F 00 00 00
0010 | 04 52 5E 93 F5 00 00 00 04 6A 0C D1 E3 00 00 00
0020 | C3 C8 F6 BE 0E 4F 8A 08 AE F2 D4 4C 20 7A CE 47
0030 | A0 F0 D7 BA 6E F0 02 59 FC 98 9D 20 BA 91 C0 BC
0040 | FE 6A AC 3F 30 6D 99 D5 8E 30 76 FD 35 77 65 25
0050 | 54 18 F8 F9 24 5C EB 17 EC 81 B1 67 25 0F 1D F9
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 = 1515386231</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>081C7D70DB91B6E5BD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2052921093495645629</td>
<td><code>08221F493AA224373F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2458764437744793407</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>0450BF5B6B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1354718059</td>
<td><code>04525E93F5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1381929973</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>045A52F577000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1515386231</td>
<td><code>046A0CD1E3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1779225059</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>89661B737A3136754DC8B0EEC320B45A</code></td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>5B48219D38803FACA0A5215A41BD8B78</code></td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>0AF0B6F64E8FE8F2D60FA2BBB5E8F2FE</code> <code>14F5D191D7FA92F2D4B23E28E0017AB8</code></td>
<td><code>FE6AAC3F306D99D58E3076FD35776525</code> <code>5418F8F9245CEB17EC81B167250F1DF9</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1515386231</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 = 955FF5A9081C7D70DB91B6E5BD0000000450BF5B6B000000045A52F57700000089661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B780AF0B6F64E8FE8F2D60FA2BBB5E8F2FE14F5D191D7FA92F2D4B23E28E0017AB802000000
random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D470AAB043B0257CC87F2CE6E41DF9CB1462D77EBBF0DEE2902F4C8D15ED2B16E74CB09C279824B7F3E0F09B502C44A103F175F2E433E6BD283D315FDB327CD5A</code></pre>
<pre><code>data = 955FF5A908221F493AA224373F00000004525E93F5000000046A0CD1E3000000C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BCFE6AAC3F306D99D58E3076FD357765255418F8F9245CEB17EC81B167250F1DF902000000
random_padding_bytes = FFD48E7D4E05C7D4BEC59DBF341BF5DE797CD466DD7ED015A34B7B08E8DF17901EB0FD196138882D9B68A0643C6F740E6B29971E72983C317A917547E7AF7DBC104F8B90AF2E9FDFFAED06AA5FCCF52779F12FEFCC678ED9B0EAD54C</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 = 4F980F1D38DBF00E09661EB020E3D27B7E45FBEDB51AC1EBC25E7E805E1445A8443773CEC2D18ECE2F36A2F527475A0B0F19F6899BA1B63E33AE4BF039465C9B04965954EB2B0C6D42F36A9D7D134BB0A3B2E82E516A6585E3FD6BCE0931A2214ECFDB88B92049FE2CC3A935263BAA426A0F49A8FB178ACD76E7733F1F7C8FE599461D287CE9E90D6972D1B1012ED3ED0BA5D8656D132930651982882B1E81D26496F716C388FED4E5459C8DFBC68396C66E21D472B5DF6E0173222D81EBBF19FF5B3979F1B2C24061FBADF90EAE632437F17EC8526E45AFEE11A9D9FCEABDDFCCA928F36D75F25831E60E2A887C08530C9F206FB9FC72FF6D3D76FC8E18C60E</code></pre>
<pre><code>encrypted_data = B9414995450EB67A3067A17A8662ABCF4E40BFEFD972EDA822FF2DE36B9B04AFACA0FB5D1F95C2A55BAB48240811689C99671600428A754734A552FF7D015004D677DFF8855EA0FBBCB13FB7E98ADE47BEC0FF81081913AEA521ADFD6FD2FA1DF394D3E4E377A77CCC4F75EDA14C257BD56DC0978893BA5573350A3FA2996436B8DDBCC210D4BB212C73E43D084C13B85AACB786A2C2A2252494760AF29504CC7BEF2E21244BA7D8D998508294E92F98E3925E4C77E53989DFDA7B97DE1D4A3266000BD004766BC158946A207B3A381195764DEC4D102AA385E08BD225A6F4EF2B48F513AD8115F2AB6343321962247A4B85C37622479BF6140D3AB9E5872FEC</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 34 E4 0B 00 50 BA 79 66
0010 | 40 01 00 00 BE E4 12 D7 89 66 1B 73 7A 31 36 75
0020 | 4D C8 B0 EE C3 20 B4 5A 5B 48 21 9D 38 80 3F AC
0030 | A0 A5 21 5A 41 BD 8B 78 04 50 BF 5B 6B 00 00 00
0040 | 04 5A 52 F5 77 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 4F 98 0F 1D 38 DB F0 0E 09 66 1E B0
0060 | 20 E3 D2 7B 7E 45 FB ED B5 1A C1 EB C2 5E 7E 80
0070 | 5E 14 45 A8 44 37 73 CE C2 D1 8E CE 2F 36 A2 F5
0080 | 27 47 5A 0B 0F 19 F6 89 9B A1 B6 3E 33 AE 4B F0
0090 | 39 46 5C 9B 04 96 59 54 EB 2B 0C 6D 42 F3 6A 9D
00A0 | 7D 13 4B B0 A3 B2 E8 2E 51 6A 65 85 E3 FD 6B CE
00B0 | 09 31 A2 21 4E CF DB 88 B9 20 49 FE 2C C3 A9 35
00C0 | 26 3B AA 42 6A 0F 49 A8 FB 17 8A CD 76 E7 73 3F
00D0 | 1F 7C 8F E5 99 46 1D 28 7C E9 E9 0D 69 72 D1 B1
00E0 | 01 2E D3 ED 0B A5 D8 65 6D 13 29 30 65 19 82 88
00F0 | 2B 1E 81 D2 64 96 F7 16 C3 88 FE D4 E5 45 9C 8D
0100 | FB C6 83 96 C6 6E 21 D4 72 B5 DF 6E 01 73 22 2D
0110 | 81 EB BF 19 FF 5B 39 79 F1 B2 C2 40 61 FB AD F9
0120 | 0E AE 63 24 37 F1 7E C8 52 6E 45 AF EE 11 A9 D9
0130 | FC EA BD DF CC A9 28 F3 6D 75 F2 58 31 E6 0E 2A
0140 | 88 7C 08 53 0C 9F 20 6F B9 FC 72 FF 6D 3D 76 FC
0150 | 8E 18 C6 0E</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 48 3B 01 00 74 22 7B 66
0010 | 40 01 00 00 BE E4 12 D7 C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
0030 | FC 98 9D 20 BA 91 C0 BC 04 52 5E 93 F5 00 00 00
0040 | 04 6A 0C D1 E3 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 B9 41 49 95 45 0E B6 7A 30 67 A1 7A
0060 | 86 62 AB CF 4E 40 BF EF D9 72 ED A8 22 FF 2D E3
0070 | 6B 9B 04 AF AC A0 FB 5D 1F 95 C2 A5 5B AB 48 24
0080 | 08 11 68 9C 99 67 16 00 42 8A 75 47 34 A5 52 FF
0090 | 7D 01 50 04 D6 77 DF F8 85 5E A0 FB BC B1 3F B7
00A0 | E9 8A DE 47 BE C0 FF 81 08 19 13 AE A5 21 AD FD
00B0 | 6F D2 FA 1D F3 94 D3 E4 E3 77 A7 7C CC 4F 75 ED
00C0 | A1 4C 25 7B D5 6D C0 97 88 93 BA 55 73 35 0A 3F
00D0 | A2 99 64 36 B8 DD BC C2 10 D4 BB 21 2C 73 E4 3D
00E0 | 08 4C 13 B8 5A AC B7 86 A2 C2 A2 25 24 94 76 0A
00F0 | F2 95 04 CC 7B EF 2E 21 24 4B A7 D8 D9 98 50 82
0100 | 94 E9 2F 98 E3 92 5E 4C 77 E5 39 89 DF DA 7B 97
0110 | DE 1D 4A 32 66 00 0B D0 04 76 6B C1 58 94 6A 20
0120 | 7B 3A 38 11 95 76 4D EC 4D 10 2A A3 85 E0 8B D2
0130 | 25 A6 F4 EF 2B 48 F5 13 AD 81 15 F2 AB 63 43 32
0140 | 19 62 24 7A 4B 85 C3 76 22 47 9B F6 14 0D 3A B9
0150 | E5 87 2F EC</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 = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>34E40B0050BA7966</code></td>
<td><code>483B010074227B66</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 = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>89661B737A3136754DC8B0EEC320B45A</code></td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>5B48219D38803FACA0A5215A41BD8B78</code></td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>0450BF5B6B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1354718059</td>
<td><code>04525E93F5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1381929973</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>045A52F577000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1515386231</td>
<td><code>046A0CD1E3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1779225059</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 = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001004F980F1D38DBF00E09661EB0</code> <code>20E3D27B7E45FBEDB51AC1EBC25E7E80</code> <code>5E1445A8443773CEC2D18ECE2F36A2F5</code> <code>27475A0B0F19F6899BA1B63E33AE4BF0</code> <code>39465C9B04965954EB2B0C6D42F36A9D</code> <code>7D134BB0A3B2E82E516A6585E3FD6BCE</code> <code>0931A2214ECFDB88B92049FE2CC3A935</code> <code>263BAA426A0F49A8FB178ACD76E7733F</code> <code>1F7C8FE599461D287CE9E90D6972D1B1</code> <code>012ED3ED0BA5D8656D13293065198288</code> <code>2B1E81D26496F716C388FED4E5459C8D</code> <code>FBC68396C66E21D472B5DF6E0173222D</code> <code>81EBBF19FF5B3979F1B2C24061FBADF9</code> <code>0EAE632437F17EC8526E45AFEE11A9D9</code> <code>FCEABDDFCCA928F36D75F25831E60E2A</code> <code>887C08530C9F206FB9FC72FF6D3D76FC</code><br> <code>8E18C60E</code></td>
<td><code>FE000100B9414995450EB67A3067A17A</code> <code>8662ABCF4E40BFEFD972EDA822FF2DE3</code> <code>6B9B04AFACA0FB5D1F95C2A55BAB4824</code> <code>0811689C99671600428A754734A552FF</code> <code>7D015004D677DFF8855EA0FBBCB13FB7</code> <code>E98ADE47BEC0FF81081913AEA521ADFD</code> <code>6FD2FA1DF394D3E4E377A77CCC4F75ED</code> <code>A14C257BD56DC0978893BA5573350A3F</code> <code>A2996436B8DDBCC210D4BB212C73E43D</code> <code>084C13B85AACB786A2C2A2252494760A</code> <code>F29504CC7BEF2E21244BA7D8D9985082</code> <code>94E92F98E3925E4C77E53989DFDA7B97</code> <code>DE1D4A3266000BD004766BC158946A20</code> <code>7B3A381195764DEC4D102AA385E08BD2</code> <code>25A6F4EF2B48F513AD8115F2AB634332</code> <code>1962247A4B85C37622479BF6140D3AB9</code><br> <code>E5872FEC</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4
<h5><a class="anchor" href="#6-server-responds-with" id="6-server-responds-with" name="6-server-responds-with"><i class="anchor-icon"></i></a>6) Server responds with:</h5>
<!-- start server_DH_params_ok -->
<p>Received payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 C8 73 28 51 BA 79 66
0010 | D8 02 00 00 5C 07 E8 D0 89 66 1B 73 7A 31 36 75
0020 | 4D C8 B0 EE C3 20 B4 5A 5B 48 21 9D 38 80 3F AC
0030 | A0 A5 21 5A 41 BD 8B 78 FE 50 02 00 78 00 8C 2C
0040 | 3C 3A 14 87 B7 55 24 DA 42 CB 21 0A D1 35 66 77
0050 | 6A 35 1E 40 BB 80 CF 1D E8 B7 E3 F5 E4 B9 81 40
0060 | 81 52 8D 9C 13 9B 07 BF 94 8D E1 A3 82 62 5A ED
0070 | 30 F2 23 73 C8 43 66 25 EE 0D 19 6F 43 4B BC DD
0080 | 7A 0C C5 7F 31 26 B6 0E DC 5D E4 74 D8 43 5C ED
0090 | A3 52 C5 CC D0 06 07 FA 01 59 03 E2 2D 86 33 46
00A0 | D6 17 19 E4 39 AD 8D E1 58 C3 E5 D2 77 E6 A9 D6
00B0 | 2F 15 50 8F 55 06 CA A3 03 A1 0B E0 35 27 DB A3
00C0 | 11 B7 8C 41 FB 15 27 5B CE 99 3F 67 16 D5 C4 0D
00D0 | 1A DD 5B 43 3E 93 34 EB 79 D2 56 59 DE 74 C7 EF
00E0 | 81 B9 2E F2 E9 69 D3 AC 2F AC A0 C4 6B D3 DE 12
00F0 | 08 BA 71 A2 65 9D CB AE 03 A0 A7 63 5C C7 AC 32
0100 | 2B 75 FC C7 0B 31 87 52 F3 30 E0 2E 5E 44 2D 8D
0110 | 10 C1 38 AB 98 A4 3D 18 60 9D F4 0B 35 DA CE 07
0120 | 17 C1 D5 A4 EE A5 7D 9C 19 15 ED 87 3B 51 50 99
0130 | 91 57 4F BC B1 7F 79 60 DE 2B 10 3D 8B C1 7A 79
0140 | 6C 1F C5 07 D8 F0 B9 E6 98 C8 F0 C2 55 70 9B D6
0150 | F5 C7 79 54 28 D2 FF 2B 8A 85 ED 31 0F 18 32 00
0160 | 32 BE 38 82 5A C7 C0 F1 D9 01 6B 0D 3E 11 2C B0
0170 | 11 90 28 3C 08 20 0E 60 7E 6B B6 75 F2 CD 9D EF
0180 | A6 A4 73 F3 44 A9 8E 12 DA 1A 7F 14 E1 DF 32 F4
0190 | BC 7F 21 A6 5C 64 D1 C2 34 E4 A5 AE 63 FD E9 9E
01A0 | B4 F4 D4 77 A9 57 87 AE 0B 78 49 0C 3E A6 EC 6E
01B0 | 96 F0 DB E7 F3 27 E1 93 1B B9 75 61 3D 5F 9D 6B
01C0 | 6D 8F CD 14 D3 E1 85 CE C2 EF A4 D3 40 A9 A5 95
01D0 | C2 6B 54 5F 59 F3 F7 3E AC 32 34 97 40 29 39 85
01E0 | F9 D1 FE 1F 16 CD C0 44 1A 1B BF D8 51 30 6E C6
01F0 | C7 2D 82 E3 46 E6 44 98 A8 BB 38 4C F2 FE 45 08
0200 | 81 3F F8 99 A9 3B 50 A8 CB 86 01 0B F3 2A 71 D9
0210 | 0E E9 00 32 0A EB D8 9B 85 F8 80 32 FC 1B CA 09
0220 | CE 46 B5 49 A2 45 34 AB 7A 71 98 9A 1B F2 35 E6
0230 | 06 7B 5C 11 14 70 96 67 F4 25 A6 39 57 FD 5D 23
0240 | B8 BC 6B 25 58 9D 3E 17 29 84 EC 7D 35 38 BC 91
0250 | C9 D3 5C A0 1A D5 91 97 8B 90 3B 9B 1C 62 DE CC
0260 | F0 2B 7A 69 5D A6 B8 DB 7A CA 36 04 A1 73 91 DC
0270 | 18 2A 60 32 33 7A 8A 77 31 BA 16 4D 09 11 56 35
0280 | 9A D5 CA AD 1C 1E B3 5E 6C 54 6B 26</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 C0 1A B7 74 22 7B 66
0010 | AC 02 00 00 5C 07 E8 D0 C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
0030 | FC 98 9D 20 BA 91 C0 BC FE 50 02 00 74 7C AF 96
0040 | BC A5 3E 0E 25 CB A3 5C B2 79 39 4D B6 F5 85 DA
0050 | 43 39 B7 00 CE 70 31 AE 5A B9 05 F7 7A 8F AE 12
0060 | C8 C3 57 A6 AE C0 68 90 A7 E3 35 45 F9 65 26 1A
0070 | 92 03 81 18 CF 6D 6C F4 5C A7 A5 A7 A2 EA 32 12
0080 | 6A 2F F7 C5 F5 46 BF 19 61 2E 38 A7 A1 3F DA 0B
0090 | 8F 39 4B 8E E2 34 81 EC 51 1F 3C 4A 35 FC 98 A5
00A0 | 9A 5F C2 48 55 47 D1 70 46 03 B9 44 2C 72 64 12
00B0 | 2F E0 EC DE F0 37 BF E9 E1 EE 77 90 BE A1 F2 3B
00C0 | AF 9D 2C 90 07 AD 84 08 36 62 56 DC 69 A1 A0 88
00D0 | 80 CE 4A E7 74 3D DB C0 4E 64 51 E4 1D 04 6E 1C
00E0 | 19 41 61 59 56 A0 5F DC 74 BE 59 A6 23 B4 F8 5A
00F0 | F9 CD 07 DE 76 36 2D 73 59 FA B5 40 93 82 6B 20
0100 | AC FD CB 71 F2 9D 79 9D 2B C1 C4 39 2B 45 B0 D3
0110 | F9 BF F4 0F 88 32 A7 A3 75 FF D8 C5 C6 ED 99 EF
0120 | F0 41 C6 A8 AB 78 AE C5 25 BB 66 AD FB C2 52 CE
0130 | 07 53 9B 2C 2C 2F E7 AF 60 FD 6F 77 FC 4B 2E 1E
0140 | 12 7D 6D C0 CA 61 66 4B 7B FB 2F 39 91 5D 36 D4
0150 | F6 DB 34 83 C8 F4 AE 98 09 79 06 D7 2F A0 AC 72
0160 | 8D 78 B3 B0 2F F1 33 5A AD 5E 49 3B 95 4A 69 DA
0170 | B3 AF A3 95 CD 27 EF 4C 52 46 51 A5 1E 55 0A 9B
0180 | B1 8F 2E 7E 3B 8D C2 AA 38 9D 4A CE E9 1A 8D F9
0190 | 3D BD B6 86 D7 82 EC 84 1D F2 23 3C 06 57 14 94
01A0 | B6 85 3C 81 52 2B 30 23 05 49 D1 F6 33 AF B3 B4
01B0 | F1 90 D7 DA E8 95 8F 89 59 4F 7F C6 C0 AE 7D EC
01C0 | 3C 57 71 E3 24 AE 90 7D 0A 36 CD C4 07 87 D6 1A
01D0 | 13 40 B9 23 D9 60 0D 5A B7 00 77 8E 37 0D 8B 50
01E0 | 08 4E 87 B2 D7 71 40 24 B9 0D B9 7D 2C 05 21 D9
01F0 | 22 8A 26 F6 82 21 0A 96 BE 7E 41 CF 83 3A C6 9D
0200 | 49 FB 41 DF 17 44 B6 B7 06 FD 9B 5B CF 8B 6B 98
0210 | EF 8F 3B 98 61 AF 79 BF 2D 30 77 C5 37 3C E1 B6
0220 | 6F 93 5A DA 66 24 FC DF 51 A3 FE 05 59 16 CF 0C
0230 | D3 19 83 28 91 BA 7B EE 1A 18 4D AB B4 8D EA C8
0240 | DB CE 26 DC 8D D0 2D 4A 2F 74 9B 33 CA 39 4C 93
0250 | 0B DA 52 BC C6 19 B6 49 AD 5C 78 61 7C DD 2D EB
0260 | 57 13 80 13 55 2F D8 5A 22 76 E7 51 E9 68 28 CD
0270 | E3 FE 41 39 DB FA 83 02 BD A0 31 A6 5B D5 E1 7A
0280 | EF 5C 0F 98 FA 29 F5 59 13 BA AA 1B</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 = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01C8732851BA7966</code></td>
<td><code>01C01AB774227B66</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>D8020000</code> (728 in decimal)</td>
<td><code>AC020000</code> (684 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>89661B737A3136754DC8B0EEC320B45A</code></td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>5B48219D38803FACA0A5215A41BD8B78</code></td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE50020078008C2C3C3A1487B75524DA</code> <code>42CB210AD13566776A351E40BB80CF1D</code> <code>E8B7E3F5E4B9814081528D9C139B07BF</code> <code>948DE1A382625AED30F22373C8436625</code> <code>EE0D196F434BBCDD7A0CC57F3126B60E</code> <code>DC5DE474D8435CEDA352C5CCD00607FA</code> <code>015903E22D863346D61719E439AD8DE1</code> <code>58C3E5D277E6A9D62F15508F5506CAA3</code> <code>03A10BE03527DBA311B78C41FB15275B</code> <code>CE993F6716D5C40D1ADD5B433E9334EB</code> <code>79D25659DE74C7EF81B92EF2E969D3AC</code> <code>2FACA0C46BD3DE1208BA71A2659DCBAE</code> <code>03A0A7635CC7AC322B75FCC70B318752</code> <code>F330E02E5E442D8D10C138AB98A43D18</code> <code>609DF40B35DACE0717C1D5A4EEA57D9C</code> <code>1915ED873B51509991574FBCB17F7960</code> <code>DE2B103D8BC17A796C1FC507D8F0B9E6</code> <code>98C8F0C255709BD6F5C7795428D2FF2B</code> <code>8A85ED310F18320032BE38825AC7C0F1</code> <code>D9016B0D3E112CB01190283C08200E60</code> <code>7E6BB675F2CD9DEFA6A473F344A98E12</code> <code>DA1A7F14E1DF32F4BC7F21A65C64D1C2</code> <code>34E4A5AE63FDE99EB4F4D477A95787AE</code> <code>0B78490C3EA6EC6E96F0DBE7F327E193</code> <code>1BB975613D5F9D6B6D8FCD14D3E185CE</code> <code>C2EFA4D340A9A595C26B545F59F3F73E</code> <code>AC32349740293985F9D1FE1F16CDC044</code> <code>1A1BBFD851306EC6C72D82E346E64498</code> <code>A8BB384CF2FE4508813FF899A93B50A8</code> <code>CB86010BF32A71D90EE900320AEBD89B</code> <code>85F88032FC1BCA09CE46B549A24534AB</code> <code>7A71989A1BF235E6067B5C1114709667</code> <code>F425A63957FD5D23B8BC6B25589D3E17</code> <code>2984EC7D3538BC91C9D35CA01AD59197</code> <code>8B903B9B1C62DECCF02B7A695DA6B8DB</code> <code>7ACA3604A17391DC182A6032337A8A77</code> <code>31BA164D091156359AD5CAAD1C1EB35E</code><br> <code>6C546B26</code></td>
<td><code>FE500200747CAF96BCA53E0E25CBA35C</code> <code>B279394DB6F585DA4339B700CE7031AE</code> <code>5AB905F77A8FAE12C8C357A6AEC06890</code> <code>A7E33545F965261A92038118CF6D6CF4</code> <code>5CA7A5A7A2EA32126A2FF7C5F546BF19</code> <code>612E38A7A13FDA0B8F394B8EE23481EC</code> <code>511F3C4A35FC98A59A5FC2485547D170</code> <code>4603B9442C7264122FE0ECDEF037BFE9</code> <code>E1EE7790BEA1F23BAF9D2C9007AD8408</code> <code>366256DC69A1A08880CE4AE7743DDBC0</code> <code>4E6451E41D046E1C1941615956A05FDC</code> <code>74BE59A623B4F85AF9CD07DE76362D73</code> <code>59FAB54093826B20ACFDCB71F29D799D</code> <code>2BC1C4392B45B0D3F9BFF40F8832A7A3</code> <code>75FFD8C5C6ED99EFF041C6A8AB78AEC5</code> <code>25BB66ADFBC252CE07539B2C2C2FE7AF</code> <code>60FD6F77FC4B2E1E127D6DC0CA61664B</code> <code>7BFB2F39915D36D4F6DB3483C8F4AE98</code> <code>097906D72FA0AC728D78B3B02FF1335A</code> <code>AD5E493B954A69DAB3AFA395CD27EF4C</code> <code>524651A51E550A9BB18F2E7E3B8DC2AA</code> <code>389D4ACEE91A8DF93DBDB686D782EC84</code> <code>1DF2233C06571494B6853C81522B3023</code> <code>0549D1F633AFB3B4F190D7DAE8958F89</code> <code>594F7FC6C0AE7DEC3C5771E324AE907D</code> <code>0A36CDC40787D61A1340B923D9600D5A</code> <code>B700778E370D8B50084E87B2D7714024</code> <code>B90DB97D2C0521D9228A26F682210A96</code> <code>BE7E41CF833AC69D49FB41DF1744B6B7</code> <code>06FD9B5BCF8B6B98EF8F3B9861AF79BF</code> <code>2D3077C5373CE1B66F935ADA6624FCDF</code> <code>51A3FE055916CF0CD319832891BA7BEE</code> <code>1A184DABB48DEAC8DBCE26DC8DD02D4A</code> <code>2F749B33CA394C930BDA52BCC619B649</code> <code>AD5C78617CDD2DEB57138013552FD85A</code> <code>2276E751E96828CDE3FE4139DBFA8302</code> <code>BDA031A65BD5E17AEF5C0F98FA29F559</code><br> <code>13BAAA1B</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4
<!-- 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 = 78008C2C3C3A1487B75524DA42CB210AD13566776A351E40BB80CF1DE8B7E3F5E4B9814081528D9C139B07BF948DE1A382625AED30F22373C8436625EE0D196F434BBCDD7A0CC57F3126B60EDC5DE474D8435CEDA352C5CCD00607FA015903E22D863346D61719E439AD8DE158C3E5D277E6A9D62F15508F5506CAA303A10BE03527DBA311B78C41FB15275BCE993F6716D5C40D1ADD5B433E9334EB79D25659DE74C7EF81B92EF2E969D3AC2FACA0C46BD3DE1208BA71A2659DCBAE03A0A7635CC7AC322B75FCC70B318752F330E02E5E442D8D10C138AB98A43D18609DF40B35DACE0717C1D5A4EEA57D9C1915ED873B51509991574FBCB17F7960DE2B103D8BC17A796C1FC507D8F0B9E698C8F0C255709BD6F5C7795428D2FF2B8A85ED310F18320032BE38825AC7C0F1D9016B0D3E112CB01190283C08200E607E6BB675F2CD9DEFA6A473F344A98E12DA1A7F14E1DF32F4BC7F21A65C64D1C234E4A5AE63FDE99EB4F4D477A95787AE0B78490C3EA6EC6E96F0DBE7F327E1931BB975613D5F9D6B6D8FCD14D3E185CEC2EFA4D340A9A595C26B545F59F3F73EAC32349740293985F9D1FE1F16CDC0441A1BBFD851306EC6C72D82E346E64498A8BB384CF2FE4508813FF899A93B50A8CB86010BF32A71D90EE900320AEBD89B85F88032FC1BCA09CE46B549A24534AB7A71989A1BF235E6067B5C1114709667F425A63957FD5D23B8BC6B25589D3E172984EC7D3538BC91C9D35CA01AD591978B903B9B1C62DECCF02B7A695DA6B8DB7ACA3604A17391DC182A6032337A8A7731BA164D091156359AD5CAAD1C1EB35E6C546B26
tmp_aes_key = D95D6D1F73B86C9F2FEE57031834B871E2EB8BB8B07F7DBAD277D94A023BEA0A
tmp_aes_iv = 1FF06E972F99F6F583AD0491DCDF21A68218A8B019B3AFB930D4038E0AF0B6F6</code></pre>
<pre><code>encrypted_answer = 747CAF96BCA53E0E25CBA35CB279394DB6F585DA4339B700CE7031AE5AB905F77A8FAE12C8C357A6AEC06890A7E33545F965261A92038118CF6D6CF45CA7A5A7A2EA32126A2FF7C5F546BF19612E38A7A13FDA0B8F394B8EE23481EC511F3C4A35FC98A59A5FC2485547D1704603B9442C7264122FE0ECDEF037BFE9E1EE7790BEA1F23BAF9D2C9007AD8408366256DC69A1A08880CE4AE7743DDBC04E6451E41D046E1C1941615956A05FDC74BE59A623B4F85AF9CD07DE76362D7359FAB54093826B20ACFDCB71F29D799D2BC1C4392B45B0D3F9BFF40F8832A7A375FFD8C5C6ED99EFF041C6A8AB78AEC525BB66ADFBC252CE07539B2C2C2FE7AF60FD6F77FC4B2E1E127D6DC0CA61664B7BFB2F39915D36D4F6DB3483C8F4AE98097906D72FA0AC728D78B3B02FF1335AAD5E493B954A69DAB3AFA395CD27EF4C524651A51E550A9BB18F2E7E3B8DC2AA389D4ACEE91A8DF93DBDB686D782EC841DF2233C06571494B6853C81522B30230549D1F633AFB3B4F190D7DAE8958F89594F7FC6C0AE7DEC3C5771E324AE907D0A36CDC40787D61A1340B923D9600D5AB700778E370D8B50084E87B2D7714024B90DB97D2C0521D9228A26F682210A96BE7E41CF833AC69D49FB41DF1744B6B706FD9B5BCF8B6B98EF8F3B9861AF79BF2D3077C5373CE1B66F935ADA6624FCDF51A3FE055916CF0CD319832891BA7BEE1A184DABB48DEAC8DBCE26DC8DD02D4A2F749B33CA394C930BDA52BCC619B649AD5C78617CDD2DEB57138013552FD85A2276E751E96828CDE3FE4139DBFA8302BDA031A65BD5E17AEF5C0F98FA29F55913BAAA1B
tmp_aes_key = 11FE8FBEBAF5CD0D44E94C94684E0F579AAD13781558F3EBFE6859BB2EAAB02A
tmp_aes_iv = F7FFAE27F0F5E583A7ED94409F6B07420494B4BBA4CB58DF12214F4FFE6AAC3F</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 4D02ECFAF65018FBB011DB8FAF59585E41E1D350BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004B9393CBF0FC5C756A7B9BC4868E27C112ACE80FC11C35740D11D19DEDD7C9F139C9E14F3AD6AA4E6470B46AFF695C1CFC7488D929A91B812B514B4F155A79E159A0928C38F4FFDB3DD16F02F1A1CDFFA36F6A271D420EF6551EC8CDF352EEB6BB591429C33ACA97251D2ED355785C0DFA7A99690D597620DD1FA7524871C7E83832E9D319C3090BD87573D3AD8463BDA039B7673FA84D9259E2A1EFDAF6A502FBCEDA94E1999E56DCA6D99124A90387F5FEF0065DC3E60E9644609679F27F7126FB171B4EC0456744A6851DFF36CBC036A994A54664412B386AB5FD67144A0EF3448C0A73346E943D65D1BBB9F2DDD6EBDD9926B6106F0AECC8645F435D3F4351BA79666D3FE27357C5B406
answer = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004B9393CBF0FC5C756A7B9BC4868E27C112ACE80FC11C35740D11D19DEDD7C9F139C9E14F3AD6AA4E6470B46AFF695C1CFC7488D929A91B812B514B4F155A79E159A0928C38F4FFDB3DD16F02F1A1CDFFA36F6A271D420EF6551EC8CDF352EEB6BB591429C33ACA97251D2ED355785C0DFA7A99690D597620DD1FA7524871C7E83832E9D319C3090BD87573D3AD8463BDA039B7673FA84D9259E2A1EFDAF6A502FBCEDA94E1999E56DCA6D99124A90387F5FEF0065DC3E60E9644609679F27F7126FB171B4EC0456744A6851DFF36CBC036A994A54664412B386AB5FD67144A0EF3448C0A73346E943D65D1BBB9F2DDD6EBDD9926B6106F0AECC8645F435D3F4351BA79666D3FE27357C5B406</code></pre>
<pre><code>answer_with_hash = 71F689E89CAD988B73F321CE4D3811340E213502BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BC03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001005810B14927DC018378E3D61892D117D7CD2B1033A9D78FB68861B8ACC93CE73A4B1E13C97C6E8EB772530F315F60D99A90CAEC61EE1FE8FE3AF215BF8D3ADC5AD1DBAFD0E7362722D0D61371388223D276DF3775AB6A8C0FD9E3C2C302C7CCC08B5330018090938C2BC596E20060F0E2D621F524FEB4C95B39D5F27839E4522BC47CDF06A3BF5CB31DFEA7A6CD9EC7C33D7F2C87FA40587D9E9331CA17CAA6925805238F3E101EC9F3930E4F9E9496A476874F02D3451AC80D442F470885D20746773F71689E6C3414CC26377B75991368DBD4E2A131F053C8B81A7B7215AD1A08D180602D41FE8E7F6AA317D57D3358917EC6F0E350212F87964F3E7694202374227B6622C1BE46AB564D3D
answer = BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BC03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001005810B14927DC018378E3D61892D117D7CD2B1033A9D78FB68861B8ACC93CE73A4B1E13C97C6E8EB772530F315F60D99A90CAEC61EE1FE8FE3AF215BF8D3ADC5AD1DBAFD0E7362722D0D61371388223D276DF3775AB6A8C0FD9E3C2C302C7CCC08B5330018090938C2BC596E20060F0E2D621F524FEB4C95B39D5F27839E4522BC47CDF06A3BF5CB31DFEA7A6CD9EC7C33D7F2C87FA40587D9E9331CA17CAA6925805238F3E101EC9F3930E4F9E9496A476874F02D3451AC80D442F470885D20746773F71689E6C3414CC26377B75991368DBD4E2A131F053C8B81A7B7215AD1A08D180602D41FE8E7F6AA317D57D3358917EC6F0E350212F87964F3E7694202374227B6622C1BE46AB564D3D</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 89 66 1B 73 7A 31 36 75 4D C8 B0 EE
0010 | C3 20 B4 5A 5B 48 21 9D 38 80 3F AC A0 A5 21 5A
0020 | 41 BD 8B 78 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 C3 C8 F6 BE 0E 4F 8A 08 AE F2 D4 4C
0010 | 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59 FC 98 9D 20
0020 | BA 91 C0 BC 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 = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7
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 | 4B 93 93 CB F0 FC 5C 75 6A 7B 9B C4 86 8E 27 C1
0140 | 12 AC E8 0F C1 1C 35 74 0D 11 D1 9D ED D7 C9 F1
0150 | 39 C9 E1 4F 3A D6 AA 4E 64 70 B4 6A FF 69 5C 1C
0160 | FC 74 88 D9 29 A9 1B 81 2B 51 4B 4F 15 5A 79 E1
0170 | 59 A0 92 8C 38 F4 FF DB 3D D1 6F 02 F1 A1 CD FF
0180 | A3 6F 6A 27 1D 42 0E F6 55 1E C8 CD F3 52 EE B6
0190 | BB 59 14 29 C3 3A CA 97 25 1D 2E D3 55 78 5C 0D
01A0 | FA 7A 99 69 0D 59 76 20 DD 1F A7 52 48 71 C7 E8
01B0 | 38 32 E9 D3 19 C3 09 0B D8 75 73 D3 AD 84 63 BD
01C0 | A0 39 B7 67 3F A8 4D 92 59 E2 A1 EF DA F6 A5 02
01D0 | FB CE DA 94 E1 99 9E 56 DC A6 D9 91 24 A9 03 87
01E0 | F5 FE F0 06 5D C3 E6 0E 96 44 60 96 79 F2 7F 71
01F0 | 26 FB 17 1B 4E C0 45 67 44 A6 85 1D FF 36 CB C0
0200 | 36 A9 94 A5 46 64 41 2B 38 6A B5 FD 67 14 4A 0E
0210 | F3 44 8C 0A 73 34 6E 94 3D 65 D1 BB B9 F2 DD D6
0220 | EB DD 99 26 B6 10 6F 0A EC C8 64 5F 43 5D 3F 43
0230 | 51 BA 79 66</code></pre>
0130 | 58 10 B1 49 27 DC 01 83 78 E3 D6 18 92 D1 17 D7
0140 | CD 2B 10 33 A9 D7 8F B6 88 61 B8 AC C9 3C E7 3A
0150 | 4B 1E 13 C9 7C 6E 8E B7 72 53 0F 31 5F 60 D9 9A
0160 | 90 CA EC 61 EE 1F E8 FE 3A F2 15 BF 8D 3A DC 5A
0170 | D1 DB AF D0 E7 36 27 22 D0 D6 13 71 38 82 23 D2
0180 | 76 DF 37 75 AB 6A 8C 0F D9 E3 C2 C3 02 C7 CC C0
0190 | 8B 53 30 01 80 90 93 8C 2B C5 96 E2 00 60 F0 E2
01A0 | D6 21 F5 24 FE B4 C9 5B 39 D5 F2 78 39 E4 52 2B
01B0 | C4 7C DF 06 A3 BF 5C B3 1D FE A7 A6 CD 9E C7 C3
01C0 | 3D 7F 2C 87 FA 40 58 7D 9E 93 31 CA 17 CA A6 92
01D0 | 58 05 23 8F 3E 10 1E C9 F3 93 0E 4F 9E 94 96 A4
01E0 | 76 87 4F 02 D3 45 1A C8 0D 44 2F 47 08 85 D2 07
01F0 | 46 77 3F 71 68 9E 6C 34 14 CC 26 37 7B 75 99 13
0200 | 68 DB D4 E2 A1 31 F0 53 C8 B8 1A 7B 72 15 AD 1A
0210 | 08 D1 80 60 2D 41 FE 8E 7F 6A A3 17 D5 7D 33 58
0220 | 91 7E C6 F0 E3 50 21 2F 87 96 4F 3E 76 94 20 23
0230 | 74 22 7B 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 = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>89661B737A3136754DC8B0EEC320B45A</code></td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>5B48219D38803FACA0A5215A41BD8B78</code></td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001004B9393CBF0FC5C756A7B9BC4</code> <code>868E27C112ACE80FC11C35740D11D19D</code> <code>EDD7C9F139C9E14F3AD6AA4E6470B46A</code> <code>FF695C1CFC7488D929A91B812B514B4F</code> <code>155A79E159A0928C38F4FFDB3DD16F02</code> <code>F1A1CDFFA36F6A271D420EF6551EC8CD</code> <code>F352EEB6BB591429C33ACA97251D2ED3</code> <code>55785C0DFA7A99690D597620DD1FA752</code> <code>4871C7E83832E9D319C3090BD87573D3</code> <code>AD8463BDA039B7673FA84D9259E2A1EF</code> <code>DAF6A502FBCEDA94E1999E56DCA6D991</code> <code>24A90387F5FEF0065DC3E60E96446096</code> <code>79F27F7126FB171B4EC0456744A6851D</code> <code>FF36CBC036A994A54664412B386AB5FD</code> <code>67144A0EF3448C0A73346E943D65D1BB</code> <code>B9F2DDD6EBDD9926B6106F0AECC8645F</code><br> <code>435D3F43</code></td>
<td><code>FE0001005810B14927DC018378E3D618</code> <code>92D117D7CD2B1033A9D78FB68861B8AC</code> <code>C93CE73A4B1E13C97C6E8EB772530F31</code> <code>5F60D99A90CAEC61EE1FE8FE3AF215BF</code> <code>8D3ADC5AD1DBAFD0E7362722D0D61371</code> <code>388223D276DF3775AB6A8C0FD9E3C2C3</code> <code>02C7CCC08B5330018090938C2BC596E2</code> <code>0060F0E2D621F524FEB4C95B39D5F278</code> <code>39E4522BC47CDF06A3BF5CB31DFEA7A6</code> <code>CD9EC7C33D7F2C87FA40587D9E9331CA</code> <code>17CAA6925805238F3E101EC9F3930E4F</code> <code>9E9496A476874F02D3451AC80D442F47</code> <code>0885D20746773F71689E6C3414CC2637</code> <code>7B75991368DBD4E2A131F053C8B81A7B</code> <code>7215AD1A08D180602D41FE8E7F6AA317</code> <code>D57D3358917EC6F0E350212F87964F3E</code><br> <code>76942023</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>51BA7966</code> (1719253585 in decimal)</td>
<td><code>74227B66</code> (1719345780 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7
<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 = B54901B0FCE619B4BB06E10C4906114E305EA3B40CBABC779487869947285B69695F8D6FF849C770B56F994F79246B266EF92CB5D5508D1568903BDFB58B19D89C227B0A1A6150DE633CCB5441D59EFE6B331477C6290F2FCF9240FB664877D74AD202EF246776E9623464711FA4850EAC908C0FE569CE533B16302680059609B37BD6DFF5E6D633F55404D64D659A44BCA595B2194DBA462B19034640D081B45C5306FF1923339A5D6BBB1B34B6DCF452C26978967904F3F1D583E8441EEFC8055754B6A54A078C51D3BE2433807308D01152586356E13B2D0D9036FB6377DB94C3B9A1CDC6028CBD5C0571100F7D5C84F43A02519979FC43372F7D28A31729</code></pre>
<pre><code>b = 4371999EFC8E12CDADD9B755E5323F276E06B2227D354847BAE21C45ABEDC730300DF9D9C4C946D046FA721E1202C9FAA18792D9A35E80A3DD17A37E20957815299D2BE2A1173EFC329A74B75C75EF6DDF791AD27CB51C4491A33BAE153CCCDC6D8457FC1A4C743BFFF0A5780B5D425216B3894472499593E735153557052096674FC01310E012C4C99CE6E7F000B03260C491F15E4277373F5C27BFA5A2C1C438E9C7368E5B1436CC88FA6F9D036154BFB72474C4044C3345EA35E901FBC2163C2A8133666918C5848B64AE5273954AA8E8E4E850BFE7BEF67B3DDAAE37C7834E8EC9D75F4136A598BCA9BB840D4AFCF50DB07ED75942345B2C36414CAC39A9</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 = 2B66EF0EA54F1D950C0AE2DD63EED31AA21F82B5FB16ACF59DE34FC26B53B923FAA67B2FCBE5CB80F18C38CE163ECA2CB8952A59F6A7F2F3E71B8C6683A200F0E2936C1AEF59E932EA2C90EEB95051D17882BF814B8FEA7FFFB3AE993FCA9CC7684D2E9645AB246B5F62EF8CA2D6C98000663E48D47BF1BD2CEA15D3DBA8C8183903CB0CAE1E7DCD59BE34854446267748F91D84BEDA82689B00831B58ED63BBA326BA07F6873CEA5327001D83FFB3DD0C095959EAC002C70715F088B650F83CC1671295E51D4963EF41FC725F3FCE571E897B7E2C8B04125945985C34F5046960CFA6B38C641EEA1E3C3747ABB583B904D9EDD1BC8A92580C8BD7D6FCC2225E</code></pre>
<pre><code>g_b = 275A685782E5161214E261205ED27F15D103C9D93CDA91A6B3C99548E7271D7E222D42C9941B051981666EC8B7C4892F93EB0B41E176DE7082F6D062B6F7DDEFF57087330E1845C2234124268CE2E19401392493799680971014CFB37162506BD67E92E44C2B8196FFF5DE1AF3ABC01E1A54B02A50046784A5980EB83308D5713A5FB3A442CC10833D70C042465A10958F96D1601EE7909DB4102FEC8A1DEC82C280F4F13EDB8C89B6D2EBBDBE77614973ABBDE2AFA31E94B3A4E6FA3A96E443779C4C317070DF24643A1248509BB440EDE831BEC81CD165939BFCF1DA2D704A3504B8C888E2569E7EB020F3CA04FEF8DC5E4E0907FB495757B44DC908932406</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 89 66 1B 73 7A 31 36 75 4D C8 B0 EE
0010 | C3 20 B4 5A 5B 48 21 9D 38 80 3F AC A0 A5 21 5A
0020 | 41 BD 8B 78 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 2B 66 EF 0E A5 4F 1D 95 0C 0A E2 DD 63 EE D3 1A
0040 | A2 1F 82 B5 FB 16 AC F5 9D E3 4F C2 6B 53 B9 23
0050 | FA A6 7B 2F CB E5 CB 80 F1 8C 38 CE 16 3E CA 2C
0060 | B8 95 2A 59 F6 A7 F2 F3 E7 1B 8C 66 83 A2 00 F0
0070 | E2 93 6C 1A EF 59 E9 32 EA 2C 90 EE B9 50 51 D1
0080 | 78 82 BF 81 4B 8F EA 7F FF B3 AE 99 3F CA 9C C7
0090 | 68 4D 2E 96 45 AB 24 6B 5F 62 EF 8C A2 D6 C9 80
00A0 | 00 66 3E 48 D4 7B F1 BD 2C EA 15 D3 DB A8 C8 18
00B0 | 39 03 CB 0C AE 1E 7D CD 59 BE 34 85 44 46 26 77
00C0 | 48 F9 1D 84 BE DA 82 68 9B 00 83 1B 58 ED 63 BB
00D0 | A3 26 BA 07 F6 87 3C EA 53 27 00 1D 83 FF B3 DD
00E0 | 0C 09 59 59 EA C0 02 C7 07 15 F0 88 B6 50 F8 3C
00F0 | C1 67 12 95 E5 1D 49 63 EF 41 FC 72 5F 3F CE 57
0100 | 1E 89 7B 7E 2C 8B 04 12 59 45 98 5C 34 F5 04 69
0110 | 60 CF A6 B3 8C 64 1E EA 1E 3C 37 47 AB B5 83 B9
0120 | 04 D9 ED D1 BC 8A 92 58 0C 8B D7 D6 FC C2 22 5E</code></pre>
<pre><code>0000 | 54 B6 43 66 C3 C8 F6 BE 0E 4F 8A 08 AE F2 D4 4C
0010 | 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59 FC 98 9D 20
0020 | BA 91 C0 BC 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 27 5A 68 57 82 E5 16 12 14 E2 61 20 5E D2 7F 15
0040 | D1 03 C9 D9 3C DA 91 A6 B3 C9 95 48 E7 27 1D 7E
0050 | 22 2D 42 C9 94 1B 05 19 81 66 6E C8 B7 C4 89 2F
0060 | 93 EB 0B 41 E1 76 DE 70 82 F6 D0 62 B6 F7 DD EF
0070 | F5 70 87 33 0E 18 45 C2 23 41 24 26 8C E2 E1 94
0080 | 01 39 24 93 79 96 80 97 10 14 CF B3 71 62 50 6B
0090 | D6 7E 92 E4 4C 2B 81 96 FF F5 DE 1A F3 AB C0 1E
00A0 | 1A 54 B0 2A 50 04 67 84 A5 98 0E B8 33 08 D5 71
00B0 | 3A 5F B3 A4 42 CC 10 83 3D 70 C0 42 46 5A 10 95
00C0 | 8F 96 D1 60 1E E7 90 9D B4 10 2F EC 8A 1D EC 82
00D0 | C2 80 F4 F1 3E DB 8C 89 B6 D2 EB BD BE 77 61 49
00E0 | 73 AB BD E2 AF A3 1E 94 B3 A4 E6 FA 3A 96 E4 43
00F0 | 77 9C 4C 31 70 70 DF 24 64 3A 12 48 50 9B B4 40
0100 | ED E8 31 BE C8 1C D1 65 93 9B FC F1 DA 2D 70 4A
0110 | 35 04 B8 C8 88 E2 56 9E 7E B0 20 F3 CA 04 FE F8
0120 | DC 5E 4E 09 07 FB 49 57 57 B4 4D C9 08 93 24 06</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 = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>89661B737A3136754DC8B0EEC320B45A</code></td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>5B48219D38803FACA0A5215A41BD8B78</code></td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001002B66EF0EA54F1D950C0AE2DD</code> <code>63EED31AA21F82B5FB16ACF59DE34FC2</code> <code>6B53B923FAA67B2FCBE5CB80F18C38CE</code> <code>163ECA2CB8952A59F6A7F2F3E71B8C66</code> <code>83A200F0E2936C1AEF59E932EA2C90EE</code> <code>B95051D17882BF814B8FEA7FFFB3AE99</code> <code>3FCA9CC7684D2E9645AB246B5F62EF8C</code> <code>A2D6C98000663E48D47BF1BD2CEA15D3</code> <code>DBA8C8183903CB0CAE1E7DCD59BE3485</code> <code>4446267748F91D84BEDA82689B00831B</code> <code>58ED63BBA326BA07F6873CEA5327001D</code> <code>83FFB3DD0C095959EAC002C70715F088</code> <code>B650F83CC1671295E51D4963EF41FC72</code> <code>5F3FCE571E897B7E2C8B04125945985C</code> <code>34F5046960CFA6B38C641EEA1E3C3747</code> <code>ABB583B904D9EDD1BC8A92580C8BD7D6</code><br> <code>FCC2225E</code></td>
<td><code>FE000100275A685782E5161214E26120</code> <code>5ED27F15D103C9D93CDA91A6B3C99548</code> <code>E7271D7E222D42C9941B051981666EC8</code> <code>B7C4892F93EB0B41E176DE7082F6D062</code> <code>B6F7DDEFF57087330E1845C223412426</code> <code>8CE2E19401392493799680971014CFB3</code> <code>7162506BD67E92E44C2B8196FFF5DE1A</code> <code>F3ABC01E1A54B02A50046784A5980EB8</code> <code>3308D5713A5FB3A442CC10833D70C042</code> <code>465A10958F96D1601EE7909DB4102FEC</code> <code>8A1DEC82C280F4F13EDB8C89B6D2EBBD</code> <code>BE77614973ABBDE2AFA31E94B3A4E6FA</code> <code>3A96E443779C4C317070DF24643A1248</code> <code>509BB440EDE831BEC81CD165939BFCF1</code> <code>DA2D704A3504B8C888E2569E7EB020F3</code> <code>CA04FEF8DC5E4E0907FB495757B44DC9</code><br> <code>08932406</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 = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7
<!-- 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 = 54B6436689661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B780000000000000000FE0001002B66EF0EA54F1D950C0AE2DD63EED31AA21F82B5FB16ACF59DE34FC26B53B923FAA67B2FCBE5CB80F18C38CE163ECA2CB8952A59F6A7F2F3E71B8C6683A200F0E2936C1AEF59E932EA2C90EEB95051D17882BF814B8FEA7FFFB3AE993FCA9CC7684D2E9645AB246B5F62EF8CA2D6C98000663E48D47BF1BD2CEA15D3DBA8C8183903CB0CAE1E7DCD59BE34854446267748F91D84BEDA82689B00831B58ED63BBA326BA07F6873CEA5327001D83FFB3DD0C095959EAC002C70715F088B650F83CC1671295E51D4963EF41FC725F3FCE571E897B7E2C8B04125945985C34F5046960CFA6B38C641EEA1E3C3747ABB583B904D9EDD1BC8A92580C8BD7D6FCC2225E
padding = 3F091096EE25625890DF6092
tmp_aes_key = D95D6D1F73B86C9F2FEE57031834B871E2EB8BB8B07F7DBAD277D94A023BEA0A
tmp_aes_iv = 1FF06E972F99F6F583AD0491DCDF21A68218A8B019B3AFB930D4038E0AF0B6F6</code></pre>
<pre><code>data = 54B64366C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BC0000000000000000FE000100275A685782E5161214E261205ED27F15D103C9D93CDA91A6B3C99548E7271D7E222D42C9941B051981666EC8B7C4892F93EB0B41E176DE7082F6D062B6F7DDEFF57087330E1845C2234124268CE2E19401392493799680971014CFB37162506BD67E92E44C2B8196FFF5DE1AF3ABC01E1A54B02A50046784A5980EB83308D5713A5FB3A442CC10833D70C042465A10958F96D1601EE7909DB4102FEC8A1DEC82C280F4F13EDB8C89B6D2EBBDBE77614973ABBDE2AFA31E94B3A4E6FA3A96E443779C4C317070DF24643A1248509BB440EDE831BEC81CD165939BFCF1DA2D704A3504B8C888E2569E7EB020F3CA04FEF8DC5E4E0907FB495757B44DC908932406
padding = A1B036BFF3AA0739E1586422
tmp_aes_key = 11FE8FBEBAF5CD0D44E94C94684E0F579AAD13781558F3EBFE6859BB2EAAB02A
tmp_aes_iv = F7FFAE27F0F5E583A7ED94409F6B07420494B4BBA4CB58DF12214F4FFE6AAC3F</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 = E4FF52003387B3D3C84A357EB093C476F509BFCF55E73C65E1E050B2F7E9DAD7271441A678527E6CBDE425677340054A00A97FDA4A270AF2F2ADCD6C58A5A3A3CEDD72EE325A5858783D32F90F3D061B78BAB8306AF8C65161EBA2093501CFF608E152ABB82B28B4AF717437337B66BD55AE96F8CCE264A48DFC30DC470615A6C0391BD29E8A7EC2BCE06A7F0D67EF64DCC798BCA89DC549BDE4B0B38CD444BA2FE9332CBE77AC0264BBF35D3CA98C0355C10167BCB811A63E4038BFDD02848D7AB35789E5A6AD0F2FECF3B94A36D0C2FAE6EF5542F3FD2B08DFFDA803912628E7CDE831CA61BEF1C2F6948D1DD4741CAF19466222C975A034B7E2A283E5631B47B729983585C3322038115E6B23E0D0967676A1DCB0006D038460BEAF8A903176A583AB626474EE31CAB38C589F5FCF4171C2A81E5CDCA93C4F8518AA681F852AB825AC1BED8D9F7C778E9A5AEA167F</code></pre>
<pre><code>encrypted_data = 84EA0D2A191290694D445EF398907CDBACB4DD384C142D2B99C5153096F4BC48728DDB6BA33078187E7A8CC810567D44AECBADA7C56075F8D978E9A8BC92D238A7BEB91EB726E521F914A678C5607C8EDF07FE3FA73B330773DFF8F1FAB43951516B142A6231DFE2878B7E6CB9D09D413F65663592B5F0702AFBD13913CEC21331FB97A802CA866561FB6673B7505AFA6DCA65E0A928E133B1BBB8910BB21B7CADEDF07A0CB390F5E3BA7FA3F9E94739ED49C1B1187C7387FCDC24F8F536DA0354C24AF5DDB94EF4264859AA2115A8046CFF2AEB40B064E1EF403E16A1090103A766B12C390C3C31540F46C2A35BF9B4E6786AAA990FC875A95C875B3C17DEC03168CA450B426E8BFFEDFE80C15A70F872C962073C2A05B8E6E0836512BE8ADC18B4CD2746AAF783EF3D1E4210516BB113062DFCFB11B58FF654A1E6454633F116ED380C9A8D51B4838EAAB43F4B5414</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 B8 10 0D 00 51 BA 79 66
0010 | 78 01 00 00 1F 5F 04 F5 89 66 1B 73 7A 31 36 75
0020 | 4D C8 B0 EE C3 20 B4 5A 5B 48 21 9D 38 80 3F AC
0030 | A0 A5 21 5A 41 BD 8B 78 FE 50 01 00 E4 FF 52 00
0040 | 33 87 B3 D3 C8 4A 35 7E B0 93 C4 76 F5 09 BF CF
0050 | 55 E7 3C 65 E1 E0 50 B2 F7 E9 DA D7 27 14 41 A6
0060 | 78 52 7E 6C BD E4 25 67 73 40 05 4A 00 A9 7F DA
0070 | 4A 27 0A F2 F2 AD CD 6C 58 A5 A3 A3 CE DD 72 EE
0080 | 32 5A 58 58 78 3D 32 F9 0F 3D 06 1B 78 BA B8 30
0090 | 6A F8 C6 51 61 EB A2 09 35 01 CF F6 08 E1 52 AB
00A0 | B8 2B 28 B4 AF 71 74 37 33 7B 66 BD 55 AE 96 F8
00B0 | CC E2 64 A4 8D FC 30 DC 47 06 15 A6 C0 39 1B D2
00C0 | 9E 8A 7E C2 BC E0 6A 7F 0D 67 EF 64 DC C7 98 BC
00D0 | A8 9D C5 49 BD E4 B0 B3 8C D4 44 BA 2F E9 33 2C
00E0 | BE 77 AC 02 64 BB F3 5D 3C A9 8C 03 55 C1 01 67
00F0 | BC B8 11 A6 3E 40 38 BF DD 02 84 8D 7A B3 57 89
0100 | E5 A6 AD 0F 2F EC F3 B9 4A 36 D0 C2 FA E6 EF 55
0110 | 42 F3 FD 2B 08 DF FD A8 03 91 26 28 E7 CD E8 31
0120 | CA 61 BE F1 C2 F6 94 8D 1D D4 74 1C AF 19 46 62
0130 | 22 C9 75 A0 34 B7 E2 A2 83 E5 63 1B 47 B7 29 98
0140 | 35 85 C3 32 20 38 11 5E 6B 23 E0 D0 96 76 76 A1
0150 | DC B0 00 6D 03 84 60 BE AF 8A 90 31 76 A5 83 AB
0160 | 62 64 74 EE 31 CA B3 8C 58 9F 5F CF 41 71 C2 A8
0170 | 1E 5C DC A9 3C 4F 85 18 AA 68 1F 85 2A B8 25 AC
0180 | 1B ED 8D 9F 7C 77 8E 9A 5A EA 16 7F</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 44 93 0D 00 74 22 7B 66
0010 | 78 01 00 00 1F 5F 04 F5 C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
0030 | FC 98 9D 20 BA 91 C0 BC FE 50 01 00 84 EA 0D 2A
0040 | 19 12 90 69 4D 44 5E F3 98 90 7C DB AC B4 DD 38
0050 | 4C 14 2D 2B 99 C5 15 30 96 F4 BC 48 72 8D DB 6B
0060 | A3 30 78 18 7E 7A 8C C8 10 56 7D 44 AE CB AD A7
0070 | C5 60 75 F8 D9 78 E9 A8 BC 92 D2 38 A7 BE B9 1E
0080 | B7 26 E5 21 F9 14 A6 78 C5 60 7C 8E DF 07 FE 3F
0090 | A7 3B 33 07 73 DF F8 F1 FA B4 39 51 51 6B 14 2A
00A0 | 62 31 DF E2 87 8B 7E 6C B9 D0 9D 41 3F 65 66 35
00B0 | 92 B5 F0 70 2A FB D1 39 13 CE C2 13 31 FB 97 A8
00C0 | 02 CA 86 65 61 FB 66 73 B7 50 5A FA 6D CA 65 E0
00D0 | A9 28 E1 33 B1 BB B8 91 0B B2 1B 7C AD ED F0 7A
00E0 | 0C B3 90 F5 E3 BA 7F A3 F9 E9 47 39 ED 49 C1 B1
00F0 | 18 7C 73 87 FC DC 24 F8 F5 36 DA 03 54 C2 4A F5
0100 | DD B9 4E F4 26 48 59 AA 21 15 A8 04 6C FF 2A EB
0110 | 40 B0 64 E1 EF 40 3E 16 A1 09 01 03 A7 66 B1 2C
0120 | 39 0C 3C 31 54 0F 46 C2 A3 5B F9 B4 E6 78 6A AA
0130 | 99 0F C8 75 A9 5C 87 5B 3C 17 DE C0 31 68 CA 45
0140 | 0B 42 6E 8B FF ED FE 80 C1 5A 70 F8 72 C9 62 07
0150 | 3C 2A 05 B8 E6 E0 83 65 12 BE 8A DC 18 B4 CD 27
0160 | 46 AA F7 83 EF 3D 1E 42 10 51 6B B1 13 06 2D FC
0170 | FB 11 B5 8F F6 54 A1 E6 45 46 33 F1 16 ED 38 0C
0180 | 9A 8D 51 B4 83 8E AA B4 3F 4B 54 14</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>B8100D0051BA7966</code></td>
<td><code>44930D0074227B66</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>89661B737A3136754DC8B0EEC320B45A</code></td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>5B48219D38803FACA0A5215A41BD8B78</code></td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE500100E4FF52003387B3D3C84A357E</code> <code>B093C476F509BFCF55E73C65E1E050B2</code> <code>F7E9DAD7271441A678527E6CBDE42567</code> <code>7340054A00A97FDA4A270AF2F2ADCD6C</code> <code>58A5A3A3CEDD72EE325A5858783D32F9</code> <code>0F3D061B78BAB8306AF8C65161EBA209</code> <code>3501CFF608E152ABB82B28B4AF717437</code> <code>337B66BD55AE96F8CCE264A48DFC30DC</code> <code>470615A6C0391BD29E8A7EC2BCE06A7F</code> <code>0D67EF64DCC798BCA89DC549BDE4B0B3</code> <code>8CD444BA2FE9332CBE77AC0264BBF35D</code> <code>3CA98C0355C10167BCB811A63E4038BF</code> <code>DD02848D7AB35789E5A6AD0F2FECF3B9</code> <code>4A36D0C2FAE6EF5542F3FD2B08DFFDA8</code> <code>03912628E7CDE831CA61BEF1C2F6948D</code> <code>1DD4741CAF19466222C975A034B7E2A2</code> <code>83E5631B47B729983585C3322038115E</code> <code>6B23E0D0967676A1DCB0006D038460BE</code> <code>AF8A903176A583AB626474EE31CAB38C</code> <code>589F5FCF4171C2A81E5CDCA93C4F8518</code> <code>AA681F852AB825AC1BED8D9F7C778E9A</code><br> <code>5AEA167F</code></td>
<td><code>FE50010084EA0D2A191290694D445EF3</code> <code>98907CDBACB4DD384C142D2B99C51530</code> <code>96F4BC48728DDB6BA33078187E7A8CC8</code> <code>10567D44AECBADA7C56075F8D978E9A8</code> <code>BC92D238A7BEB91EB726E521F914A678</code> <code>C5607C8EDF07FE3FA73B330773DFF8F1</code> <code>FAB43951516B142A6231DFE2878B7E6C</code> <code>B9D09D413F65663592B5F0702AFBD139</code> <code>13CEC21331FB97A802CA866561FB6673</code> <code>B7505AFA6DCA65E0A928E133B1BBB891</code> <code>0BB21B7CADEDF07A0CB390F5E3BA7FA3</code> <code>F9E94739ED49C1B1187C7387FCDC24F8</code> <code>F536DA0354C24AF5DDB94EF4264859AA</code> <code>2115A8046CFF2AEB40B064E1EF403E16</code> <code>A1090103A766B12C390C3C31540F46C2</code> <code>A35BF9B4E6786AAA990FC875A95C875B</code> <code>3C17DEC03168CA450B426E8BFFEDFE80</code> <code>C15A70F872C962073C2A05B8E6E08365</code> <code>12BE8ADC18B4CD2746AAF783EF3D1E42</code> <code>10516BB113062DFCFB11B58FF654A1E6</code> <code>454633F116ED380C9A8D51B4838EAAB4</code><br> <code>3F4B5414</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 = 924E77E092B9797DF9E377211291A664D8C63B494DCFEF1C505C880E42D71611BE8C473B4658A93CAF81867E3F4A9D194960D4EC790D1731088804BEA1C934CB3875ACF904286BEDF850E24DD1DB5F374D9DB720484DE04324A8C7B920AD9396E3964F7C4C580EC94BAF5A111099577595C0D818699CBF7629E186768FA204D9DB57B56B1FBAF03D48F9F79BEEDDB742051363E3A8AA7F22B2C87F3C6726F38C855F87BDA2849E89138B4D73A0B86F9F50CA279959B82C40ABC436BB1286337D61D3EA0C126F185AD465CF9368EE30AB112A09DAAF9996AB56D2CAC8091DFA7EDCF8740BC4B3AD2E2E595B29091670ABBF233B882C7C5B5F18CA4DE9B19D2CB4</code></pre>
<pre><code>auth_key = 6AFCF5F3CF1811729A7BADD937DBF9B661B830B6162E76B92CB6FC183C85D6B62CD9BA1942861A38DB26DC6B55334A2715C43C070B413DC24D71F1A971A31DA260C144A4C94A6E30BD2FD4CB92C070E0A190F2E2CB354971C8D460839561EFBA5A2480017A4D1B4E6F8AC3FCCD3287CB44BE51E2F71E544B3D7F473DE8D26E62E58020FA8E6A8C9A49710322EC463134B9070830B133E2E89388FF65346520E8BAAE7B4CF2CA9EA654A6D0A14E4BDEE3FB05CDD1EE2D70E331E755D11B39776908272FD9CF0E6066B10C448F8FF99231ECBA630DDE7D99730FB9A4433EBF654DD2A388AE75AE9507CCEADBA78B802C0EA5AA5ABEBBBFF830AF196D140546ADA5</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 D4 97 24 52 BA 79 66
0010 | 80 00 00 00 34 F7 CB 3B 89 66 1B 73 7A 31 36 75
0020 | 4D C8 B0 EE C3 20 B4 5A 5B 48 21 9D 38 80 3F AC
0030 | A0 A5 21 5A 41 BD 8B 78 F0 7C 80 6F 92 42 0A CC
0040 | C8 F7 42 B9 41 39 6E EA</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 34 15 70 75 22 7B 66
0010 | 90 00 00 00 34 F7 CB 3B C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
0030 | FC 98 9D 20 BA 91 C0 BC 45 39 C6 1E B8 8F FC 75
0040 | EA 2F 49 54 F2 94 D1 D4</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>01D4972452BA7966</code></td>
<td><code>0134157075227B66</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>80000000</code> (128 in decimal)</td>
<td><code>90000000</code> (144 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>89661B737A3136754DC8B0EEC320B45A</code></td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>5B48219D38803FACA0A5215A41BD8B78</code></td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>F07C806F92420ACCC8F742B941396EEA</code></td>
<td><code>4539C61EB88FFC75EA2F4954F294D1D4</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

@ -72,8 +72,8 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -72,8 +72,8 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -73,7 +73,7 @@
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -73,7 +73,7 @@
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -92,7 +92,7 @@
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -97,7 +97,7 @@
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -96,8 +96,8 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -91,8 +91,8 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -96,8 +96,8 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#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>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p></div>
</div>