Update content of files

This commit is contained in:
GitHub Action 2023-12-14 14:31:09 +00:00
parent 2f052c4ce8
commit e2b124cb56
15 changed files with 334 additions and 453 deletions

View file

@ -52,8 +52,8 @@
<li>Added <a href="/method/channels.toggleViewForumAsMessages">channels.toggleViewForumAsMessages</a> - </li>
<li>Added <a href="/method/messages.searchEmojiStickerSets">messages.searchEmojiStickerSets</a> - Search for <a href="/api/custom-emoji">custom emoji stickersets »</a></li>
<li>Added <a href="/method/channels.getChannelRecommendations">channels.getChannelRecommendations</a> - </li>
<li>Added <a href="/method/stats.getStoryStats">stats.getStoryStats</a> - </li>
<li>Added <a href="/method/stats.getStoryPublicForwards">stats.getStoryPublicForwards</a> - </li>
<li>Added <a href="/method/stats.getStoryStats">stats.getStoryStats</a> - Get <a href="/api/stats">statistics</a> for a certain <a href="/api/stories">story</a>.</li>
<li>Added <a href="/method/stats.getStoryPublicForwards">stats.getStoryPublicForwards</a> - Obtain forwards of a <a href="/api/stories">story</a> as a message to public chats and reposts by public channels.</li>
<li>Added <a href="/method/help.getPeerColors">help.getPeerColors</a> - Get the set of <a href="/api/colors">accent color palettes »</a> that can be used for message accents.</li>
<li>Added <a href="/method/help.getPeerProfileColors">help.getPeerProfileColors</a> - Get the set of <a href="/api/colors">accent color palettes »</a> that can be used in profile page backgrounds.</li>
</ul>
@ -71,10 +71,10 @@
<li>Added <a href="/constructor/storyFwdHeader">storyFwdHeader</a> - </li>
<li>Added <a href="/constructor/postInteractionCountersMessage">postInteractionCountersMessage</a> - </li>
<li>Added <a href="/constructor/postInteractionCountersStory">postInteractionCountersStory</a> - </li>
<li>Added <a href="/constructor/stats.storyStats">stats.storyStats</a> - </li>
<li>Added <a href="/constructor/publicForwardMessage">publicForwardMessage</a> - </li>
<li>Added <a href="/constructor/publicForwardStory">publicForwardStory</a> - </li>
<li>Added <a href="/constructor/stats.publicForwards">stats.publicForwards</a> - </li>
<li>Added <a href="/constructor/stats.storyStats">stats.storyStats</a> - Contains <a href="/api/stats">statistics</a> about a <a href="/api/stories">story</a>.</li>
<li>Added <a href="/constructor/publicForwardMessage">publicForwardMessage</a> - Contains info about a forward of a <a href="/api/stories">story</a> as a message.</li>
<li>Added <a href="/constructor/publicForwardStory">publicForwardStory</a> - Contains info about a forward of a <a href="/api/stories">story</a> as a repost by a public channel.</li>
<li>Added <a href="/constructor/stats.publicForwards">stats.publicForwards</a> - Contains info about the forwards of a <a href="/api/stories">story</a> as a message to public chats and reposts by public channels.</li>
<li>Added <a href="/constructor/peerColor">peerColor</a> - </li>
<li>Added <a href="/constructor/help.peerColorSet">help.peerColorSet</a> - Represents a <a href="/api/colors">color palette that can be used in message accents »</a>.</li>
<li>Added <a href="/constructor/help.peerColorProfileSet">help.peerColorProfileSet</a> - Represents a <a href="/api/colors">color palette that can be used in profile pages »</a>.</li>

View file

@ -118,10 +118,13 @@ The returned <a href="/constructor/stats.broadcastStats">stats.broadcastStats</a
<a href='/method/stats.getMessageStats'>stats.getMessageStats</a>#b6e0a3f5 flags:<a href='/type/%23'>#</a> dark:flags.0?<a href='/constructor/true'>true</a> channel:<a href='/type/InputChannel'>InputChannel</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/stats.MessageStats'>stats.MessageStats</a>;
<a href='/method/channels.getFullChannel'>channels.getFullChannel</a>#8736a09 channel:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/messages.ChatFull'>messages.ChatFull</a>;</code></pre>
<a href='/method/channels.getFullChannel'>channels.getFullChannel</a>#8736a09 channel:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/messages.ChatFull'>messages.ChatFull</a>;
<a href='/method/stats.getMessagePublicForwards'>stats.getMessagePublicForwards</a>#5630281b channel:<a href='/type/InputChannel'>InputChannel</a> msg_id:<a href='/type/int'>int</a> offset_rate:<a href='/type/int'>int</a> offset_peer:<a href='/type/InputPeer'>InputPeer</a> offset_id:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre>
<p>Administrators of <a href="/api/channel">channels</a> of a certain size (the exact limit is a server-side config, returned in the <code>can_view_stats</code> flag of <a href="/constructor/channelFull">channelFull</a>) can invoke <a href="/method/stats.getMessageStats">stats.getMessageStats</a> to get statistics of a specific message.<br>
The query must be sent to the datacenter with ID <code>channelFull.stats_dc</code>, obtainable using <a href="/method/channels.getFullChannel">channels.getFullChannel</a>.<br>
The returned <a href="/constructor/stats.messageStats">stats.messageStats</a> contains the view graph of the message. </p>
<p><a href="/method/stats.getMessagePublicForwards">stats.getMessagePublicForwards</a> may also be used to obtain a list of messages, indicating to which other public channels was a channel message forwarded: it will return a list of <a href="/constructor/message">messages</a> with <code>peer_id</code> equal to the public channel to which this message was forwarded.</p>
<h2><a class="anchor" href="#graph-visualization" id="graph-visualization" name="graph-visualization"><i class="anchor-icon"></i></a>Graph visualization</h2>
<p>There are four available visualizations for graph types:</p>
<ul>

View file

@ -311,7 +311,22 @@ If the <code>flipped</code> flag is set, the "tail" should be located on the lef
<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>
<h3><a class="anchor" href="#statistics" id="statistics" name="statistics"><i class="anchor-icon"></i></a>Statistics</h3>
<pre><code><a href='/constructor/stats.storyStats'>stats.storyStats</a>#50cd067c views_graph:<a href='/type/StatsGraph'>StatsGraph</a> reactions_by_emotion_graph:<a href='/type/StatsGraph'>StatsGraph</a> = <a href='/type/stats.StoryStats'>stats.StoryStats</a>;
<a href='/constructor/publicForwardMessage'>publicForwardMessage</a>#1f2bf4a message:<a href='/type/Message'>Message</a> = <a href='/type/PublicForward'>PublicForward</a>;
<a href='/constructor/publicForwardStory'>publicForwardStory</a>#edf3add0 peer:<a href='/type/Peer'>Peer</a> story:<a href='/type/StoryItem'>StoryItem</a> = <a href='/type/PublicForward'>PublicForward</a>;
<a href='/constructor/stats.publicForwards'>stats.publicForwards</a>#93037e20 flags:<a href='/type/%23'>#</a> count:<a href='/type/int'>int</a> forwards:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/PublicForward'>PublicForward</a>&gt; next_offset:flags.0?<a href='/type/string'>string</a> chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/stats.PublicForwards'>stats.PublicForwards</a>;
---functions---
<a href='/method/stats.getStoryStats'>stats.getStoryStats</a>#374fef40 flags:<a href='/type/%23'>#</a> dark:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> = <a href='/type/stats.StoryStats'>stats.StoryStats</a>;
<a href='/method/stats.getStoryPublicForwards'>stats.getStoryPublicForwards</a>#a6437ef6 peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> offset:<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/stats.PublicForwards'>stats.PublicForwards</a>;</code></pre>
<p>Use <a href="/method/stats.getStoryStats">stats.getStoryStats</a> to obtain statistics about a story; the returned <a href="/type/StatsGraph">StatsGraph</a> graphs can be rendered <a href="/api/stats#graph-visualization">as described here »</a>. </p>
<p>Use <a href="/method/stats.getStoryPublicForwards">stats.getStoryPublicForwards</a> to obtain forwards of a story as a message to public chats and reposts by public channels.</p></div>
</div>

View file

@ -4,26 +4,10 @@
<meta charset="utf-8">
<title>publicForwardMessage</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
message
Message
 
Type
PublicForward">
<meta property="description" content="Contains info about a forward of a story as a message.">
<meta property="og:title" content="publicForwardMessage">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
message
Message
 
Type
PublicForward">
<meta property="og:description" content="Contains info about a forward of a story as a message.">
<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">
@ -58,7 +42,8 @@ PublicForward">
<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/publicForwardMessage" >publicForwardMessage</a></li></ul></div>
<h1 id="dev_page_title">publicForwardMessage</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Contains info about a forward of a <a href="/api/stories">story</a> as a message.</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 167 <b class="caret"></b></a>
@ -84,12 +69,15 @@ PublicForward">
<tr>
<td><strong>message</strong></td>
<td style="text-align: center;"><a href="/type/Message">Message</a></td>
<td> </td>
<td>Info about the message with the reposted story.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/PublicForward">PublicForward</a></p></div>
<p><a href="/type/PublicForward">PublicForward</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,32 +4,10 @@
<meta charset="utf-8">
<title>publicForwardStory</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
peer
Peer
 
story
StoryItem
 
Type
PublicForward">
<meta property="description" content="Contains info about a forward of a story as a repost by a public channel.">
<meta property="og:title" content="publicForwardStory">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
peer
Peer
 
story
StoryItem
 
Type
PublicForward">
<meta property="og:description" content="Contains info about a forward of a story as a repost by a public 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 @@ PublicForward">
<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/publicForwardStory" >publicForwardStory</a></li></ul></div>
<h1 id="dev_page_title">publicForwardStory</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Contains info about a forward of a <a href="/api/stories">story</a> as a repost by a public 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 167 <b class="caret"></b></a>
@ -90,17 +69,20 @@ PublicForward">
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/Peer">Peer</a></td>
<td> </td>
<td>The channel that reposted the story.</td>
</tr>
<tr>
<td><strong>story</strong></td>
<td style="text-align: center;"><a href="/type/StoryItem">StoryItem</a></td>
<td> </td>
<td>The reposted story (may be different from the original story).</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/PublicForward">PublicForward</a></p></div>
<p><a href="/type/PublicForward">PublicForward</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,34 +4,10 @@
<meta charset="utf-8">
<title>stats.publicForwards</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
count
int
 
forwards
Vector&lt;PublicForward&gt;
 …">
<meta property="description" content="Contains info about the forwards of a story as a message to public chats and reposts by public channels.">
<meta property="og:title" content="stats.publicForwards">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
count
int
 
forwards
Vector&lt;PublicForward&gt;
 …">
<meta property="og:description" content="Contains info about the forwards of a story as a message to public chats and reposts by public channels.">
<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 @@ Vector&lt;PublicForward&gt;
<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/stats.publicForwards" >stats.publicForwards</a></li></ul></div>
<h1 id="dev_page_title">stats.publicForwards</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Contains info about the forwards of a <a href="/api/stories">story</a> as a message to public chats and reposts by public channels.</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 167 <b class="caret"></b></a>
@ -97,17 +74,17 @@ Vector&lt;PublicForward&gt;
<tr>
<td><strong>count</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Total number of results</td>
</tr>
<tr>
<td><strong>forwards</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PublicForward">PublicForward</a>&gt;</td>
<td> </td>
<td>Info about the forwards of a story.</td>
</tr>
<tr>
<td><strong>next_offset</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/string">string</a></td>
<td> </td>
<td>Offset used for <a href="/api/offsets">pagination</a>.</td>
</tr>
<tr>
<td><strong>chats</strong></td>
@ -122,7 +99,12 @@ Vector&lt;PublicForward&gt;
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/stats.PublicForwards">stats.PublicForwards</a></p></div>
<p><a href="/type/stats.PublicForwards">stats.PublicForwards</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="#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>
<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,32 +4,10 @@
<meta charset="utf-8">
<title>stats.storyStats</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
views_graph
StatsGraph
 
