Update content of files

This commit is contained in:
GitHub Action 2023-10-06 19:53:01 +00:00
parent d056884d5a
commit 42c6106196
23 changed files with 437 additions and 531 deletions

View file

@ -365,6 +365,8 @@ tg://addemoji?set=&lt;slug&gt;</code></pre>
</tbody>
</table>
<h3><a class="anchor" href="#boost-links" id="boost-links" name="boost-links"><i class="anchor-icon"></i></a>Boost links</h3>
<p>Used by users to <a href="/api/stories#boosts">boost channels »</a>, granting them the ability to post stories.</p>
<p>Use the channel information to boost the channel as describere <a href="/api/stories#boosts">here »</a>. </p>
<p><code>t.me</code> syntax (public channels):</p>
<pre><code>t.me/&lt;username&gt;?boost</code></pre>
<p><code>t.me</code> syntax (private channels):</p>

View file

@ -61,7 +61,7 @@
<a href='/method/auth.importLoginToken'>auth.importLoginToken</a>#95ac5ce4 token:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>;</code></pre>
<h3><a class="anchor" href="#exporting-a-login-token" id="exporting-a-login-token" name="exporting-a-login-token"><i class="anchor-icon"></i></a>Exporting a login token</h3>
<p>First of all, <a href="/method/auth.exportLoginToken">auth.exportLoginToken</a> must be called by the app that wants to log in to an existing Telegram account.<br>
The method will return an <a href="/constructor/auth.loginToken">auth.loginToken</a> constructor, containing a binary login <code>token</code> and an expiry date (usually 30 seconds). </p>
The method will return an <a href="/constructor/auth.loginToken">auth.loginToken</a> constructor, containing a binary login <code>token</code> and an expiration date (usually 30 seconds). </p>
<p>The login <code>token</code> must be encoded using <a href="https://tools.ietf.org/html/rfc4648#section-5">base64url</a>, embedded in a <code>tg://login?token=base64encodedtoken</code> URL and shown in the form of a <a href="https://en.wikipedia.org/wiki/QR_code">QR code</a> to the user.<br>
After the expiration of the current QR code, the <a href="/method/auth.exportLoginToken">auth.exportLoginToken</a> method must be recalled and a new QR code must be generated automatically.</p>
<h3><a class="anchor" href="#accepting-a-login-token" id="accepting-a-login-token" name="accepting-a-login-token"><i class="anchor-icon"></i></a>Accepting a login token</h3>

View file

@ -46,6 +46,25 @@
<p>Telegram users and channels can easily post and view <a href="https://telegram.org/blog/stories">stories</a> through the API.</p>
<h2><a class="anchor" href="#posting-stories" id="posting-stories" name="posting-stories"><i class="anchor-icon"></i></a>Posting stories</h2>
<p>Schema:</p>
<pre><code><a href='/constructor/inputPeerSelf'>inputPeerSelf</a>#7da07ec9 = <a href='/type/InputPeer'>InputPeer</a>;
<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/boolFalse'>boolFalse</a>#bc799737 = <a href='/type/Bool'>Bool</a>;
<a href='/constructor/boolTrue'>boolTrue</a>#997275b5 = <a href='/type/Bool'>Bool</a>;
---functions---
<a href='/method/stories.canSendStory'>stories.canSendStory</a>#c7dfdfdd peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/stories.sendStory'>stories.sendStory</a>#bcb73644 flags:<a href='/type/%23'>#</a> pinned:flags.2?<a href='/constructor/true'>true</a> noforwards:flags.4?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> media:<a href='/type/InputMedia'>InputMedia</a> media_areas:flags.5?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/MediaArea'>MediaArea</a>&gt; caption:flags.0?<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/MessageEntity'>MessageEntity</a>&gt; privacy_rules:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/InputPrivacyRule'>InputPrivacyRule</a>&gt; random_id:<a href='/type/long'>long</a> period:flags.3?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;
<a href='/method/stories.editStory'>stories.editStory</a>#b583ba46 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> media:flags.0?<a href='/type/InputMedia'>InputMedia</a> media_areas:flags.3?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/MediaArea'>MediaArea</a>&gt; caption:flags.1?<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/MessageEntity'>MessageEntity</a>&gt; privacy_rules:flags.2?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/InputPrivacyRule'>InputPrivacyRule</a>&gt; = <a href='/type/Updates'>Updates</a>;
<a href='/method/stories.deleteStories'>stories.deleteStories</a>#ae59db5f peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/int'>int</a>&gt; = <a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/int'>int</a>&gt;;</code></pre>
<p>Before posting a story, clients should invoke <a href="/method/stories.canSendStory">stories.canSendStory</a>, to make sure </p>
<p>This methods returns <a href="/constructor/boolTrue">boolTrue</a> only if:</p>
<ul>
<li>The current user can is an administrator of the channel; otherwise, a <code>CHAT_ADMIN_REQUIRED</code> error is returned.</li>
<li>The current user has <a href="/constructor/chatAdminRights"><code>post_stories</code> admin rights</a>, and the </li>
</ul>
<h2><a class="anchor" href="#stealth-mode" id="stealth-mode" name="stealth-mode"><i class="anchor-icon"></i></a>Stealth mode</h2>
<p><a href="/api/premium">Premium users</a> may enable <a href="https://telegram.org/tour/stories#stealth-mode">stealth mode</a>, erasing their views from any stories they opened in the past <a href="/api/config#stories-stealth-past-period"><code>stories_stealth_past_period</code> seconds »</a>, and hiding their views on stories for the next <a href="/api/config#stories-stealth-future-period"><code>stories_stealth_future_period</code> seconds »</a>, as specified by the <a href="/api/config#client-configuration">client configuration »</a>.</p>
<p>Schema:</p>
@ -62,7 +81,51 @@
<ul>
<li><code>active_until_date</code> - the date up to which stealth mode will be active</li>
<li><code>cooldown_until_date</code> - the date starting from which the user will be allowed to call <a href="/method/stories.activateStealthMode">stories.activateStealthMode</a> again; calling the method earlier will return a <code>FLOOD_WAIT_X</code> error as specified above.</li>
</ul></div>
</ul>
<h2><a class="anchor" href="#channel-stories" id="channel-stories" name="channel-stories"><i class="anchor-icon"></i></a>Channel stories</h2>
<p>Telegram users can grant their favorite channels the ability to post <a href="/api/stories">stories</a> by giving them boosts. <a href="/api/premium">Telegram Premium</a> now includes one boost that can be assigned to any channel.</p>
<h3><a class="anchor" href="#boosts" id="boosts" name="boosts"><i class="anchor-icon"></i></a>Boosts</h3>
<p>Channels level up as they gain more boosts and for each level, they can post 1 additional story per day to their subscribers' story feeds. </p>
<p>Schema:</p>
<pre><code><a href='/constructor/stories.canApplyBoostOk'>stories.canApplyBoostOk</a>#c3173587 = <a href='/type/stories.CanApplyBoostResult'>stories.CanApplyBoostResult</a>;
<a href='/constructor/stories.canApplyBoostReplace'>stories.canApplyBoostReplace</a>#712c4655 current_boost:<a href='/type/Peer'>Peer</a> chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; = <a href='/type/stories.CanApplyBoostResult'>stories.CanApplyBoostResult</a>;
<a href='/constructor/statsPercentValue'>statsPercentValue</a>#cbce2fe0 part:<a href='/type/double'>double</a> total:<a href='/type/double'>double</a> = <a href='/type/StatsPercentValue'>StatsPercentValue</a>;
<a href='/constructor/stories.boostsStatus'>stories.boostsStatus</a>#66ea1fef flags:<a href='/type/%23'>#</a> my_boost:flags.2?<a href='/constructor/true'>true</a> level:<a href='/type/int'>int</a> current_level_boosts:<a href='/type/int'>int</a> boosts:<a href='/type/int'>int</a> next_level_boosts:flags.0?<a href='/type/int'>int</a> premium_audience:flags.1?<a href='/type/StatsPercentValue'>StatsPercentValue</a> = <a href='/type/stories.BoostsStatus'>stories.BoostsStatus</a>;
<a href='/constructor/booster'>booster</a>#e9e6380 user_id:<a href='/type/long'>long</a> expires:<a href='/type/int'>int</a> = <a href='/type/Booster'>Booster</a>;
<a href='/constructor/stories.boostersList'>stories.boostersList</a>#f3dd3d1d flags:<a href='/type/%23'>#</a> count:<a href='/type/int'>int</a> boosters:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Booster'>Booster</a>&gt; next_offset:flags.0?<a href='/type/string'>string</a> users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/stories.BoostersList'>stories.BoostersList</a>;
---functions---
<a href='/method/stories.canApplyBoost'>stories.canApplyBoost</a>#db05c1bd peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/stories.CanApplyBoostResult'>stories.CanApplyBoostResult</a>;
<a href='/method/stories.applyBoost'>stories.applyBoost</a>#f29d7c2b peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/stories.getBoostsStatus'>stories.getBoostsStatus</a>#4c449472 peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/stories.BoostsStatus'>stories.BoostsStatus</a>;
<a href='/method/stories.getBoostersList'>stories.getBoostersList</a>#337ef980 peer:<a href='/type/InputPeer'>InputPeer</a> offset:<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/stories.BoostersList'>stories.BoostersList</a>;</code></pre>
<p>Use <a href="/method/stories.applyBoost">stories.applyBoost</a> to boost a channel: before invoking this method, however, make sure to invoke <a href="/method/stories.canApplyBoost">stories.canApplyBoost</a> to check if a given channel can be boosted. </p>
<p>A <code>PREMIUM_ACCOUNT_REQUIRED</code> error will be returned when calling any of the two methods 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. </p>
<p>Furthermore, the result of <a href="/method/stories.canApplyBoost">stories.canApplyBoost</a> can be:</p>
<ul>
<li><a href="/constructor/stories.canApplyBoostOk">stories.canApplyBoostOk</a> if the current user isn't boosting any channel, and can boost the specified channel. </li>
<li><a href="/constructor/stories.canApplyBoostReplace">stories.canApplyBoostReplace</a> if the user is already boosting another channel, containing the channel that the user is currently boosting. </li>
</ul>
<p>After boosting a channel, the user may not change their boosted channel for a certain cooldown period: if the cooldown period isn't over yet, calls to any of the two methods 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/stories.getBoostsStatus">stories.getBoostsStatus</a>, to get the current boost status of a channel as a <a href="/constructor/stories.boostsStatus">stories.boostsStatus</a> constructor, check out the <a href="/constructor/stories.boostsStatus">constructor page</a> for more info.</p>
<p>Channel administrators may invoke <a href="/method/stories.getBoostersList">stories.getBoostersList</a> to fetch the list of users currently boosting the channel.</p>
<h3><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</h3>
<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>;
---functions---
<a href='/method/stories.canSendStory'>stories.canSendStory</a>#c7dfdfdd peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/stories.sendStory'>stories.sendStory</a>#bcb73644 flags:<a href='/type/%23'>#</a> pinned:flags.2?<a href='/constructor/true'>true</a> noforwards:flags.4?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> media:<a href='/type/InputMedia'>InputMedia</a> media_areas:flags.5?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/MediaArea'>MediaArea</a>&gt; caption:flags.0?<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/MessageEntity'>MessageEntity</a>&gt; privacy_rules:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/InputPrivacyRule'>InputPrivacyRule</a>&gt; random_id:<a href='/type/long'>long</a> period:flags.3?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;
<a href='/method/stories.editStory'>stories.editStory</a>#b583ba46 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> media:flags.0?<a href='/type/InputMedia'>InputMedia</a> media_areas:flags.3?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/MediaArea'>MediaArea</a>&gt; caption:flags.1?<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/MessageEntity'>MessageEntity</a>&gt; privacy_rules:flags.2?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/InputPrivacyRule'>InputPrivacyRule</a>&gt; = <a href='/type/Updates'>Updates</a>;
<a href='/method/stories.deleteStories'>stories.deleteStories</a>#ae59db5f peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/int'>int</a>&gt; = <a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/int'>int</a>&gt;;</code></pre>
<p>Everything works exactly the same as when <a href="#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="#posting-stories">main documentation »</a> for more info.</p></div>
</div>

View file

@ -4,32 +4,10 @@
<meta charset="utf-8">
<title>booster</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
user_id
long
 
expires
int
 
Type
Booster">
<meta property="description" content="Info about a boost made by a specific user.">
<meta property="og:title" content="booster">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
user_id
long
 
expires
int
 
Type
Booster">
<meta property="og:description" content="Info about a boost made by a specific user.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -64,7 +42,8 @@ Booster">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/booster" >booster</a></li></ul></div>
<h1 id="dev_page_title">booster</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Info about a <a href="/api/stories#boosts">boost</a> made by a specific user.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>
@ -90,17 +69,20 @@ Booster">
<tr>
<td><strong>user_id</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td> </td>
<td>ID of the user that made the boost.</td>
</tr>
<tr>
<td><strong>expires</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Default expiration date of the boost.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/Booster">Booster</a></p></div>
<p><a href="/type/Booster">Booster</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="#stories" id="stories" name="stories"><i class="anchor-icon"></i></a><a href="/api/stories">Stories</a></h4>
<p>Telegram users and channels can easily post and view stories through the API.</p></div>
</div>

View file

@ -4,36 +4,10 @@
<meta charset="utf-8">
<title>stories.boostsStatus</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
my_boost
flags.2?true
 
level
int
 
current_level_boosts…">
<meta property="description" content="The current boost status » of a channel.">
<meta property="og:title" content="stories.boostsStatus">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
my_boost
flags.2?true
 
level
int
 
