Update content of files

This commit is contained in:
GitHub Action 2024-11-16 16:32:50 +00:00
parent 5efc378c59
commit dc023745b3
22 changed files with 231 additions and 231 deletions

View file

@ -254,7 +254,7 @@ This allows the server to filter messages based on a text query, and even on the
<p>Telegram apps support generating, sharing and synchronizing app themes.</p>
<h3><a class="anchor" href="#sponsored-messages" id="sponsored-messages" name="sponsored-messages"><i class="anchor-icon"></i></a><a href="/api/sponsored-messages">Sponsored messages</a></h3>
<p>If your app allows accessing content from Telegram <a href="https://telegram.org/tour/channels">channels</a>, you must include support for <a href="https://core.telegram.org/api/sponsored-messages">official sponsored messages</a> in Telegram channels. </p>
<h3><a class="anchor" href="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h3>
<h3><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h3>
<p>Telegram has one of the <strong>most generous reward systems</strong> in the history of social media. Telegram channel and bot owners can now receive <strong>50%</strong> of the revenue from ads displayed in their channels and bots.</p>
<p>This page describes the methods used to withdraw channel and bot ad revenue, as well as view detailed revenue stats. </p>
<h3><a class="anchor" href="#fact-checks" id="fact-checks" name="fact-checks"><i class="anchor-icon"></i></a><a href="/api/factcheck">Fact-checks</a></h3>

View file

@ -254,7 +254,7 @@ This allows the server to filter messages based on a text query, and even on the
<p>Telegram apps support generating, sharing and synchronizing app themes.</p>
<h3><a class="anchor" href="#sponsored-messages" id="sponsored-messages" name="sponsored-messages"><i class="anchor-icon"></i></a><a href="/api/sponsored-messages">Sponsored messages</a></h3>
<p>If your app allows accessing content from Telegram <a href="https://telegram.org/tour/channels">channels</a>, you must include support for <a href="https://core.telegram.org/api/sponsored-messages">official sponsored messages</a> in Telegram channels. </p>
<h3><a class="anchor" href="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h3>
<h3><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h3>
<p>Telegram has one of the <strong>most generous reward systems</strong> in the history of social media. Telegram channel and bot owners can now receive <strong>50%</strong> of the revenue from ads displayed in their channels and bots.</p>
<p>This page describes the methods used to withdraw channel and bot ad revenue, as well as view detailed revenue stats. </p>
<h3><a class="anchor" href="#fact-checks" id="fact-checks" name="fact-checks"><i class="anchor-icon"></i></a><a href="/api/factcheck">Fact-checks</a></h3>

View file

@ -2,10 +2,10 @@
<html class="">
<head>
<meta charset="utf-8">
<title>Channel ad revenue</title>
<title>Channel and bot ad revenue</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.">
<meta property="og:title" content="Channel ad revenue">
<meta property="og:title" content="Channel and bot ad revenue">
<meta property="og:image" content="">
<meta property="og:description" content="Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
@ -39,8 +39,8 @@
<div class="container clearfix">
<div class="dev_page">
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/api/revenue" >Channel ad revenue</a></li></ul></div>
<h1 id="dev_page_title">Channel ad revenue</h1>
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/api/revenue" >Channel and bot ad revenue</a></li></ul></div>
<h1 id="dev_page_title">Channel and bot ad revenue</h1>
<div id="dev_page_content"><!-- scroll_nav -->
@ -61,7 +61,7 @@
---functions---
<a href='/method/stats.getBroadcastRevenueTransactions'>stats.getBroadcastRevenueTransactions</a>#70990b6d peer:<a href='/type/InputPeer'>InputPeer</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/stats.BroadcastRevenueTransactions'>stats.BroadcastRevenueTransactions</a>;</code></pre>
<p>The channel/bot ad revenue transaction history and balance may be fetched by channel/bot admins if the <a href="/constructor/channelFull">channelFull</a>.<code>can_view_revenue</code>/<a href="/constructor/userFull">userFull</a>.<code>can_view_revenue</code> flag is set and the <a href="/api/config#channel-revenue-withdrawal-enabled">channel_revenue_withdrawal_enabled field is equal to <code>true</code> »</a>. </p>
<p>The channel/bot ad revenue transaction history and balance may be fetched by channel/bot admins if the <a href="/constructor/channelFull">channelFull</a>.<code>can_view_revenue</code>/<a href="/constructor/userFull">userFull</a>.<code>can_view_revenue</code> flag is set.</p>
<p>The transaction history may be fetched using <a href="/method/stats.getBroadcastRevenueTransactions">stats.getBroadcastRevenueTransactions</a>, which will return a vector of <a href="/type/BroadcastRevenueTransaction">BroadcastRevenueTransaction</a> constructors, one of:</p>
<ul>
<li><a href="/constructor/broadcastRevenueTransactionProceeds">broadcastRevenueTransactionProceeds</a> - Describes earnings from sponsored messages in a channel in some time frame</li>
@ -80,7 +80,7 @@
---functions---
<a href='/method/stats.getBroadcastRevenueStats'>stats.getBroadcastRevenueStats</a>#f788ee19 flags:<a href='/type/%23'>#</a> dark:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/stats.BroadcastRevenueStats'>stats.BroadcastRevenueStats</a>;</code></pre>
<p>Channel/bot ad revenue statistics may be fetched by channel/bot admins if the <a href="/constructor/channelFull">channelFull</a>.<code>can_view_revenue</code>/<a href="/constructor/userFull">userFull</a>.<code>can_view_revenue</code> flag is set and the <a href="/api/config#channel-revenue-withdrawal-enabled">channel_revenue_withdrawal_enabled field is equal to <code>true</code> »</a> (valid both for channels and bots). </p>
<p>Channel/bot ad revenue statistics may be fetched by channel/bot admins if the <a href="/constructor/channelFull">channelFull</a>.<code>can_view_revenue</code>/<a href="/constructor/userFull">userFull</a>.<code>can_view_revenue</code> flag is set. </p>
<p>Use <a href="/method/stats.getBroadcastRevenueStats">stats.getBroadcastRevenueStats</a> to fetch statistics about the revenue earned from sponsored messages in a channel/bot; the returned <a href="/type/StatsGraph">StatsGraph</a> graphs can be rendered <a href="/api/stats#graph-visualization">as described here »</a>. </p>
<p>Specifically:</p>
<ul>
@ -97,7 +97,7 @@
<a href='/method/stats.getBroadcastRevenueWithdrawalUrl'>stats.getBroadcastRevenueWithdrawalUrl</a>#9df4faad peer:<a href='/type/InputPeer'>InputPeer</a> password:<a href='/type/InputCheckPasswordSRP'>InputCheckPasswordSRP</a> = <a href='/type/stats.BroadcastRevenueWithdrawalUrl'>stats.BroadcastRevenueWithdrawalUrl</a>;</code></pre>
<p>To withdraw a channel/bot's ad revenue, invoke <a href="/method/stats.getBroadcastRevenueWithdrawalUrl">stats.getBroadcastRevenueWithdrawalUrl</a>, passing the current account's <a href="/api/srp">2FA password</a> as an <a href="/type/InputCheckPasswordSRP">InputCheckPasswordSRP</a> constructor, generated <a href="/api/srp">as specified here »</a>. </p>
<p>Only the channel/bot owner can invoke this method, and only if the <a href="/api/config#channel-revenue-withdrawal-enabled">channel_revenue_withdrawal_enabled field is equal to <code>true</code> »</a> (valid both for channels and bots). </p>
<p>Only the channel/bot owner can invoke this method, and only if the <a href="/api/config#channel-revenue-withdrawal-enabled">channel_revenue_withdrawal_enabled field is equal to <code>true</code> »</a> (valid both for channels and bots) and the <a href="/constructor/broadcastRevenueBalances">broadcastRevenueBalances</a>.<code>withdrawal_enabled</code> flag is set.</p>
<p>The method will return a unique URL to a <a href="https://fragment.com/ads">Fragment</a> page where the user will be able to specify and submit the address of the TON wallet where the funds will be sent. </p>
<h4><a class="anchor" href="#disable-ads-on-the-channel" id="disable-ads-on-the-channel" name="disable-ads-on-the-channel"><i class="anchor-icon"></i></a>Disable ads on the channel</h4>
<pre><code><a href='/constructor/channelFull'>channelFull</a>#bbab348d flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> flags2:<a href='/type/%23'>#</a> can_delete_channel:flags2.0?<a href='/constructor/true'>true</a> antispam:flags2.1?<a href='/constructor/true'>true</a> participants_hidden:flags2.2?<a href='/constructor/true'>true</a> translations_disabled:flags2.3?<a href='/constructor/true'>true</a> stories_pinned_available:flags2.5?<a href='/constructor/true'>true</a> view_forum_as_messages:flags2.6?<a href='/constructor/true'>true</a> restricted_sponsored:flags2.11?<a href='/constructor/true'>true</a> can_view_revenue:flags2.12?<a href='/constructor/true'>true</a> paid_media_allowed:flags2.14?<a href='/constructor/true'>true</a> can_view_stars_revenue:flags2.15?<a href='/constructor/true'>true</a> paid_reactions_available:flags2.16?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/BotInfo'>BotInfo</a>&gt; migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/string'>string</a>&gt; groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> requests_pending:flags.28?<a href='/type/int'>int</a> recent_requesters:flags.28?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt; default_send_as:flags.29?<a href='/type/Peer'>Peer</a> available_reactions:flags.30?<a href='/type/ChatReactions'>ChatReactions</a> reactions_limit:flags2.13?<a href='/type/int'>int</a> stories:flags2.4?<a href='/type/PeerStories'>PeerStories</a> wallpaper:flags2.7?<a href='/type/WallPaper'>WallPaper</a> boosts_applied:flags2.8?<a href='/type/int'>int</a> boosts_unrestrict:flags2.9?<a href='/type/int'>int</a> emojiset:flags2.10?<a href='/type/StickerSet'>StickerSet</a> = <a href='/type/ChatFull'>ChatFull</a>;

View file

@ -75,7 +75,7 @@
<tr>
<td><strong>withdrawal_enabled</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>If set, the available balance can be <a href="/api/revenue#withdrawing-revenue">withdrawn »</a>.</td>
</tr>
<tr>
<td><strong>current_balance</strong></td>
@ -97,7 +97,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/BroadcastRevenueBalances">BroadcastRevenueBalances</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-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -86,7 +86,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/BroadcastRevenueTransaction">BroadcastRevenueTransaction</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-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -86,7 +86,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/BroadcastRevenueTransaction">BroadcastRevenueTransaction</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-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -111,7 +111,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/BroadcastRevenueTransaction">BroadcastRevenueTransaction</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-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -401,7 +401,7 @@
<p>Invoking this method will update the value of the <code>view_forum_as_messages</code> flag of <a href="/constructor/channelFull">channelFull</a> or <a href="/constructor/dialog">dialog</a> and emit an <a href="/constructor/updateChannelViewForumAsMessages">updateChannelViewForumAsMessages</a>.</p>
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p>
<h4><a class="anchor" href="#paid-media" id="paid-media" name="paid-media"><i class="anchor-icon"></i></a><a href="/api/paid-media">Paid media</a></h4>
<p>Content creators can accept Stars by publishing paid photos or videos on their channels. Subscribers will be allowed to view such posts only after paying the author to unlock them.</p>