reactions_by_emotion_graph
StatsGraph
 
Type
stats.StoryStats">
<meta property="description" content="Contains statistics about a story.">
<meta property="og:title" content="stats.storyStats">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
views_graph
StatsGraph
 
reactions_by_emotion_graph
StatsGraph
 
Type
stats.StoryStats">
<meta property="og:description" content="Contains statistics about a story.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -64,7 +42,8 @@ stats.StoryStats">
<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/stats.storyStats" >stats.storyStats</a></li></ul></div>
<h1 id="dev_page_title">stats.storyStats</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Contains <a href="/api/stats">statistics</a> about a <a href="/api/stories">story</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 167 <b class="caret"></b></a>
@ -90,17 +69,22 @@ stats.StoryStats">
<tr>
<td><strong>views_graph</strong></td>
<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td>
<td> </td>
<td>A graph containing the number of story views and shares</td>
</tr>
<tr>
<td><strong>reactions_by_emotion_graph</strong></td>
<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td>
<td> </td>
<td>A bar graph containing the number of story reactions categorized by "emotion" (i.e. Positive, Negative, Other, etc...)</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/stats.StoryStats">stats.StoryStats</a></p></div>
<p><a href="/type/stats.StoryStats">stats.StoryStats</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4>
<p>Telegram offers detailed channel statistics for channels and supergroups.</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,40 +4,10 @@
<meta charset="utf-8">
<title>stats.getStoryPublicForwards</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
peer
InputPeer
 
id
int
 
offset
string
 
limit
int
Maximum number of results to return…">
<meta property="description" content="Obtain forwards of a story as a message to public chats and reposts by public channels.">
<meta property="og:title" content="stats.getStoryPublicForwards">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
peer
InputPeer
 
id
int
 
offset
string
 
limit
int
Maximum number of results to return…">
<meta property="og:description" content="Obtain forwards of a story as a message to public chats and reposts by public channels.">
<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">
@ -72,7 +42,8 @@ Maximum number of results to return…">
<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/stats.getStoryPublicForwards" >stats.getStoryPublicForwards</a></li></ul></div>
<h1 id="dev_page_title">stats.getStoryPublicForwards</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Obtain forwards of a <a href="/api/stories">story</a> as a message to public chats and reposts by public channels.</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 167 <b class="caret"></b></a>
@ -100,17 +71,17 @@ Maximum number of results to return…">
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
<td> </td>
<td>Peer where the story was originally posted</td>
</tr>
<tr>
<td><strong>id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td><a href="/api/stories">Story</a> ID</td>
</tr>
<tr>
<td><strong>offset</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Offset for pagination, from <a href="/constructor/stats.publicForwards">stats.PublicForwards</a>.<code>next_offset</code>.</td>
</tr>
<tr>
<td><strong>limit</strong></td>
@ -139,6 +110,10 @@ Maximum number of results to return…">
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#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="#statspublicforwards" id="statspublicforwards" name="statspublicforwards"><i class="anchor-icon"></i></a><a href="/constructor/stats.publicForwards">stats.publicForwards</a></h4>
<p>Contains info about the forwards of a <a href="/api/stories">story</a> as a message to public chats and reposts by public channels.</p>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p></div>

View file

@ -4,40 +4,10 @@
<meta charset="utf-8">
<title>stats.getStoryStats</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
dark
flags.0?true
 
peer
InputPeer
 
id
int
 …">
<meta property="description" content="Get statistics for a certain story.">
<meta property="og:title" content="stats.getStoryStats">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
dark
flags.0?true
 
peer
InputPeer
 
id
int
 …">
<meta property="og:description" content="Get statistics for a certain story.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -72,7 +42,8 @@ int
<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/stats.getStoryStats" >stats.getStoryStats</a></li></ul></div>
<h1 id="dev_page_title">stats.getStoryStats</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Get <a href="/api/stats">statistics</a> for a certain <a href="/api/stories">story</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 167 <b class="caret"></b></a>
@ -105,17 +76,17 @@ int
<tr>
<td><strong>dark</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td>
<td> </td>
<td>Whether to enable the dark theme for graph colors</td>
</tr>
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
<td> </td>
<td>The peer that posted the story</td>
</tr>
<tr>
<td><strong>id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Story ID</td>
</tr>
</tbody>
</table>
@ -137,7 +108,12 @@ int
<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="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4>
<p>Telegram offers detailed channel statistics for channels and supergroups.</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