current_level_boosts…">
<meta property="og:description" content="The current boost status » of a channel.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -68,7 +42,8 @@ current_level_boosts…">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/stories.boostsStatus" >stories.boostsStatus</a></li></ul></div>
<h1 id="dev_page_title">stories.boostsStatus</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>The current <a href="/api/stories#boosts">boost status »</a> of a channel.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>
@ -99,37 +74,40 @@ current_level_boosts…">
<tr>
<td><strong>my_boost</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/constructor/true">true</a></td>
<td> </td>
<td>Whether we're currently boosting this channel.</td>
</tr>
<tr>
<td><strong>level</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>The current boost level of the channel.</td>
</tr>
<tr>
<td><strong>current_level_boosts</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>The number of boosts acquired so far in the current level.</td>
</tr>
<tr>
<td><strong>boosts</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Total number of boosts acquired so far.</td>
</tr>
<tr>
<td><strong>next_level_boosts</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/int">int</a></td>
<td> </td>
<td>Total number of boosts needed to reach the next level; if absent, the next level isn't available.</td>
</tr>
<tr>
<td><strong>premium_audience</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/StatsPercentValue">StatsPercentValue</a></td>
<td> </td>
<td>Only returned to channel admins: contains the approximated number of Premium users subscribed to the channel, related to the total number of subscribers.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/stories.BoostsStatus">stories.BoostsStatus</a></p></div>
<p><a href="/type/stories.BoostsStatus">stories.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="#stories" id="stories" name="stories"><i class="anchor-icon"></i></a><a href="/api/stories">Stories</a></h4>
<p>Telegram users and channels can easily post and view stories through the API.</p></div>
</div>

View file

@ -4,16 +4,10 @@
<meta charset="utf-8">
<title>stories.canApplyBoostOk</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
This constructor does not require any parameters.
Type
stories.CanApplyBoostResult">
<meta property="description" content="We&#39;re not boosting any channel, and we can freely boost the specified channel.">
<meta property="og:title" content="stories.canApplyBoostOk">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
This constructor does not require any parameters.
Type
stories.CanApplyBoostResult">
<meta property="og:description" content="We&#39;re not boosting any channel, and we can freely boost the specified channel.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -48,7 +42,8 @@ stories.CanApplyBoostResult">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/stories.canApplyBoostOk" >stories.canApplyBoostOk</a></li></ul></div>
<h1 id="dev_page_title">stories.canApplyBoostOk</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>We're not boosting any channel, and we can freely boost the specified channel.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>

View file

@ -4,32 +4,10 @@
<meta charset="utf-8">
<title>stories.canApplyBoostReplace</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
current_boost
Peer
 
chats
Vector&lt;Chat&gt;
 
Type
stories.CanApplyBoostResult">
<meta property="description" content="We&#39;re boosting another channel, but we can freely boost the specified channel.">
<meta property="og:title" content="stories.canApplyBoostReplace">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
current_boost
Peer
 
chats
Vector&lt;Chat&gt;
 
Type
stories.CanApplyBoostResult">
<meta property="og:description" content="We&#39;re boosting another channel, but we can freely boost the specified channel.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -64,7 +42,8 @@ stories.CanApplyBoostResult">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/stories.canApplyBoostReplace" >stories.canApplyBoostReplace</a></li></ul></div>
<h1 id="dev_page_title">stories.canApplyBoostReplace</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>We're boosting another channel, but we can freely boost the specified channel.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>
@ -90,12 +69,12 @@ stories.CanApplyBoostResult">
<tr>
<td><strong>current_boost</strong></td>
<td style="text-align: center;"><a href="/type/Peer">Peer</a></td>
<td> </td>
<td>The channel we're currently boosting.</td>
</tr>
<tr>
<td><strong>chats</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt;</td>
<td> </td>
<td>Channel information.</td>
</tr>
</tbody>
</table>

View file

@ -289,6 +289,11 @@
<td>Invalid message ID provided.</td>
</tr>
<tr>
<td>406</td>
<td>PAYMENT_UNSUPPORTED</td>
<td>A detailed description of the error will be received separately as described <a href="/api/errors#406-not-acceptable">here »</a>.</td>
</tr>
<tr>
<td>400</td>
<td>PEER_ID_INVALID</td>
<td>The provided peer id is invalid.</td>
@ -375,7 +380,9 @@
<h4><a class="anchor" href="#forums" id="forums" name="forums"><i class="anchor-icon"></i></a><a href="/api/forum">Forums</a></h4>
<p>Telegram allows creating forums with multiple distinct topics.</p>
<h4><a class="anchor" href="#discussion-groups" id="discussion-groups" name="discussion-groups"><i class="anchor-icon"></i></a><a href="/api/discussion">Discussion groups</a></h4>
<p>Groups can be associated to a channel as a discussion group, to allow users to discuss about posts.</p></div>
<p>Groups can be associated to a channel as a discussion group, to allow users to discuss about posts.</p>
<h4><a class="anchor" href="#error-handling" id="error-handling" name="error-handling"><i class="anchor-icon"></i></a><a href="/api/errors">Error handling </a></h4>
<p>How to handle API return errors correctly.</p></div>
</div>

View file

@ -146,11 +146,6 @@
<td>The length of a file part is invalid.</td>
</tr>
<tr>
<td>500</td>
<td>FILE_WRITE_EMPTY</td>
<td> </td>
</tr>
<tr>
<td>400</td>
<td>IMAGE_PROCESS_FAILED</td>
<td>Failure while processing image.</td>

View file

@ -113,11 +113,6 @@
<td>The number of file parts is invalid.</td>
</tr>
<tr>
<td>500</td>
<td>FILE_WRITE_EMPTY</td>
<td> </td>
</tr>
<tr>
<td>400</td>
<td>IMAGE_PROCESS_FAILED</td>
<td>Failure while processing image.</td>

View file

@ -4,38 +4,10 @@
<meta charset="utf-8">
<title>stories.applyBoost</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
peer
InputPeer
 
Result
Bool
Possible errors
Code
Type
Description
400
PEER_ID_INVALID…">
<meta property="description" content="Boost » a channel, leveling it up and granting it permission to post stories ».">
<meta property="og:title" content="stories.applyBoost">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
peer
InputPeer
 
Result
Bool
Possible errors
Code
Type
Description
400
PEER_ID_INVALID…">
<meta property="og:description" content="Boost » a channel, leveling it up and granting it permission to post stories ».">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -70,7 +42,8 @@ PEER_ID_INVALID…">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/stories.applyBoost" >stories.applyBoost</a></li></ul></div>
<h1 id="dev_page_title">stories.applyBoost</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p><a href="/api/stories#boosts">Boost »</a> a <a href="/api/channel">channel</a>, leveling it up and granting it permission to post <a href="/api/stories">stories »</a>.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>
@ -99,7 +72,7 @@ PEER_ID_INVALID…">
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
<td> </td>
<td>The channel to boost.</td>
</tr>
</tbody>
</table>
@ -117,11 +90,26 @@ PEER_ID_INVALID…">
<tbody>
<tr>
<td>400</td>
<td>BOOST_NOT_MODIFIED</td>
<td>You're already <a href="/api/stories#channel-stories">boosting</a> the specified channel.</td>
</tr>
<tr>
<td>400</td>
<td>PEER_ID_INVALID</td>
<td>The provided peer id is invalid.</td>
</tr>
<tr>
<td>400</td>
<td>PREMIUM_ACCOUNT_REQUIRED</td>
<td>A premium account is required to execute this action.</td>
</tr>
</tbody>
</table></div>
</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="#stories" id="stories" name="stories"><i class="anchor-icon"></i></a><a href="/api/stories">Stories</a></h4>
<p>Telegram users and channels can easily post and view stories through the API.</p>
<h4><a class="anchor" href="#channels-supergroups-gigagroups-and-basic-groups" id="channels-supergroups-gigagroups-and-basic-groups" name="channels-supergroups-gigagroups-and-basic-groups"><i class="anchor-icon"></i></a><a href="/api/channel">Channels, supergroups, gigagroups and basic groups</a></h4>
<p>How to handle channels, supergroups, gigagroups, basic groups, and what's the difference between them.</p></div>
</div>

View file

@ -4,34 +4,10 @@
<meta charset="utf-8">
<title>stories.canApplyBoost</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
peer
InputPeer
 
Result
stories.CanApplyBoostResult
Possible errors
Code
Type
Description…">
<meta property="description" content="Check whether a channel can be boosted, see here for more info ».">
<meta property="og:title" content="stories.canApplyBoost">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
peer
InputPeer
 
Result
stories.CanApplyBoostResult
Possible errors
Code
Type
Description…">
<meta property="og:description" content="Check whether a channel can be boosted, see here for more info ».">
<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">
@ -66,7 +42,8 @@ Description…">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/stories.canApplyBoost" >stories.canApplyBoost</a></li></ul></div>
<h1 id="dev_page_title">stories.canApplyBoost</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Check whether a channel can be <a href="/api/stories#boosts">boosted, see here for more info »</a>.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>
@ -95,7 +72,7 @@ Description…">
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
<td> </td>
<td>The channel to boost.</td>
</tr>
</tbody>
</table>
@ -113,11 +90,24 @@ Description…">
<tbody>
<tr>
<td>400</td>
<td>BOOST_NOT_MODIFIED</td>
<td>You're already <a href="/api/stories#channel-stories">boosting</a> the specified channel.</td>
</tr>
<tr>
<td>400</td>
<td>PEER_ID_INVALID</td>
<td>The provided peer id is invalid.</td>
</tr>
<tr>
<td>400</td>
<td>PREMIUM_ACCOUNT_REQUIRED</td>
<td>A premium account is required to execute this action.</td>
</tr>
</tbody>
</table></div>
</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="#stories" id="stories" name="stories"><i class="anchor-icon"></i></a><a href="/api/stories">Stories</a></h4>
<p>Telegram users and channels can easily post and view stories through the API.</p></div>
</div>

View file

@ -126,6 +126,11 @@ Description…">
<td>PEER_ID_INVALID</td>
<td>The provided peer id is invalid.</td>
</tr>
<tr>
<td>400</td>
<td>USER_PUBLIC_MISSING</td>
<td> </td>
</tr>
</tbody>
</table></div>

View file

@ -4,34 +4,10 @@
<meta charset="utf-8">
<title>stories.getBoostersList</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
peer
InputPeer
 
offset
string
 
limit
int
Maximum number of results to return, see pagination…">
<meta property="description" content="Obtain info about the users currently boosting a channel, see here » for more info about boosts.">
<meta property="og:title" content="stories.getBoostersList">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
peer
InputPeer
 
offset
string
 
limit
int
Maximum number of results to return, see pagination…">
<meta property="og:description" content="Obtain info about the users currently boosting a channel, see here » for more info about 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">
@ -66,7 +42,8 @@ Maximum number of results to return, see pagination…">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/stories.getBoostersList" >stories.getBoostersList</a></li></ul></div>
<h1 id="dev_page_title">stories.getBoostersList</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Obtain info about the users currently <a href="/api/stories#boosts">boosting</a> a channel, see <a href="/api/stories#boosts">here »</a> for more info about boosts.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>
@ -94,12 +71,12 @@ Maximum number of results to return, see pagination…">
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
<td> </td>
<td>The channel.</td>
</tr>
<tr>
<td><strong>offset</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Next offset for <a href="/api/offsets">pagination</a>, obtained from the <code>next_offset</code> field of <a href="/constructor/stories.boostersList">stories.boostersList</a>.</td>
</tr>
<tr>
<td><strong>limit</strong></td>
@ -139,7 +116,11 @@ Maximum number of results to return, see pagination…">
</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="#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>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#storiesboosterslist" id="storiesboosterslist" name="storiesboosterslist"><i class="anchor-icon"></i></a><a href="/constructor/stories.boostersList">stories.boostersList</a></h4>
<p>Info about the users currently <a href="/api/stories#boosts">boosting</a> the channel.</p>
<h4><a class="anchor" href="#stories" id="stories" name="stories"><i class="anchor-icon"></i></a><a href="/api/stories">Stories</a></h4>
<p>Telegram users and channels can easily post and view stories through the API.</p></div>
</div>

View file

@ -4,36 +4,10 @@
<meta charset="utf-8">
<title>stories.getBoostsStatus</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
peer
InputPeer
 
Result
stories.BoostsStatus
Possible errors
Code
Type
Description
400…">
<meta property="description" content="Get the current boost status of a channel, see here » for more info on boosts.">
<meta property="og:title" content="stories.getBoostsStatus">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
peer
InputPeer
 
Result
stories.BoostsStatus
Possible errors
Code
Type
Description
400…">
<meta property="og:description" content="Get the current boost status of a channel, see here » for more info on 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">
@ -68,7 +42,8 @@ Description
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/stories.getBoostsStatus" >stories.getBoostsStatus</a></li></ul></div>
<h1 id="dev_page_title">stories.getBoostsStatus</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Get the current <a href="/api/stories#boosts">boost status</a> of a channel, see <a href="/api/stories#boosts">here »</a> for more info on boosts.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>
@ -96,7 +71,7 @@ Description
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
<td> </td>
<td>The channel</td>
</tr>
</tbody>
</table>
@ -118,7 +93,10 @@ Description
<td>The provided peer id is invalid.</td>
</tr>
</tbody>
</table></div>
</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="#stories" id="stories" name="stories"><i class="anchor-icon"></i></a><a href="/api/stories">Stories</a></h4>
<p>Telegram users and channels can easily post and view stories through the API.</p></div>
</div>

View file