View file

@ -92,7 +92,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/stats.BroadcastRevenueStats">stats.BroadcastRevenueStats</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-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -81,7 +81,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/stats.BroadcastRevenueTransactions">stats.BroadcastRevenueTransactions</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-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -76,7 +76,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/stats.BroadcastRevenueWithdrawalUrl">stats.BroadcastRevenueWithdrawalUrl</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-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -81,7 +81,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/Update">Update</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-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -323,7 +323,7 @@ The exact read date of messages might still be unavailable for other reasons, se
To set <a href="/constructor/userFull">userFull</a>.<code>read_dates_private</code> for ourselves invoke <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a>, setting the <code>settings.hide_read_marks</code> flag.</p>
<h4><a class="anchor" href="#business" id="business" name="business"><i class="anchor-icon"></i></a><a href="/api/business">Business</a></h4>
<p>Users can turn their Telegram account into a business account, gaining access to business features such as opening hours, location, quick replies, automated messages, custom start pages, chatbot support, and more.</p>
<h4><a class="anchor" href="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p>
<h4><a class="anchor" href="#pinned-messages" id="pinned-messages" name="pinned-messages"><i class="anchor-icon"></i></a><a href="/api/pin">Pinned messages</a></h4>
<p>Telegram allows pinning multiple messages on top of a specific chat.</p>

View file