@ -3044,11 +3044,11 @@ Look for updates of telegram&#39;s terms of service…">
</tr>
<tr>
<td><a href="/method/stats.getStoryStats">stats.getStoryStats</a></td>
<td> </td>
<td>Get <a href="/api/stats">statistics</a> for a certain <a href="/api/stories">story</a>.</td>
</tr>
<tr>
<td><a href="/method/stats.getStoryPublicForwards">stats.getStoryPublicForwards</a></td>
<td> </td>
<td>Obtain forwards of a <a href="/api/stories">story</a> as a message to public chats and reposts by public channels.</td>
</tr>
<tr>
<td><a href="/method/help.getPeerColors">help.getPeerColors</a></td>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 94 F5 00 00 AF B3 78 65
0010 | 14 00 00 00 F1 8E 7E BE 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 40 5F 0A 00 23 10 7B 65
0010 | 14 00 00 00 F1 8E 7E BE C7 C3 E7 6D 71 ED 38 97
0020 | 67 2E 26 30 48 08 DB 26</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>94F50000AFB37865</code></td>
<td><code>405F0A0023107B65</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>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td><code>C7C3E76D71ED3897672E26304808DB26</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 94 C9 42 AF B3 78 65
0010 | 74 00 00 00 63 24 16 05 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80 1E C0 DE B4 07 3E F9 1C
0030 | BA A6 BE D7 12 3C 95 B0 08 19 80 F4 E6 79 52 AB
0040 | 69 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 F8 AF 9B 23 10 7B 65
0010 | 90 00 00 00 63 24 16 05 C7 C3 E7 6D 71 ED 38 97
0020 | 67 2E 26 30 48 08 DB 26 D0 1C B1 F4 06 98 DB 02
0030 | D6 F5 C3 7F 4E D6 60 82 08 16 56 26 72 9A 0E 94
0040 | 85 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>0194C942AFB37865</code></td>
<td><code>01F8AF9B23107B65</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>74000000</code> (116 in decimal)</td>
<td><code>90000000</code> (144 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td><code>C7C3E76D71ED3897672E26304808DB26</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td><code>D01CB1F40698DB02D6F5C37F4ED66082</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>081980F4E67952AB69000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1837737918682278761</td>
<td><code>08165626729A0E9485000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1609516190484305029</td>
<td>Single-byte prefix denoting length, an 8-byte string, and three bytes of padding</td>
</tr>
<tr>
@ -208,22 +208,22 @@
<h4><a class="anchor" href="#proof-of-work" id="proof-of-work" name="proof-of-work"><i class="anchor-icon"></i></a>Proof of work</h4>
<h5><a class="anchor" href="#3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" id="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" name="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q"><i class="anchor-icon"></i></a>3) Client decomposes pq into prime factors such that p &lt; q.</h5>
<!-- start pq -->
<pre><code>pq = 1837737918682278761</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1837737918682278761 = 1032884053 * 1779229637</code></p>
<pre><code>p = 1032884053
q = 1779229637</code></pre>
<pre><code>pq = 1609516190484305029</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1609516190484305029 = 1067705161 * 1507453789</code></p>
<pre><code>p = 1067705161
q = 1507453789</code></pre>
<!-- end pq -->
<h4><a class="anchor" href="#presenting-proof-of-work-server-authentication" id="presenting-proof-of-work-server-authentication" name="presenting-proof-of-work-server-authentication"><i class="anchor-icon"></i></a>Presenting proof of work; Server authentication</h4>
<h5><a class="anchor" href="#4-encrypted-data-payload-generation" id="4-encrypted-data-payload-generation" name="4-encrypted-data-payload-generation"><i class="anchor-icon"></i></a>4) <code>encrypted_data</code> payload generation</h5>
<p>First of all, generate an <code>encrypted_data</code> payload as follows:</p>
<!-- start p_q_inner_data_dc -->
<p>Generated payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 95 5F F5 A9 08 19 80 F4 E6 79 52 AB 69 00 00 00
0010 | 04 3D 90 8F 55 00 00 00 04 6A 0C E3 C5 00 00 00
0020 | 6F E8 1D BD DA C6 62 6F C1 8E 41 56 90 E0 76 80
0030 | 1E C0 DE B4 07 3E F9 1C BA A6 BE D7 12 3C 95 B0
0040 | 2D E6 3E 15 D1 29 45 59 42 4C ED 43 14 2B 66 52
0050 | 8A 0B 31 E7 AC 60 1B 3E 87 91 A3 DE 7B 5F 05 3C
<pre><code>0000 | 95 5F F5 A9 08 16 56 26 72 9A 0E 94 85 00 00 00
0010 | 04 3F A3 E3 49 00 00 00 04 59 D9 EB 5D 00 00 00
0020 | C7 C3 E7 6D 71 ED 38 97 67 2E 26 30 48 08 DB 26
0030 | D0 1C B1 F4 06 98 DB 02 D6 F5 C3 7F 4E D6 60 82
0040 | E9 B9 E2 FA 4A 88 EB 8D D2 59 CE FF CE 11 39 67
0050 | 74 B3 A6 3A 44 69 56 2A C5 14 16 80 AC 9D 29 EA
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 = 1779229637</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>081980F4E67952AB69000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1837737918682278761</td>
<td><code>08165626729A0E9485000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1609516190484305029</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>043D908F55000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1032884053</td>
<td><code>043FA3E349000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1067705161</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>046A0CE3C5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1779229637</td>
<td><code>0459D9EB5D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1507453789</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>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td><code>C7C3E76D71ED3897672E26304808DB26</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td><code>D01CB1F40698DB02D6F5C37F4ED66082</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>2DE63E15D1294559424CED43142B6652</code> <code>8A0B31E7AC601B3E8791A3DE7B5F053C</code></td>
<td><code>E9B9E2FA4A88EB8DD259CEFFCE113967</code> <code>74B3A63A4469562AC5141680AC9D29EA</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1779229637</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 = 955FF5A9081980F4E67952AB69000000043D908F55000000046A0CE3C50000006FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B02DE63E15D1294559424CED43142B66528A0B31E7AC601B3E8791A3DE7B5F053C02000000
random_padding_bytes = B657CB82804DE75AEBD3D3BCFF6B12CBDA7216E22A5FA24054A83A5177AEF303B01AFF5E44E0F266EA451BF7595653269547A0372282D3EF875E45AED3BE1C766C678796388FC4E2D5654972A2265EAC8391A698F7025352C5BC6483</code></pre>
<pre><code>data = 955FF5A908165626729A0E9485000000043FA3E3490000000459D9EB5D000000C7C3E76D71ED3897672E26304808DB26D01CB1F40698DB02D6F5C37F4ED66082E9B9E2FA4A88EB8DD259CEFFCE11396774B3A63A4469562AC5141680AC9D29EA02000000
random_padding_bytes = B0EF41D5677F343E17701D8208A505F863FF771E82601A64C05119A0496D4DC39DA734638EAEA8DE414AFFE990749D4794B9AB6C8D2E97546C2C4D5A50DEF4D6AFB25A8EA851A894879E535139C6C88BC2624D0C58097392F77F5A2F</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 = 048799C4AC7595856CB043A3092E3C12C18C247102D9C4DAF1521D5FB4FC4D20ABA04F6F18F5E1A792725CB48D2043AFAE55B14948FA4BE7DBFFFCBBDC43125A9870EA64682665D24405C5EFECA3B123F4992D81FE86D1289E83FE73FADD0D6811C7FD6D5BB4F9D190DD4512401B1CB73F119466CBFF0B0D981DAA103535244C3EB9A28962337E589E2F283E6C0D493727E38EEF747D22378A56EA8DD60FFF878BBA199907F8C9DD142BD0D8F505F35EED5EDB261EC311CA14BE8F5038AECEB7038E63FE083547BC24528A31661AC0BE81364541562B8D5BB73382CB192783BF8B8DC3AE1152CA22E0CE846D76AD3CA45934EF735738A8DE40865891E739E34B</code></pre>
<pre><code>encrypted_data = 9A0F95DC35F782FDAD7AA42B2E70E3DC591AC0CF63E0036089DA1766202F4995C385A37E56528D4EF51C419F9BA8A5B7FA82928BF8661B5C4828B0A601795D6144D32481A188D763288494325171B9B219F7D9926BBF2A1301A20D62C3E262E0EA44FC352A2910E1C057DF0A1E0762379EF0EBCB0393927B3A30EB15DFD1ED62571FFBB41FE4B988E9DEF371D2C3B478EF6B4D1AC74304037654862B7E2BC3714ECC9CC4030751DEB5A5269CFE8E394C49C1CD2F38F8B916EDF5405E4DB1901427E6175B6FD19098BA0516F29C2D09BD61BA5CF6D4C8516BE2FC1E5EC61B115946AA36FA189939BC5C8242D38130EF4BA0AA8669B32289947486F24339ED127F</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 4C 07 09 00 AF B3 78 65
0010 | 40 01 00 00 BE E4 12 D7 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80 1E C0 DE B4 07 3E F9 1C
0030 | BA A6 BE D7 12 3C 95 B0 04 3D 90 8F 55 00 00 00
0040 | 04 6A 0C E3 C5 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 04 87 99 C4 AC 75 95 85 6C B0 43 A3
0060 | 09 2E 3C 12 C1 8C 24 71 02 D9 C4 DA F1 52 1D 5F
0070 | B4 FC 4D 20 AB A0 4F 6F 18 F5 E1 A7 92 72 5C B4
0080 | 8D 20 43 AF AE 55 B1 49 48 FA 4B E7 DB FF FC BB
0090 | DC 43 12 5A 98 70 EA 64 68 26 65 D2 44 05 C5 EF
00A0 | EC A3 B1 23 F4 99 2D 81 FE 86 D1 28 9E 83 FE 73
00B0 | FA DD 0D 68 11 C7 FD 6D 5B B4 F9 D1 90 DD 45 12
00C0 | 40 1B 1C B7 3F 11 94 66 CB FF 0B 0D 98 1D AA 10
00D0 | 35 35 24 4C 3E B9 A2 89 62 33 7E 58 9E 2F 28 3E
00E0 | 6C 0D 49 37 27 E3 8E EF 74 7D 22 37 8A 56 EA 8D
00F0 | D6 0F FF 87 8B BA 19 99 07 F8 C9 DD 14 2B D0 D8
0100 | F5 05 F3 5E ED 5E DB 26 1E C3 11 CA 14 BE 8F 50
0110 | 38 AE CE B7 03 8E 63 FE 08 35 47 BC 24 52 8A 31
0120 | 66 1A C0 BE 81 36 45 41 56 2B 8D 5B B7 33 82 CB
0130 | 19 27 83 BF 8B 8D C3 AE 11 52 CA 22 E0 CE 84 6D
0140 | 76 AD 3C A4 59 34 EF 73 57 38 A8 DE 40 86 58 91
0150 | E7 39 E3 4B</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 44 5F 0A 00 23 10 7B 65
0010 | 40 01 00 00 BE E4 12 D7 C7 C3 E7 6D 71 ED 38 97
0020 | 67 2E 26 30 48 08 DB 26 D0 1C B1 F4 06 98 DB 02
0030 | D6 F5 C3 7F 4E D6 60 82 04 3F A3 E3 49 00 00 00
0040 | 04 59 D9 EB 5D 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 9A 0F 95 DC 35 F7 82 FD AD 7A A4 2B
0060 | 2E 70 E3 DC 59 1A C0 CF 63 E0 03 60 89 DA 17 66
0070 | 20 2F 49 95 C3 85 A3 7E 56 52 8D 4E F5 1C 41 9F
0080 | 9B A8 A5 B7 FA 82 92 8B F8 66 1B 5C 48 28 B0 A6
0090 | 01 79 5D 61 44 D3 24 81 A1 88 D7 63 28 84 94 32
00A0 | 51 71 B9 B2 19 F7 D9 92 6B BF 2A 13 01 A2 0D 62
00B0 | C3 E2 62 E0 EA 44 FC 35 2A 29 10 E1 C0 57 DF 0A
00C0 | 1E 07 62 37 9E F0 EB CB 03 93 92 7B 3A 30 EB 15
00D0 | DF D1 ED 62 57 1F FB B4 1F E4 B9 88 E9 DE F3 71
00E0 | D2 C3 B4 78 EF 6B 4D 1A C7 43 04 03 76 54 86 2B
00F0 | 7E 2B C3 71 4E CC 9C C4 03 07 51 DE B5 A5 26 9C
0100 | FE 8E 39 4C 49 C1 CD 2F 38 F8 B9 16 ED F5 40 5E
0110 | 4D B1 90 14 27 E6 17 5B 6F D1 90 98 BA 05 16 F2
0120 | 9C 2D 09 BD 61 BA 5C F6 D4 C8 51 6B E2 FC 1E 5E
0130 | C6 1B 11 59 46 AA 36 FA 18 99 39 BC 5C 82 42 D3
0140 | 81 30 EF 4B A0 AA 86 69 B3 22 89 94 74 86 F2 43
0150 | 39 ED 12 7F</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 = B657CB82804DE75AEBD3D3BCFF6B12CBDA7216E22A5FA24054A83A517
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>4C070900AFB37865</code></td>
<td><code>445F0A0023107B65</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 = B657CB82804DE75AEBD3D3BCFF6B12CBDA7216E22A5FA24054A83A517
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td><code>C7C3E76D71ED3897672E26304808DB26</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td><code>D01CB1F40698DB02D6F5C37F4ED66082</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>043D908F55000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1032884053</td>
<td><code>043FA3E349000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1067705161</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>046A0CE3C5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1779229637</td>
<td><code>0459D9EB5D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1507453789</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 = B657CB82804DE75AEBD3D3BCFF6B12CBDA7216E22A5FA24054A83A517
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE000100048799C4AC7595856CB043A3</code> <code>092E3C12C18C247102D9C4DAF1521D5F</code> <code>B4FC4D20ABA04F6F18F5E1A792725CB4</code> <code>8D2043AFAE55B14948FA4BE7DBFFFCBB</code> <code>DC43125A9870EA64682665D24405C5EF</code> <code>ECA3B123F4992D81FE86D1289E83FE73</code> <code>FADD0D6811C7FD6D5BB4F9D190DD4512</code> <code>401B1CB73F119466CBFF0B0D981DAA10</code> <code>3535244C3EB9A28962337E589E2F283E</code> <code>6C0D493727E38EEF747D22378A56EA8D</code> <code>D60FFF878BBA199907F8C9DD142BD0D8</code> <code>F505F35EED5EDB261EC311CA14BE8F50</code> <code>38AECEB7038E63FE083547BC24528A31</code> <code>661AC0BE81364541562B8D5BB73382CB</code> <code>192783BF8B8DC3AE1152CA22E0CE846D</code> <code>76AD3CA45934EF735738A8DE40865891</code><br> <code>E739E34B</code></td>
<td><code>FE0001009A0F95DC35F782FDAD7AA42B</code> <code>2E70E3DC591AC0CF63E0036089DA1766</code> <code>202F4995C385A37E56528D4EF51C419F</code> <code>9BA8A5B7FA82928BF8661B5C4828B0A6</code> <code>01795D6144D32481A188D76328849432</code> <code>5171B9B219F7D9926BBF2A1301A20D62</code> <code>C3E262E0EA44FC352A2910E1C057DF0A</code> <code>1E0762379EF0EBCB0393927B3A30EB15</code> <code>DFD1ED62571FFBB41FE4B988E9DEF371</code> <code>D2C3B478EF6B4D1AC74304037654862B</code> <code>7E2BC3714ECC9CC4030751DEB5A5269C</code> <code>FE8E394C49C1CD2F38F8B916EDF5405E</code> <code>4DB1901427E6175B6FD19098BA0516F2</code> <code>9C2D09BD61BA5CF6D4C8516BE2FC1E5E</code> <code>C61B115946AA36FA189939BC5C8242D3</code> <code>8130EF4BA0AA8669B32289947486F243</code><br> <code>39ED127F</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = B657CB82804DE75AEBD3D3BCFF6B12CBDA7216E22A5FA24054A83A517
<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 78 8A F2 AF B3 78 65
0010 | D8 02 00 00 5C 07 E8 D0 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80 1E C0 DE B4 07 3E F9 1C
0030 | BA A6 BE D7 12 3C 95 B0 FE 50 02 00 AA CF 4C 3F
0040 | BA 8B 3B 0E C4 EC 9A FE 87 F2 D0 A1 83 1E 1B 41
0050 | 29 C8 F3 8B 2A DF 9C 50 65 6E 93 01 54 86 F3 34
0060 | 35 5A 9F 26 F6 B3 DB 8C 3E F2 75 45 F6 3C 28 63
0070 | D3 12 6D 1E 2F 1C 85 7E C9 5C B7 CC 50 08 74 86
0080 | EB 6D D1 84 0C 10 E7 F3 B7 28 D2 E6 2D FB F0 98
0090 | E2 1B E6 F4 43 80 DD 22 04 3F 7C C3 24 2B AC 89
00A0 | 11 F3 EC 48 DC CC 34 FD 21 45 B3 C9 9B 12 50 67
00B0 | CF DB 36 EA 4B F8 C1 AD 3D 50 C8 35 5A B7 9F D7
00C0 | 38 E9 0B 98 F7 A0 22 2C 4D 38 C7 5E 77 46 0B DD
00D0 | 99 7F E7 D4 7A 5B 33 01 A3 23 98 49 A9 53 51 14
00E0 | 70 DF D2 70 E8 1B 7A D4 03 47 7D 2D 5C 4F ED 8C
00F0 | 66 B0 0A 69 A7 F3 BD 64 5F 61 40 FF 89 7D 40 03
0100 | 7E 0C 9D 14 D5 93 91 05 33 E5 24 5D 4F 36 EB D8
0110 | E4 04 23 87 43 A9 A0 15 E9 F6 AA 39 AD 6E 4B A7
0120 | F6 54 1F CA 4D 17 77 BB F5 94 3C 75 93 03 3C BB
0130 | 68 5E 5F 1C DF 23 53 25 C7 E3 64 D9 51 1C C8 54
0140 | 58 39 F3 7E F0 D6 F3 33 A1 9D DC 28 71 60 B7 6D
0150 | 1B 30 7A 3B 85 C3 4B 4D 1F 0E 2D 57 46 80 8F C8
0160 | D2 6B A3 90 5B A5 43 56 26 E1 38 FB 06 7C D5 50
0170 | 7D 6F D4 39 5E D0 41 9C 8B 5B 34 CD 53 85 DA 6C
0180 | C6 0A 35 09 3D 47 F3 59 16 03 33 A5 25 91 1E 52
0190 | F3 3F DA 10 08 5A B2 81 1C 67 47 C5 AD 5A 47 59
01A0 | 32 D8 A1 E6 0B 10 46 7D 35 59 00 B5 31 5D 68 00
01B0 | 3E 0A FE FE 0F E7 BC B3 22 D7 CF 70 F8 3A 60 2F
01C0 | 48 12 1F 91 69 B9 CF EE 93 A7 67 C6 7B B2 7F 8F
01D0 | AE 17 D9 1C 81 3E E1 46 1A D1 04 F3 48 4F DA D8
01E0 | 13 DF D5 E4 1B 98 8B 64 0F 3F 33 C1 89 AA B1 C3
01F0 | C1 61 71 9B 9B 33 72 23 D8 86 46 BF 1C 4E 2E A4
0200 | B5 EF ED DA 96 63 24 DB E1 C4 D6 11 DF 29 38 80
0210 | 76 CC 3B C3 C6 2F E6 DE A7 EF 00 83 81 BF 8B B1
0220 | E4 AB 43 BB 73 9B FC 69 D6 A0 77 A2 56 27 96 8C
0230 | CC 6E 7F 38 09 57 94 CF 88 36 3A 65 C5 9E 94 AB
0240 | D8 AE 77 7C 1F 36 F3 9B 25 21 01 EE 37 03 62 EF
0250 | CB A2 F6 DB FF F7 C6 5E D7 5B 0E A1 A2 DB 3B 64
0260 | 06 9F 77 60 E8 45 44 1F 54 11 9C 1B 27 22 9F 63
0270 | B5 CB F8 6B B5 92 61 06 70 56 84 3A CF EE 21 A1
0280 | 24 74 E5 3C 6E 0E 08 2A 59 BB AA F2</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 08 B5 3B 24 10 7B 65
0010 | C4 02 00 00 5C 07 E8 D0 C7 C3 E7 6D 71 ED 38 97
0020 | 67 2E 26 30 48 08 DB 26 D0 1C B1 F4 06 98 DB 02
0030 | D6 F5 C3 7F 4E D6 60 82 FE 50 02 00 42 64 3D EA
0040 | 91 F4 7C 20 E9 58 9F 29 4D A8 6E A7 31 48 E0 8E
0050 | 38 C3 C5 1C 18 3F 35 6E 4E 07 44 94 08 FF 7B D0
0060 | 1E 6B EB 0D 7C B8 93 AF B4 73 4E 4B 6C D4 A1 A6
0070 | 6E E7 38 02 2F F1 24 C6 A9 3C 49 D9 11 09 03 84
0080 | BE C5 08 D2 A2 C0 B2 67 DD 3B DB D1 B1 F1 BA 21
0090 | F6 38 90 47 72 63 94 7E 4F 3D 40 4F 3F 21 BA F6
00A0 | 6B 3B 91 BE F8 58 1D A4 10 9D 13 B9 5F 1C 9D 34
00B0 | C6 06 87 62 CA D4 59 70 2A 63 E9 23 A8 6C DC 85
00C0 | C4 F1 5D 3E 9D 56 C1 B0 BE 45 FD 1E 0A 49 15 1D
00D0 | 99 09 2C 38 95 72 8C 25 3E D7 BE 6B 7E 6A 61 F6
00E0 | A9 FE 56 9A F5 D0 2A B4 A4 2C 76 9C 9A 9E 77 7A
00F0 | 0E FB 75 82 39 D6 2C 8A A1 F1 50 85 FB 92 04 49
0100 | F7 83 F5 07 AF F1 B7 36 AB F4 8C 32 3F 21 7C 50
0110 | BD 16 A9 56 CE BA 5E 67 80 A8 F1 28 CB 0D D0 14
0120 | 64 3B 70 92 17 CB A4 6E 79 86 2B 43 0D 33 AE 06
0130 | 94 75 7F E0 5C 9B 30 ED A6 4A 4B 59 0E 43 A4 89
0140 | CB 78 9B F0 3A 28 90 64 2C 07 0B 2E C5 B9 74 DD
0150 | FD 03 26 B8 33 78 6C 5B 61 FB 06 8A 01 10 65 3D
0160 | 44 D6 17 72 80 EB EF 60 25 40 2C DF 6C 64 01 C4
0170 | A5 EF 80 9D 00 2E F3 BE 49 20 D2 C3 C3 83 8C 60
0180 | 6E EF C6 9B 66 D7 89 21 2B FA 6A 39 CE C1 BF A1
0190 | 06 0C FB 96 09 E4 B0 32 78 74 B8 1A 96 75 81 1E
01A0 | B4 05 3F 4F F7 7F D5 91 F2 96 D9 F1 DE 89 6C E0
01B0 | 41 A9 69 83 34 78 1B CB 03 99 3F 2D 1D 20 B9 0B
01C0 | EE C5 07 60 65 B4 55 03 D2 2F DB 2B 81 13 0F F8
01D0 | A8 9F 61 CA 5D EB EC 1D BB A9 9B 6E B5 0E C1 35
01E0 | D2 00 62 0D 73 FF 2E A1 6B 0E CA FE 7F 96 0F 23
01F0 | AF CB F4 FD F8 AB 9F 05 74 D0 7D 70 1E 93 08 5D
0200 | 14 07 AF 43 DC D5 BE A8 D2 61 00 B2 C4 27 A1 77
0210 | 25 03 B1 96 07 8B 35 11 26 72 7C 54 48 0C 48 26
0220 | 6E 05 4A 9C B8 DA F8 AC AE A8 A5 2A CA FA C0 93
0230 | 78 80 70 0D 34 CA 2C C9 B1 90 12 47 69 A4 D7 F7
0240 | 02 83 C6 AB 8C FA 40 B7 2D 5D 45 AF E4 21 71 0D
0250 | B3 14 32 0F E7 4B AC EB 43 C5 53 50 86 90 15 51
0260 | D9 E3 A8 86 30 C3 E2 D3 70 EA 03 37 D6 9E EE 31
0270 | FC 0F DE 64 9C 0C 6E 4C 10 40 3E B6 9C B4 AC 4F
0280 | 1A 2C 38 DD EA 19 69 99 A2 CE D8 ED</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 = B657CB82804DE75AEBD3D3BCFF6B12CBDA7216E22A5FA24054A83A517
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01788AF2AFB37865</code></td>
<td><code>0108B53B24107B65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>D8020000</code> (728 in decimal)</td>
<td><code>C4020000</code> (708 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = B657CB82804DE75AEBD3D3BCFF6B12CBDA7216E22A5FA24054A83A517
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td><code>C7C3E76D71ED3897672E26304808DB26</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td><code>D01CB1F40698DB02D6F5C37F4ED66082</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE500200AACF4C3FBA8B3B0EC4EC9AFE</code> <code>87F2D0A1831E1B4129C8F38B2ADF9C50</code> <code>656E93015486F334355A9F26F6B3DB8C</code> <code>3EF27545F63C2863D3126D1E2F1C857E</code> <code>C95CB7CC50087486EB6DD1840C10E7F3</code> <code>B728D2E62DFBF098E21BE6F44380DD22</code> <code>043F7CC3242BAC8911F3EC48DCCC34FD</code> <code>2145B3C99B125067CFDB36EA4BF8C1AD</code> <code>3D50C8355AB79FD738E90B98F7A0222C</code> <code>4D38C75E77460BDD997FE7D47A5B3301</code> <code>A3239849A953511470DFD270E81B7AD4</code> <code>03477D2D5C4FED8C66B00A69A7F3BD64</code> <code>5F6140FF897D40037E0C9D14D5939105</code> <code>33E5245D4F36EBD8E404238743A9A015</code> <code>E9F6AA39AD6E4BA7F6541FCA4D1777BB</code> <code>F5943C7593033CBB685E5F1CDF235325</code> <code>C7E364D9511CC8545839F37EF0D6F333</code> <code>A19DDC287160B76D1B307A3B85C34B4D</code> <code>1F0E2D5746808FC8D26BA3905BA54356</code> <code>26E138FB067CD5507D6FD4395ED0419C</code> <code>8B5B34CD5385DA6CC60A35093D47F359</code> <code>160333A525911E52F33FDA10085AB281</code> <code>1C6747C5AD5A475932D8A1E60B10467D</code> <code>355900B5315D68003E0AFEFE0FE7BCB3</code> <code>22D7CF70F83A602F48121F9169B9CFEE</code> <code>93A767C67BB27F8FAE17D91C813EE146</code> <code>1AD104F3484FDAD813DFD5E41B988B64</code> <code>0F3F33C189AAB1C3C161719B9B337223</code> <code>D88646BF1C4E2EA4B5EFEDDA966324DB</code> <code>E1C4D611DF29388076CC3BC3C62FE6DE</code> <code>A7EF008381BF8BB1E4AB43BB739BFC69</code> <code>D6A077A25627968CCC6E7F38095794CF</code> <code>88363A65C59E94ABD8AE777C1F36F39B</code> <code>252101EE370362EFCBA2F6DBFFF7C65E</code> <code>D75B0EA1A2DB3B64069F7760E845441F</code> <code>54119C1B27229F63B5CBF86BB5926106</code> <code>7056843ACFEE21A12474E53C6E0E082A</code><br> <code>59BBAAF2</code></td>
<td><code>FE50020042643DEA91F47C20E9589F29</code> <code>4DA86EA73148E08E38C3C51C183F356E</code> <code>4E07449408FF7BD01E6BEB0D7CB893AF</code> <code>B4734E4B6CD4A1A66EE738022FF124C6</code> <code>A93C49D911090384BEC508D2A2C0B267</code> <code>DD3BDBD1B1F1BA21F63890477263947E</code> <code>4F3D404F3F21BAF66B3B91BEF8581DA4</code> <code>109D13B95F1C9D34C6068762CAD45970</code> <code>2A63E923A86CDC85C4F15D3E9D56C1B0</code> <code>BE45FD1E0A49151D99092C3895728C25</code> <code>3ED7BE6B7E6A61F6A9FE569AF5D02AB4</code> <code>A42C769C9A9E777A0EFB758239D62C8A</code> <code>A1F15085FB920449F783F507AFF1B736</code> <code>ABF48C323F217C50BD16A956CEBA5E67</code> <code>80A8F128CB0DD014643B709217CBA46E</code> <code>79862B430D33AE0694757FE05C9B30ED</code> <code>A64A4B590E43A489CB789BF03A289064</code> <code>2C070B2EC5B974DDFD0326B833786C5B</code> <code>61FB068A0110653D44D6177280EBEF60</code> <code>25402CDF6C6401C4A5EF809D002EF3BE</code> <code>4920D2C3C3838C606EEFC69B66D78921</code> <code>2BFA6A39CEC1BFA1060CFB9609E4B032</code> <code>7874B81A9675811EB4053F4FF77FD591</code> <code>F296D9F1DE896CE041A9698334781BCB</code> <code>03993F2D1D20B90BEEC5076065B45503</code> <code>D22FDB2B81130FF8A89F61CA5DEBEC1D</code> <code>BBA99B6EB50EC135D200620D73FF2EA1</code> <code>6B0ECAFE7F960F23AFCBF4FDF8AB9F05</code> <code>74D07D701E93085D1407AF43DCD5BEA8</code> <code>D26100B2C427A1772503B196078B3511</code> <code>26727C54480C48266E054A9CB8DAF8AC</code> <code>AEA8A52ACAFAC0937880700D34CA2CC9</code> <code>B190124769A4D7F70283C6AB8CFA40B7</code> <code>2D5D45AFE421710DB314320FE74BACEB</code> <code>43C5535086901551D9E3A88630C3E2D3</code> <code>70EA0337D69EEE31FC0FDE649C0C6E4C</code> <code>10403EB69CB4AC4F1A2C38DDEA196999</code><br> <code>A2CED8ED</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = B657CB82804DE75AEBD3D3BCFF6B12CBDA7216E22A5FA24054A83A517
<!-- 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 = AACF4C3FBA8B3B0EC4EC9AFE87F2D0A1831E1B4129C8F38B2ADF9C50656E93015486F334355A9F26F6B3DB8C3EF27545F63C2863D3126D1E2F1C857EC95CB7CC50087486EB6DD1840C10E7F3B728D2E62DFBF098E21BE6F44380DD22043F7CC3242BAC8911F3EC48DCCC34FD2145B3C99B125067CFDB36EA4BF8C1AD3D50C8355AB79FD738E90B98F7A0222C4D38C75E77460BDD997FE7D47A5B3301A3239849A953511470DFD270E81B7AD403477D2D5C4FED8C66B00A69A7F3BD645F6140FF897D40037E0C9D14D593910533E5245D4F36EBD8E404238743A9A015E9F6AA39AD6E4BA7F6541FCA4D1777BBF5943C7593033CBB685E5F1CDF235325C7E364D9511CC8545839F37EF0D6F333A19DDC287160B76D1B307A3B85C34B4D1F0E2D5746808FC8D26BA3905BA5435626E138FB067CD5507D6FD4395ED0419C8B5B34CD5385DA6CC60A35093D47F359160333A525911E52F33FDA10085AB2811C6747C5AD5A475932D8A1E60B10467D355900B5315D68003E0AFEFE0FE7BCB322D7CF70F83A602F48121F9169B9CFEE93A767C67BB27F8FAE17D91C813EE1461AD104F3484FDAD813DFD5E41B988B640F3F33C189AAB1C3C161719B9B337223D88646BF1C4E2EA4B5EFEDDA966324DBE1C4D611DF29388076CC3BC3C62FE6DEA7EF008381BF8BB1E4AB43BB739BFC69D6A077A25627968CCC6E7F38095794CF88363A65C59E94ABD8AE777C1F36F39B252101EE370362EFCBA2F6DBFFF7C65ED75B0EA1A2DB3B64069F7760E845441F54119C1B27229F63B5CBF86BB59261067056843ACFEE21A12474E53C6E0E082A59BBAAF2
tmp_aes_key = A7BAE872D171E4221E338E2CEEE4ED7FE283DBAFB5C2AC2F5D45C4346ED11604
tmp_aes_iv = 293025CCC9576AB027A6F0F77FDAF40709A19A8BF28215831FFF83E42DE63E15</code></pre>
<pre><code>encrypted_answer = 42643DEA91F47C20E9589F294DA86EA73148E08E38C3C51C183F356E4E07449408FF7BD01E6BEB0D7CB893AFB4734E4B6CD4A1A66EE738022FF124C6A93C49D911090384BEC508D2A2C0B267DD3BDBD1B1F1BA21F63890477263947E4F3D404F3F21BAF66B3B91BEF8581DA4109D13B95F1C9D34C6068762CAD459702A63E923A86CDC85C4F15D3E9D56C1B0BE45FD1E0A49151D99092C3895728C253ED7BE6B7E6A61F6A9FE569AF5D02AB4A42C769C9A9E777A0EFB758239D62C8AA1F15085FB920449F783F507AFF1B736ABF48C323F217C50BD16A956CEBA5E6780A8F128CB0DD014643B709217CBA46E79862B430D33AE0694757FE05C9B30EDA64A4B590E43A489CB789BF03A2890642C070B2EC5B974DDFD0326B833786C5B61FB068A0110653D44D6177280EBEF6025402CDF6C6401C4A5EF809D002EF3BE4920D2C3C3838C606EEFC69B66D789212BFA6A39CEC1BFA1060CFB9609E4B0327874B81A9675811EB4053F4FF77FD591F296D9F1DE896CE041A9698334781BCB03993F2D1D20B90BEEC5076065B45503D22FDB2B81130FF8A89F61CA5DEBEC1DBBA99B6EB50EC135D200620D73FF2EA16B0ECAFE7F960F23AFCBF4FDF8AB9F0574D07D701E93085D1407AF43DCD5BEA8D26100B2C427A1772503B196078B351126727C54480C48266E054A9CB8DAF8ACAEA8A52ACAFAC0937880700D34CA2CC9B190124769A4D7F70283C6AB8CFA40B72D5D45AFE421710DB314320FE74BACEB43C5535086901551D9E3A88630C3E2D370EA0337D69EEE31FC0FDE649C0C6E4C10403EB69CB4AC4F1A2C38DDEA196999A2CED8ED
tmp_aes_key = B515F4C19BA98C5E2D01308D1D1FA78B11F004F96CCD77654B969211AE7EBF3E
tmp_aes_iv = 764D191B929E12845057E924C8D9030841D668B8ED2E8FF9EEBCDEC5E9B9E2FA</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 1ECCD752980F14790949011EE637A8DC4053C72DBA0D89B56FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010020A42F3268BA3136F8E19D2524AEF90905BC7097582855408170E4113F9F82EA5DD1704A11279C9505186EC2D0B6B9630183F318C978266F2E79D36C759E76958228193152B745F183E30DEAE3D8A6E39C2B0AD688D86C16F9F7D27862075ADD16BFB3000E3CA49DD95CCD72A8ECE2AB7B3138A530FBF35CCF318EAF0D7EBA8D2622E2484DB4E9D08D885C3832E5C49484531DEDB141AD107460C3FE8B345837002D59BA76242039E41987C4FCA446EA606B451731581FE10098285B298DD250CF0604F1982EEED75CD514FB3F36DE159FE2EB5E4006EAC0493E96BA8AE816476F771EF4AAC55D3D02E1F97DFD4016873C0C407692558EE0A56DEF2A186BF35FAFB37865D4CA936D6593D061
answer = BA0D89B56FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010020A42F3268BA3136F8E19D2524AEF90905BC7097582855408170E4113F9F82EA5DD1704A11279C9505186EC2D0B6B9630183F318C978266F2E79D36C759E76958228193152B745F183E30DEAE3D8A6E39C2B0AD688D86C16F9F7D27862075ADD16BFB3000E3CA49DD95CCD72A8ECE2AB7B3138A530FBF35CCF318EAF0D7EBA8D2622E2484DB4E9D08D885C3832E5C49484531DEDB141AD107460C3FE8B345837002D59BA76242039E41987C4FCA446EA606B451731581FE10098285B298DD250CF0604F1982EEED75CD514FB3F36DE159FE2EB5E4006EAC0493E96BA8AE816476F771EF4AAC55D3D02E1F97DFD4016873C0C407692558EE0A56DEF2A186BF35FAFB37865D4CA936D6593D061</code></pre>
<pre><code>answer_with_hash = 2B18C4A6E3259AA785D443C24B1257820951635ABA0D89B5C7C3E76D71ED3897672E26304808DB26D01CB1F40698DB02D6F5C37F4ED6608203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010064AAA6A7F712B5B1EEC07848066ECA944CBF1B606EF411F861FE4C14A255F4CA3001697926E0AF716132F3672DA8A1D5257E46F4CBDD665F52BE3A1DACFBDD1A0F3D01560DE6D16000103B9244B8C4BA47D6474DDE28D5FA7DE7BD055814A4AFC4823DFAE6CF116AC7327BB6AF1C9351B143E1FCFE6FD214A18362AB8ED555DC090ECDBF50A6E06DA962F2F3954B6A8ADDEDC08948275BD38692E33983DE446DC5E14F45C58BFC35F135DDC02D3BA6E0C434E9C529651F8A4E3CD7F1941C5E9FE4B4C555DCC3C0D6FC8561836EADE97B3062F7C2D1150A70213C228A87B7FFE011B0D9A573E6CD96FF6619E1B93F73ACAFE88A0624E8FF4EC61FF77CEF2326E424107B6507C56189CA2D7503
answer = BA0D89B5C7C3E76D71ED3897672E26304808DB26D01CB1F40698DB02D6F5C37F4ED6608203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010064AAA6A7F712B5B1EEC07848066ECA944CBF1B606EF411F861FE4C14A255F4CA3001697926E0AF716132F3672DA8A1D5257E46F4CBDD665F52BE3A1DACFBDD1A0F3D01560DE6D16000103B9244B8C4BA47D6474DDE28D5FA7DE7BD055814A4AFC4823DFAE6CF116AC7327BB6AF1C9351B143E1FCFE6FD214A18362AB8ED555DC090ECDBF50A6E06DA962F2F3954B6A8ADDEDC08948275BD38692E33983DE446DC5E14F45C58BFC35F135DDC02D3BA6E0C434E9C529651F8A4E3CD7F1941C5E9FE4B4C555DCC3C0D6FC8561836EADE97B3062F7C2D1150A70213C228A87B7FFE011B0D9A573E6CD96FF6619E1B93F73ACAFE88A0624E8FF4EC61FF77CEF2326E424107B6507C56189CA2D7503</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 6F E8 1D BD DA C6 62 6F C1 8E 41 56
0010 | 90 E0 76 80 1E C0 DE B4 07 3E F9 1C BA A6 BE D7
0020 | 12 3C 95 B0 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 C7 C3 E7 6D 71 ED 38 97 67 2E 26 30
0010 | 48 08 DB 26 D0 1C B1 F4 06 98 DB 02 D6 F5 C3 7F
0020 | 4E D6 60 82 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 = BA0D89B56FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B
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 | 20 A4 2F 32 68 BA 31 36 F8 E1 9D 25 24 AE F9 09
0140 | 05 BC 70 97 58 28 55 40 81 70 E4 11 3F 9F 82 EA
0150 | 5D D1 70 4A 11 27 9C 95 05 18 6E C2 D0 B6 B9 63
0160 | 01 83 F3 18 C9 78 26 6F 2E 79 D3 6C 75 9E 76 95
0170 | 82 28 19 31 52 B7 45 F1 83 E3 0D EA E3 D8 A6 E3
0180 | 9C 2B 0A D6 88 D8 6C 16 F9 F7 D2 78 62 07 5A DD
0190 | 16 BF B3 00 0E 3C A4 9D D9 5C CD 72 A8 EC E2 AB
01A0 | 7B 31 38 A5 30 FB F3 5C CF 31 8E AF 0D 7E BA 8D
01B0 | 26 22 E2 48 4D B4 E9 D0 8D 88 5C 38 32 E5 C4 94
01C0 | 84 53 1D ED B1 41 AD 10 74 60 C3 FE 8B 34 58 37
01D0 | 00 2D 59 BA 76 24 20 39 E4 19 87 C4 FC A4 46 EA
01E0 | 60 6B 45 17 31 58 1F E1 00 98 28 5B 29 8D D2 50
01F0 | CF 06 04 F1 98 2E EE D7 5C D5 14 FB 3F 36 DE 15
0200 | 9F E2 EB 5E 40 06 EA C0 49 3E 96 BA 8A E8 16 47
0210 | 6F 77 1E F4 AA C5 5D 3D 02 E1 F9 7D FD 40 16 87
0220 | 3C 0C 40 76 92 55 8E E0 A5 6D EF 2A 18 6B F3 5F
0230 | AF B3 78 65</code></pre>
0130 | 64 AA A6 A7 F7 12 B5 B1 EE C0 78 48 06 6E CA 94
0140 | 4C BF 1B 60 6E F4 11 F8 61 FE 4C 14 A2 55 F4 CA
0150 | 30 01 69 79 26 E0 AF 71 61 32 F3 67 2D A8 A1 D5
0160 | 25 7E 46 F4 CB DD 66 5F 52 BE 3A 1D AC FB DD 1A
0170 | 0F 3D 01 56 0D E6 D1 60 00 10 3B 92 44 B8 C4 BA
0180 | 47 D6 47 4D DE 28 D5 FA 7D E7 BD 05 58 14 A4 AF
0190 | C4 82 3D FA E6 CF 11 6A C7 32 7B B6 AF 1C 93 51
01A0 | B1 43 E1 FC FE 6F D2 14 A1 83 62 AB 8E D5 55 DC
01B0 | 09 0E CD BF 50 A6 E0 6D A9 62 F2 F3 95 4B 6A 8A
01C0 | DD ED C0 89 48 27 5B D3 86 92 E3 39 83 DE 44 6D
01D0 | C5 E1 4F 45 C5 8B FC 35 F1 35 DD C0 2D 3B A6 E0
01E0 | C4 34 E9 C5 29 65 1F 8A 4E 3C D7 F1 94 1C 5E 9F
01F0 | E4 B4 C5 55 DC C3 C0 D6 FC 85 61 83 6E AD E9 7B
0200 | 30 62 F7 C2 D1 15 0A 70 21 3C 22 8A 87 B7 FF E0
0210 | 11 B0 D9 A5 73 E6 CD 96 FF 66 19 E1 B9 3F 73 AC
0220 | AF E8 8A 06 24 E8 FF 4E C6 1F F7 7C EF 23 26 E4
0230 | 24 10 7B 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 = BA0D89B56FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td><code>C7C3E76D71ED3897672E26304808DB26</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td><code>D01CB1F40698DB02D6F5C37F4ED66082</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B56FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE00010020A42F3268BA3136F8E19D25</code> <code>24AEF90905BC7097582855408170E411</code> <code>3F9F82EA5DD1704A11279C9505186EC2</code> <code>D0B6B9630183F318C978266F2E79D36C</code> <code>759E76958228193152B745F183E30DEA</code> <code>E3D8A6E39C2B0AD688D86C16F9F7D278</code> <code>62075ADD16BFB3000E3CA49DD95CCD72</code> <code>A8ECE2AB7B3138A530FBF35CCF318EAF</code> <code>0D7EBA8D2622E2484DB4E9D08D885C38</code> <code>32E5C49484531DEDB141AD107460C3FE</code> <code>8B345837002D59BA76242039E41987C4</code> <code>FCA446EA606B451731581FE10098285B</code> <code>298DD250CF0604F1982EEED75CD514FB</code> <code>3F36DE159FE2EB5E4006EAC0493E96BA</code> <code>8AE816476F771EF4AAC55D3D02E1F97D</code> <code>FD4016873C0C407692558EE0A56DEF2A</code><br> <code>186BF35F</code></td>
<td><code>FE00010064AAA6A7F712B5B1EEC07848</code> <code>066ECA944CBF1B606EF411F861FE4C14</code> <code>A255F4CA3001697926E0AF716132F367</code> <code>2DA8A1D5257E46F4CBDD665F52BE3A1D</code> <code>ACFBDD1A0F3D01560DE6D16000103B92</code> <code>44B8C4BA47D6474DDE28D5FA7DE7BD05</code> <code>5814A4AFC4823DFAE6CF116AC7327BB6</code> <code>AF1C9351B143E1FCFE6FD214A18362AB</code> <code>8ED555DC090ECDBF50A6E06DA962F2F3</code> <code>954B6A8ADDEDC08948275BD38692E339</code> <code>83DE446DC5E14F45C58BFC35F135DDC0</code> <code>2D3BA6E0C434E9C529651F8A4E3CD7F1</code> <code>941C5E9FE4B4C555DCC3C0D6FC856183</code> <code>6EADE97B3062F7C2D1150A70213C228A</code> <code>87B7FFE011B0D9A573E6CD96FF6619E1</code> <code>B93F73ACAFE88A0624E8FF4EC61FF77C</code><br> <code>EF2326E4</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>AFB37865</code> (1702409135 in decimal)</td>
<td><code>24107B65</code> (1702563876 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B56FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B
<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 = 5D5615680F343505009F03052CA06904AADB5BBC42B9405698DC399CA0A0654F4FF8906FE7C2B176203EA19F31342BC2DD5D697471ABD126179B2AB10BD8B7B8B81E3B2A8694450D6DBF7F7E98D112CE3226B4AC54D6062CCA3F960CC673375BD46DFE8315043421A8DEAFFEFA5A221FD5501B5EE747C0468AC2F7FCE57F550451B150D1ADFB96D7D537DAEA087965208BD178B38E4B7FD2CEF52F593997657E436C502E09FDB16A5B325036FD3600B297271E7C15516C1BBFA5CB7A7B16DCA2B2447079A1F39BC95DF87676FA1307835A91350C6BCBA83D3DA2BC5C4FFEA66875B6DAB9719EF7E2ABE6761CE4EB8ED256B7833703FA3061E2F107E21974F8D0</code></pre>
<pre><code>b = 126CAF2C37733F8AB4F107AAE265C797892856C5BFA1F311A4963D4F087C46DE05B38250BB0F92BD3AC47D89EC5962F9068C46B910C2C32F7F1832B1B9833562CDAE7606DD0E94564DCE3F23C3947924E1402C986AB5603D6ACDB00F4DCC3C010655719AAEF8F4C251F7782516D1B893494B79E46765B0C58775D453B0A2E003A29E46F943BE7ABD45209D735D9DE27956239770421B29EBB177DACD0971EE0AF708140CFA393CCA55A48E858A24128DF5D6283A804717DB1297FE5458CA3058155883C2145B8CD8A30A54357A8DAF0335B7C8752E228B68150DB8D5F944D2CFF1A2A6AFCB31B760A84E93640E8D7D7D62A9594425D8BDBD7F82046144587B9E</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 = 71171AF934ABD6DC248E06DAE32C618D9023A927832FB6AB50CFE8E9B6DA46796096E47573C79A159D1EA1A48CC595D2EE1234CB5409D2632CE23A2FACAE2816A1C3D4C939734D24749A45877081A18B6851585F9CB9DC26C2FEE4FC1E8D324B0700893A81CB0DDB8A1C26E6127DDEF3E4054E898D0FC9493A283FAFCE31AE19C1D673CF650BB9C17D7287DA011A96D633FF3D1162E3F354E8A191EB153F13E7DEE2B60E96ED27B96253BBC658A40BA6A763EE57B95C027FC2EAE7A4A93EB28C82030060FB0554CF6F502AB4799EDE7790E8B17AC244D89762AD7871EBA54D6884CC66251620FD49A8FC284840073FFF66C37D7F958822D433870E1B78C60B00</code></pre>
<pre><code>g_b = C458AD4F5CCB7FDA4FD3518CDE0AAF1611813045DD6F8D8FF21AB1FF157C13A4CD4BD90426B7EBFA4DBFB5B68E24B95BBECB9D9BBD020EAB6EEA8DB72FF990CB4502322A137AE9A54E47C62263A26E43455A4FF16E9CDF30578CE45DEF4D950B770D08674FCB6192C6543DBC4338C077C351CAFF3F43F6C73D9334CF623380C43B1B366EC7BDBB8B54A4B910A2F7D809B31096DC5A575FB399F5CD133DB4DE163217A4070C331EBF4B4E3394F0CFEF3F8735469925F3EC94C33C3B3A2D67496F28FCA7F0CDDEEA4D2478D187AAB98018F0D5C47FBEC7FFCB49BF464C9C49BAE5C23B395426BF4E30581C550FFA323F0B231A2B59AD48CC3B148F44136F8306DF</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 6F E8 1D BD DA C6 62 6F C1 8E 41 56
0010 | 90 E0 76 80 1E C0 DE B4 07 3E F9 1C BA A6 BE D7
0020 | 12 3C 95 B0 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 71 17 1A F9 34 AB D6 DC 24 8E 06 DA E3 2C 61 8D
0040 | 90 23 A9 27 83 2F B6 AB 50 CF E8 E9 B6 DA 46 79
0050 | 60 96 E4 75 73 C7 9A 15 9D 1E A1 A4 8C C5 95 D2
0060 | EE 12 34 CB 54 09 D2 63 2C E2 3A 2F AC AE 28 16
0070 | A1 C3 D4 C9 39 73 4D 24 74 9A 45 87 70 81 A1 8B
0080 | 68 51 58 5F 9C B9 DC 26 C2 FE E4 FC 1E 8D 32 4B
0090 | 07 00 89 3A 81 CB 0D DB 8A 1C 26 E6 12 7D DE F3
00A0 | E4 05 4E 89 8D 0F C9 49 3A 28 3F AF CE 31 AE 19
00B0 | C1 D6 73 CF 65 0B B9 C1 7D 72 87 DA 01 1A 96 D6
00C0 | 33 FF 3D 11 62 E3 F3 54 E8 A1 91 EB 15 3F 13 E7
00D0 | DE E2 B6 0E 96 ED 27 B9 62 53 BB C6 58 A4 0B A6
00E0 | A7 63 EE 57 B9 5C 02 7F C2 EA E7 A4 A9 3E B2 8C
00F0 | 82 03 00 60 FB 05 54 CF 6F 50 2A B4 79 9E DE 77
0100 | 90 E8 B1 7A C2 44 D8 97 62 AD 78 71 EB A5 4D 68
0110 | 84 CC 66 25 16 20 FD 49 A8 FC 28 48 40 07 3F FF
0120 | 66 C3 7D 7F 95 88 22 D4 33 87 0E 1B 78 C6 0B 00</code></pre>
<pre><code>0000 | 54 B6 43 66 C7 C3 E7 6D 71 ED 38 97 67 2E 26 30
0010 | 48 08 DB 26 D0 1C B1 F4 06 98 DB 02 D6 F5 C3 7F
0020 | 4E D6 60 82 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | C4 58 AD 4F 5C CB 7F DA 4F D3 51 8C DE 0A AF 16
0040 | 11 81 30 45 DD 6F 8D 8F F2 1A B1 FF 15 7C 13 A4
0050 | CD 4B D9 04 26 B7 EB FA 4D BF B5 B6 8E 24 B9 5B
0060 | BE CB 9D 9B BD 02 0E AB 6E EA 8D B7 2F F9 90 CB
0070 | 45 02 32 2A 13 7A E9 A5 4E 47 C6 22 63 A2 6E 43
0080 | 45 5A 4F F1 6E 9C DF 30 57 8C E4 5D EF 4D 95 0B
0090 | 77 0D 08 67 4F CB 61 92 C6 54 3D BC 43 38 C0 77
00A0 | C3 51 CA FF 3F 43 F6 C7 3D 93 34 CF 62 33 80 C4
00B0 | 3B 1B 36 6E C7 BD BB 8B 54 A4 B9 10 A2 F7 D8 09
00C0 | B3 10 96 DC 5A 57 5F B3 99 F5 CD 13 3D B4 DE 16
00D0 | 32 17 A4 07 0C 33 1E BF 4B 4E 33 94 F0 CF EF 3F
00E0 | 87 35 46 99 25 F3 EC 94 C3 3C 3B 3A 2D 67 49 6F
00F0 | 28 FC A7 F0 CD DE EA 4D 24 78 D1 87 AA B9 80 18
0100 | F0 D5 C4 7F BE C7 FF CB 49 BF 46 4C 9C 49 BA E5
0110 | C2 3B 39 54 26 BF 4E 30 58 1C 55 0F FA 32 3F 0B
0120 | 23 1A 2B 59 AD 48 CC 3B 14 8F 44 13 6F 83 06 DF</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 = BA0D89B56FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td><code>C7C3E76D71ED3897672E26304808DB26</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td><code>D01CB1F40698DB02D6F5C37F4ED66082</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE00010071171AF934ABD6DC248E06DA</code> <code>E32C618D9023A927832FB6AB50CFE8E9</code> <code>B6DA46796096E47573C79A159D1EA1A4</code> <code>8CC595D2EE1234CB5409D2632CE23A2F</code> <code>ACAE2816A1C3D4C939734D24749A4587</code> <code>7081A18B6851585F9CB9DC26C2FEE4FC</code> <code>1E8D324B0700893A81CB0DDB8A1C26E6</code> <code>127DDEF3E4054E898D0FC9493A283FAF</code> <code>CE31AE19C1D673CF650BB9C17D7287DA</code> <code>011A96D633FF3D1162E3F354E8A191EB</code> <code>153F13E7DEE2B60E96ED27B96253BBC6</code> <code>58A40BA6A763EE57B95C027FC2EAE7A4</code> <code>A93EB28C82030060FB0554CF6F502AB4</code> <code>799EDE7790E8B17AC244D89762AD7871</code> <code>EBA54D6884CC66251620FD49A8FC2848</code> <code>40073FFF66C37D7F958822D433870E1B</code><br> <code>78C60B00</code></td>
<td><code>FE000100C458AD4F5CCB7FDA4FD3518C</code> <code>DE0AAF1611813045DD6F8D8FF21AB1FF</code> <code>157C13A4CD4BD90426B7EBFA4DBFB5B6</code> <code>8E24B95BBECB9D9BBD020EAB6EEA8DB7</code> <code>2FF990CB4502322A137AE9A54E47C622</code> <code>63A26E43455A4FF16E9CDF30578CE45D</code> <code>EF4D950B770D08674FCB6192C6543DBC</code> <code>4338C077C351CAFF3F43F6C73D9334CF</code> <code>623380C43B1B366EC7BDBB8B54A4B910</code> <code>A2F7D809B31096DC5A575FB399F5CD13</code> <code>3DB4DE163217A4070C331EBF4B4E3394</code> <code>F0CFEF3F8735469925F3EC94C33C3B3A</code> <code>2D67496F28FCA7F0CDDEEA4D2478D187</code> <code>AAB98018F0D5C47FBEC7FFCB49BF464C</code> <code>9C49BAE5C23B395426BF4E30581C550F</code> <code>FA323F0B231A2B59AD48CC3B148F4413</code><br> <code>6F8306DF</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 = BA0D89B56FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B
<!-- 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 = 54B643666FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B00000000000000000FE00010071171AF934ABD6DC248E06DAE32C618D9023A927832FB6AB50CFE8E9B6DA46796096E47573C79A159D1EA1A48CC595D2EE1234CB5409D2632CE23A2FACAE2816A1C3D4C939734D24749A45877081A18B6851585F9CB9DC26C2FEE4FC1E8D324B0700893A81CB0DDB8A1C26E6127DDEF3E4054E898D0FC9493A283FAFCE31AE19C1D673CF650BB9C17D7287DA011A96D633FF3D1162E3F354E8A191EB153F13E7DEE2B60E96ED27B96253BBC658A40BA6A763EE57B95C027FC2EAE7A4A93EB28C82030060FB0554CF6F502AB4799EDE7790E8B17AC244D89762AD7871EBA54D6884CC66251620FD49A8FC284840073FFF66C37D7F958822D433870E1B78C60B00
padding = 7215E47027D2CF4AC80B77F5
tmp_aes_key = A7BAE872D171E4221E338E2CEEE4ED7FE283DBAFB5C2AC2F5D45C4346ED11604
tmp_aes_iv = 293025CCC9576AB027A6F0F77FDAF40709A19A8BF28215831FFF83E42DE63E15</code></pre>
<pre><code>data = 54B64366C7C3E76D71ED3897672E26304808DB26D01CB1F40698DB02D6F5C37F4ED660820000000000000000FE000100C458AD4F5CCB7FDA4FD3518CDE0AAF1611813045DD6F8D8FF21AB1FF157C13A4CD4BD90426B7EBFA4DBFB5B68E24B95BBECB9D9BBD020EAB6EEA8DB72FF990CB4502322A137AE9A54E47C62263A26E43455A4FF16E9CDF30578CE45DEF4D950B770D08674FCB6192C6543DBC4338C077C351CAFF3F43F6C73D9334CF623380C43B1B366EC7BDBB8B54A4B910A2F7D809B31096DC5A575FB399F5CD133DB4DE163217A4070C331EBF4B4E3394F0CFEF3F8735469925F3EC94C33C3B3A2D67496F28FCA7F0CDDEEA4D2478D187AAB98018F0D5C47FBEC7FFCB49BF464C9C49BAE5C23B395426BF4E30581C550FFA323F0B231A2B59AD48CC3B148F44136F8306DF
padding = C2BF779EF8131C3B41DF976A
tmp_aes_key = B515F4C19BA98C5E2D01308D1D1FA78B11F004F96CCD77654B969211AE7EBF3E
tmp_aes_iv = 764D191B929E12845057E924C8D9030841D668B8ED2E8FF9EEBCDEC5E9B9E2FA</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 = E340C849B4F3612951CC4B38FC0ACDD0BA2A19211C3D7805DD79B0615026C8C06CD38DDA3038C06A7765052BE7A7A9C16ED1AE60CAB33FDAB632854A5B0109328A8EC5BE2D1B2A6C4827C41836D88B7E6CF483F7F9452AD87E77661F160A57998C4EB6C1CAC8E53C799513A546A11B1423B2EE03FB900A2BDF115257C82E4170B25EC634DB6BB1DDB6A18A5394E2D5A652F0C22F9E945D2055DEF174552D3ACF5714F7FBFEA76E9C241437387844D208E8CB1AC337419C07FFED4BA36592AB806C4F82E742448D73451F7114F2E5BE4CB9EECE49FBA0DF13871A7DBBC007A38C76C4B0BCE4C87D48FA23E93D3796A1F3FE67D3C1709B1DA63A78536F3040322F0CEE4E3C788177F51FE6C0FB32A2C37E0DA1589E32DB964EA56ECD28505C082560CE85C2317E1512BF05C688348759A2E03102F777453FB06F34150F4C8A68567A6F5595726AF07088AD79C9EAFD4245</code></pre>
<pre><code>encrypted_data = 334993EDFB8A0347ECD00FE17632128C09BC7BCAC6301BF445DCFE6044833117C99C9B4E89EDAD46D816C1C319541750EE8F2719703DC6DA743DA5DC6ED1AAC5F9BEE29B58030B4F1C4639FCD081F41B1B79CB1BFCE2331FB057C9161A85C6E14575CEACB5A78927827686936C2FA5FFB92AE7077CBC9E2DDE2DE99CB8FF7C655324DE5E65AB8E363FFC73FFCE9B2368FCC55CF31B0911FE0067045F6FE61739DE3B1939C3732FED9505B1E0ACB7F672C3FCAAE9CA481C5BAEACE89B0189DB733F12C97C1607AE550458068D8DB92BC7CAA0748211E6286083CD1C75D9929149C0D875F70FA0FB1694B7D7854FD04B1072A03C9975D4F9B74493CE5A9DE4EE4B63193361EE806A0A5AD28E1EEE26A215E9DB196DCBD1FDB736C8E3C9FCB34CDCBA6F95F76B5269179C398CA37A45951C100FCC94E3E4F520D106E8680CC63F4905601695D26E754B03601D2E518163B3</code></pre>
<!-- end client_DH_inner_data_output -->
<p>The length of the final string is 336 bytes.</p>
<h6>7.2) set_client_DH_params query</h6>
<!-- start set_client_DH_params -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 34 6A 0B 00 AF B3 78 65
0010 | 78 01 00 00 1F 5F 04 F5 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80 1E C0 DE B4 07 3E F9 1C
0030 | BA A6 BE D7 12 3C 95 B0 FE 50 01 00 E3 40 C8 49
0040 | B4 F3 61 29 51 CC 4B 38 FC 0A CD D0 BA 2A 19 21
0050 | 1C 3D 78 05 DD 79 B0 61 50 26 C8 C0 6C D3 8D DA
0060 | 30 38 C0 6A 77 65 05 2B E7 A7 A9 C1 6E D1 AE 60
0070 | CA B3 3F DA B6 32 85 4A 5B 01 09 32 8A 8E C5 BE
0080 | 2D 1B 2A 6C 48 27 C4 18 36 D8 8B 7E 6C F4 83 F7
0090 | F9 45 2A D8 7E 77 66 1F 16 0A 57 99 8C 4E B6 C1
00A0 | CA C8 E5 3C 79 95 13 A5 46 A1 1B 14 23 B2 EE 03
00B0 | FB 90 0A 2B DF 11 52 57 C8 2E 41 70 B2 5E C6 34
00C0 | DB 6B B1 DD B6 A1 8A 53 94 E2 D5 A6 52 F0 C2 2F
00D0 | 9E 94 5D 20 55 DE F1 74 55 2D 3A CF 57 14 F7 FB
00E0 | FE A7 6E 9C 24 14 37 38 78 44 D2 08 E8 CB 1A C3
00F0 | 37 41 9C 07 FF ED 4B A3 65 92 AB 80 6C 4F 82 E7
0100 | 42 44 8D 73 45 1F 71 14 F2 E5 BE 4C B9 EE CE 49
0110 | FB A0 DF 13 87 1A 7D BB C0 07 A3 8C 76 C4 B0 BC
0120 | E4 C8 7D 48 FA 23 E9 3D 37 96 A1 F3 FE 67 D3 C1
0130 | 70 9B 1D A6 3A 78 53 6F 30 40 32 2F 0C EE 4E 3C
0140 | 78 81 77 F5 1F E6 C0 FB 32 A2 C3 7E 0D A1 58 9E
0150 | 32 DB 96 4E A5 6E CD 28 50 5C 08 25 60 CE 85 C2
0160 | 31 7E 15 12 BF 05 C6 88 34 87 59 A2 E0 31 02 F7
0170 | 77 45 3F B0 6F 34 15 0F 4C 8A 68 56 7A 6F 55 95
0180 | 72 6A F0 70 88 AD 79 C9 EA FD 42 45</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 6C 59 01 00 24 10 7B 65
0010 | 78 01 00 00 1F 5F 04 F5 C7 C3 E7 6D 71 ED 38 97
0020 | 67 2E 26 30 48 08 DB 26 D0 1C B1 F4 06 98 DB 02
0030 | D6 F5 C3 7F 4E D6 60 82 FE 50 01 00 33 49 93 ED
0040 | FB 8A 03 47 EC D0 0F E1 76 32 12 8C 09 BC 7B CA
0050 | C6 30 1B F4 45 DC FE 60 44 83 31 17 C9 9C 9B 4E
0060 | 89 ED AD 46 D8 16 C1 C3 19 54 17 50 EE 8F 27 19
0070 | 70 3D C6 DA 74 3D A5 DC 6E D1 AA C5 F9 BE E2 9B
0080 | 58 03 0B 4F 1C 46 39 FC D0 81 F4 1B 1B 79 CB 1B
0090 | FC E2 33 1F B0 57 C9 16 1A 85 C6 E1 45 75 CE AC
00A0 | B5 A7 89 27 82 76 86 93 6C 2F A5 FF B9 2A E7 07
00B0 | 7C BC 9E 2D DE 2D E9 9C B8 FF 7C 65 53 24 DE 5E
00C0 | 65 AB 8E 36 3F FC 73 FF CE 9B 23 68 FC C5 5C F3
00D0 | 1B 09 11 FE 00 67 04 5F 6F E6 17 39 DE 3B 19 39
00E0 | C3 73 2F ED 95 05 B1 E0 AC B7 F6 72 C3 FC AA E9
00F0 | CA 48 1C 5B AE AC E8 9B 01 89 DB 73 3F 12 C9 7C
0100 | 16 07 AE 55 04 58 06 8D 8D B9 2B C7 CA A0 74 82
0110 | 11 E6 28 60 83 CD 1C 75 D9 92 91 49 C0 D8 75 F7
0120 | 0F A0 FB 16 94 B7 D7 85 4F D0 4B 10 72 A0 3C 99
0130 | 75 D4 F9 B7 44 93 CE 5A 9D E4 EE 4B 63 19 33 61
0140 | EE 80 6A 0A 5A D2 8E 1E EE 26 A2 15 E9 DB 19 6D
0150 | CB D1 FD B7 36 C8 E3 C9 FC B3 4C DC BA 6F 95 F7
0160 | 6B 52 69 17 9C 39 8C A3 7A 45 95 1C 10 0F CC 94
0170 | E3 E4 F5 20 D1 06 E8 68 0C C6 3F 49 05 60 16 95
0180 | D2 6E 75 4B 03 60 1D 2E 51 81 63 B3</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>346A0B00AFB37865</code></td>
<td><code>6C59010024107B65</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>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td><code>C7C3E76D71ED3897672E26304808DB26</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td><code>D01CB1F40698DB02D6F5C37F4ED66082</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE500100E340C849B4F3612951CC4B38</code> <code>FC0ACDD0BA2A19211C3D7805DD79B061</code> <code>5026C8C06CD38DDA3038C06A7765052B</code> <code>E7A7A9C16ED1AE60CAB33FDAB632854A</code> <code>5B0109328A8EC5BE2D1B2A6C4827C418</code> <code>36D88B7E6CF483F7F9452AD87E77661F</code> <code>160A57998C4EB6C1CAC8E53C799513A5</code> <code>46A11B1423B2EE03FB900A2BDF115257</code> <code>C82E4170B25EC634DB6BB1DDB6A18A53</code> <code>94E2D5A652F0C22F9E945D2055DEF174</code> <code>552D3ACF5714F7FBFEA76E9C24143738</code> <code>7844D208E8CB1AC337419C07FFED4BA3</code> <code>6592AB806C4F82E742448D73451F7114</code> <code>F2E5BE4CB9EECE49FBA0DF13871A7DBB</code> <code>C007A38C76C4B0BCE4C87D48FA23E93D</code> <code>3796A1F3FE67D3C1709B1DA63A78536F</code> <code>3040322F0CEE4E3C788177F51FE6C0FB</code> <code>32A2C37E0DA1589E32DB964EA56ECD28</code> <code>505C082560CE85C2317E1512BF05C688</code> <code>348759A2E03102F777453FB06F34150F</code> <code>4C8A68567A6F5595726AF07088AD79C9</code><br> <code>EAFD4245</code></td>
<td><code>FE500100334993EDFB8A0347ECD00FE1</code> <code>7632128C09BC7BCAC6301BF445DCFE60</code> <code>44833117C99C9B4E89EDAD46D816C1C3</code> <code>19541750EE8F2719703DC6DA743DA5DC</code> <code>6ED1AAC5F9BEE29B58030B4F1C4639FC</code> <code>D081F41B1B79CB1BFCE2331FB057C916</code> <code>1A85C6E14575CEACB5A7892782768693</code> <code>6C2FA5FFB92AE7077CBC9E2DDE2DE99C</code> <code>B8FF7C655324DE5E65AB8E363FFC73FF</code> <code>CE9B2368FCC55CF31B0911FE0067045F</code> <code>6FE61739DE3B1939C3732FED9505B1E0</code> <code>ACB7F672C3FCAAE9CA481C5BAEACE89B</code> <code>0189DB733F12C97C1607AE550458068D</code> <code>8DB92BC7CAA0748211E6286083CD1C75</code> <code>D9929149C0D875F70FA0FB1694B7D785</code> <code>4FD04B1072A03C9975D4F9B74493CE5A</code> <code>9DE4EE4B63193361EE806A0A5AD28E1E</code> <code>EE26A215E9DB196DCBD1FDB736C8E3C9</code> <code>FCB34CDCBA6F95F76B5269179C398CA3</code> <code>7A45951C100FCC94E3E4F520D106E868</code> <code>0CC63F4905601695D26E754B03601D2E</code><br> <code>518163B3</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 = 61FB2EA919481794D5E3A843C79BD667CDB0500AA178D78E226B9E1137752A8BB4809D3A6E52B68DCCEACC440247EF05CCF805AFD072B0CD9B55EE95EB8745F6DAF9D9BA5EE60F28212A2C147DF139C9FD69E7BE5BAA331A04EEF1593A1587CBD8B49AC4526C693912021F3573C74FB9CF525A385FC978618C3293BF4DF0E79C2AB9FE39575A715574A359682FC16CCC840C5E43FAD839EDF471A78C1384B072DC2EADEF255120C632E8BC3543D6641AB2FDCD0ECE4389866F820FF3B0A965D774C7CAE579E3605DE9C7D6482D318ADA69CF611772F97A31E402EA59A971E823BC0E0BC82D2C8D69487AC006B219156D8238C9D6FA3DBAD4BF03A705426AF45B</code></pre>
<pre><code>auth_key = 14834A5B56996DC7A0D78F5B69CF3F3D6985802CB8DBEF13B5CEC9ACBB3A13E3356855C2F26546DCF8071B9D26A020DD9FD192A830F4B358A7412A860922E0D983F4CAB00035788F62F8E9C0F0A7CA7F1A05260C32765E5C80BC545CCFD35E8B799C1AB0D99FE5B9BE1299E4D012D5AF108DBC8C6D8C907802AD87769498AA56220A686D99D15DC66AFB66912B7509D83EB56BAF44D98D3F5236428973C7246134AF51D488B41B4DF0E1465C07EE89428C750414EADF8281F25EC4CDD9EDCD0D71BFCB61A694C0BC6D010058A754A03472FA7F91616735D4E4CC015EBFDEB338FB9FFD2FC4EF0E08A1B1CFFACBCA982570CFCA2C6F227C5C7A06A159FE1756A1</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 9C 43 44 B0 B3 78 65
0010 | 94 00 00 00 34 F7 CB 3B 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80 1E C0 DE B4 07 3E F9 1C
0030 | BA A6 BE D7 12 3C 95 B0 CA F7 62 81 A6 F2 B3 33
0040 | 97 90 2E AD 01 2E FE 78</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 80 60 87 24 10 7B 65
0010 | 98 00 00 00 34 F7 CB 3B C7 C3 E7 6D 71 ED 38 97
0020 | 67 2E 26 30 48 08 DB 26 D0 1C B1 F4 06 98 DB 02
0030 | D6 F5 C3 7F 4E D6 60 82 9F 0A 50 D5 23 1D 31 B8
0040 | 8E D0 23 B3 C8 D2 72 73</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>019C4344B0B37865</code></td>
<td><code>0180608724107B65</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>94000000</code> (148 in decimal)</td>
<td><code>98000000</code> (152 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>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td><code>C7C3E76D71ED3897672E26304808DB26</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td><code>D01CB1F40698DB02D6F5C37F4ED66082</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>CAF76281A6F2B33397902EAD012EFE78</code></td>
<td><code>9F0A50D5231D31B88ED023B3C8D27273</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

@ -4,22 +4,10 @@
<meta charset="utf-8">
<title>PublicForward</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Constructors
Constructor
Description
publicForwardMessage
 
publicForwardStory
 ">
<meta property="description" content="Contains info about the forwards of a story as a message to public chats and reposts by public channels.">
<meta property="og:title" content="PublicForward">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
publicForwardMessage
 
publicForwardStory
 ">
<meta property="og:description" content="Contains info about the forwards of a story as a message to public chats and reposts by public channels.">
<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">
@ -54,7 +42,8 @@ publicForwardStory
<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/PublicForward" >PublicForward</a></li></ul></div>
<h1 id="dev_page_title">PublicForward</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Contains info about the forwards of a <a href="/api/stories">story</a> as a message to public chats and reposts by public channels.</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 167 <b class="caret"></b></a>
@ -79,14 +68,17 @@ publicForwardStory
<tbody>
<tr>
<td><a href="/constructor/publicForwardMessage">publicForwardMessage</a></td>
<td> </td>
<td>Contains info about a forward of a <a href="/api/stories">story</a> as a message.</td>
</tr>
<tr>
<td><a href="/constructor/publicForwardStory">publicForwardStory</a></td>
<td> </td>
<td>Contains info about a forward of a <a href="/api/stories">story</a> as a repost by a public channel.</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

@ -8,24 +8,14 @@
Constructor
Description
stats.publicForwards
 
Methods
Method
Description
stats.getStoryPublicForwards
 ">
Contains info about the forwards of a story as a message to public…">
<meta property="og:title" content="Stats.PublicForwards">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
stats.publicForwards
 
Methods
Method
Description
stats.getStoryPublicForwards
 ">
Contains info about the forwards of a story as a message to public…">
<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">
@ -88,7 +78,7 @@ stats.getStoryPublicForwards
<tbody>
<tr>
<td><a href="/constructor/stats.publicForwards">stats.publicForwards</a></td>
<td> </td>
<td>Contains info about the forwards of a <a href="/api/stories">story</a> as a message to public chats and reposts by public channels.</td>
</tr>
</tbody>
</table>
@ -103,7 +93,7 @@ stats.getStoryPublicForwards
<tbody>
<tr>
<td><a href="/method/stats.getStoryPublicForwards">stats.getStoryPublicForwards</a></td>
<td> </td>
<td>Obtain forwards of a <a href="/api/stories">story</a> as a message to public chats and reposts by public channels.</td>
</tr>
</tbody>
</table></div>

View file

@ -4,28 +4,10 @@
<meta charset="utf-8">
<title>Stats.StoryStats</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Constructors
Constructor
Description
stats.storyStats
 
Methods
Method
Description
stats.getStoryStats
 ">
<meta property="description" content="Contains statistics about a story.">
<meta property="og:title" content="Stats.StoryStats">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
stats.storyStats
 
Methods
Method
Description
stats.getStoryStats
 ">
<meta property="og:description" content="Contains statistics about a story.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -60,7 +42,8 @@ stats.getStoryStats
<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/stats.StoryStats" >Stats.StoryStats</a></li></ul></div>
<h1 id="dev_page_title">Stats.StoryStats</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Contains <a href="/api/stats">statistics</a> about a <a href="/api/stories">story</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 167 <b class="caret"></b></a>
@ -88,7 +71,7 @@ stats.getStoryStats
<tbody>
<tr>
<td><a href="/constructor/stats.storyStats">stats.storyStats</a></td>
<td> </td>
<td>Contains <a href="/api/stats">statistics</a> about a <a href="/api/stories">story</a>.</td>
</tr>
</tbody>
</table>
@ -103,10 +86,15 @@ stats.getStoryStats
<tbody>
<tr>
<td><a href="/method/stats.getStoryStats">stats.getStoryStats</a></td>
<td> </td>
<td>Get <a href="/api/stats">statistics</a> for a certain <a href="/api/stories">story</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="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4>
<p>Telegram offers detailed channel statistics for channels and supergroups.</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

@ -2218,6 +2218,12 @@ a.pr-account-button-wrap:focus {
.field-readonly .pr-form-control-wrap:after {
display: none;
}
.pr-form-control-wrap.has-locked .input,
.pr-form-control-wrap.has-locked input.form-control,
.pr-form-control-wrap.has-locked .select {
padding-right: 40px;
text-overflow: ellipsis;
}
.pr-form-control-wrap.has-photo .pr-form-control,
.pr-form-control-wrap.has-progress.field-loading .pr-form-control {
padding-right: 48px;