@ -183,6 +183,11 @@
<td>STORY_PERIOD_INVALID</td>
<td> </td>
</tr>
<tr>
<td>400</td>
<td>VENUE_ID_INVALID</td>
<td> </td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>

View file

@ -2990,7 +2990,16 @@
</table>
<p>ndMessage](/method/bots.canSendMessage) |   |
| <a href="/method/bots.allowSendMessage">bots.allowSendMessage</a> |   |
| <a href="/method/bots.invokeWebViewCustomMethod">bots.invokeWebViewCustomMethod</a> |   |</p></div>
| <a href="/method/bots.invokeWebViewCustomMethod">bots.invokeWebViewCustomMethod</a> |   |</p>
<p>|   |
| <a href="/method/bots.canSendMessage">bots.canSendMessage</a> |   |
| <a href="/method/bots.allowSendMessage">bots.allowSendMessage</a> |   |
| <a href="/method/bots.invokeWebViewCustomMethod">bots.invokeWebViewCustomMethod</a> |   |</p>
<p>locked) |   |
| <a href="/method/bots.canSendMessage">bots.canSendMessage</a> |   |
| <a href="/method/bots.allowSendMessage">bots.allowSendMessage</a> |   |
| <a href="/method/bots.invokeWebViewCustomMethod">bots.invokeWebViewCustomMethod</a> |   |</p>
<p>ethod/bots.invokeWebViewCustomMethod) |   |</p></div>
</div>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 8C EA 08 00 29 B8 1D 65
0010 | 14 00 00 00 F1 8E 7E BE 7F 1F 22 C6 09 72 3B CD
0020 | 45 F7 08 F0 F9 9E 90 BF</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 CC 7D 0D 00 D2 5E 20 65
0010 | 14 00 00 00 F1 8E 7E BE 44 89 D8 96 B9 08 80 A8
0020 | A6 23 F7 43 BD FB 19 7A</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>8CEA080029B81D65</code></td>
<td><code>CC7D0D00D25E2065</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>7F1F22C609723BCD45F708F0F99E90BF</code></td>
<td><code>4489D896B90880A8A623F743BDFB197A</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 80 2F D3 29 B8 1D 65
0010 | C0 00 00 00 63 24 16 05 7F 1F 22 C6 09 72 3B CD
0020 | 45 F7 08 F0 F9 9E 90 BF E9 B1 0D 87 09 A3 90 0E
0030 | F8 89 83 60 10 85 61 ED 08 1C 13 ED 04 D1 CE F9
0040 | A9 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 1C 2A C6 D2 5E 20 65
0010 | 68 00 00 00 63 24 16 05 44 89 D8 96 B9 08 80 A8
0020 | A6 23 F7 43 BD FB 19 7A 4C 57 92 83 D0 EA 21 D4
0030 | 47 21 8B 38 DC 9C 55 08 08 2C E5 C2 08 76 5A C5
0040 | ED 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
0050 | 35 5F C3 0B 21 6B E8 6C 02 2B B4 C3 85 FD 64 DE
0060 | 85 1D 9D D0</code></pre>
<p>Payload (de)serialization:</p>
@ -132,13 +132,13 @@
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01802FD329B81D65</code></td>
<td><code>011C2AC6D25E2065</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>C0000000</code> (192 in decimal)</td>
<td><code>68000000</code> (104 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>7F1F22C609723BCD45F708F0F99E90BF</code></td>
<td><code>4489D896B90880A8A623F743BDFB197A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>E9B10D8709A3900EF8898360108561ED</code></td>
<td><code>4C579283D0EA21D447218B38DC9C5508</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>081C13ED04D1CEF9A9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2023221262575139241</td>
<td><code>082CE5C208765AC5ED000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3235205248936756717</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--q" id="3-client-decomposes-pq-into-prime-factors-such-that-p--q" name="3-client-decomposes-pq-into-prime-factors-such-that-p--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 = 2023221262575139241</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2023221262575139241 = 1405962143 * 1439029687</code></p>
<pre><code>p = 1405962143
q = 1439029687</code></pre>
<pre><code>pq = 3235205248936756717</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>3235205248936756717 = 1720569787 * 1880310391</code></p>
<pre><code>p = 1720569787
q = 1880310391</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 13 ED 04 D1 CE F9 A9 00 00 00
0010 | 04 53 CD 47 9F 00 00 00 04 55 C5 D9 B7 00 00 00
0020 | 7F 1F 22 C6 09 72 3B CD 45 F7 08 F0 F9 9E 90 BF
0030 | E9 B1 0D 87 09 A3 90 0E F8 89 83 60 10 85 61 ED
0040 | 2D 8F D1 E4 9C 89 5A 19 12 2C 25 AB 16 ED 92 27
0050 | 37 99 E3 97 1F 29 89 FE 2B 11 1B C8 E9 E0 7A D1
<pre><code>0000 | 95 5F F5 A9 08 2C E5 C2 08 76 5A C5 ED 00 00 00
0010 | 04 66 8D CF BB 00 00 00 04 70 13 42 77 00 00 00
0020 | 44 89 D8 96 B9 08 80 A8 A6 23 F7 43 BD FB 19 7A
0030 | 4C 57 92 83 D0 EA 21 D4 47 21 8B 38 DC 9C 55 08
0040 | 3C 48 26 39 41 0D E8 BC 5E B6 D9 D7 E5 40 F3 49
0050 | 77 5A E1 B4 33 6D 7C 7B 31 F4 F1 BD C8 F0 D7 B3
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 = 1439029687</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>081C13ED04D1CEF9A9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2023221262575139241</td>
<td><code>082CE5C208765AC5ED000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3235205248936756717</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>0453CD479F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1405962143</td>
<td><code>04668DCFBB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1720569787</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>0455C5D9B7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1439029687</td>
<td><code>0470134277000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1880310391</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>7F1F22C609723BCD45F708F0F99E90BF</code></td>
<td><code>4489D896B90880A8A623F743BDFB197A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>E9B10D8709A3900EF8898360108561ED</code></td>
<td><code>4C579283D0EA21D447218B38DC9C5508</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>2D8FD1E49C895A19122C25AB16ED9227</code> <code>3799E3971F2989FE2B111BC8E9E07AD1</code></td>
<td><code>3C482639410DE8BC5EB6D9D7E540F349</code> <code>775AE1B4336D7C7B31F4F1BDC8F0D7B3</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1439029687</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 = 955FF5A9081C13ED04D1CEF9A90000000453CD479F0000000455C5D9B70000007F1F22C609723BCD45F708F0F99E90BFE9B10D8709A3900EF8898360108561ED2D8FD1E49C895A19122C25AB16ED92273799E3971F2989FE2B111BC8E9E07AD102000000
random_padding_bytes = 9C0F7EBDEB68050357DE05126F2231A5EB6FAD7E5592E14F68C1BD2C7D7924BD85B4919F55FCCE528F22CD56873FC460951188FF0ACAD4195CD194059C4F04D168423BF8876B7010E9FBE8BF5486723FF71EE405A1BB755348E67389</code></pre>
<pre><code>data = 955FF5A9082CE5C208765AC5ED00000004668DCFBB00000004701342770000004489D896B90880A8A623F743BDFB197A4C579283D0EA21D447218B38DC9C55083C482639410DE8BC5EB6D9D7E540F349775AE1B4336D7C7B31F4F1BDC8F0D7B302000000
random_padding_bytes = 7585D30C5A72A7367FB7EC2E2026379851BB73A8F326B98D387602DB8FE283DDCA235C1B6976A28031B30FE08420D732446B5CA6555D3D45CAC537E3718D9C66F2FFE03648056033E3E40975BEF2FB50D19B37A05AB4EF0A8A47C962</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 = 67FF69473A3411D0A9357ECB6954EDDB142250313042B4C5D50A8053C2F09546D0B2783F72FD53135FAB86284E112E1F6952F459B413287A49EB74D2E0F1F458216FF6CE8F4134C0E1DC30A51588735A9FCCB4A7C84BFECD95CC47A025CA587AF6E5C5FFC80550DE595FB894B41CE24556D4BB16AC635E851217F74060C828E966998FC06194DBC3D10EDA36291CC2359BF41A908AEAACC94FD8DADFA9DEB4F45BFD5869CD14B8175900824C71F64160C8545083303673D3FE6B58B87B8E34A80FA457835B4AA10F7E26867DFE8F126851D4CBF2587551E40FA50006D74B77858AE3E2C591FAC39E67EB04D84B8663A277A944C6A9998EB0D37900900D2E945C</code></pre>
<pre><code>encrypted_data = D177563F10EFE0AA71F81FA917FE234D3995C71C486C33EB265C2BE218EF78E485FD8A5C88EB70F6EA7161FEAA85443BD690CA865C4EB7242F2FD8D3C76E8BF61C85FFACC985DC350726AD9D7D1A9B4830C184ED313CE355E9404420D2318C6912921895797D22790AC2780EA1AE38C3B04BEC379799CDD0819D378E6662B8C75449EA2226ED355E9645B83A60F4CD115BCCCFE7584241F904BE4A70A06B03B72ED74703780465D8E8386CF1E0915739981FC984C4CFE31137FDEF2BD8F87B6F01E70BA3E0113B01C338C80F7E0CC800FE8CE464F71B9BB97BB9EEDE308480142F72F75582BB5B78ED995C7D1A9C70CD531AB0077DADD342D507CAFB5E7F6E34</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 90 EA 08 00 29 B8 1D 65
0010 | 40 01 00 00 BE E4 12 D7 7F 1F 22 C6 09 72 3B CD
0020 | 45 F7 08 F0 F9 9E 90 BF E9 B1 0D 87 09 A3 90 0E
0030 | F8 89 83 60 10 85 61 ED 04 53 CD 47 9F 00 00 00
0040 | 04 55 C5 D9 B7 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 67 FF 69 47 3A 34 11 D0 A9 35 7E CB
0060 | 69 54 ED DB 14 22 50 31 30 42 B4 C5 D5 0A 80 53
0070 | C2 F0 95 46 D0 B2 78 3F 72 FD 53 13 5F AB 86 28
0080 | 4E 11 2E 1F 69 52 F4 59 B4 13 28 7A 49 EB 74 D2
0090 | E0 F1 F4 58 21 6F F6 CE 8F 41 34 C0 E1 DC 30 A5
00A0 | 15 88 73 5A 9F CC B4 A7 C8 4B FE CD 95 CC 47 A0
00B0 | 25 CA 58 7A F6 E5 C5 FF C8 05 50 DE 59 5F B8 94
00C0 | B4 1C E2 45 56 D4 BB 16 AC 63 5E 85 12 17 F7 40
00D0 | 60 C8 28 E9 66 99 8F C0 61 94 DB C3 D1 0E DA 36
00E0 | 29 1C C2 35 9B F4 1A 90 8A EA AC C9 4F D8 DA DF
00F0 | A9 DE B4 F4 5B FD 58 69 CD 14 B8 17 59 00 82 4C
0100 | 71 F6 41 60 C8 54 50 83 30 36 73 D3 FE 6B 58 B8
0110 | 7B 8E 34 A8 0F A4 57 83 5B 4A A1 0F 7E 26 86 7D
0120 | FE 8F 12 68 51 D4 CB F2 58 75 51 E4 0F A5 00 06
0130 | D7 4B 77 85 8A E3 E2 C5 91 FA C3 9E 67 EB 04 D8
0140 | 4B 86 63 A2 77 A9 44 C6 A9 99 8E B0 D3 79 00 90
0150 | 0D 2E 94 5C</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 28 A2 0E 00 D2 5E 20 65
0010 | 40 01 00 00 BE E4 12 D7 44 89 D8 96 B9 08 80 A8
0020 | A6 23 F7 43 BD FB 19 7A 4C 57 92 83 D0 EA 21 D4
0030 | 47 21 8B 38 DC 9C 55 08 04 66 8D CF BB 00 00 00
0040 | 04 70 13 42 77 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 D1 77 56 3F 10 EF E0 AA 71 F8 1F A9
0060 | 17 FE 23 4D 39 95 C7 1C 48 6C 33 EB 26 5C 2B E2
0070 | 18 EF 78 E4 85 FD 8A 5C 88 EB 70 F6 EA 71 61 FE
0080 | AA 85 44 3B D6 90 CA 86 5C 4E B7 24 2F 2F D8 D3
0090 | C7 6E 8B F6 1C 85 FF AC C9 85 DC 35 07 26 AD 9D
00A0 | 7D 1A 9B 48 30 C1 84 ED 31 3C E3 55 E9 40 44 20
00B0 | D2 31 8C 69 12 92 18 95 79 7D 22 79 0A C2 78 0E
00C0 | A1 AE 38 C3 B0 4B EC 37 97 99 CD D0 81 9D 37 8E
00D0 | 66 62 B8 C7 54 49 EA 22 26 ED 35 5E 96 45 B8 3A
00E0 | 60 F4 CD 11 5B CC CF E7 58 42 41 F9 04 BE 4A 70
00F0 | A0 6B 03 B7 2E D7 47 03 78 04 65 D8 E8 38 6C F1
0100 | E0 91 57 39 98 1F C9 84 C4 CF E3 11 37 FD EF 2B
0110 | D8 F8 7B 6F 01 E7 0B A3 E0 11 3B 01 C3 38 C8 0F
0120 | 7E 0C C8 00 FE 8C E4 64 F7 1B 9B B9 7B B9 EE DE
0130 | 30 84 80 14 2F 72 F7 55 82 BB 5B 78 ED 99 5C 7D
0140 | 1A 9C 70 CD 53 1A B0 07 7D AD D3 42 D5 07 CA FB
0150 | 5E 7F 6E 34</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 = 9C0F7EBDEB68050357DE05126F2231A5EB6FAD7E5592E14F68C1BD2C7
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>90EA080029B81D65</code></td>
<td><code>28A20E00D25E2065</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 = 9C0F7EBDEB68050357DE05126F2231A5EB6FAD7E5592E14F68C1BD2C7
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>7F1F22C609723BCD45F708F0F99E90BF</code></td>
<td><code>4489D896B90880A8A623F743BDFB197A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>E9B10D8709A3900EF8898360108561ED</code></td>
<td><code>4C579283D0EA21D447218B38DC9C5508</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>0453CD479F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1405962143</td>
<td><code>04668DCFBB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1720569787</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>0455C5D9B7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1439029687</td>
<td><code>0470134277000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1880310391</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 = 9C0F7EBDEB68050357DE05126F2231A5EB6FAD7E5592E14F68C1BD2C7
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE00010067FF69473A3411D0A9357ECB</code> <code>6954EDDB142250313042B4C5D50A8053</code> <code>C2F09546D0B2783F72FD53135FAB8628</code> <code>4E112E1F6952F459B413287A49EB74D2</code> <code>E0F1F458216FF6CE8F4134C0E1DC30A5</code> <code>1588735A9FCCB4A7C84BFECD95CC47A0</code> <code>25CA587AF6E5C5FFC80550DE595FB894</code> <code>B41CE24556D4BB16AC635E851217F740</code> <code>60C828E966998FC06194DBC3D10EDA36</code> <code>291CC2359BF41A908AEAACC94FD8DADF</code> <code>A9DEB4F45BFD5869CD14B8175900824C</code> <code>71F64160C8545083303673D3FE6B58B8</code> <code>7B8E34A80FA457835B4AA10F7E26867D</code> <code>FE8F126851D4CBF2587551E40FA50006</code> <code>D74B77858AE3E2C591FAC39E67EB04D8</code> <code>4B8663A277A944C6A9998EB0D3790090</code><br> <code>0D2E945C</code></td>
<td><code>FE000100D177563F10EFE0AA71F81FA9</code> <code>17FE234D3995C71C486C33EB265C2BE2</code> <code>18EF78E485FD8A5C88EB70F6EA7161FE</code> <code>AA85443BD690CA865C4EB7242F2FD8D3</code> <code>C76E8BF61C85FFACC985DC350726AD9D</code> <code>7D1A9B4830C184ED313CE355E9404420</code> <code>D2318C6912921895797D22790AC2780E</code> <code>A1AE38C3B04BEC379799CDD0819D378E</code> <code>6662B8C75449EA2226ED355E9645B83A</code> <code>60F4CD115BCCCFE7584241F904BE4A70</code> <code>A06B03B72ED74703780465D8E8386CF1</code> <code>E0915739981FC984C4CFE31137FDEF2B</code> <code>D8F87B6F01E70BA3E0113B01C338C80F</code> <code>7E0CC800FE8CE464F71B9BB97BB9EEDE</code> <code>308480142F72F75582BB5B78ED995C7D</code> <code>1A9C70CD531AB0077DADD342D507CAFB</code><br> <code>5E7F6E34</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 9C0F7EBDEB68050357DE05126F2231A5EB6FAD7E5592E14F68C1BD2C7
<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 D4 B2 90 2A B8 1D 65
0010 | A4 02 00 00 5C 07 E8 D0 7F 1F 22 C6 09 72 3B CD
0020 | 45 F7 08 F0 F9 9E 90 BF E9 B1 0D 87 09 A3 90 0E
0030 | F8 89 83 60 10 85 61 ED FE 50 02 00 13 3E AF 1E
0040 | B2 03 87 D4 32 F5 85 DD 9E CA A4 B8 F3 72 3F 6C
0050 | 99 20 66 79 13 23 BC E6 53 FE 5A D1 9B CF C2 4D
0060 | 23 0F CA 24 7C 68 6A 14 90 1C B9 59 B1 2A DD 3B
0070 | BD F6 27 F1 F5 D5 8A 0F FE 5F 54 F0 3C 27 B5 42
0080 | 01 CC E7 69 8C 7E 9F D1 CD 6D 62 EC F0 BD 50 B6
0090 | FE 01 E5 CE E9 B2 6F 4A B8 A0 C6 AD DD DC 2B F0
00A0 | 32 72 0C 30 5E 70 01 50 01 16 62 F1 76 F6 DF 72
00B0 | 2A 59 3B 3E 12 81 73 9D 06 32 4A F4 81 01 6C 75
00C0 | 77 F9 EB B7 E5 59 33 0D 19 71 E5 01 51 5E 42 71
00D0 | 8B 7F CD 88 3B B2 AF 6A 90 B2 A0 E6 8F 8A DD 50
00E0 | D1 7C A9 D3 BE 30 06 17 4C C4 EC CE F8 F9 FA 0F
00F0 | 53 9D BC DC F0 A0 C6 48 DA 8C 76 29 07 1C 6C 8A
0100 | B0 74 CC 20 65 1E AC B5 DC 34 B4 1F F9 90 7B 59
0110 | 6A 5F E1 58 F0 87 D4 96 47 F9 E8 01 C8 BF 74 6D
0120 | AB D3 A4 2A 9A F5 33 E3 29 2D 0D 5C 72 13 A0 33
0130 | 1B C7 89 E0 23 F3 4C 0B 00 6C 13 C6 D5 3E 6E FD
0140 | 3F 04 AD 13 FA 04 89 32 A4 DA 95 AC DD 8E 93 48
0150 | A6 57 F3 EF 7A B0 97 B8 59 46 D7 EA C4 4F 9D 76
0160 | 1E CC 3E D1 6C 03 2F D4 63 4E FA 4F F9 A4 D2 24
0170 | DF 86 FE 2D C7 96 3B 39 7D 87 B9 48 99 85 DD 92
0180 | A6 37 20 8B B1 E4 A5 27 47 47 31 27 60 F8 F1 9F
0190 | DF BB F1 FA AC 65 C2 99 E4 94 A5 8F D3 6E 8B 2D
01A0 | 98 2C EE CD A5 84 ED 63 FB 07 A7 BC 9A B6 F8 82
01B0 | D5 F5 00 7B 75 BD 1C 0C 36 DC D6 0D 12 A4 9B 72
01C0 | B0 8A DE A3 44 9D B5 C2 CB F8 06 D2 F2 DE B6 32
01D0 | F6 31 FB 38 ED 32 55 B9 89 CC 4C 0D B5 1E 1A 27
01E0 | 45 EE 68 22 12 5C 53 97 32 AC 28 92 F7 03 A6 3E
01F0 | 9C 75 73 89 54 C7 A2 0E 75 28 47 87 EF A5 68 E4
0200 | D6 C8 96 C8 18 D8 51 0B 79 16 32 D1 D7 A8 D8 90
0210 | 6F A1 81 52 66 14 08 32 57 34 5C 9D FF E9 3C AF
0220 | B5 B0 33 99 86 F6 B3 82 F4 E3 75 8D 22 53 10 A6
0230 | 16 A2 35 D1 4F 4C 47 35 CD 7C 6A F5 C2 73 56 B3
0240 | E0 45 57 43 D3 E2 D7 06 52 62 5F 72 D9 12 C5 2A
0250 | C3 A2 F0 26 5C 0A 75 BB 5D 30 9A A5 B0 43 D9 D5
0260 | CD B2 86 19 1F F3 4E 84 0F B6 CD 33 1F 0F 52 9E
0270 | 0B C5 1F AC 89 8B 3F 92 F5 B9 82 35 11 EF 1C E2
0280 | EA EC F1 20 7B 88 FB FB 96 92 4A 47</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 B8 68 78 D3 5E 20 65
0010 | E4 02 00 00 5C 07 E8 D0 44 89 D8 96 B9 08 80 A8
0020 | A6 23 F7 43 BD FB 19 7A 4C 57 92 83 D0 EA 21 D4
0030 | 47 21 8B 38 DC 9C 55 08 FE 50 02 00 D8 A8 77 B2
0040 | 68 75 1F A9 EC BD A5 D5 A8 A8 67 46 48 10 AD 8F
0050 | CB 6B 3E 36 FD DA B9 BB E6 E9 3B D3 83 2F 75 BB
0060 | F9 CD DE EE 28 42 59 37 55 FF 04 DC 87 27 8B 73
0070 | 78 96 2C 21 86 DD 37 94 50 64 05 CA 0A 73 CB B1
0080 | 31 95 90 B5 6C D0 F1 5E A0 5E DF 4F 96 7E 48 9E
0090 | 11 BB 88 43 EF 09 0D 08 4F CF 0D 4E 00 16 7D 8B
00A0 | 20 3F 83 9F FD 5F 5C DB 5A 16 35 2D 78 17 42 92
00B0 | 4B 12 CE 68 F0 4D BD 6C 54 1D 34 BA A9 1E 50 9E
00C0 | 46 29 AF 32 81 67 86 0F 76 62 8B 12 F1 BB 76 E6
00D0 | E0 07 FF 53 00 9B 05 16 BD 3C C0 52 F3 A6 83 F3
00E0 | 1D 42 7C 55 30 59 7E 15 DF DA 3F A0 39 D3 AE 53
00F0 | F4 08 7E 2C 8B 3B 8D EA 58 28 38 39 53 9F B2 E5
0100 | 7D 9F B2 8D 39 4A 46 75 B8 AD 1E 83 03 66 63 14
0110 | 27 DB 2C 98 7F 4B 33 C2 7C 92 51 F5 A7 80 8B 60
0120 | 28 06 14 2F 1F FB D3 21 53 29 D8 A1 C8 12 44 E2
0130 | 27 D2 6C AD 12 B5 45 8C 11 41 D2 DB A5 7B DA E3
0140 | 5C 4F C4 8B 3A EE DB A3 50 DE 91 B9 8F 9E 5A 41
0150 | 9A E2 E7 E3 1D 47 A3 EC 9E 19 AC F6 5B A3 39 CF
0160 | 8A D4 C9 44 AB 4C F3 FC DC EE 2E 72 61 71 37 87
0170 | 6F C7 E5 4E 62 A9 C4 DD 88 26 A4 76 C6 AA 23 AB
0180 | CF AE 66 98 BB E9 86 22 18 F6 F4 22 01 CB CE 6F
0190 | A3 AF 9A F6 11 8E DD 74 DE 25 EF C4 AB 6B AB A3
01A0 | D9 60 6C 66 EC 90 D3 C1 99 FC AB C3 44 28 41 FC
01B0 | 20 24 DB 95 07 7D 66 73 ED 1F 46 5B 3E 7E AE 19
01C0 | 91 9A 84 09 04 14 8F B0 73 C2 81 56 72 B4 BB 92
01D0 | D2 1E A0 03 C8 12 12 63 D7 9D 4A 75 3C 16 90 FC
01E0 | 4C 45 5D 03 35 0D 61 2F C5 13 FC 79 7E 9E A3 E0
01F0 | 02 09 F0 86 10 75 72 95 40 F2 BA 5E 21 C6 7A 57
0200 | A9 53 DB 5E 0B 6A 0E 20 13 71 3D 7E 53 21 BE 56
0210 | 66 73 10 7B 11 3C 71 21 B9 33 71 C6 60 8A 48 D4
0220 | C9 E2 9D 39 88 D7 50 B7 99 83 B5 3F D9 84 03 B6
0230 | 21 AC 0E 00 6D 4D EB C6 61 AA A3 34 21 4A 8F AF
0240 | 17 C1 32 BE E0 25 95 18 A9 3F D5 DC 45 C2 82 C7
0250 | 3A 40 29 A2 0C 18 D7 CE A4 BD CF 56 1A D7 3C 29
0260 | 2A AF 62 70 F2 60 64 69 B5 25 76 A8 6A 39 7A 1A
0270 | 25 7A 0D DD 3F 76 22 17 E8 C8 4B B9 EA 2E 78 29
0280 | 3D 66 9C 5C DA 8C 46 E9 20 28 E4 64</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 = 9C0F7EBDEB68050357DE05126F2231A5EB6FAD7E5592E14F68C1BD2C7
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01D4B2902AB81D65</code></td>
<td><code>01B86878D35E2065</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>A4020000</code> (676 in decimal)</td>
<td><code>E4020000</code> (740 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 9C0F7EBDEB68050357DE05126F2231A5EB6FAD7E5592E14F68C1BD2C7
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>7F1F22C609723BCD45F708F0F99E90BF</code></td>
<td><code>4489D896B90880A8A623F743BDFB197A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>E9B10D8709A3900EF8898360108561ED</code></td>
<td><code>4C579283D0EA21D447218B38DC9C5508</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE500200133EAF1EB20387D432F585DD</code> <code>9ECAA4B8F3723F6C992066791323BCE6</code> <code>53FE5AD19BCFC24D230FCA247C686A14</code> <code>901CB959B12ADD3BBDF627F1F5D58A0F</code> <code>FE5F54F03C27B54201CCE7698C7E9FD1</code> <code>CD6D62ECF0BD50B6FE01E5CEE9B26F4A</code> <code>B8A0C6ADDDDC2BF032720C305E700150</code> <code>011662F176F6DF722A593B3E1281739D</code> <code>06324AF481016C7577F9EBB7E559330D</code> <code>1971E501515E42718B7FCD883BB2AF6A</code> <code>90B2A0E68F8ADD50D17CA9D3BE300617</code> <code>4CC4ECCEF8F9FA0F539DBCDCF0A0C648</code> <code>DA8C7629071C6C8AB074CC20651EACB5</code> <code>DC34B41FF9907B596A5FE158F087D496</code> <code>47F9E801C8BF746DABD3A42A9AF533E3</code> <code>292D0D5C7213A0331BC789E023F34C0B</code> <code>006C13C6D53E6EFD3F04AD13FA048932</code> <code>A4DA95ACDD8E9348A657F3EF7AB097B8</code> <code>5946D7EAC44F9D761ECC3ED16C032FD4</code> <code>634EFA4FF9A4D224DF86FE2DC7963B39</code> <code>7D87B9489985DD92A637208BB1E4A527</code> <code>4747312760F8F19FDFBBF1FAAC65C299</code> <code>E494A58FD36E8B2D982CEECDA584ED63</code> <code>FB07A7BC9AB6F882D5F5007B75BD1C0C</code> <code>36DCD60D12A49B72B08ADEA3449DB5C2</code> <code>CBF806D2F2DEB632F631FB38ED3255B9</code> <code>89CC4C0DB51E1A2745EE6822125C5397</code> <code>32AC2892F703A63E9C75738954C7A20E</code> <code>75284787EFA568E4D6C896C818D8510B</code> <code>791632D1D7A8D8906FA1815266140832</code> <code>57345C9DFFE93CAFB5B0339986F6B382</code> <code>F4E3758D225310A616A235D14F4C4735</code> <code>CD7C6AF5C27356B3E0455743D3E2D706</code> <code>52625F72D912C52AC3A2F0265C0A75BB</code> <code>5D309AA5B043D9D5CDB286191FF34E84</code> <code>0FB6CD331F0F529E0BC51FAC898B3F92</code> <code>F5B9823511EF1CE2EAECF1207B88FBFB</code><br> <code>96924A47</code></td>
<td><code>FE500200D8A877B268751FA9ECBDA5D5</code> <code>A8A867464810AD8FCB6B3E36FDDAB9BB</code> <code>E6E93BD3832F75BBF9CDDEEE28425937</code> <code>55FF04DC87278B7378962C2186DD3794</code> <code>506405CA0A73CBB1319590B56CD0F15E</code> <code>A05EDF4F967E489E11BB8843EF090D08</code> <code>4FCF0D4E00167D8B203F839FFD5F5CDB</code> <code>5A16352D781742924B12CE68F04DBD6C</code> <code>541D34BAA91E509E4629AF328167860F</code> <code>76628B12F1BB76E6E007FF53009B0516</code> <code>BD3CC052F3A683F31D427C5530597E15</code> <code>DFDA3FA039D3AE53F4087E2C8B3B8DEA</code> <code>58283839539FB2E57D9FB28D394A4675</code> <code>B8AD1E830366631427DB2C987F4B33C2</code> <code>7C9251F5A7808B602806142F1FFBD321</code> <code>5329D8A1C81244E227D26CAD12B5458C</code> <code>1141D2DBA57BDAE35C4FC48B3AEEDBA3</code> <code>50DE91B98F9E5A419AE2E7E31D47A3EC</code> <code>9E19ACF65BA339CF8AD4C944AB4CF3FC</code> <code>DCEE2E72617137876FC7E54E62A9C4DD</code> <code>8826A476C6AA23ABCFAE6698BBE98622</code> <code>18F6F42201CBCE6FA3AF9AF6118EDD74</code> <code>DE25EFC4AB6BABA3D9606C66EC90D3C1</code> <code>99FCABC3442841FC2024DB95077D6673</code> <code>ED1F465B3E7EAE19919A840904148FB0</code> <code>73C2815672B4BB92D21EA003C8121263</code> <code>D79D4A753C1690FC4C455D03350D612F</code> <code>C513FC797E9EA3E00209F08610757295</code> <code>40F2BA5E21C67A57A953DB5E0B6A0E20</code> <code>13713D7E5321BE566673107B113C7121</code> <code>B93371C6608A48D4C9E29D3988D750B7</code> <code>9983B53FD98403B621AC0E006D4DEBC6</code> <code>61AAA334214A8FAF17C132BEE0259518</code> <code>A93FD5DC45C282C73A4029A20C18D7CE</code> <code>A4BDCF561AD73C292AAF6270F2606469</code> <code>B52576A86A397A1A257A0DDD3F762217</code> <code>E8C84BB9EA2E78293D669C5CDA8C46E9</code><br> <code>2028E464</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 9C0F7EBDEB68050357DE05126F2231A5EB6FAD7E5592E14F68C1BD2C7
<!-- 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 = 133EAF1EB20387D432F585DD9ECAA4B8F3723F6C992066791323BCE653FE5AD19BCFC24D230FCA247C686A14901CB959B12ADD3BBDF627F1F5D58A0FFE5F54F03C27B54201CCE7698C7E9FD1CD6D62ECF0BD50B6FE01E5CEE9B26F4AB8A0C6ADDDDC2BF032720C305E700150011662F176F6DF722A593B3E1281739D06324AF481016C7577F9EBB7E559330D1971E501515E42718B7FCD883BB2AF6A90B2A0E68F8ADD50D17CA9D3BE3006174CC4ECCEF8F9FA0F539DBCDCF0A0C648DA8C7629071C6C8AB074CC20651EACB5DC34B41FF9907B596A5FE158F087D49647F9E801C8BF746DABD3A42A9AF533E3292D0D5C7213A0331BC789E023F34C0B006C13C6D53E6EFD3F04AD13FA048932A4DA95ACDD8E9348A657F3EF7AB097B85946D7EAC44F9D761ECC3ED16C032FD4634EFA4FF9A4D224DF86FE2DC7963B397D87B9489985DD92A637208BB1E4A5274747312760F8F19FDFBBF1FAAC65C299E494A58FD36E8B2D982CEECDA584ED63FB07A7BC9AB6F882D5F5007B75BD1C0C36DCD60D12A49B72B08ADEA3449DB5C2CBF806D2F2DEB632F631FB38ED3255B989CC4C0DB51E1A2745EE6822125C539732AC2892F703A63E9C75738954C7A20E75284787EFA568E4D6C896C818D8510B791632D1D7A8D8906FA181526614083257345C9DFFE93CAFB5B0339986F6B382F4E3758D225310A616A235D14F4C4735CD7C6AF5C27356B3E0455743D3E2D70652625F72D912C52AC3A2F0265C0A75BB5D309AA5B043D9D5CDB286191FF34E840FB6CD331F0F529E0BC51FAC898B3F92F5B9823511EF1CE2EAECF1207B88FBFB96924A47
tmp_aes_key = 5E753C94B9FCA27B05005EAD0F3E8318501C3242E1FDE09E523ED033E1D9F393
tmp_aes_iv = CB5D109B5A14C5077CE6ED86B2B19E46DFA3EC4AD2E3E14B921E71AA2D8FD1E4</code></pre>
<pre><code>encrypted_answer = D8A877B268751FA9ECBDA5D5A8A867464810AD8FCB6B3E36FDDAB9BBE6E93BD3832F75BBF9CDDEEE2842593755FF04DC87278B7378962C2186DD3794506405CA0A73CBB1319590B56CD0F15EA05EDF4F967E489E11BB8843EF090D084FCF0D4E00167D8B203F839FFD5F5CDB5A16352D781742924B12CE68F04DBD6C541D34BAA91E509E4629AF328167860F76628B12F1BB76E6E007FF53009B0516BD3CC052F3A683F31D427C5530597E15DFDA3FA039D3AE53F4087E2C8B3B8DEA58283839539FB2E57D9FB28D394A4675B8AD1E830366631427DB2C987F4B33C27C9251F5A7808B602806142F1FFBD3215329D8A1C81244E227D26CAD12B5458C1141D2DBA57BDAE35C4FC48B3AEEDBA350DE91B98F9E5A419AE2E7E31D47A3EC9E19ACF65BA339CF8AD4C944AB4CF3FCDCEE2E72617137876FC7E54E62A9C4DD8826A476C6AA23ABCFAE6698BBE9862218F6F42201CBCE6FA3AF9AF6118EDD74DE25EFC4AB6BABA3D9606C66EC90D3C199FCABC3442841FC2024DB95077D6673ED1F465B3E7EAE19919A840904148FB073C2815672B4BB92D21EA003C8121263D79D4A753C1690FC4C455D03350D612FC513FC797E9EA3E00209F0861075729540F2BA5E21C67A57A953DB5E0B6A0E2013713D7E5321BE566673107B113C7121B93371C6608A48D4C9E29D3988D750B79983B53FD98403B621AC0E006D4DEBC661AAA334214A8FAF17C132BEE0259518A93FD5DC45C282C73A4029A20C18D7CEA4BDCF561AD73C292AAF6270F2606469B52576A86A397A1A257A0DDD3F762217E8C84BB9EA2E78293D669C5CDA8C46E92028E464
tmp_aes_key = E22A39733A0CA04AC31617FEFD7E5A3C54CF06AE3FF1DF7E2B5DF48EF7F937E9
tmp_aes_iv = 63828DB4E00117FD643F872C5B4975BC013A065BD691CFA5640C797A3C482639</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 5AE7003DFE5470A8F4F0E9677AE7C88B22684AD2BA0D89B57F1F22C609723BCD45F708F0F99E90BFE9B10D8709A3900EF8898360108561ED03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010058B8300D1BDC9FC3D40215E54A5D85EFFDE73FA7BF8045FEEA78B52806A2B816B3EE1C11CFCE4F9AC6CDC15EE00DFFEC00E54DC16A3391FEBCDB1E45F7FB8732B074DDB3298470C3989CEF21A1F38EFB850A85885EB1391FE40EC8183745F490C4476F1F07167DE5B487A666A10A4FB3DFC14B08676307328D4B496E98B16730A1AD6509BDFC8188E5DDC7A56EAF72DB4F1377FC22C593C7CAC466AFA49084899309513B04B5E64737244D4EA62B8362F4242A3F749CFA24D1ABDCCC8E3E21C0B296301885925A64E009C149A6518DC6336431F6689140CB1110585A2B51BF2C88E59BDDFFA457100D0F0BE00CCBE2C1C5D53141B18C52B6FCFF716BF6AE8D522AB81D65E58BD6003A5C0B42
answer = BA0D89B57F1F22C609723BCD45F708F0F99E90BFE9B10D8709A3900EF8898360108561ED03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010058B8300D1BDC9FC3D40215E54A5D85EFFDE73FA7BF8045FEEA78B52806A2B816B3EE1C11CFCE4F9AC6CDC15EE00DFFEC00E54DC16A3391FEBCDB1E45F7FB8732B074DDB3298470C3989CEF21A1F38EFB850A85885EB1391FE40EC8183745F490C4476F1F07167DE5B487A666A10A4FB3DFC14B08676307328D4B496E98B16730A1AD6509BDFC8188E5DDC7A56EAF72DB4F1377FC22C593C7CAC466AFA49084899309513B04B5E64737244D4EA62B8362F4242A3F749CFA24D1ABDCCC8E3E21C0B296301885925A64E009C149A6518DC6336431F6689140CB1110585A2B51BF2C88E59BDDFFA457100D0F0BE00CCBE2C1C5D53141B18C52B6FCFF716BF6AE8D522AB81D65E58BD6003A5C0B42</code></pre>
<pre><code>answer_with_hash = 0B0DD724989BE1A322EC2A4A920D30F1A9C59528BA0D89B54489D896B90880A8A623F743BDFB197A4C579283D0EA21D447218B38DC9C550803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010081626BD4F644F37B9C05189C924A9DBFF73E82493AE0301961F1FD0AE568D51AD760C54D5B9181CCDB65CF5D912D634CA6E90A67331D4DE4C9AC9534267667E786FEA07F48685ECA15DDEF41DD57415A35F6D40049BD0C62E6653F958230A8223709001B06F579E328EDC8F1AF54275A8B903DDE6E2BF59617F81582D6D496312E97C039A9A531CD629397D630FADE7F5A4D76BDE6E068A73D62688DFE18FB10DF6B4D64CB3E4F5269F01A54098EF37356759FF01A5EF59D8532E47DEA41D8035E5CFE7B6569A8ABAED534523002E1EF85FE2DC1249103B543F9633F3744F30D5BF7150851C0A5EED21FC6D19D3CB4AB3BF56ED08A458D00EFC22CB9AA1BB7F6D35E206597622EE6713630B8
answer = BA0D89B54489D896B90880A8A623F743BDFB197A4C579283D0EA21D447218B38DC9C550803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010081626BD4F644F37B9C05189C924A9DBFF73E82493AE0301961F1FD0AE568D51AD760C54D5B9181CCDB65CF5D912D634CA6E90A67331D4DE4C9AC9534267667E786FEA07F48685ECA15DDEF41DD57415A35F6D40049BD0C62E6653F958230A8223709001B06F579E328EDC8F1AF54275A8B903DDE6E2BF59617F81582D6D496312E97C039A9A531CD629397D630FADE7F5A4D76BDE6E068A73D62688DFE18FB10DF6B4D64CB3E4F5269F01A54098EF37356759FF01A5EF59D8532E47DEA41D8035E5CFE7B6569A8ABAED534523002E1EF85FE2DC1249103B543F9633F3744F30D5BF7150851C0A5EED21FC6D19D3CB4AB3BF56ED08A458D00EFC22CB9AA1BB7F6D35E206597622EE6713630B8</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 7F 1F 22 C6 09 72 3B CD 45 F7 08 F0
0010 | F9 9E 90 BF E9 B1 0D 87 09 A3 90 0E F8 89 83 60
0020 | 10 85 61 ED 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 44 89 D8 96 B9 08 80 A8 A6 23 F7 43
0010 | BD FB 19 7A 4C 57 92 83 D0 EA 21 D4 47 21 8B 38
0020 | DC 9C 55 08 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 = BA0D89B57F1F22C609723BCD45F708F0F99E90BFE9B10D8709A3900EF8898360108561E
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 | 58 B8 30 0D 1B DC 9F C3 D4 02 15 E5 4A 5D 85 EF
0140 | FD E7 3F A7 BF 80 45 FE EA 78 B5 28 06 A2 B8 16
0150 | B3 EE 1C 11 CF CE 4F 9A C6 CD C1 5E E0 0D FF EC
0160 | 00 E5 4D C1 6A 33 91 FE BC DB 1E 45 F7 FB 87 32
0170 | B0 74 DD B3 29 84 70 C3 98 9C EF 21 A1 F3 8E FB
0180 | 85 0A 85 88 5E B1 39 1F E4 0E C8 18 37 45 F4 90
0190 | C4 47 6F 1F 07 16 7D E5 B4 87 A6 66 A1 0A 4F B3
01A0 | DF C1 4B 08 67 63 07 32 8D 4B 49 6E 98 B1 67 30
01B0 | A1 AD 65 09 BD FC 81 88 E5 DD C7 A5 6E AF 72 DB
01C0 | 4F 13 77 FC 22 C5 93 C7 CA C4 66 AF A4 90 84 89
01D0 | 93 09 51 3B 04 B5 E6 47 37 24 4D 4E A6 2B 83 62
01E0 | F4 24 2A 3F 74 9C FA 24 D1 AB DC CC 8E 3E 21 C0
01F0 | B2 96 30 18 85 92 5A 64 E0 09 C1 49 A6 51 8D C6
0200 | 33 64 31 F6 68 91 40 CB 11 10 58 5A 2B 51 BF 2C
0210 | 88 E5 9B DD FF A4 57 10 0D 0F 0B E0 0C CB E2 C1
0220 | C5 D5 31 41 B1 8C 52 B6 FC FF 71 6B F6 AE 8D 52
0230 | 2A B8 1D 65</code></pre>
0130 | 81 62 6B D4 F6 44 F3 7B 9C 05 18 9C 92 4A 9D BF
0140 | F7 3E 82 49 3A E0 30 19 61 F1 FD 0A E5 68 D5 1A
0150 | D7 60 C5 4D 5B 91 81 CC DB 65 CF 5D 91 2D 63 4C
0160 | A6 E9 0A 67 33 1D 4D E4 C9 AC 95 34 26 76 67 E7
0170 | 86 FE A0 7F 48 68 5E CA 15 DD EF 41 DD 57 41 5A
0180 | 35 F6 D4 00 49 BD 0C 62 E6 65 3F 95 82 30 A8 22
0190 | 37 09 00 1B 06 F5 79 E3 28 ED C8 F1 AF 54 27 5A
01A0 | 8B 90 3D DE 6E 2B F5 96 17 F8 15 82 D6 D4 96 31
01B0 | 2E 97 C0 39 A9 A5 31 CD 62 93 97 D6 30 FA DE 7F
01C0 | 5A 4D 76 BD E6 E0 68 A7 3D 62 68 8D FE 18 FB 10
01D0 | DF 6B 4D 64 CB 3E 4F 52 69 F0 1A 54 09 8E F3 73
01E0 | 56 75 9F F0 1A 5E F5 9D 85 32 E4 7D EA 41 D8 03
01F0 | 5E 5C FE 7B 65 69 A8 AB AE D5 34 52 30 02 E1 EF
0200 | 85 FE 2D C1 24 91 03 B5 43 F9 63 3F 37 44 F3 0D
0210 | 5B F7 15 08 51 C0 A5 EE D2 1F C6 D1 9D 3C B4 AB
0220 | 3B F5 6E D0 8A 45 8D 00 EF C2 2C B9 AA 1B B7 F6
0230 | D3 5E 20 65</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B57F1F22C609723BCD45F708F0F99E90BFE9B10D8709A3900EF8898360108561E
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>7F1F22C609723BCD45F708F0F99E90BF</code></td>
<td><code>4489D896B90880A8A623F743BDFB197A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>E9B10D8709A3900EF8898360108561ED</code></td>
<td><code>4C579283D0EA21D447218B38DC9C5508</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B57F1F22C609723BCD45F708F0F99E90BFE9B10D8709A3900EF8898360108561E
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE00010058B8300D1BDC9FC3D40215E5</code> <code>4A5D85EFFDE73FA7BF8045FEEA78B528</code> <code>06A2B816B3EE1C11CFCE4F9AC6CDC15E</code> <code>E00DFFEC00E54DC16A3391FEBCDB1E45</code> <code>F7FB8732B074DDB3298470C3989CEF21</code> <code>A1F38EFB850A85885EB1391FE40EC818</code> <code>3745F490C4476F1F07167DE5B487A666</code> <code>A10A4FB3DFC14B08676307328D4B496E</code> <code>98B16730A1AD6509BDFC8188E5DDC7A5</code> <code>6EAF72DB4F1377FC22C593C7CAC466AF</code> <code>A49084899309513B04B5E64737244D4E</code> <code>A62B8362F4242A3F749CFA24D1ABDCCC</code> <code>8E3E21C0B296301885925A64E009C149</code> <code>A6518DC6336431F6689140CB1110585A</code> <code>2B51BF2C88E59BDDFFA457100D0F0BE0</code> <code>0CCBE2C1C5D53141B18C52B6FCFF716B</code><br> <code>F6AE8D52</code></td>
<td><code>FE00010081626BD4F644F37B9C05189C</code> <code>924A9DBFF73E82493AE0301961F1FD0A</code> <code>E568D51AD760C54D5B9181CCDB65CF5D</code> <code>912D634CA6E90A67331D4DE4C9AC9534</code> <code>267667E786FEA07F48685ECA15DDEF41</code> <code>DD57415A35F6D40049BD0C62E6653F95</code> <code>8230A8223709001B06F579E328EDC8F1</code> <code>AF54275A8B903DDE6E2BF59617F81582</code> <code>D6D496312E97C039A9A531CD629397D6</code> <code>30FADE7F5A4D76BDE6E068A73D62688D</code> <code>FE18FB10DF6B4D64CB3E4F5269F01A54</code> <code>098EF37356759FF01A5EF59D8532E47D</code> <code>EA41D8035E5CFE7B6569A8ABAED53452</code> <code>3002E1EF85FE2DC1249103B543F9633F</code> <code>3744F30D5BF7150851C0A5EED21FC6D1</code> <code>9D3CB4AB3BF56ED08A458D00EFC22CB9</code><br> <code>AA1BB7F6</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>2AB81D65</code> (1696446506 in decimal)</td>
<td><code>D35E2065</code> (1696620243 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B57F1F22C609723BCD45F708F0F99E90BFE9B10D8709A3900EF8898360108561E
<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 = 6F419AA374D937DF6A21C3686EAF6202514745E51CC8F33C3EF3C25601A6E237C5019C505B9B3B4BF41360FFAAF5E759569A4892AA078F2EBED5BA69A7A0358B40D75C5226A16B28875E892700DD6D34C6C38FC1B56DE68C3F19C333AC9B93901A010B9F5C2E6CA452E525EB1AFFFB89D2B33AF5F83569616D6EB9F0D817D3ECA9A5721EB5A8A21469B761EAE6D2034BA6F4272E368598034F263744E5060997704708969D13A0BDEAA9F7930F8A6540FB73A50503BE6519D26DC63C6B2B673F8ED12D0D8E0B1E1A22A52B8187F6EDB945A347FF39F5F38FACA525DAF830FEE43E9B2212E58D4388117D93DBBDEE1D1FEBC04964D708F2C3E65DED28376868AC</code></pre>
<pre><code>b = 58C9AB82916CFB407C6038854490D5A8910CEDA18103DDA1468EDD2F996D841B62066E72FE29A7245DA3DE39DDDD319433B1275E101A23493B2E084537BD9F3DE53F7BDDB3F49200118842713F3EEFE39C141DF302ED1DD6EECC1F7B89B4703C3671BBB332159E9CDB025358FE1773A4CCC1EB42E4413606C3F519DB760A8FBC941777729CFF0F894D1BCBB1E6F423C998ACEA2A18A334BF46832D3AAC105304843DAF61373BBA3E3E83A400D53A991BFBA08F64B46FB7336906B1F38BE4D1B6CD67045EE01C6642090F3F91731EAEB0757D9636838C6556D3C2D880F511875C8F55271ECBDBDF922907139FF30C44693A99969FBCB5DBDD15331656A3430FE5</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 = 457C07E8E8B47AA78DBB462D58E210659C6992D653E1CAB0C85813F0575409C4821B045DF82EC483A333906EDC4FDD9C3E834C2874EEA12A2D0D60405E4C404EA069A8609C635FD103E6A7301B4E274D815BA8E9EBA1A2A7C38D4A255BEF8DA45A83495AB59AA781226D2929E511C73B0454407674B7F4132A387DA023EB7D09D7F30A95765ACB2D87424AF23F52F72871AC281F1053B224F9942B551A59E086E1A6983847C99F1D2502F576B3314AC2CC081659B62F0742C14C1E3181B6EB0863115B9E88A1E6B73CB30C56B3464CED6A5503D9E8209F8DE3B5267C977A036FE75FCF4F1F5D6CF576B19F347858863CAB8CF5E14F9B06F8CD00052829635AAE</code></pre>
<pre><code>g_b = 9CACAC715E89F072F01C3CF7B9FD8BC8B7242BBCE6A68BB576BC0431387894245A4499354A6B5CFAB18A9E00BDB0E56E2EAEF108FE5C65F54F8F7EA194E62727EC248B3A60CFD96E17C0CA54F00657D20CA1B700F46A0D7A66210E5F039DC626B698D553DA70BAFA6A13B81562DF550EBE6F2683DF86B4C6FEBEF378165D1A48203A93E607C5B74C9BC191700836C59C9B275D06B22FCD6D70AB447F91C9B6A979DABE601B9ED0C8C1326C4EBF44A67DD1EE6CE8A1730C72C227FB3DD51F6A75CFC0DB0B2768006884F9F9837842ADC45CD9EDE3972BC230DCC461406492489343B7228C8560A014F8FA89B8173AF37273BB7897D89BAC1B88CDE0FDD6427CCC</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 7F 1F 22 C6 09 72 3B CD 45 F7 08 F0
0010 | F9 9E 90 BF E9 B1 0D 87 09 A3 90 0E F8 89 83 60
0020 | 10 85 61 ED 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 45 7C 07 E8 E8 B4 7A A7 8D BB 46 2D 58 E2 10 65
0040 | 9C 69 92 D6 53 E1 CA B0 C8 58 13 F0 57 54 09 C4
0050 | 82 1B 04 5D F8 2E C4 83 A3 33 90 6E DC 4F DD 9C
0060 | 3E 83 4C 28 74 EE A1 2A 2D 0D 60 40 5E 4C 40 4E
0070 | A0 69 A8 60 9C 63 5F D1 03 E6 A7 30 1B 4E 27 4D
0080 | 81 5B A8 E9 EB A1 A2 A7 C3 8D 4A 25 5B EF 8D A4
0090 | 5A 83 49 5A B5 9A A7 81 22 6D 29 29 E5 11 C7 3B
00A0 | 04 54 40 76 74 B7 F4 13 2A 38 7D A0 23 EB 7D 09
00B0 | D7 F3 0A 95 76 5A CB 2D 87 42 4A F2 3F 52 F7 28
00C0 | 71 AC 28 1F 10 53 B2 24 F9 94 2B 55 1A 59 E0 86
00D0 | E1 A6 98 38 47 C9 9F 1D 25 02 F5 76 B3 31 4A C2
00E0 | CC 08 16 59 B6 2F 07 42 C1 4C 1E 31 81 B6 EB 08
00F0 | 63 11 5B 9E 88 A1 E6 B7 3C B3 0C 56 B3 46 4C ED
0100 | 6A 55 03 D9 E8 20 9F 8D E3 B5 26 7C 97 7A 03 6F
0110 | E7 5F CF 4F 1F 5D 6C F5 76 B1 9F 34 78 58 86 3C
0120 | AB 8C F5 E1 4F 9B 06 F8 CD 00 05 28 29 63 5A AE</code></pre>
<pre><code>0000 | 54 B6 43 66 44 89 D8 96 B9 08 80 A8 A6 23 F7 43
0010 | BD FB 19 7A 4C 57 92 83 D0 EA 21 D4 47 21 8B 38
0020 | DC 9C 55 08 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 9C AC AC 71 5E 89 F0 72 F0 1C 3C F7 B9 FD 8B C8
0040 | B7 24 2B BC E6 A6 8B B5 76 BC 04 31 38 78 94 24
0050 | 5A 44 99 35 4A 6B 5C FA B1 8A 9E 00 BD B0 E5 6E
0060 | 2E AE F1 08 FE 5C 65 F5 4F 8F 7E A1 94 E6 27 27
0070 | EC 24 8B 3A 60 CF D9 6E 17 C0 CA 54 F0 06 57 D2
0080 | 0C A1 B7 00 F4 6A 0D 7A 66 21 0E 5F 03 9D C6 26
0090 | B6 98 D5 53 DA 70 BA FA 6A 13 B8 15 62 DF 55 0E
00A0 | BE 6F 26 83 DF 86 B4 C6 FE BE F3 78 16 5D 1A 48
00B0 | 20 3A 93 E6 07 C5 B7 4C 9B C1 91 70 08 36 C5 9C
00C0 | 9B 27 5D 06 B2 2F CD 6D 70 AB 44 7F 91 C9 B6 A9
00D0 | 79 DA BE 60 1B 9E D0 C8 C1 32 6C 4E BF 44 A6 7D
00E0 | D1 EE 6C E8 A1 73 0C 72 C2 27 FB 3D D5 1F 6A 75
00F0 | CF C0 DB 0B 27 68 00 68 84 F9 F9 83 78 42 AD C4
0100 | 5C D9 ED E3 97 2B C2 30 DC C4 61 40 64 92 48 93
0110 | 43 B7 22 8C 85 60 A0 14 F8 FA 89 B8 17 3A F3 72
0120 | 73 BB 78 97 D8 9B AC 1B 88 CD E0 FD D6 42 7C CC</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 = BA0D89B57F1F22C609723BCD45F708F0F99E90BFE9B10D8709A3900EF8898360108561E
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>7F1F22C609723BCD45F708F0F99E90BF</code></td>
<td><code>4489D896B90880A8A623F743BDFB197A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>E9B10D8709A3900EF8898360108561ED</code></td>
<td><code>4C579283D0EA21D447218B38DC9C5508</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE000100457C07E8E8B47AA78DBB462D</code> <code>58E210659C6992D653E1CAB0C85813F0</code> <code>575409C4821B045DF82EC483A333906E</code> <code>DC4FDD9C3E834C2874EEA12A2D0D6040</code> <code>5E4C404EA069A8609C635FD103E6A730</code> <code>1B4E274D815BA8E9EBA1A2A7C38D4A25</code> <code>5BEF8DA45A83495AB59AA781226D2929</code> <code>E511C73B0454407674B7F4132A387DA0</code> <code>23EB7D09D7F30A95765ACB2D87424AF2</code> <code>3F52F72871AC281F1053B224F9942B55</code> <code>1A59E086E1A6983847C99F1D2502F576</code> <code>B3314AC2CC081659B62F0742C14C1E31</code> <code>81B6EB0863115B9E88A1E6B73CB30C56</code> <code>B3464CED6A5503D9E8209F8DE3B5267C</code> <code>977A036FE75FCF4F1F5D6CF576B19F34</code> <code>7858863CAB8CF5E14F9B06F8CD000528</code><br> <code>29635AAE</code></td>
<td><code>FE0001009CACAC715E89F072F01C3CF7</code> <code>B9FD8BC8B7242BBCE6A68BB576BC0431</code> <code>387894245A4499354A6B5CFAB18A9E00</code> <code>BDB0E56E2EAEF108FE5C65F54F8F7EA1</code> <code>94E62727EC248B3A60CFD96E17C0CA54</code> <code>F00657D20CA1B700F46A0D7A66210E5F</code> <code>039DC626B698D553DA70BAFA6A13B815</code> <code>62DF550EBE6F2683DF86B4C6FEBEF378</code> <code>165D1A48203A93E607C5B74C9BC19170</code> <code>0836C59C9B275D06B22FCD6D70AB447F</code> <code>91C9B6A979DABE601B9ED0C8C1326C4E</code> <code>BF44A67DD1EE6CE8A1730C72C227FB3D</code> <code>D51F6A75CFC0DB0B2768006884F9F983</code> <code>7842ADC45CD9EDE3972BC230DCC46140</code> <code>6492489343B7228C8560A014F8FA89B8</code> <code>173AF37273BB7897D89BAC1B88CDE0FD</code><br> <code>D6427CCC</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 = BA0D89B57F1F22C609723BCD45F708F0F99E90BFE9B10D8709A3900EF8898360108561E
<!-- 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 = 54B643667F1F22C609723BCD45F708F0F99E90BFE9B10D8709A3900EF8898360108561ED0000000000000000FE000100457C07E8E8B47AA78DBB462D58E210659C6992D653E1CAB0C85813F0575409C4821B045DF82EC483A333906EDC4FDD9C3E834C2874EEA12A2D0D60405E4C404EA069A8609C635FD103E6A7301B4E274D815BA8E9EBA1A2A7C38D4A255BEF8DA45A83495AB59AA781226D2929E511C73B0454407674B7F4132A387DA023EB7D09D7F30A95765ACB2D87424AF23F52F72871AC281F1053B224F9942B551A59E086E1A6983847C99F1D2502F576B3314AC2CC081659B62F0742C14C1E3181B6EB0863115B9E88A1E6B73CB30C56B3464CED6A5503D9E8209F8DE3B5267C977A036FE75FCF4F1F5D6CF576B19F347858863CAB8CF5E14F9B06F8CD00052829635AAE
padding = CBB1235D6135B0C1C710035D
tmp_aes_key = 5E753C94B9FCA27B05005EAD0F3E8318501C3242E1FDE09E523ED033E1D9F393
tmp_aes_iv = CB5D109B5A14C5077CE6ED86B2B19E46DFA3EC4AD2E3E14B921E71AA2D8FD1E4</code></pre>
<pre><code>data = 54B643664489D896B90880A8A623F743BDFB197A4C579283D0EA21D447218B38DC9C55080000000000000000FE0001009CACAC715E89F072F01C3CF7B9FD8BC8B7242BBCE6A68BB576BC0431387894245A4499354A6B5CFAB18A9E00BDB0E56E2EAEF108FE5C65F54F8F7EA194E62727EC248B3A60CFD96E17C0CA54F00657D20CA1B700F46A0D7A66210E5F039DC626B698D553DA70BAFA6A13B81562DF550EBE6F2683DF86B4C6FEBEF378165D1A48203A93E607C5B74C9BC191700836C59C9B275D06B22FCD6D70AB447F91C9B6A979DABE601B9ED0C8C1326C4EBF44A67DD1EE6CE8A1730C72C227FB3DD51F6A75CFC0DB0B2768006884F9F9837842ADC45CD9EDE3972BC230DCC461406492489343B7228C8560A014F8FA89B8173AF37273BB7897D89BAC1B88CDE0FDD6427CCC
padding = 3A68BCDA93B6A10751FDB547
tmp_aes_key = E22A39733A0CA04AC31617FEFD7E5A3C54CF06AE3FF1DF7E2B5DF48EF7F937E9
tmp_aes_iv = 63828DB4E00117FD643F872C5B4975BC013A065BD691CFA5640C797A3C482639</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 = ECBEEFEA34777EECDE225661931EC3F084FFE74E4E348612FA29746391AD6F817BC7971C777DB5C938D6C827AEFF03A17E7FE9610A22BAA689983E95EF4BF221F75CD6EA799161EBCF01B33925B7662FED6A962EE91152A5C25272EF8470B397B5B2813154E3CF59D84EF783396129B31FE5050B5F54FB2CEFBB5A2992060495E44037C6C3A81CCE5C7724B58F99B30CBBCB52335BB4AF2116CCF75A030995DA6B559A37640697C4AEA13EBF421EE7A2FB6958010006E695C4BABF1F8DB57D0E0FD7B79216C405AA354828F326C4E13A5E4AF0FE26640AC3A1FA08DCD94E76EA53D5E8FCA55475A3DA337E398C249ED8403433815DF29EABBD22CD2B6C6850EDE9B7E2E7D0559597E86E0E11F3B381CFAF0809A81081D89D2AB7D3762CF4BE6E69D073EC4BA0685C42A6F14FFADD77284D691FEE0E0EA1831CB3BF22E56E55D27FDECEB2932CF54AB5A5F1BCF7870114</code></pre>
<pre><code>encrypted_data = 251F8A30247E4F706052B4ED166B8A3543F6335F56881F4450E329B3B65A4163CC304561C3C0A6AE6BDD02E239D038E4455EAEDE525C3F29ABE8225943B85759A043F464148AA2C3D5E8137CE3B19EB2583A9BC88396F12678A1A916254374806D052F8D30135E5D58C1C67296268A562775AFB164157F55B3AA45CCF1E7D45BABC06D3FCD5A441C362102A6915B6487E12F55BE46F35F0DA1C24BB49A552A32D4F15FB16755B8658583FB00FD2B64C7429016483E850A5D0BD1F5F584A2EAB1DD24A6A6B7AD3C4A4193318C2014E8EA6DAB6685D67F7C2611189E3C7C2A705A54159E82A9A150CEE6161E90D1F2167657481A72F6C96D5C141AEAD665411CC7F9F3C89A495B0268329F1D806A51010B08124B75938FE5EB3ED1DB58C6D7D8F9F4E2203738988758CA57B0FED7B2D7F92048E242ACFC389703DA023064A2A9891B3DB5F3113C20D492B53EFD0B826F28</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 14 4B 0A 00 2A B8 1D 65
0010 | 78 01 00 00 1F 5F 04 F5 7F 1F 22 C6 09 72 3B CD
0020 | 45 F7 08 F0 F9 9E 90 BF E9 B1 0D 87 09 A3 90 0E
0030 | F8 89 83 60 10 85 61 ED FE 50 01 00 EC BE EF EA
0040 | 34 77 7E EC DE 22 56 61 93 1E C3 F0 84 FF E7 4E
0050 | 4E 34 86 12 FA 29 74 63 91 AD 6F 81 7B C7 97 1C
0060 | 77 7D B5 C9 38 D6 C8 27 AE FF 03 A1 7E 7F E9 61
0070 | 0A 22 BA A6 89 98 3E 95 EF 4B F2 21 F7 5C D6 EA
0080 | 79 91 61 EB CF 01 B3 39 25 B7 66 2F ED 6A 96 2E
0090 | E9 11 52 A5 C2 52 72 EF 84 70 B3 97 B5 B2 81 31
00A0 | 54 E3 CF 59 D8 4E F7 83 39 61 29 B3 1F E5 05 0B
00B0 | 5F 54 FB 2C EF BB 5A 29 92 06 04 95 E4 40 37 C6
00C0 | C3 A8 1C CE 5C 77 24 B5 8F 99 B3 0C BB CB 52 33
00D0 | 5B B4 AF 21 16 CC F7 5A 03 09 95 DA 6B 55 9A 37
00E0 | 64 06 97 C4 AE A1 3E BF 42 1E E7 A2 FB 69 58 01
00F0 | 00 06 E6 95 C4 BA BF 1F 8D B5 7D 0E 0F D7 B7 92
0100 | 16 C4 05 AA 35 48 28 F3 26 C4 E1 3A 5E 4A F0 FE
0110 | 26 64 0A C3 A1 FA 08 DC D9 4E 76 EA 53 D5 E8 FC
0120 | A5 54 75 A3 DA 33 7E 39 8C 24 9E D8 40 34 33 81
0130 | 5D F2 9E AB BD 22 CD 2B 6C 68 50 ED E9 B7 E2 E7
0140 | D0 55 95 97 E8 6E 0E 11 F3 B3 81 CF AF 08 09 A8
0150 | 10 81 D8 9D 2A B7 D3 76 2C F4 BE 6E 69 D0 73 EC
0160 | 4B A0 68 5C 42 A6 F1 4F FA DD 77 28 4D 69 1F EE
0170 | 0E 0E A1 83 1C B3 BF 22 E5 6E 55 D2 7F DE CE B2
0180 | 93 2C F5 4A B5 A5 F1 BC F7 87 01 14</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 E8 34 00 00 D3 5E 20 65
0010 | 78 01 00 00 1F 5F 04 F5 44 89 D8 96 B9 08 80 A8
0020 | A6 23 F7 43 BD FB 19 7A 4C 57 92 83 D0 EA 21 D4
0030 | 47 21 8B 38 DC 9C 55 08 FE 50 01 00 25 1F 8A 30
0040 | 24 7E 4F 70 60 52 B4 ED 16 6B 8A 35 43 F6 33 5F
0050 | 56 88 1F 44 50 E3 29 B3 B6 5A 41 63 CC 30 45 61
0060 | C3 C0 A6 AE 6B DD 02 E2 39 D0 38 E4 45 5E AE DE
0070 | 52 5C 3F 29 AB E8 22 59 43 B8 57 59 A0 43 F4 64
0080 | 14 8A A2 C3 D5 E8 13 7C E3 B1 9E B2 58 3A 9B C8
0090 | 83 96 F1 26 78 A1 A9 16 25 43 74 80 6D 05 2F 8D
00A0 | 30 13 5E 5D 58 C1 C6 72 96 26 8A 56 27 75 AF B1
00B0 | 64 15 7F 55 B3 AA 45 CC F1 E7 D4 5B AB C0 6D 3F
00C0 | CD 5A 44 1C 36 21 02 A6 91 5B 64 87 E1 2F 55 BE
00D0 | 46 F3 5F 0D A1 C2 4B B4 9A 55 2A 32 D4 F1 5F B1
00E0 | 67 55 B8 65 85 83 FB 00 FD 2B 64 C7 42 90 16 48
00F0 | 3E 85 0A 5D 0B D1 F5 F5 84 A2 EA B1 DD 24 A6 A6
0100 | B7 AD 3C 4A 41 93 31 8C 20 14 E8 EA 6D AB 66 85
0110 | D6 7F 7C 26 11 18 9E 3C 7C 2A 70 5A 54 15 9E 82
0120 | A9 A1 50 CE E6 16 1E 90 D1 F2 16 76 57 48 1A 72
0130 | F6 C9 6D 5C 14 1A EA D6 65 41 1C C7 F9 F3 C8 9A
0140 | 49 5B 02 68 32 9F 1D 80 6A 51 01 0B 08 12 4B 75
0150 | 93 8F E5 EB 3E D1 DB 58 C6 D7 D8 F9 F4 E2 20 37
0160 | 38 98 87 58 CA 57 B0 FE D7 B2 D7 F9 20 48 E2 42
0170 | AC FC 38 97 03 DA 02 30 64 A2 A9 89 1B 3D B5 F3
0180 | 11 3C 20 D4 92 B5 3E FD 0B 82 6F 28</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>144B0A002AB81D65</code></td>
<td><code>E8340000D35E2065</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>7F1F22C609723BCD45F708F0F99E90BF</code></td>
<td><code>4489D896B90880A8A623F743BDFB197A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>E9B10D8709A3900EF8898360108561ED</code></td>
<td><code>4C579283D0EA21D447218B38DC9C5508</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE500100ECBEEFEA34777EECDE225661</code> <code>931EC3F084FFE74E4E348612FA297463</code> <code>91AD6F817BC7971C777DB5C938D6C827</code> <code>AEFF03A17E7FE9610A22BAA689983E95</code> <code>EF4BF221F75CD6EA799161EBCF01B339</code> <code>25B7662FED6A962EE91152A5C25272EF</code> <code>8470B397B5B2813154E3CF59D84EF783</code> <code>396129B31FE5050B5F54FB2CEFBB5A29</code> <code>92060495E44037C6C3A81CCE5C7724B5</code> <code>8F99B30CBBCB52335BB4AF2116CCF75A</code> <code>030995DA6B559A37640697C4AEA13EBF</code> <code>421EE7A2FB6958010006E695C4BABF1F</code> <code>8DB57D0E0FD7B79216C405AA354828F3</code> <code>26C4E13A5E4AF0FE26640AC3A1FA08DC</code> <code>D94E76EA53D5E8FCA55475A3DA337E39</code> <code>8C249ED8403433815DF29EABBD22CD2B</code> <code>6C6850EDE9B7E2E7D0559597E86E0E11</code> <code>F3B381CFAF0809A81081D89D2AB7D376</code> <code>2CF4BE6E69D073EC4BA0685C42A6F14F</code> <code>FADD77284D691FEE0E0EA1831CB3BF22</code> <code>E56E55D27FDECEB2932CF54AB5A5F1BC</code><br> <code>F7870114</code></td>
<td><code>FE500100251F8A30247E4F706052B4ED</code> <code>166B8A3543F6335F56881F4450E329B3</code> <code>B65A4163CC304561C3C0A6AE6BDD02E2</code> <code>39D038E4455EAEDE525C3F29ABE82259</code> <code>43B85759A043F464148AA2C3D5E8137C</code> <code>E3B19EB2583A9BC88396F12678A1A916</code> <code>254374806D052F8D30135E5D58C1C672</code> <code>96268A562775AFB164157F55B3AA45CC</code> <code>F1E7D45BABC06D3FCD5A441C362102A6</code> <code>915B6487E12F55BE46F35F0DA1C24BB4</code> <code>9A552A32D4F15FB16755B8658583FB00</code> <code>FD2B64C7429016483E850A5D0BD1F5F5</code> <code>84A2EAB1DD24A6A6B7AD3C4A4193318C</code> <code>2014E8EA6DAB6685D67F7C2611189E3C</code> <code>7C2A705A54159E82A9A150CEE6161E90</code> <code>D1F2167657481A72F6C96D5C141AEAD6</code> <code>65411CC7F9F3C89A495B0268329F1D80</code> <code>6A51010B08124B75938FE5EB3ED1DB58</code> <code>C6D7D8F9F4E2203738988758CA57B0FE</code> <code>D7B2D7F92048E242ACFC389703DA0230</code> <code>64A2A9891B3DB5F3113C20D492B53EFD</code><br> <code>0B826F28</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 = 9B401BB89E06A821512D93BD1A3B72F5BBD9841319188D50E005843E348E9FF0AF4DA34BBDFA53D6B76C227D091F05DCE9CDE747B33E80D5B76274E76DCF899EF39DA109DDB8878BAC492CAC0B2FB354CBEA1C0C7BFC3ECEF670C59DB71A57ACDC6CEBD7C34D0484EBF870589863BE1C10454F49F0F197C98BE03805987F2B16C30B67E532BF5CB34805C68A3B46DDD13E4681D767DA7CDD5CC256B39CB70976EE10692447ED8AA8257F22D9F97C1953AFC06EF133E789C43E46245779BEC34861234301F64F2F65BCF8D8C45C66C63E3B3ECD6FE05AE27C0126CC026BAAADE1C86A70035BF0F67AC58530864985638E7615B3E660AC918C664E93263446582B</code></pre>
<pre><code>auth_key = 5CC8D1130D85E6F0322C0421A2922E2298C7B5C968BA54F1F541E44DD1FD8F1ED82BC7DF72321E28A180624C4B746478B480B16AB3990519A9D9285ED9DD7B5D126172D5D5043B5590A55317F1BF657C46CD002F1D86BD08F9E8DAA471A437D40DA98D0A01E6B3C327A03B6505700067FA4CF627008EACFAE8A40F81F75022208C47A0098F2519917165B16319B105000AD33D5F2A34ECD582FE7DE9C3E46B9975009CC407685734F0D737186B1435F59413DCF9A6297BDAE0BBC50DC5A653E49CEF4EFF78E0B9527D6B1C7AB2203A168B4E6E05AB7EBE60D69A01EAC5DACDCC102EEC578BDF3CBA906CCC3F0C184024B17BD01F9214B3D4A837233C632BAF4B</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 0C 57 D9 2A B8 1D 65
0010 | 8C 00 00 00 34 F7 CB 3B 7F 1F 22 C6 09 72 3B CD
0020 | 45 F7 08 F0 F9 9E 90 BF E9 B1 0D 87 09 A3 90 0E
0030 | F8 89 83 60 10 85 61 ED 4A AD EB C0 80 E4 31 08
0040 | A6 52 66 DB F5 CE 55 F1</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 70 DE BF D3 5E 20 65
0010 | 64 00 00 00 34 F7 CB 3B 44 89 D8 96 B9 08 80 A8
0020 | A6 23 F7 43 BD FB 19 7A 4C 57 92 83 D0 EA 21 D4
0030 | 47 21 8B 38 DC 9C 55 08 11 80 E7 9B 75 AB DA F8
0040 | B9 D6 48 90 66 E9 C1 7A</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>010C57D92AB81D65</code></td>
<td><code>0170DEBFD35E2065</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>8C000000</code> (140 in decimal)</td>
<td><code>64000000</code> (100 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>7F1F22C609723BCD45F708F0F99E90BF</code></td>
<td><code>4489D896B90880A8A623F743BDFB197A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>E9B10D8709A3900EF8898360108561ED</code></td>
<td><code>4C579283D0EA21D447218B38DC9C5508</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>4AADEBC080E43108A65266DBF5CE55F1</code></td>
<td><code>1180E79B75ABDAF8B9D6489066E9C17A</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

@ -821,7 +821,7 @@
</tr>
<tr>
<td><a href="/method/stories.canSendStory">stories.canSendStory</a></td>
<td> </td>
<td>Check whether we can post stories as the specified peer.</td>
</tr>
<tr>
<td><a href="/method/stories.toggleAllStoriesHidden">stories.toggleAllStoriesHidden</a></td>
@ -849,7 +849,7 @@
</tr>
<tr>
<td><a href="/method/stories.applyBoost">stories.applyBoost</a></td>
<td> </td>
<td><a href="/api/stories#boosts">Boost »</a> a <a href="/api/channel">channel</a>, leveling it up and granting it permission to post <a href="/api/stories">stories »</a>.</td>
</tr>
</tbody>
</table></div>

View file

@ -4,18 +4,10 @@
<meta charset="utf-8">
<title>Booster</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Constructors
Constructor
Description
booster
 ">
<meta property="description" content="Info about a boost made by a specific user.">
<meta property="og:title" content="Booster">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
booster
 ">
<meta property="og:description" content="Info about a boost made by a specific user.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -50,7 +42,8 @@ booster
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/Booster" >Booster</a></li></ul></div>
<h1 id="dev_page_title">Booster</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Info about a <a href="/api/stories#boosts">boost</a> made by a specific user.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>
@ -74,10 +67,13 @@ booster
<tbody>
<tr>
<td><a href="/constructor/booster">booster</a></td>
<td> </td>
<td>Info about a <a href="/api/stories#boosts">boost</a> made by a specific user.</td>
</tr>
</tbody>
</table></div>
</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="#stories" id="stories" name="stories"><i class="anchor-icon"></i></a><a href="/api/stories">Stories</a></h4>
<p>Telegram users and channels can easily post and view stories through the API.</p></div>
</div>

View file

@ -4,28 +4,10 @@
<meta charset="utf-8">
<title>stories.BoostersList</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Constructors
Constructor
Description
stories.boostersList
 
Methods
Method
Description
stories.getBoostersList
 ">
<meta property="description" content="Info about the users currently boosting the channel.">
<meta property="og:title" content="stories.BoostersList">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
stories.boostersList
 
Methods
Method
Description
stories.getBoostersList
 ">
<meta property="og:description" content="Info about the users currently boosting the channel.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -60,7 +42,8 @@ stories.getBoostersList
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/stories.BoostersList" >stories.BoostersList</a></li></ul></div>
<h1 id="dev_page_title">stories.BoostersList</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Info about the users currently <a href="/api/stories#boosts">boosting</a> the channel.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>
@ -88,7 +71,7 @@ stories.getBoostersList
<tbody>
<tr>
<td><a href="/constructor/stories.boostersList">stories.boostersList</a></td>
<td> </td>
<td>Info about the users currently <a href="/api/stories#boosts">boosting</a> the channel.</td>
</tr>
</tbody>
</table>
@ -103,10 +86,13 @@ stories.getBoostersList
<tbody>
<tr>
<td><a href="/method/stories.getBoostersList">stories.getBoostersList</a></td>
<td> </td>
<td>Obtain info about the users currently <a href="/api/stories#boosts">boosting</a> a channel, see <a href="/api/stories#boosts">here »</a> for more info about boosts.</td>
</tr>
</tbody>
</table></div>
</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="#stories" id="stories" name="stories"><i class="anchor-icon"></i></a><a href="/api/stories">Stories</a></h4>
<p>Telegram users and channels can easily post and view stories through the API.</p></div>
</div>

View file

@ -4,28 +4,10 @@
<meta charset="utf-8">
<title>stories.BoostsStatus</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Constructors
Constructor
Description
stories.boostsStatus
 
Methods
Method
Description
stories.getBoostsStatus
 ">
<meta property="description" content="The current boost status » of a channel.">
<meta property="og:title" content="stories.BoostsStatus">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
stories.boostsStatus
 
Methods
Method
Description
stories.getBoostsStatus
 ">
<meta property="og:description" content="The current boost status » of a channel.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -60,7 +42,8 @@ stories.getBoostsStatus
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/stories.BoostsStatus" >stories.BoostsStatus</a></li></ul></div>
<h1 id="dev_page_title">stories.BoostsStatus</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>The current <a href="/api/stories#boosts">boost status »</a> of a channel.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>
@ -88,7 +71,7 @@ stories.getBoostsStatus
<tbody>
<tr>
<td><a href="/constructor/stories.boostsStatus">stories.boostsStatus</a></td>
<td> </td>
<td>The current <a href="/api/stories#boosts">boost status »</a> of a channel.</td>
</tr>
</tbody>
</table>
@ -103,10 +86,13 @@ stories.getBoostsStatus
<tbody>
<tr>
<td><a href="/method/stories.getBoostsStatus">stories.getBoostsStatus</a></td>
<td> </td>
<td>Get the current <a href="/api/stories#boosts">boost status</a> of a channel, see <a href="/api/stories#boosts">here »</a> for more info on boosts.</td>
</tr>
</tbody>
</table></div>
</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="#stories" id="stories" name="stories"><i class="anchor-icon"></i></a><a href="/api/stories">Stories</a></h4>
<p>Telegram users and channels can easily post and view stories through the API.</p></div>
</div>

View file

@ -4,28 +4,10 @@
<meta charset="utf-8">
<title>stories.CanApplyBoostResult</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Constructors
Constructor
Description
stories.canApplyBoostOk
 
stories.canApplyBoostReplace
 
Methods
Method
Description…">
<meta property="description" content="Whether the specified channel can be boosted, see here for more info ».">
<meta property="og:title" content="stories.CanApplyBoostResult">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
stories.canApplyBoostOk
 
stories.canApplyBoostReplace
 
Methods
Method
Description…">
<meta property="og:description" content="Whether the specified channel can be boosted, see here for more info ».">
<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">
@ -60,7 +42,8 @@ Description…">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/stories.CanApplyBoostResult" >stories.CanApplyBoostResult</a></li></ul></div>
<h1 id="dev_page_title">stories.CanApplyBoostResult</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Whether the specified channel can be <a href="/api/stories#boosts">boosted, see here for more info »</a>.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 164 <b class="caret"></b></a>
@ -89,11 +72,11 @@ Description…">
<tbody>
<tr>
<td><a href="/constructor/stories.canApplyBoostOk">stories.canApplyBoostOk</a></td>
<td> </td>
<td>We're not boosting any channel, and we can freely boost the specified channel.</td>
</tr>
<tr>
<td><a href="/constructor/stories.canApplyBoostReplace">stories.canApplyBoostReplace</a></td>
<td> </td>
<td>We're boosting another channel, but we can freely boost the specified channel.</td>
</tr>
</tbody>
</table>
@ -108,10 +91,13 @@ Description…">
<tbody>
<tr>
<td><a href="/method/stories.canApplyBoost">stories.canApplyBoost</a></td>
<td> </td>
<td>Check whether a channel can be <a href="/api/stories#boosts">boosted, see here for more info »</a>.</td>
</tr>
</tbody>
</table></div>
</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="#stories" id="stories" name="stories"><i class="anchor-icon"></i></a><a href="/api/stories">Stories</a></h4>
<p>Telegram users and channels can easily post and view stories through the API.</p></div>
</div>