@ -110,7 +110,7 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -107,7 +107,7 @@
<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="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -112,7 +112,7 @@
<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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4>
<p>How to login to a user's account if they have enabled 2FA, how to change password.</p>
<h4><a class="anchor" href="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 F4 B7 0D 00 9D AB 38 67
0010 | 14 00 00 00 F1 8E 7E BE E8 FF D0 70 C6 56 0F C1
0020 | 91 A6 69 5C BB 3D 69 6B</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 E8 C8 09 00 54 C6 38 67
0010 | 14 00 00 00 F1 8E 7E BE D0 EA B0 A3 DD 8B 65 05
0020 | 20 F1 6A 47 11 72 C2 18</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>F4B70D009DAB3867</code></td>
<td><code>E8C8090054C63867</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>E8FFD070C6560FC191A6695CBB3D696B</code></td>
<td><code>D0EAB0A3DD8B650520F16A471172C218</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 00 CA E9 9D AB 38 67
0010 | 50 00 00 00 63 24 16 05 E8 FF D0 70 C6 56 0F C1
0020 | 91 A6 69 5C BB 3D 69 6B 50 52 07 36 D6 05 6F 36
0030 | F7 B5 AE 82 38 C4 61 93 08 29 16 D5 CA 3E 83 65
0040 | 25 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 94 00 BF 54 C6 38 67
0010 | 50 00 00 00 63 24 16 05 D0 EA B0 A3 DD 8B 65 05
0020 | 20 F1 6A 47 11 72 C2 18 C0 92 69 C7 22 14 AE DD
0030 | E8 96 CA 82 5F 21 C7 3B 08 20 1D 4F 3A FE F4 5B
0040 | E7 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
0050 | 85 1D 9D D0 A5 B7 F7 09 35 5F C3 0B 21 6B E8 6C
0060 | 02 2B B4 C3</code></pre>
<p>Payload (de)serialization:</p>
@ -132,7 +132,7 @@
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>0100CAE99DAB3867</code></td>
<td><code>019400BF54C63867</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
<td><code>D0EAB0A3DD8B650520F16A471172C218</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
<td><code>C09269C72214AEDDE896CA825F21C73B</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>082916D5CA3E836525000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2960788869651588389</td>
<td><code>08201D4F3AFEF45BE7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2314092898342427623</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 = 2960788869651588389</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2960788869651588389 = 1553479331 * 1905908119</code></p>
<pre><code>p = 1553479331
q = 1905908119</code></pre>
<pre><code>pq = 2314092898342427623</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2314092898342427623 = 1188071597 * 1947772259</code></p>
<pre><code>p = 1188071597
q = 1947772259</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 29 16 D5 CA 3E 83 65 25 00 00 00
0010 | 04 5C 98 36 A3 00 00 00 04 71 99 D9 97 00 00 00
0020 | E8 FF D0 70 C6 56 0F C1 91 A6 69 5C BB 3D 69 6B
0030 | 50 52 07 36 D6 05 6F 36 F7 B5 AE 82 38 C4 61 93
0040 | C7 34 2A 00 E4 97 51 C3 44 E9 8D AC A4 98 E3 D5
0050 | 3D 7E 99 B2 10 17 84 E5 20 FF 38 07 E0 96 EE 1B
<pre><code>0000 | 95 5F F5 A9 08 20 1D 4F 3A FE F4 5B E7 00 00 00
0010 | 04 46 D0 88 AD 00 00 00 04 74 18 A5 63 00 00 00
0020 | D0 EA B0 A3 DD 8B 65 05 20 F1 6A 47 11 72 C2 18
0030 | C0 92 69 C7 22 14 AE DD E8 96 CA 82 5F 21 C7 3B
0040 | B2 CA 4D 77 45 C4 A3 34 E3 D5 D1 9A FA 62 30 B6
0050 | F7 87 FE 4B C0 FD 61 34 9D 1C A3 0B 30 28 26 61
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 = 1905908119</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>082916D5CA3E836525000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2960788869651588389</td>
<td><code>08201D4F3AFEF45BE7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2314092898342427623</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>045C9836A3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1553479331</td>
<td><code>0446D088AD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1188071597</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>047199D997000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1905908119</td>
<td><code>047418A563000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1947772259</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>E8FFD070C6560FC191A6695CBB3D696B</code></td>
<td><code>D0EAB0A3DD8B650520F16A471172C218</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
<td><code>C09269C72214AEDDE896CA825F21C73B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>C7342A00E49751C344E98DACA498E3D5</code> <code>3D7E99B2101784E520FF3807E096EE1B</code></td>
<td><code>B2CA4D7745C4A334E3D5D19AFA6230B6</code> <code>F787FE4BC0FD61349D1CA30B30282661</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1905908119</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 = 955FF5A9082916D5CA3E836525000000045C9836A3000000047199D997000000E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C46193C7342A00E49751C344E98DACA498E3D53D7E99B2101784E520FF3807E096EE1B02000000
random_padding_bytes = B466F6A58F3A78359B82AA87C98DE9847CEB0886FBDA78154B395957431373B4500A7AC595FEBA67680E2CD50DA72ACC9D2827A04F25EE681438E0B7F09BF73864BD6D7532CEC7D4611A86AAB23E4F3C715C25C1B04D336BBA28231F</code></pre>
<pre><code>data = 955FF5A908201D4F3AFEF45BE70000000446D088AD000000047418A563000000D0EAB0A3DD8B650520F16A471172C218C09269C72214AEDDE896CA825F21C73BB2CA4D7745C4A334E3D5D19AFA6230B6F787FE4BC0FD61349D1CA30B3028266102000000
random_padding_bytes = C5E87EBF5506A6686F2E82264FA171E50FE4FB4E2D02950EE5AF742425812DBF348FA2F4E069B4AF859B232D3791547FAE228003EC51FECAEF67C81C662181BE00D05A33056E7D65004C201557C9B53F33412E384EDA3A52D7F7FD60</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 = 25CF84E953F562707ACECDB185CF5052BC4D1E82330FD395A840EEB13806941EE95CA63EF2774F0625EB358DCAEAE5FAE06366779FDED68F10E204DDDAEEF3B93AC93C81DE0383C5E7C72C296E8E7E1C9A92E5A2181C82FABE0097F3DEC77CF788D2AD65D9FC3D70573B7E4010AFFC0AF6019FEDBE509B654E06A0BF26CF3446F5D1BE057E18E103B25B76FF30C6893D466EE930474298AC44039870BB97839D63902926E41F326CEFA577B5E6BF1AD2D6D00A08DABA9041559C78540C4E8BD82CCFAC98B322E1531CEC7D1C783C459B325CA7A41E04E24FB30319BB3F8817E88F2642D0EDD87925259B8DAB8AC0225293543C7A3DF5256E20F5747E53C6A4E9</code></pre>
<pre><code>encrypted_data = AE78994C63A6468CCB77EF2AA90C3737395D6889544148F030B59841832FFDBCFA88B64408169C67FEE880042CAF2A1A6055756451472982A467D87F462F179C68760A3D746574881838ABFC14D20A9DE5DB97AA78629F13646B86D5AEDC344187858C0BD610218181007E75645CD2EC5F0EA93F1CA377CA0E0D23AC484E158C5BD779946A9A81ADDF01A3A58F022C805FE7FBA61504EE9E3FC29051D15D96925FE4908DC212A7F8B48B4359410DB6C71EEB6FE6C21EAAD5982C704490AFA8BC1AEF22DCB414E9374213164AACABB17CE3C05BABEBC47078641134B7D45C1991018E96197883FDEF4F65326A78C77C52662C45346591D94E8E3494AF747D1A55</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 F8 B7 0D 00 9D AB 38 67
0010 | 40 01 00 00 BE E4 12 D7 E8 FF D0 70 C6 56 0F C1
0020 | 91 A6 69 5C BB 3D 69 6B 50 52 07 36 D6 05 6F 36
0030 | F7 B5 AE 82 38 C4 61 93 04 5C 98 36 A3 00 00 00
0040 | 04 71 99 D9 97 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 25 CF 84 E9 53 F5 62 70 7A CE CD B1
0060 | 85 CF 50 52 BC 4D 1E 82 33 0F D3 95 A8 40 EE B1
0070 | 38 06 94 1E E9 5C A6 3E F2 77 4F 06 25 EB 35 8D
0080 | CA EA E5 FA E0 63 66 77 9F DE D6 8F 10 E2 04 DD
0090 | DA EE F3 B9 3A C9 3C 81 DE 03 83 C5 E7 C7 2C 29
00A0 | 6E 8E 7E 1C 9A 92 E5 A2 18 1C 82 FA BE 00 97 F3
00B0 | DE C7 7C F7 88 D2 AD 65 D9 FC 3D 70 57 3B 7E 40
00C0 | 10 AF FC 0A F6 01 9F ED BE 50 9B 65 4E 06 A0 BF
00D0 | 26 CF 34 46 F5 D1 BE 05 7E 18 E1 03 B2 5B 76 FF
00E0 | 30 C6 89 3D 46 6E E9 30 47 42 98 AC 44 03 98 70
00F0 | BB 97 83 9D 63 90 29 26 E4 1F 32 6C EF A5 77 B5
0100 | E6 BF 1A D2 D6 D0 0A 08 DA BA 90 41 55 9C 78 54
0110 | 0C 4E 8B D8 2C CF AC 98 B3 22 E1 53 1C EC 7D 1C
0120 | 78 3C 45 9B 32 5C A7 A4 1E 04 E2 4F B3 03 19 BB
0130 | 3F 88 17 E8 8F 26 42 D0 ED D8 79 25 25 9B 8D AB
0140 | 8A C0 22 52 93 54 3C 7A 3D F5 25 6E 20 F5 74 7E
0150 | 53 C6 A4 E9</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 EC C8 09 00 54 C6 38 67
0010 | 40 01 00 00 BE E4 12 D7 D0 EA B0 A3 DD 8B 65 05
0020 | 20 F1 6A 47 11 72 C2 18 C0 92 69 C7 22 14 AE DD
0030 | E8 96 CA 82 5F 21 C7 3B 04 46 D0 88 AD 00 00 00
0040 | 04 74 18 A5 63 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 AE 78 99 4C 63 A6 46 8C CB 77 EF 2A
0060 | A9 0C 37 37 39 5D 68 89 54 41 48 F0 30 B5 98 41
0070 | 83 2F FD BC FA 88 B6 44 08 16 9C 67 FE E8 80 04
0080 | 2C AF 2A 1A 60 55 75 64 51 47 29 82 A4 67 D8 7F
0090 | 46 2F 17 9C 68 76 0A 3D 74 65 74 88 18 38 AB FC
00A0 | 14 D2 0A 9D E5 DB 97 AA 78 62 9F 13 64 6B 86 D5
00B0 | AE DC 34 41 87 85 8C 0B D6 10 21 81 81 00 7E 75
00C0 | 64 5C D2 EC 5F 0E A9 3F 1C A3 77 CA 0E 0D 23 AC
00D0 | 48 4E 15 8C 5B D7 79 94 6A 9A 81 AD DF 01 A3 A5
00E0 | 8F 02 2C 80 5F E7 FB A6 15 04 EE 9E 3F C2 90 51
00F0 | D1 5D 96 92 5F E4 90 8D C2 12 A7 F8 B4 8B 43 59
0100 | 41 0D B6 C7 1E EB 6F E6 C2 1E AA D5 98 2C 70 44
0110 | 90 AF A8 BC 1A EF 22 DC B4 14 E9 37 42 13 16 4A
0120 | AC AB B1 7C E3 C0 5B AB EB C4 70 78 64 11 34 B7
0130 | D4 5C 19 91 01 8E 96 19 78 83 FD EF 4F 65 32 6A
0140 | 78 C7 7C 52 66 2C 45 34 65 91 D9 4E 8E 34 94 AF
0150 | 74 7D 1A 55</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 = B466F6A58F3A78359B82AA87C98DE9847CEB0886FBDA78154B3959574
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>F8B70D009DAB3867</code></td>
<td><code>ECC8090054C63867</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 = B466F6A58F3A78359B82AA87C98DE9847CEB0886FBDA78154B3959574
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
<td><code>D0EAB0A3DD8B650520F16A471172C218</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
<td><code>C09269C72214AEDDE896CA825F21C73B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>045C9836A3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1553479331</td>
<td><code>0446D088AD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1188071597</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>047199D997000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1905908119</td>
<td><code>047418A563000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1947772259</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 = B466F6A58F3A78359B82AA87C98DE9847CEB0886FBDA78154B3959574
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE00010025CF84E953F562707ACECDB1</code> <code>85CF5052BC4D1E82330FD395A840EEB1</code> <code>3806941EE95CA63EF2774F0625EB358D</code> <code>CAEAE5FAE06366779FDED68F10E204DD</code> <code>DAEEF3B93AC93C81DE0383C5E7C72C29</code> <code>6E8E7E1C9A92E5A2181C82FABE0097F3</code> <code>DEC77CF788D2AD65D9FC3D70573B7E40</code> <code>10AFFC0AF6019FEDBE509B654E06A0BF</code> <code>26CF3446F5D1BE057E18E103B25B76FF</code> <code>30C6893D466EE930474298AC44039870</code> <code>BB97839D63902926E41F326CEFA577B5</code> <code>E6BF1AD2D6D00A08DABA9041559C7854</code> <code>0C4E8BD82CCFAC98B322E1531CEC7D1C</code> <code>783C459B325CA7A41E04E24FB30319BB</code> <code>3F8817E88F2642D0EDD87925259B8DAB</code> <code>8AC0225293543C7A3DF5256E20F5747E</code><br> <code>53C6A4E9</code></td>
<td><code>FE000100AE78994C63A6468CCB77EF2A</code> <code>A90C3737395D6889544148F030B59841</code> <code>832FFDBCFA88B64408169C67FEE88004</code> <code>2CAF2A1A6055756451472982A467D87F</code> <code>462F179C68760A3D746574881838ABFC</code> <code>14D20A9DE5DB97AA78629F13646B86D5</code> <code>AEDC344187858C0BD610218181007E75</code> <code>645CD2EC5F0EA93F1CA377CA0E0D23AC</code> <code>484E158C5BD779946A9A81ADDF01A3A5</code> <code>8F022C805FE7FBA61504EE9E3FC29051</code> <code>D15D96925FE4908DC212A7F8B48B4359</code> <code>410DB6C71EEB6FE6C21EAAD5982C7044</code> <code>90AFA8BC1AEF22DCB414E9374213164A</code> <code>ACABB17CE3C05BABEBC47078641134B7</code> <code>D45C1991018E96197883FDEF4F65326A</code> <code>78C77C52662C45346591D94E8E3494AF</code><br> <code>747D1A55</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = B466F6A58F3A78359B82AA87C98DE9847CEB0886FBDA78154B3959574
<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 BC 6F FF 9D AB 38 67
0010 | 78 02 00 00 5C 07 E8 D0 E8 FF D0 70 C6 56 0F C1
0020 | 91 A6 69 5C BB 3D 69 6B 50 52 07 36 D6 05 6F 36
0030 | F7 B5 AE 82 38 C4 61 93 FE 50 02 00 E3 A5 84 CC
0040 | 81 10 CA 19 0F 8A C7 3B 79 7E ED 86 A9 B3 64 49
0050 | 07 1D 89 C1 13 4D 44 30 37 9F DA F7 06 83 6E 21
0060 | 58 C0 BA BA E3 44 00 B9 92 8D 6E 58 6F D9 47 23
0070 | 4C 81 85 B0 CE 61 2E 7B 36 6E F3 B5 5D 11 D9 0D
0080 | 37 7B 1E 25 C6 C9 BD D4 89 42 A6 ED 1F 39 1B 5F
0090 | 03 02 BD 56 91 C3 06 08 18 83 56 BC 69 82 67 3F
00A0 | BD E9 49 26 18 49 B1 D8 A8 B5 41 38 FE 2B 7C 69
00B0 | D4 0C 5A 08 99 28 0E F5 12 E3 FA E6 A4 96 94 AA
00C0 | 70 BF 13 33 A5 3F FA CD B6 D3 B8 38 C1 47 52 50
00D0 | 5F 27 66 14 D1 1E F1 14 C8 33 AF 06 91 92 E8 5D
00E0 | 53 74 8B F1 11 F6 D0 34 32 A9 EA E9 A9 BB 7A 3E
00F0 | 63 90 4C 73 66 8D 7D 3A AC B3 9A C2 BF EB 36 DC
0100 | 8B 3D 18 B7 B6 7B CB 5B 82 DA F5 15 0C A2 3C 07
0110 | 7A AC 8E D2 70 3C BF D2 C9 37 6A AF CD 4B A4 D3
0120 | 0E 5C 26 01 E7 6D 19 F4 81 5A B1 EA 1A 1E 8C 98
0130 | 5B 5D E8 9E C4 D5 22 D6 15 1B D8 B1 58 B9 FE CF
0140 | 53 2E DC B2 31 C8 43 FF 35 9A D5 48 78 9C F3 EE
0150 | 1A 4D DC 66 5F 3D 9B D6 22 99 DF 0C 72 25 71 6D
0160 | 60 B6 17 D1 EA 7C 0F 4C 1D 8A 56 43 87 5D 58 E2
0170 | CB 12 42 27 C3 98 6F EA CD 0C 3F 0C CA 4C 1F 8F
0180 | D6 B2 D4 97 2B E4 AA 1D B8 89 AC 9C 21 CF 26 3F
0190 | CF 2A 65 BB F2 B7 20 AD 74 E1 90 EA D9 AB 72 56
01A0 | 48 63 FE 75 47 46 FA 13 13 B1 93 D2 73 CF C4 F5
01B0 | 57 C2 05 CB 7F 6F 22 7B ED 33 8B 42 72 7D 3B 9C
01C0 | 77 DE 3B A9 A8 D5 43 E1 30 44 90 E8 56 B6 B8 FC
01D0 | BE 7D 78 F5 73 8B 43 47 BA EE A2 8C CD BC BB 42
01E0 | 8B 72 F4 35 47 47 50 73 DF 47 04 F1 89 39 03 52
01F0 | C6 F1 95 4A 79 60 C5 89 D3 FA EF 15 A6 06 59 8F
0200 | 43 18 6D 4D E2 AD 47 FD EE 57 C7 2C 90 97 72 D5
0210 | E8 59 75 44 3B 54 C0 BE CD 7D EB 33 33 E7 78 3F
0220 | 3D E6 83 E1 5E E7 D0 E4 3C AE 8D 98 67 9B CF 70
0230 | D2 D5 5F F7 ED BE CA D8 4C 67 E6 5A 3F F1 16 23
0240 | A5 14 68 A1 FB ED AD 11 F0 D5 07 64 F6 08 2E B7
0250 | FE C4 E5 DB 3E 00 B4 68 5D 9D 49 13 27 2B EF 1B
0260 | AB DC 16 04 A1 15 DF BC 0D F5 04 05 5F 2E E8 BA
0270 | EF AF F2 85 DF 8D 6E AA 5E DC DB F9 2A 98 3B 5E
0280 | 21 57 44 56 6C 75 9B 7D B4 0C 40 2E</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 34 61 DB 54 C6 38 67
0010 | 78 02 00 00 5C 07 E8 D0 D0 EA B0 A3 DD 8B 65 05
0020 | 20 F1 6A 47 11 72 C2 18 C0 92 69 C7 22 14 AE DD
0030 | E8 96 CA 82 5F 21 C7 3B FE 50 02 00 E2 81 79 2B
0040 | CD 6A 41 60 25 9D 11 31 C7 54 4C CF B5 64 6A AB
0050 | BE 8C 04 86 DF FD 11 F4 6E 8D 3F 09 CC 6A 72 63
0060 | FB 11 B8 5E 07 63 44 BE 2D 65 14 B7 00 E6 20 8C
0070 | 5F 52 27 75 29 50 A0 9C C5 2B 03 01 F7 13 71 C4
0080 | BF BC C8 90 99 29 42 A7 0D A9 B2 BD 81 01 37 6D
0090 | 5C 58 11 B6 03 BB 3D A5 FB A0 75 55 57 30 A2 B5
00A0 | EF 6C 5F 2F 50 26 10 25 26 52 0C 65 D7 CB 1B 01
00B0 | 88 3E BC E0 18 31 3C 49 49 01 95 D7 7B B1 53 79
00C0 | C8 C2 97 AB 55 17 54 39 96 C1 D5 9F 4E 98 D7 F4
00D0 | CA A4 68 59 D9 05 5A CA 8C 2F C6 77 B5 FC D4 52
00E0 | 90 24 96 64 FD F2 63 F8 2D F2 2C FF CF 6B FB 0C
00F0 | 5B 55 7C 03 BB 43 46 24 04 4D 65 4F 88 C8 6F B1
0100 | FB 7A 46 CA AF 33 41 12 01 35 7E F9 36 D8 1F C9
0110 | 03 BE CF 23 DF 13 74 FE 3C 8E EB C3 DA 01 B4 4D
0120 | 05 47 70 7F 44 54 D4 24 CC 76 A2 D0 82 57 38 2B
0130 | 95 AD CC 6E A6 3C F1 5F 36 50 84 D4 2A 64 F2 6E
0140 | 0A 0B 62 3E F4 F9 9A CE B1 33 22 CF 24 79 5C 50
0150 | B0 1C D9 40 37 DE 1A DD 31 76 6C 18 E9 7A FA BA
0160 | 5D 62 BC 9F C6 D0 F2 90 84 31 6D 7F 25 55 60 97
0170 | 3D D1 5D 08 4B 6B D8 D1 D5 65 F5 D0 0A 93 74 DF
0180 | 40 4A 28 DB CB F1 4F 95 4D C9 35 05 B4 68 3B D6
0190 | BF AF 79 7F 8B E5 E6 E6 09 A7 B4 FB F1 C3 6E A7
01A0 | 5F FF 8F 33 30 F5 61 6F 6D 72 7C CA 6A B8 40 A8
01B0 | 53 30 92 F2 12 92 91 3F B0 45 C0 1E A6 FB 0F 86
01C0 | 79 2E C4 50 D2 4F 1A 12 F4 21 B6 41 C8 35 1F DA
01D0 | E2 B3 A7 B2 E2 C0 D4 9C 93 5A 96 1E 8F 99 5B C8
01E0 | AB 14 B3 C4 06 50 20 95 8E FE 4F 2D C4 08 80 C7
01F0 | 68 A7 A9 5B 3D 61 5A D7 74 83 F6 DB E6 21 FE 58
0200 | 51 DD 21 5C C2 89 B4 23 8C 92 C9 C7 3B 3C F6 E8
0210 | 63 82 C2 F6 71 66 EE 1B BD E8 D9 A3 6B 6F D9 72
0220 | DD 4D E6 72 7A 9B 4F F4 79 C6 46 98 86 BA 70 1D
0230 | 85 15 6E D9 8D 62 4B 8B 09 60 0C 7F 64 69 C4 4D
0240 | 9C 8D F8 99 08 B9 7C 79 8F E0 A7 E7 A8 0A 15 80
0250 | 38 F5 0A 6C F0 3E 9F 93 4A 88 14 57 28 F1 4F 77
0260 | C8 39 FA 66 5E 42 B4 D3 68 FB A8 EE B9 FE 82 9D
0270 | 9D 2D 2D 2E 16 C8 FB 3F 17 AF 0B 02 00 1E 7B 19
0280 | EA EF 27 88 27 EA 54 2A 6F 62 D5 00</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,7 +464,7 @@ random_padding_bytes = B466F6A58F3A78359B82AA87C98DE9847CEB0886FBDA78154B3959574
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01BC6FFF9DAB3867</code></td>
<td><code>013461DB54C63867</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>
@ -482,19 +482,19 @@ random_padding_bytes = B466F6A58F3A78359B82AA87C98DE9847CEB0886FBDA78154B3959574
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
<td><code>D0EAB0A3DD8B650520F16A471172C218</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
<td><code>C09269C72214AEDDE896CA825F21C73B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE500200E3A584CC8110CA190F8AC73B</code> <code>797EED86A9B36449071D89C1134D4430</code> <code>379FDAF706836E2158C0BABAE34400B9</code> <code>928D6E586FD947234C8185B0CE612E7B</code> <code>366EF3B55D11D90D377B1E25C6C9BDD4</code> <code>8942A6ED1F391B5F0302BD5691C30608</code> <code>188356BC6982673FBDE949261849B1D8</code> <code>A8B54138FE2B7C69D40C5A0899280EF5</code> <code>12E3FAE6A49694AA70BF1333A53FFACD</code> <code>B6D3B838C14752505F276614D11EF114</code> <code>C833AF069192E85D53748BF111F6D034</code> <code>32A9EAE9A9BB7A3E63904C73668D7D3A</code> <code>ACB39AC2BFEB36DC8B3D18B7B67BCB5B</code> <code>82DAF5150CA23C077AAC8ED2703CBFD2</code> <code>C9376AAFCD4BA4D30E5C2601E76D19F4</code> <code>815AB1EA1A1E8C985B5DE89EC4D522D6</code> <code>151BD8B158B9FECF532EDCB231C843FF</code> <code>359AD548789CF3EE1A4DDC665F3D9BD6</code> <code>2299DF0C7225716D60B617D1EA7C0F4C</code> <code>1D8A5643875D58E2CB124227C3986FEA</code> <code>CD0C3F0CCA4C1F8FD6B2D4972BE4AA1D</code> <code>B889AC9C21CF263FCF2A65BBF2B720AD</code> <code>74E190EAD9AB72564863FE754746FA13</code> <code>13B193D273CFC4F557C205CB7F6F227B</code> <code>ED338B42727D3B9C77DE3BA9A8D543E1</code> <code>304490E856B6B8FCBE7D78F5738B4347</code> <code>BAEEA28CCDBCBB428B72F43547475073</code> <code>DF4704F189390352C6F1954A7960C589</code> <code>D3FAEF15A606598F43186D4DE2AD47FD</code> <code>EE57C72C909772D5E85975443B54C0BE</code> <code>CD7DEB3333E7783F3DE683E15EE7D0E4</code> <code>3CAE8D98679BCF70D2D55FF7EDBECAD8</code> <code>4C67E65A3FF11623A51468A1FBEDAD11</code> <code>F0D50764F6082EB7FEC4E5DB3E00B468</code> <code>5D9D4913272BEF1BABDC1604A115DFBC</code> <code>0DF504055F2EE8BAEFAFF285DF8D6EAA</code> <code>5EDCDBF92A983B5E215744566C759B7D</code><br> <code>B40C402E</code></td>
<td><code>FE500200E281792BCD6A4160259D1131</code> <code>C7544CCFB5646AABBE8C0486DFFD11F4</code> <code>6E8D3F09CC6A7263FB11B85E076344BE</code> <code>2D6514B700E6208C5F5227752950A09C</code> <code>C52B0301F71371C4BFBCC890992942A7</code> <code>0DA9B2BD8101376D5C5811B603BB3DA5</code> <code>FBA075555730A2B5EF6C5F2F50261025</code> <code>26520C65D7CB1B01883EBCE018313C49</code> <code>490195D77BB15379C8C297AB55175439</code> <code>96C1D59F4E98D7F4CAA46859D9055ACA</code> <code>8C2FC677B5FCD45290249664FDF263F8</code> <code>2DF22CFFCF6BFB0C5B557C03BB434624</code> <code>044D654F88C86FB1FB7A46CAAF334112</code> <code>01357EF936D81FC903BECF23DF1374FE</code> <code>3C8EEBC3DA01B44D0547707F4454D424</code> <code>CC76A2D08257382B95ADCC6EA63CF15F</code> <code>365084D42A64F26E0A0B623EF4F99ACE</code> <code>B13322CF24795C50B01CD94037DE1ADD</code> <code>31766C18E97AFABA5D62BC9FC6D0F290</code> <code>84316D7F255560973DD15D084B6BD8D1</code> <code>D565F5D00A9374DF404A28DBCBF14F95</code> <code>4DC93505B4683BD6BFAF797F8BE5E6E6</code> <code>09A7B4FBF1C36EA75FFF8F3330F5616F</code> <code>6D727CCA6AB840A8533092F21292913F</code> <code>B045C01EA6FB0F86792EC450D24F1A12</code> <code>F421B641C8351FDAE2B3A7B2E2C0D49C</code> <code>935A961E8F995BC8AB14B3C406502095</code> <code>8EFE4F2DC40880C768A7A95B3D615AD7</code> <code>7483F6DBE621FE5851DD215CC289B423</code> <code>8C92C9C73B3CF6E86382C2F67166EE1B</code> <code>BDE8D9A36B6FD972DD4DE6727A9B4FF4</code> <code>79C6469886BA701D85156ED98D624B8B</code> <code>09600C7F6469C44D9C8DF89908B97C79</code> <code>8FE0A7E7A80A158038F50A6CF03E9F93</code> <code>4A88145728F14F77C839FA665E42B4D3</code> <code>68FBA8EEB9FE829D9D2D2D2E16C8FB3F</code> <code>17AF0B02001E7B19EAEF278827EA542A</code><br> <code>6F62D500</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = B466F6A58F3A78359B82AA87C98DE9847CEB0886FBDA78154B3959574
<!-- 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 = E3A584CC8110CA190F8AC73B797EED86A9B36449071D89C1134D4430379FDAF706836E2158C0BABAE34400B9928D6E586FD947234C8185B0CE612E7B366EF3B55D11D90D377B1E25C6C9BDD48942A6ED1F391B5F0302BD5691C30608188356BC6982673FBDE949261849B1D8A8B54138FE2B7C69D40C5A0899280EF512E3FAE6A49694AA70BF1333A53FFACDB6D3B838C14752505F276614D11EF114C833AF069192E85D53748BF111F6D03432A9EAE9A9BB7A3E63904C73668D7D3AACB39AC2BFEB36DC8B3D18B7B67BCB5B82DAF5150CA23C077AAC8ED2703CBFD2C9376AAFCD4BA4D30E5C2601E76D19F4815AB1EA1A1E8C985B5DE89EC4D522D6151BD8B158B9FECF532EDCB231C843FF359AD548789CF3EE1A4DDC665F3D9BD62299DF0C7225716D60B617D1EA7C0F4C1D8A5643875D58E2CB124227C3986FEACD0C3F0CCA4C1F8FD6B2D4972BE4AA1DB889AC9C21CF263FCF2A65BBF2B720AD74E190EAD9AB72564863FE754746FA1313B193D273CFC4F557C205CB7F6F227BED338B42727D3B9C77DE3BA9A8D543E1304490E856B6B8FCBE7D78F5738B4347BAEEA28CCDBCBB428B72F43547475073DF4704F189390352C6F1954A7960C589D3FAEF15A606598F43186D4DE2AD47FDEE57C72C909772D5E85975443B54C0BECD7DEB3333E7783F3DE683E15EE7D0E43CAE8D98679BCF70D2D55FF7EDBECAD84C67E65A3FF11623A51468A1FBEDAD11F0D50764F6082EB7FEC4E5DB3E00B4685D9D4913272BEF1BABDC1604A115DFBC0DF504055F2EE8BAEFAFF285DF8D6EAA5EDCDBF92A983B5E215744566C759B7DB40C402E
tmp_aes_key = 56A62D764A5E8973B19859D80559EB24EA089A0ED17D7660973EACBAB5B455C2
tmp_aes_iv = F1EE1C15FD64CF2E5E94EB7D322D30F65CC45E6E0E13F88E3D4EB4F2C7342A00</code></pre>
<pre><code>encrypted_answer = E281792BCD6A4160259D1131C7544CCFB5646AABBE8C0486DFFD11F46E8D3F09CC6A7263FB11B85E076344BE2D6514B700E6208C5F5227752950A09CC52B0301F71371C4BFBCC890992942A70DA9B2BD8101376D5C5811B603BB3DA5FBA075555730A2B5EF6C5F2F5026102526520C65D7CB1B01883EBCE018313C49490195D77BB15379C8C297AB5517543996C1D59F4E98D7F4CAA46859D9055ACA8C2FC677B5FCD45290249664FDF263F82DF22CFFCF6BFB0C5B557C03BB434624044D654F88C86FB1FB7A46CAAF33411201357EF936D81FC903BECF23DF1374FE3C8EEBC3DA01B44D0547707F4454D424CC76A2D08257382B95ADCC6EA63CF15F365084D42A64F26E0A0B623EF4F99ACEB13322CF24795C50B01CD94037DE1ADD31766C18E97AFABA5D62BC9FC6D0F29084316D7F255560973DD15D084B6BD8D1D565F5D00A9374DF404A28DBCBF14F954DC93505B4683BD6BFAF797F8BE5E6E609A7B4FBF1C36EA75FFF8F3330F5616F6D727CCA6AB840A8533092F21292913FB045C01EA6FB0F86792EC450D24F1A12F421B641C8351FDAE2B3A7B2E2C0D49C935A961E8F995BC8AB14B3C4065020958EFE4F2DC40880C768A7A95B3D615AD77483F6DBE621FE5851DD215CC289B4238C92C9C73B3CF6E86382C2F67166EE1BBDE8D9A36B6FD972DD4DE6727A9B4FF479C6469886BA701D85156ED98D624B8B09600C7F6469C44D9C8DF89908B97C798FE0A7E7A80A158038F50A6CF03E9F934A88145728F14F77C839FA665E42B4D368FBA8EEB9FE829D9D2D2D2E16C8FB3F17AF0B02001E7B19EAEF278827EA542A6F62D500
tmp_aes_key = 500A86A5C1A48EEC49A928D5A837894717D878F8DFD428AC0E1EAA0EA3BD6B7A
tmp_aes_iv = 8EB36DA465A02A0D27F18BEE711126529DC69B0284C784311B96AD1DB2CA4D77</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = A4E385F1BD53C09C2E2B31009BF677B46A42FD57BA0D89B5E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C4619303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100533958476D50770C106E1DAC83C192DA63B2E82CEB8B9FCE4BEB41D3005C68BA399B87F89C6FDDB7B6969C705F9B901AE5CA9C88AA770E3BFD5925A25B15551B176650E5C7AACCBC2F843682B045CFA98EB00D3C3EFA13E3B4BD3D5B2E800DE079B8215CC47F98ED62B62C6C5EEFC7BB7D212BE8356BFF7B68597D467AB4AFF0C4F470669598FEA8BDE594CAA0A3B7D949B983230EA53AD3744F38B4F3AD21366D461EF8B06526F4AEDA287D875C3532AD92F55940EF1E56C7FB5251A2D134C6ED9F857C18A1A13D17FDE9E62A2C1F7ED9F3600405C66C12C1D5418D2A4CAB59C0662C38C79CE728838A7A3FC7798A06797BDAEDC487CCED3088E7ADE98FC70F9DAB386727DB97A494109B39
answer = BA0D89B5E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C4619303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100533958476D50770C106E1DAC83C192DA63B2E82CEB8B9FCE4BEB41D3005C68BA399B87F89C6FDDB7B6969C705F9B901AE5CA9C88AA770E3BFD5925A25B15551B176650E5C7AACCBC2F843682B045CFA98EB00D3C3EFA13E3B4BD3D5B2E800DE079B8215CC47F98ED62B62C6C5EEFC7BB7D212BE8356BFF7B68597D467AB4AFF0C4F470669598FEA8BDE594CAA0A3B7D949B983230EA53AD3744F38B4F3AD21366D461EF8B06526F4AEDA287D875C3532AD92F55940EF1E56C7FB5251A2D134C6ED9F857C18A1A13D17FDE9E62A2C1F7ED9F3600405C66C12C1D5418D2A4CAB59C0662C38C79CE728838A7A3FC7798A06797BDAEDC487CCED3088E7ADE98FC70F9DAB386727DB97A494109B39</code></pre>
<pre><code>answer_with_hash = 4A53BA2E1CBA9F048BE7276F81F46EBF076CA782BA0D89B5D0EAB0A3DD8B650520F16A471172C218C09269C72214AEDDE896CA825F21C73B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010074F465AF8A0A99C0B7A81E2E0049B0CFE4D6B9CE06F3D1874C7B11450CF8A756295506E52A55333DE8C730599FC24AD8A6D6D4300C361BF630993B1B07B03C24A18BFFE28CBCD486C4BDC7C6C457973884DB08581ABEAB4B35AF9734F25864E32CB12808ABBCBA839808DB177FF99108BE90A12D0B18D1675D1879D18B7591443A7AA724CD424AE70D7CAB61A09F9158C2ED3F2D5A8111B34CB2D35152B8079B6545919A970D188A07723F620DB7B039C7CAF59966C9018EDB4BF985A50F9D0F9A9E8ABE2E7E05EE6069CCB7FE20769ABC376355C73B3A67236AE23FF1AC2906EDAFFB58AB48D5FBE5903EED3723EF0EAEDFB7CC6FA2781052D654D4D38BEA5F54C6386712B103F824EADAAA
answer = BA0D89B5D0EAB0A3DD8B650520F16A471172C218C09269C72214AEDDE896CA825F21C73B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010074F465AF8A0A99C0B7A81E2E0049B0CFE4D6B9CE06F3D1874C7B11450CF8A756295506E52A55333DE8C730599FC24AD8A6D6D4300C361BF630993B1B07B03C24A18BFFE28CBCD486C4BDC7C6C457973884DB08581ABEAB4B35AF9734F25864E32CB12808ABBCBA839808DB177FF99108BE90A12D0B18D1675D1879D18B7591443A7AA724CD424AE70D7CAB61A09F9158C2ED3F2D5A8111B34CB2D35152B8079B6545919A970D188A07723F620DB7B039C7CAF59966C9018EDB4BF985A50F9D0F9A9E8ABE2E7E05EE6069CCB7FE20769ABC376355C73B3A67236AE23FF1AC2906EDAFFB58AB48D5FBE5903EED3723EF0EAEDFB7CC6FA2781052D654D4D38BEA5F54C6386712B103F824EADAAA</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 E8 FF D0 70 C6 56 0F C1 91 A6 69 5C
0010 | BB 3D 69 6B 50 52 07 36 D6 05 6F 36 F7 B5 AE 82
0020 | 38 C4 61 93 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 D0 EA B0 A3 DD 8B 65 05 20 F1 6A 47
0010 | 11 72 C2 18 C0 92 69 C7 22 14 AE DD E8 96 CA 82
0020 | 5F 21 C7 3B 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 = BA0D89B5E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C4619
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 | 53 39 58 47 6D 50 77 0C 10 6E 1D AC 83 C1 92 DA
0140 | 63 B2 E8 2C EB 8B 9F CE 4B EB 41 D3 00 5C 68 BA
0150 | 39 9B 87 F8 9C 6F DD B7 B6 96 9C 70 5F 9B 90 1A
0160 | E5 CA 9C 88 AA 77 0E 3B FD 59 25 A2 5B 15 55 1B
0170 | 17 66 50 E5 C7 AA CC BC 2F 84 36 82 B0 45 CF A9
0180 | 8E B0 0D 3C 3E FA 13 E3 B4 BD 3D 5B 2E 80 0D E0
0190 | 79 B8 21 5C C4 7F 98 ED 62 B6 2C 6C 5E EF C7 BB
01A0 | 7D 21 2B E8 35 6B FF 7B 68 59 7D 46 7A B4 AF F0
01B0 | C4 F4 70 66 95 98 FE A8 BD E5 94 CA A0 A3 B7 D9
01C0 | 49 B9 83 23 0E A5 3A D3 74 4F 38 B4 F3 AD 21 36
01D0 | 6D 46 1E F8 B0 65 26 F4 AE DA 28 7D 87 5C 35 32
01E0 | AD 92 F5 59 40 EF 1E 56 C7 FB 52 51 A2 D1 34 C6
01F0 | ED 9F 85 7C 18 A1 A1 3D 17 FD E9 E6 2A 2C 1F 7E
0200 | D9 F3 60 04 05 C6 6C 12 C1 D5 41 8D 2A 4C AB 59
0210 | C0 66 2C 38 C7 9C E7 28 83 8A 7A 3F C7 79 8A 06
0220 | 79 7B DA ED C4 87 CC ED 30 88 E7 AD E9 8F C7 0F
0230 | 9D AB 38 67</code></pre>
0130 | 74 F4 65 AF 8A 0A 99 C0 B7 A8 1E 2E 00 49 B0 CF
0140 | E4 D6 B9 CE 06 F3 D1 87 4C 7B 11 45 0C F8 A7 56
0150 | 29 55 06 E5 2A 55 33 3D E8 C7 30 59 9F C2 4A D8
0160 | A6 D6 D4 30 0C 36 1B F6 30 99 3B 1B 07 B0 3C 24
0170 | A1 8B FF E2 8C BC D4 86 C4 BD C7 C6 C4 57 97 38
0180 | 84 DB 08 58 1A BE AB 4B 35 AF 97 34 F2 58 64 E3
0190 | 2C B1 28 08 AB BC BA 83 98 08 DB 17 7F F9 91 08
01A0 | BE 90 A1 2D 0B 18 D1 67 5D 18 79 D1 8B 75 91 44
01B0 | 3A 7A A7 24 CD 42 4A E7 0D 7C AB 61 A0 9F 91 58
01C0 | C2 ED 3F 2D 5A 81 11 B3 4C B2 D3 51 52 B8 07 9B
01D0 | 65 45 91 9A 97 0D 18 8A 07 72 3F 62 0D B7 B0 39
01E0 | C7 CA F5 99 66 C9 01 8E DB 4B F9 85 A5 0F 9D 0F
01F0 | 9A 9E 8A BE 2E 7E 05 EE 60 69 CC B7 FE 20 76 9A
0200 | BC 37 63 55 C7 3B 3A 67 23 6A E2 3F F1 AC 29 06
0210 | ED AF FB 58 AB 48 D5 FB E5 90 3E ED 37 23 EF 0E
0220 | AE DF B7 CC 6F A2 78 10 52 D6 54 D4 D3 8B EA 5F
0230 | 54 C6 38 67</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 = BA0D89B5E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C4619
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
<td><code>D0EAB0A3DD8B650520F16A471172C218</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
<td><code>C09269C72214AEDDE896CA825F21C73B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B5E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C4619
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE000100533958476D50770C106E1DAC</code> <code>83C192DA63B2E82CEB8B9FCE4BEB41D3</code> <code>005C68BA399B87F89C6FDDB7B6969C70</code> <code>5F9B901AE5CA9C88AA770E3BFD5925A2</code> <code>5B15551B176650E5C7AACCBC2F843682</code> <code>B045CFA98EB00D3C3EFA13E3B4BD3D5B</code> <code>2E800DE079B8215CC47F98ED62B62C6C</code> <code>5EEFC7BB7D212BE8356BFF7B68597D46</code> <code>7AB4AFF0C4F470669598FEA8BDE594CA</code> <code>A0A3B7D949B983230EA53AD3744F38B4</code> <code>F3AD21366D461EF8B06526F4AEDA287D</code> <code>875C3532AD92F55940EF1E56C7FB5251</code> <code>A2D134C6ED9F857C18A1A13D17FDE9E6</code> <code>2A2C1F7ED9F3600405C66C12C1D5418D</code> <code>2A4CAB59C0662C38C79CE728838A7A3F</code> <code>C7798A06797BDAEDC487CCED3088E7AD</code><br> <code>E98FC70F</code></td>
<td><code>FE00010074F465AF8A0A99C0B7A81E2E</code> <code>0049B0CFE4D6B9CE06F3D1874C7B1145</code> <code>0CF8A756295506E52A55333DE8C73059</code> <code>9FC24AD8A6D6D4300C361BF630993B1B</code> <code>07B03C24A18BFFE28CBCD486C4BDC7C6</code> <code>C457973884DB08581ABEAB4B35AF9734</code> <code>F25864E32CB12808ABBCBA839808DB17</code> <code>7FF99108BE90A12D0B18D1675D1879D1</code> <code>8B7591443A7AA724CD424AE70D7CAB61</code> <code>A09F9158C2ED3F2D5A8111B34CB2D351</code> <code>52B8079B6545919A970D188A07723F62</code> <code>0DB7B039C7CAF59966C9018EDB4BF985</code> <code>A50F9D0F9A9E8ABE2E7E05EE6069CCB7</code> <code>FE20769ABC376355C73B3A67236AE23F</code> <code>F1AC2906EDAFFB58AB48D5FBE5903EED</code> <code>3723EF0EAEDFB7CC6FA2781052D654D4</code><br> <code>D38BEA5F</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>9DAB3867</code> (1731767197 in decimal)</td>
<td><code>54C63867</code> (1731774036 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B5E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C4619
<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 = 4628EDE8659332AC2458B5BFA148148FC59516410B705E471E97B4C39EFA850FA30691DE8167453A9B75212BC5B804F32201A7E31FAD54C6472AA60001B3C5186E37DFD8B3E96B8049993BCF03D818E9C60F3E49218B03C6A37E56618E149EE1AEA577304DC843F85DA6BEA079AEBE5622804A1BE5E28F2E8CB3CEC7ABC8DE17C99268898FFBA317465F6BB03E610356EA68245C88EA226B79A44F98327B2300B3CB4C4BB9CDAA704338641B3DE35936E81630A60A78711F7E7A3E5A1296389D05B5F2BF1D8EF8BFA7950CEB8E286C6AC4773CB72A550FA1C73B447D3B5D4D227520109258BC548EE2B44B06E251A39A24F56613EA775955A2BCDF0BF853D4C9</code></pre>
<pre><code>b = A6ABCBD417FA6C159FFB432FBB05DD071B682017A8ABAF34E147C7077B20B02180874DD787665AB2E39FAF96768F7546FC772DFC798D795A5D8EED4EB10B5A52E945E21C7EEA23C955B08B69FE8263F4726391DDC10D9BC7CC86CBF60E295EAE23C8D20564F192980B40E814FC23E4680244D7B42177CE5269B07E027E630D3F5D1B7173459D83BE1BDF9A8994D0CE622A5B6A697C67F0182D6433373EE0429F981D66F58FC5A6C3FB2202994DF5E2674AF29EE33D5758E6450D10EE404AC5464FEF64F198028227A7D47F3337AEE6FD89391435A7F0A8E6207EC168BB9D1AA63701F1C9676E7326D8931AA0FABF7952E74A3E743DD8EA17F7181DA97AAE607F</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 = 9624B1C1AA5BE4CC057636BCB57E6D8E739076FF622720BCA484A7B77EAEF63772FF22AE2EFBCACAE3B5E47824AB8DDF914AE4E0837076A94861DE2EBE89C208B7E7DBFBCD158801CABD16BB9C645BD37844415AC2BC2C34BF1825CBD1468F20C38E76CBE1DA8EC6EC8FF57F327E846D14932AD68933F34F18F4151BFC43E55FE50B5016F0B0870F4519AB73F0F94122AA41C1AB00C133870DA9A2A83ACA2F5EE45E02497DCA3FBEE53AC11CCBAF3447FA1CD816A07D82492FD67136FBD1C3C612594D9844C0F95520399149327A765E62BBD2A390EF3708360D94EC9F9DE3C7992D9FA6C4E325D2D419EDC4B260BE4AABE8506B3F978FFE3A4C50266F048D80</code></pre>
<pre><code>g_b = 3F605D936EFF386D9C76675E7FB4C11BB7AD14B6DAEF74F08307983308C7D60C9672A47322ECDF49A11D7E898694017245D5FE5558DE4EBDD536D4CEBC7EE0DEF85DAC6CA59701F211ABBB86039432D6F3858F0388E26621631C305A4E674631D28A2C8E31499DE7A1F510E10F80D2CF03DE486699E641640A9CBFF22E3CDAFF048F360E878E4D906721A1FFF6B6089DD96C5761090814BBD4F9293388ED3AB6C88ED10462F957DB51E702846E7A5967BFDE86C28D1E3624A92A65E7879CC216F54807DEC6AF6E261DB0CEA9AF6DD654108ADB690ECAB6FE2E4D667F5CFF456A66DD007F62D1BBE7BF3DD18D5CAE1EDF0D48FB51ECA0E7DF2302218612B28DB1</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 E8 FF D0 70 C6 56 0F C1 91 A6 69 5C
0010 | BB 3D 69 6B 50 52 07 36 D6 05 6F 36 F7 B5 AE 82
0020 | 38 C4 61 93 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 96 24 B1 C1 AA 5B E4 CC 05 76 36 BC B5 7E 6D 8E
0040 | 73 90 76 FF 62 27 20 BC A4 84 A7 B7 7E AE F6 37
0050 | 72 FF 22 AE 2E FB CA CA E3 B5 E4 78 24 AB 8D DF
0060 | 91 4A E4 E0 83 70 76 A9 48 61 DE 2E BE 89 C2 08
0070 | B7 E7 DB FB CD 15 88 01 CA BD 16 BB 9C 64 5B D3
0080 | 78 44 41 5A C2 BC 2C 34 BF 18 25 CB D1 46 8F 20
0090 | C3 8E 76 CB E1 DA 8E C6 EC 8F F5 7F 32 7E 84 6D
00A0 | 14 93 2A D6 89 33 F3 4F 18 F4 15 1B FC 43 E5 5F
00B0 | E5 0B 50 16 F0 B0 87 0F 45 19 AB 73 F0 F9 41 22
00C0 | AA 41 C1 AB 00 C1 33 87 0D A9 A2 A8 3A CA 2F 5E
00D0 | E4 5E 02 49 7D CA 3F BE E5 3A C1 1C CB AF 34 47
00E0 | FA 1C D8 16 A0 7D 82 49 2F D6 71 36 FB D1 C3 C6
00F0 | 12 59 4D 98 44 C0 F9 55 20 39 91 49 32 7A 76 5E
0100 | 62 BB D2 A3 90 EF 37 08 36 0D 94 EC 9F 9D E3 C7
0110 | 99 2D 9F A6 C4 E3 25 D2 D4 19 ED C4 B2 60 BE 4A
0120 | AB E8 50 6B 3F 97 8F FE 3A 4C 50 26 6F 04 8D 80</code></pre>
<pre><code>0000 | 54 B6 43 66 D0 EA B0 A3 DD 8B 65 05 20 F1 6A 47
0010 | 11 72 C2 18 C0 92 69 C7 22 14 AE DD E8 96 CA 82
0020 | 5F 21 C7 3B 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 3F 60 5D 93 6E FF 38 6D 9C 76 67 5E 7F B4 C1 1B
0040 | B7 AD 14 B6 DA EF 74 F0 83 07 98 33 08 C7 D6 0C
0050 | 96 72 A4 73 22 EC DF 49 A1 1D 7E 89 86 94 01 72
0060 | 45 D5 FE 55 58 DE 4E BD D5 36 D4 CE BC 7E E0 DE
0070 | F8 5D AC 6C A5 97 01 F2 11 AB BB 86 03 94 32 D6
0080 | F3 85 8F 03 88 E2 66 21 63 1C 30 5A 4E 67 46 31
0090 | D2 8A 2C 8E 31 49 9D E7 A1 F5 10 E1 0F 80 D2 CF
00A0 | 03 DE 48 66 99 E6 41 64 0A 9C BF F2 2E 3C DA FF
00B0 | 04 8F 36 0E 87 8E 4D 90 67 21 A1 FF F6 B6 08 9D
00C0 | D9 6C 57 61 09 08 14 BB D4 F9 29 33 88 ED 3A B6
00D0 | C8 8E D1 04 62 F9 57 DB 51 E7 02 84 6E 7A 59 67
00E0 | BF DE 86 C2 8D 1E 36 24 A9 2A 65 E7 87 9C C2 16
00F0 | F5 48 07 DE C6 AF 6E 26 1D B0 CE A9 AF 6D D6 54
0100 | 10 8A DB 69 0E CA B6 FE 2E 4D 66 7F 5C FF 45 6A
0110 | 66 DD 00 7F 62 D1 BB E7 BF 3D D1 8D 5C AE 1E DF
0120 | 0D 48 FB 51 EC A0 E7 DF 23 02 21 86 12 B2 8D B1</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 = BA0D89B5E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C4619
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
<td><code>D0EAB0A3DD8B650520F16A471172C218</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
<td><code>C09269C72214AEDDE896CA825F21C73B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001009624B1C1AA5BE4CC057636BC</code> <code>B57E6D8E739076FF622720BCA484A7B7</code> <code>7EAEF63772FF22AE2EFBCACAE3B5E478</code> <code>24AB8DDF914AE4E0837076A94861DE2E</code> <code>BE89C208B7E7DBFBCD158801CABD16BB</code> <code>9C645BD37844415AC2BC2C34BF1825CB</code> <code>D1468F20C38E76CBE1DA8EC6EC8FF57F</code> <code>327E846D14932AD68933F34F18F4151B</code> <code>FC43E55FE50B5016F0B0870F4519AB73</code> <code>F0F94122AA41C1AB00C133870DA9A2A8</code> <code>3ACA2F5EE45E02497DCA3FBEE53AC11C</code> <code>CBAF3447FA1CD816A07D82492FD67136</code> <code>FBD1C3C612594D9844C0F95520399149</code> <code>327A765E62BBD2A390EF3708360D94EC</code> <code>9F9DE3C7992D9FA6C4E325D2D419EDC4</code> <code>B260BE4AABE8506B3F978FFE3A4C5026</code><br> <code>6F048D80</code></td>
<td><code>FE0001003F605D936EFF386D9C76675E</code> <code>7FB4C11BB7AD14B6DAEF74F083079833</code> <code>08C7D60C9672A47322ECDF49A11D7E89</code> <code>8694017245D5FE5558DE4EBDD536D4CE</code> <code>BC7EE0DEF85DAC6CA59701F211ABBB86</code> <code>039432D6F3858F0388E26621631C305A</code> <code>4E674631D28A2C8E31499DE7A1F510E1</code> <code>0F80D2CF03DE486699E641640A9CBFF2</code> <code>2E3CDAFF048F360E878E4D906721A1FF</code> <code>F6B6089DD96C5761090814BBD4F92933</code> <code>88ED3AB6C88ED10462F957DB51E70284</code> <code>6E7A5967BFDE86C28D1E3624A92A65E7</code> <code>879CC216F54807DEC6AF6E261DB0CEA9</code> <code>AF6DD654108ADB690ECAB6FE2E4D667F</code> <code>5CFF456A66DD007F62D1BBE7BF3DD18D</code> <code>5CAE1EDF0D48FB51ECA0E7DF23022186</code><br> <code>12B28DB1</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 = BA0D89B5E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C4619
<!-- 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 = 54B64366E8FFD070C6560FC191A6695CBB3D696B50520736D6056F36F7B5AE8238C461930000000000000000FE0001009624B1C1AA5BE4CC057636BCB57E6D8E739076FF622720BCA484A7B77EAEF63772FF22AE2EFBCACAE3B5E47824AB8DDF914AE4E0837076A94861DE2EBE89C208B7E7DBFBCD158801CABD16BB9C645BD37844415AC2BC2C34BF1825CBD1468F20C38E76CBE1DA8EC6EC8FF57F327E846D14932AD68933F34F18F4151BFC43E55FE50B5016F0B0870F4519AB73F0F94122AA41C1AB00C133870DA9A2A83ACA2F5EE45E02497DCA3FBEE53AC11CCBAF3447FA1CD816A07D82492FD67136FBD1C3C612594D9844C0F95520399149327A765E62BBD2A390EF3708360D94EC9F9DE3C7992D9FA6C4E325D2D419EDC4B260BE4AABE8506B3F978FFE3A4C50266F048D80
padding = 6BEB9B8D16F85CFA554D0342
tmp_aes_key = 56A62D764A5E8973B19859D80559EB24EA089A0ED17D7660973EACBAB5B455C2
tmp_aes_iv = F1EE1C15FD64CF2E5E94EB7D322D30F65CC45E6E0E13F88E3D4EB4F2C7342A00</code></pre>
<pre><code>data = 54B64366D0EAB0A3DD8B650520F16A471172C218C09269C72214AEDDE896CA825F21C73B0000000000000000FE0001003F605D936EFF386D9C76675E7FB4C11BB7AD14B6DAEF74F08307983308C7D60C9672A47322ECDF49A11D7E898694017245D5FE5558DE4EBDD536D4CEBC7EE0DEF85DAC6CA59701F211ABBB86039432D6F3858F0388E26621631C305A4E674631D28A2C8E31499DE7A1F510E10F80D2CF03DE486699E641640A9CBFF22E3CDAFF048F360E878E4D906721A1FFF6B6089DD96C5761090814BBD4F9293388ED3AB6C88ED10462F957DB51E702846E7A5967BFDE86C28D1E3624A92A65E7879CC216F54807DEC6AF6E261DB0CEA9AF6DD654108ADB690ECAB6FE2E4D667F5CFF456A66DD007F62D1BBE7BF3DD18D5CAE1EDF0D48FB51ECA0E7DF2302218612B28DB1
padding = F5F54C8514CD77126DDC1E4C
tmp_aes_key = 500A86A5C1A48EEC49A928D5A837894717D878F8DFD428AC0E1EAA0EA3BD6B7A
tmp_aes_iv = 8EB36DA465A02A0D27F18BEE711126529DC69B0284C784311B96AD1DB2CA4D77</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 = 52AA7D684C4D0330BE5ADCA8D8C6272F1AE969A9C988A2423E5D92E25F09EB94E1CE80A686B60CE3AF675E911119E0C38D00DADFB6EF3D39B4F3B576E6AC0F94664068BB5E346BCBEF1BEB5A981356CFFD6949EB06F11A58E7DA4505F9A2FB9E6F037CD04F1CDBED0C9CD822589922F97D27200492315B99446F36EFB501C6A4090D5EF5CD1195038C1C52E5E185C8BF67B4B81B0CC39247741770724055A005C86C4BA9715383B2E1DED85202D54792C888B318B6C6655A109AA5281CF8EEDD37744E914C789A1648B19B21B346565F226C2F15DF746DF3497FDFB5A91E179EF7A1EB61C1E371974F297414F4CC20A9161FFA9EDC7BB08CA219EB4F521120C27A5391130C5A0D90059179CBE19CADC2B6A988E49A93A01D938CBD55B2725D938556A78B0F12C48012E438EF38B7C5DDD9A1AB4E6A97084E917CCCFB67AC42764F8F81C366170735817A4737BAF0962E</code></pre>
<pre><code>encrypted_data = A1F4A83C8780B80101ABDA0E06C2E2932D1415FE92FC7CF3F25D497874AD7A02ED8829D800EF7EAB113E82D10770011869B10E1F8B9EDF7FF68E4F5E504E04C70C371D413F46B6FC836483040A4425E496437EFBC696D95533EE4F2EFD0C1DCFA47191BA84C5FE9BBB280D2198DE3E88D3273649569624A227AA6071751168B624EAAA3CE806173DD7CF21D1BF3901FEBB1F860F6B58DA71D68A1E8508587398CCE741D01208EA694B50E43C06482953D06A438049D7BCC3D2ED085CB82DCFF4B6989710022C8E8E4F9D85FFF86FDD0EC2C9C1264E886B822FA3B948243AEE937B2EECDF4A3E76A809604A2C1C24C70BD489B357E1588DEEE15BB1432677EFD417635A2CFBAB57BAD640E78FFA6C404B3C7426A77DC9B237808A3A65457C317B98C242B8A801289B68EC67577F883932AA29C170A138A3F9369FFCABFE770874D034BDC98073FB0EAF48520FA8964E67</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 FC B7 0D 00 9D AB 38 67
0010 | 78 01 00 00 1F 5F 04 F5 E8 FF D0 70 C6 56 0F C1
0020 | 91 A6 69 5C BB 3D 69 6B 50 52 07 36 D6 05 6F 36
0030 | F7 B5 AE 82 38 C4 61 93 FE 50 01 00 52 AA 7D 68
0040 | 4C 4D 03 30 BE 5A DC A8 D8 C6 27 2F 1A E9 69 A9
0050 | C9 88 A2 42 3E 5D 92 E2 5F 09 EB 94 E1 CE 80 A6
0060 | 86 B6 0C E3 AF 67 5E 91 11 19 E0 C3 8D 00 DA DF
0070 | B6 EF 3D 39 B4 F3 B5 76 E6 AC 0F 94 66 40 68 BB
0080 | 5E 34 6B CB EF 1B EB 5A 98 13 56 CF FD 69 49 EB
0090 | 06 F1 1A 58 E7 DA 45 05 F9 A2 FB 9E 6F 03 7C D0
00A0 | 4F 1C DB ED 0C 9C D8 22 58 99 22 F9 7D 27 20 04
00B0 | 92 31 5B 99 44 6F 36 EF B5 01 C6 A4 09 0D 5E F5
00C0 | CD 11 95 03 8C 1C 52 E5 E1 85 C8 BF 67 B4 B8 1B
00D0 | 0C C3 92 47 74 17 70 72 40 55 A0 05 C8 6C 4B A9
00E0 | 71 53 83 B2 E1 DE D8 52 02 D5 47 92 C8 88 B3 18
00F0 | B6 C6 65 5A 10 9A A5 28 1C F8 EE DD 37 74 4E 91
0100 | 4C 78 9A 16 48 B1 9B 21 B3 46 56 5F 22 6C 2F 15
0110 | DF 74 6D F3 49 7F DF B5 A9 1E 17 9E F7 A1 EB 61
0120 | C1 E3 71 97 4F 29 74 14 F4 CC 20 A9 16 1F FA 9E
0130 | DC 7B B0 8C A2 19 EB 4F 52 11 20 C2 7A 53 91 13
0140 | 0C 5A 0D 90 05 91 79 CB E1 9C AD C2 B6 A9 88 E4
0150 | 9A 93 A0 1D 93 8C BD 55 B2 72 5D 93 85 56 A7 8B
0160 | 0F 12 C4 80 12 E4 38 EF 38 B7 C5 DD D9 A1 AB 4E
0170 | 6A 97 08 4E 91 7C CC FB 67 AC 42 76 4F 8F 81 C3
0180 | 66 17 07 35 81 7A 47 37 BA F0 96 2E</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 F0 C8 09 00 54 C6 38 67
0010 | 78 01 00 00 1F 5F 04 F5 D0 EA B0 A3 DD 8B 65 05
0020 | 20 F1 6A 47 11 72 C2 18 C0 92 69 C7 22 14 AE DD
0030 | E8 96 CA 82 5F 21 C7 3B FE 50 01 00 A1 F4 A8 3C
0040 | 87 80 B8 01 01 AB DA 0E 06 C2 E2 93 2D 14 15 FE
0050 | 92 FC 7C F3 F2 5D 49 78 74 AD 7A 02 ED 88 29 D8
0060 | 00 EF 7E AB 11 3E 82 D1 07 70 01 18 69 B1 0E 1F
0070 | 8B 9E DF 7F F6 8E 4F 5E 50 4E 04 C7 0C 37 1D 41
0080 | 3F 46 B6 FC 83 64 83 04 0A 44 25 E4 96 43 7E FB
0090 | C6 96 D9 55 33 EE 4F 2E FD 0C 1D CF A4 71 91 BA
00A0 | 84 C5 FE 9B BB 28 0D 21 98 DE 3E 88 D3 27 36 49
00B0 | 56 96 24 A2 27 AA 60 71 75 11 68 B6 24 EA AA 3C
00C0 | E8 06 17 3D D7 CF 21 D1 BF 39 01 FE BB 1F 86 0F
00D0 | 6B 58 DA 71 D6 8A 1E 85 08 58 73 98 CC E7 41 D0
00E0 | 12 08 EA 69 4B 50 E4 3C 06 48 29 53 D0 6A 43 80
00F0 | 49 D7 BC C3 D2 ED 08 5C B8 2D CF F4 B6 98 97 10
0100 | 02 2C 8E 8E 4F 9D 85 FF F8 6F DD 0E C2 C9 C1 26
0110 | 4E 88 6B 82 2F A3 B9 48 24 3A EE 93 7B 2E EC DF
0120 | 4A 3E 76 A8 09 60 4A 2C 1C 24 C7 0B D4 89 B3 57
0130 | E1 58 8D EE E1 5B B1 43 26 77 EF D4 17 63 5A 2C
0140 | FB AB 57 BA D6 40 E7 8F FA 6C 40 4B 3C 74 26 A7
0150 | 7D C9 B2 37 80 8A 3A 65 45 7C 31 7B 98 C2 42 B8
0160 | A8 01 28 9B 68 EC 67 57 7F 88 39 32 AA 29 C1 70
0170 | A1 38 A3 F9 36 9F FC AB FE 77 08 74 D0 34 BD C9
0180 | 80 73 FB 0E AF 48 52 0F A8 96 4E 67</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>FCB70D009DAB3867</code></td>
<td><code>F0C8090054C63867</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>E8FFD070C6560FC191A6695CBB3D696B</code></td>
<td><code>D0EAB0A3DD8B650520F16A471172C218</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
<td><code>C09269C72214AEDDE896CA825F21C73B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010052AA7D684C4D0330BE5ADCA8</code> <code>D8C6272F1AE969A9C988A2423E5D92E2</code> <code>5F09EB94E1CE80A686B60CE3AF675E91</code> <code>1119E0C38D00DADFB6EF3D39B4F3B576</code> <code>E6AC0F94664068BB5E346BCBEF1BEB5A</code> <code>981356CFFD6949EB06F11A58E7DA4505</code> <code>F9A2FB9E6F037CD04F1CDBED0C9CD822</code> <code>589922F97D27200492315B99446F36EF</code> <code>B501C6A4090D5EF5CD1195038C1C52E5</code> <code>E185C8BF67B4B81B0CC3924774177072</code> <code>4055A005C86C4BA9715383B2E1DED852</code> <code>02D54792C888B318B6C6655A109AA528</code> <code>1CF8EEDD37744E914C789A1648B19B21</code> <code>B346565F226C2F15DF746DF3497FDFB5</code> <code>A91E179EF7A1EB61C1E371974F297414</code> <code>F4CC20A9161FFA9EDC7BB08CA219EB4F</code> <code>521120C27A5391130C5A0D90059179CB</code> <code>E19CADC2B6A988E49A93A01D938CBD55</code> <code>B2725D938556A78B0F12C48012E438EF</code> <code>38B7C5DDD9A1AB4E6A97084E917CCCFB</code> <code>67AC42764F8F81C366170735817A4737</code><br> <code>BAF0962E</code></td>
<td><code>FE500100A1F4A83C8780B80101ABDA0E</code> <code>06C2E2932D1415FE92FC7CF3F25D4978</code> <code>74AD7A02ED8829D800EF7EAB113E82D1</code> <code>0770011869B10E1F8B9EDF7FF68E4F5E</code> <code>504E04C70C371D413F46B6FC83648304</code> <code>0A4425E496437EFBC696D95533EE4F2E</code> <code>FD0C1DCFA47191BA84C5FE9BBB280D21</code> <code>98DE3E88D3273649569624A227AA6071</code> <code>751168B624EAAA3CE806173DD7CF21D1</code> <code>BF3901FEBB1F860F6B58DA71D68A1E85</code> <code>08587398CCE741D01208EA694B50E43C</code> <code>06482953D06A438049D7BCC3D2ED085C</code> <code>B82DCFF4B6989710022C8E8E4F9D85FF</code> <code>F86FDD0EC2C9C1264E886B822FA3B948</code> <code>243AEE937B2EECDF4A3E76A809604A2C</code> <code>1C24C70BD489B357E1588DEEE15BB143</code> <code>2677EFD417635A2CFBAB57BAD640E78F</code> <code>FA6C404B3C7426A77DC9B237808A3A65</code> <code>457C317B98C242B8A801289B68EC6757</code> <code>7F883932AA29C170A138A3F9369FFCAB</code> <code>FE770874D034BDC98073FB0EAF48520F</code><br> <code>A8964E67</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 = 4437E1C81E2FC5AE12C81E8D81E658072CA6160D8FA0345D8EE2ED2A6E9892DEB3CD0DE8B44CC9D6DE9E5ED98A41BBD29BAE6CABC8CDA36C3D958E5D04E3A144724C4A5011D73E772E0ADEAE3AE0C2093050DDA19C2BB931BF896D3D584B5F443E114D8EAECED9C52EBD1B71306101E7ABBC98E9F48E6C30C3301E33E162B4CA16FF517A07B40BADB1D3D4F358AD759CD3A35EBACB599171A2C32F9AE5B7F86294733C39083E7156B9E12B511869CA9FB296A9AFE7F569DE8E4B97729B22C37DA7027DCAB354E41A10A45B1EDC91CA2982F2774108DAD91817D32EB1E1EA720E98D0F381D3C6275D7353C0CF121EFB1C7719F7ECFA948052071C2AECA2743578</code></pre>
<pre><code>auth_key = 7FFA424A0AE8CA013E1B7E2262787C0B74E3FE5DAEEEA186CE7C41D0A30A8CFFDA573647EBB3E9D68A8721C9B27827F526E4947A615FAB99942021FF064AF40640F457CCE7ADC563627C18C208B6456236ABF860A1A183C1459912CE3F50E7A7CE66702D579B522434E84201FCD40920E681717ECDADD7ADB99BE04414C55F9D5D1CAC8DC1CEF71FE297FB5CE2088D3B9A2EDEE8CA245305F79C6FEDEB75A69894EB704484BDD16F9ECCF2E13C234AD18EB7B4B1B31CA70B154E89D2DAB2EEDF526AB4581CD5F855E2E00FD6948EA6874C77E765C2F2380FCFFCECDDA456E073CC20CEFDA42B07172F7E1DE433DE0A8D17D5F4BDBDCBC57CDA1892538026F2B0</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 10 4B 01 9F AB 38 67
0010 | 34 00 00 00 34 F7 CB 3B E8 FF D0 70 C6 56 0F C1
0020 | 91 A6 69 5C BB 3D 69 6B 50 52 07 36 D6 05 6F 36
0030 | F7 B5 AE 82 38 C4 61 93 04 DE FD 1F 17 F3 6F CE
0040 | 7E DD 37 3E B2 91 C6 2C</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 04 44 ED 55 C6 38 67
0010 | 34 00 00 00 34 F7 CB 3B D0 EA B0 A3 DD 8B 65 05
0020 | 20 F1 6A 47 11 72 C2 18 C0 92 69 C7 22 14 AE DD
0030 | E8 96 CA 82 5F 21 C7 3B 3B 1F 8E B5 FD 3E F1 D7
0040 | 3F D8 D5 4B DC 95 12 EA</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;</code></pre>
<table class="table">
@ -817,7 +817,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01104B019FAB3867</code></td>
<td><code>010444ED55C63867</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>E8FFD070C6560FC191A6695CBB3D696B</code></td>
<td><code>D0EAB0A3DD8B650520F16A471172C218</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>50520736D6056F36F7B5AE8238C46193</code></td>
<td><code>C09269C72214AEDDE896CA825F21C73B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>04DEFD1F17F36FCE7EDD373EB291C62C</code></td>
<td><code>3B1F8EB5FD3EF1D73FD8D54BDC9512EA</code></td>
<td>The 128 lower-order bits of SHA1 of the byte string derived from the <code>new_nonce</code> string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with <code>auth_key_aux_hash</code>. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.</td>
</tr>
</tbody>

View file

@ -72,7 +72,7 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -82,7 +82,7 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -91,7 +91,7 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -91,7 +91,7 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>

View file

@ -91,7 +91,7 @@
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#channel-ad-revenue" id="channel-ad-revenue" name="channel-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel ad revenue</a></h4>
<h4><a class="anchor" href="#channel-and-bot-ad-revenue" id="channel-and-bot-ad-revenue" name="channel-and-bot-ad-revenue"><i class="anchor-icon"></i></a><a href="/api/revenue">Channel and bot ad revenue</a></h4>
<p>Telegram has one of the most generous reward systems in the history of social media. Telegram channel and bot owners can now receive 50% of the revenue from ads displayed in their channels and bots. This page describes the methods used to withdraw channel/bot ad revenue, as well as view detailed revenue stats.</p></div>
</div>