Update content of files

This commit is contained in:
GitHub Action 2024-07-30 17:14:07 +00:00
parent ede946f0ab
commit c9b899930c
52 changed files with 301 additions and 351 deletions

View file

@ -421,7 +421,7 @@ Clicking on this button in the settings should open a Telegram Business modal.
<li><code>business_bots</code> - Business users can <a href="#connected-bots">connect business bots to their account</a></li>
<li><code>emoji_status</code> - Business users can set a <a href="/api/emoji-status">custom emoji status</a>. </li>
<li><code>folder_tags</code> - Business users can enable <a href="/api/folders#folder-tags">folder tags</a>. </li>
<li><code>stories</code> - Business users have many additional <a href="/api/stories">story features</a>.</li>
<li><code>stories</code> - Business users can use <a href="/api/stories">stories</a> to showcase products (i.e. no additional functionality neeeds to be implemented by clients, it's just another way to use stories).</li>
</ul></div>
</div>

View file

@ -373,6 +373,8 @@ While <a href="/method/help.getConfig">help.getConfig</a> returns MTProto-specif
"stories_pinned_to_top_count_max": 3,
"can_edit_factcheck": false,
"factcheck_length_limit": 1024,
"channel_revenue_withdrawal_enabled": true,
"stars_purchase_blocked": true,
"web_app_allowed_protocols": [
"http",
"https"
@ -656,7 +658,11 @@ Note that the stickerset can be fetched using <a href="/constructor/inputSticker
<h4><a class="anchor" href="#upload-premium-speedup-notify-period" id="upload-premium-speedup-notify-period" name="upload-premium-speedup-notify-period"><i class="anchor-icon"></i></a><code>upload_premium_speedup_notify_period</code></h4>
<p>The Premium modal shown when receiving <code>FLOOD_WAIT_PREMIUM_X</code> errors during file uploads/downloads should be shown at most every <code>upload_premium_speedup_notify_period</code> seconds. (integer)</p>
<h4><a class="anchor" href="#stories-pinned-to-top-count-max" id="stories-pinned-to-top-count-max" name="stories-pinned-to-top-count-max"><i class="anchor-icon"></i></a><code>stories_pinned_to_top_count_max</code></h4>
<p>The maximum number of <a href="/api/stories#pinned-or-archived-stories">stories that can be pinned on top of the profile »</a>. </p>
<p>The maximum number of <a href="/api/stories#pinned-or-archived-stories">stories that can be pinned on top of the profile »</a>. (integer)</p>
<h4><a class="anchor" href="#channel-revenue-withdrawal-enabled" id="channel-revenue-withdrawal-enabled" name="channel-revenue-withdrawal-enabled"><i class="anchor-icon"></i></a><code>channel_revenue_withdrawal_enabled</code></h4>
<p>If true, indicates that <a href="/api/revenue">channel ad revenue withdrawal is enabled in the current region</a>; otherwise, all ad revenue-related UI options should be hidden from the user. (boolean)</p>
<h4><a class="anchor" href="#stars-purchase-blocked" id="stars-purchase-blocked" name="stars-purchase-blocked"><i class="anchor-icon"></i></a><code>stars_purchase_blocked</code></h4>
<p>If false, indicates that <a href="/api/stars">Telegram Stars may be used in the current region</a>; otherwise, all Star-related UI options should be hidden from the user. (boolean)</p>
<h4><a class="anchor" href="#web-app-allowed-protocols" id="web-app-allowed-protocols" name="web-app-allowed-protocols"><i class="anchor-icon"></i></a><code>web_app_allowed_protocols</code></h4>
<p>Specifies a list of allowed schemes for URLs received in <a href="/api/web-events#web-app-open-link">web_app_open_link events</a>. (array of strings)</p>
<h3><a class="anchor" href="#suggestions" id="suggestions" name="suggestions"><i class="anchor-icon"></i></a>Suggestions</h3>

View file

@ -68,7 +68,7 @@
<a href='/method/stats.getBroadcastRevenueStats'>stats.getBroadcastRevenueStats</a>#75dfb671 flags:<a href='/type/%23'>#</a> dark:flags.0?<a href='/constructor/true'>true</a> channel:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/stats.BroadcastRevenueStats'>stats.BroadcastRevenueStats</a>;
<a href='/method/stats.getBroadcastRevenueTransactions'>stats.getBroadcastRevenueTransactions</a>#69280f channel:<a href='/type/InputChannel'>InputChannel</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>Channel ad revenue statistics may be fetched by channel admins if the <a href="/constructor/channelFull">channelFull</a>.<code>can_view_revenue</code> flag is set. </p>
<p>Channel ad revenue statistics may be fetched by channel admins if the <a href="/constructor/channelFull">channelFull</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>Use <a href="/method/stats.getBroadcastRevenueStats">stats.getBroadcastRevenueStats</a> to fetch statistics about the revenue earned from sponsored messages in a channel; 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>
@ -92,7 +92,7 @@
<a href='/method/stats.getBroadcastRevenueWithdrawalUrl'>stats.getBroadcastRevenueWithdrawalUrl</a>#2a65ef73 channel:<a href='/type/InputChannel'>InputChannel</a> password:<a href='/type/InputCheckPasswordSRP'>InputCheckPasswordSRP</a> = <a href='/type/stats.BroadcastRevenueWithdrawalUrl'>stats.BroadcastRevenueWithdrawalUrl</a>;</code></pre>
<p>To withdraw funds from a channel's ad revenue balance, 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 owner can invoke this method. </p>
<p>Only the channel 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>. </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> 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

@ -46,6 +46,7 @@
<p>Telegram Stars are an in-app currency that allows the user to pay for digital goods and services offered by <a href="https://telegram.org/blog/telegram-stars">Telegram bots</a> or <a href="https://telegram.org/blog/mini-app-bar-paid-media-and-more#pay-for-content-with-telegram-stars">Telegram channels</a>. </p>
<p>This page describes the methods used to buy and withdraw <a href="https://telegram.org/blog/mini-app-bar-paid-media-and-more#rewards-for-content-creators-and-developers">Telegram Stars</a>, as well as view detailed revenue stats and make purchases using Telegram Stars. </p>
<p>Clients should disable Telegram Stars support for the current user if the <a href="/api/config#stars-purchase-blocked">stars_purchase_blocked field is equal to <code>true</code> »</a> due to regional limitations. </p>
<h3><a class="anchor" href="#balance-and-transaction-history" id="balance-and-transaction-history" name="balance-and-transaction-history"><i class="anchor-icon"></i></a>Balance and transaction history</h3>
<pre><code><a href='/constructor/starsTransactionPeerAppStore'>starsTransactionPeerAppStore</a>#b457b375 = <a href='/type/StarsTransactionPeer'>StarsTransactionPeer</a>;
<a href='/constructor/starsTransactionPeerPlayMarket'>starsTransactionPeerPlayMarket</a>#7b560a0b = <a href='/type/StarsTransactionPeer'>StarsTransactionPeer</a>;

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.emojiStatuses">account.emojiStatuses</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#accountemojistatuses" id="accountemojistatuses" name="accountemojistatuses"><i class="anchor-icon"></i></a><a href="/constructor/account.emojiStatuses">account.emojiStatuses</a></h4>
<p>A list of <a href="/api/emoji-status">emoji statuses</a></p>
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>
<p>Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/emojiList">emojiList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#emojilist" id="emojilist" name="emojilist"><i class="anchor-icon"></i></a><a href="/constructor/emojiList">emojiList</a></h4>
<p>Represents a list of <a href="/api/custom-emoji">custom emojis</a>.</p>
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
<p>Telegram allows including animated and static custom emojis inside of messages.</p>
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.themes">account.themes</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#accountthemes" id="accountthemes" name="accountthemes"><i class="anchor-icon"></i></a><a href="/constructor/account.themes">account.themes</a></h4>
<p>Installed themes</p>
<h4><a class="anchor" href="#themes" id="themes" name="themes"><i class="anchor-icon"></i></a><a href="/api/themes">Themes</a></h4>
<p>Telegram apps support generating, sharing and synchronizing app themes.</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/emojiList">emojiList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#emojilist" id="emojilist" name="emojilist"><i class="anchor-icon"></i></a><a href="/constructor/emojiList">emojiList</a></h4>
<p>Represents a list of <a href="/api/custom-emoji">custom emojis</a>.</p>
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
<p>Telegram allows including animated and static custom emojis inside of messages.</p>
<h4><a class="anchor" href="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.emojiStatuses">account.emojiStatuses</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#accountemojistatuses" id="accountemojistatuses" name="accountemojistatuses"><i class="anchor-icon"></i></a><a href="/constructor/account.emojiStatuses">account.emojiStatuses</a></h4>
<p>A list of <a href="/api/emoji-status">emoji statuses</a></p>
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>
<p>Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/emojiList">emojiList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#emojilist" id="emojilist" name="emojilist"><i class="anchor-icon"></i></a><a href="/constructor/emojiList">emojiList</a></h4>
<p>Represents a list of <a href="/api/custom-emoji">custom emojis</a>.</p>
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
<p>Telegram allows including animated and static custom emojis inside of messages.</p>
<h4><a class="anchor" href="#uploading-and-downloading-files" id="uploading-and-downloading-files" name="uploading-and-downloading-files"><i class="anchor-icon"></i></a><a href="/api/files">Uploading and Downloading Files</a></h4>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/emojiList">emojiList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#emojilist" id="emojilist" name="emojilist"><i class="anchor-icon"></i></a><a href="/constructor/emojiList">emojiList</a></h4>
<p>Represents a list of <a href="/api/custom-emoji">custom emojis</a>.</p>
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
<p>Telegram allows including animated and static custom emojis inside of messages.</p>
<h4><a class="anchor" href="#uploading-and-downloading-files" id="uploading-and-downloading-files" name="uploading-and-downloading-files"><i class="anchor-icon"></i></a><a href="/api/files">Uploading and Downloading Files</a></h4>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.emojiStatuses">account.emojiStatuses</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#accountemojistatuses" id="accountemojistatuses" name="accountemojistatuses"><i class="anchor-icon"></i></a><a href="/constructor/account.emojiStatuses">account.emojiStatuses</a></h4>
<p>A list of <a href="/api/emoji-status">emoji statuses</a></p>
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>
<p>Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.savedRingtones">account.savedRingtones</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -80,9 +80,7 @@
<p><a href="/type/account.SavedRingtones">account.SavedRingtones</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#accountsavedringtones" id="accountsavedringtones" name="accountsavedringtones"><i class="anchor-icon"></i></a><a href="/constructor/account.savedRingtones">account.savedRingtones</a></h4>
<p>A list of saved notification sounds</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -77,7 +77,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.themes">account.themes</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -85,9 +85,7 @@
<p><a href="/type/account.Themes">account.Themes</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#accountthemes" id="accountthemes" name="accountthemes"><i class="anchor-icon"></i></a><a href="/constructor/account.themes">account.themes</a></h4>
<p>Installed themes</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.wallPapers">account.wallPapers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#accountwallpapers" id="accountwallpapers" name="accountwallpapers"><i class="anchor-icon"></i></a><a href="/constructor/account.wallPapers">account.wallPapers</a></h4>
<p>Installed <a href="/api/wallpapers">wallpapers</a></p>
<h4><a class="anchor" href="#wallpapers" id="wallpapers" name="wallpapers"><i class="anchor-icon"></i></a><a href="/api/wallpapers">Wallpapers</a></h4>
<p>Telegram apps support generating, sharing and synchronizing chat backgrounds.</p></div>

View file

@ -99,6 +99,11 @@
</tr>
<tr>
<td>400</td>
<td>EMAIL_NOT_ALLOWED</td>
<td>The specified email cannot be used to complete the operation.</td>
</tr>
<tr>
<td>400</td>
<td>EMAIL_NOT_SETUP</td>
<td>In order to change the login email with emailVerifyPurposeLoginChange, an existing login email must already be set using emailVerifyPurposeLoginSetup.</td>
</tr>

View file

@ -100,6 +100,11 @@
</tr>
<tr>
<td>400</td>
<td>EMAIL_NOT_ALLOWED</td>
<td>The specified email cannot be used to complete the operation.</td>
</tr>
<tr>
<td>400</td>
<td>EMAIL_VERIFY_EXPIRED</td>
<td>The verification email has expired.</td>
</tr>

View file

@ -201,7 +201,7 @@
<tr>
<td>400</td>
<td>USER_CREATOR</td>
<td>You can't leave this channel, because you're its creator.</td>
<td>For channels.editAdmin: you've tried to edit the admin rights of the owner, but you're not the owner; for channels.leaveChannel: you can't leave this channel, because you're its creator.</td>
</tr>
<tr>
<td>400</td>

View file

@ -126,7 +126,7 @@
<tr>
<td>400</td>
<td>USER_CREATOR</td>
<td>You can't leave this channel, because you're its creator.</td>
<td>For channels.editAdmin: you've tried to edit the admin rights of the owner, but you're not the owner; for channels.leaveChannel: you can't leave this channel, because you're its creator.</td>
</tr>
<tr>
<td>400</td>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.appConfig">help.appConfig</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#helpappconfig" id="helpappconfig" name="helpappconfig"><i class="anchor-icon"></i></a><a href="/constructor/help.appConfig">help.appConfig</a></h4>
<p>Contains various <a href="/api/config#client-configuration">client configuration parameters</a></p>
<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4>
<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</p></div>

View file

@ -77,7 +77,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.countriesList">help.countriesList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -85,9 +85,7 @@
<p><a href="/type/help.CountriesList">help.CountriesList</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#helpcountrieslist" id="helpcountrieslist" name="helpcountrieslist"><i class="anchor-icon"></i></a><a href="/constructor/help.countriesList">help.countriesList</a></h4>
<p>Name, ISO code, localized name and phone codes/patterns of all available countries</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.passportConfig">help.passportConfig</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#helppassportconfig" id="helppassportconfig" name="helppassportconfig"><i class="anchor-icon"></i></a><a href="/constructor/help.passportConfig">help.passportConfig</a></h4>
<p>Telegram <a href="/passport">passport</a> configuration</p>
<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></div>
</div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.peerColors">help.peerColors</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#helppeercolors" id="helppeercolors" name="helppeercolors"><i class="anchor-icon"></i></a><a href="/constructor/help.peerColors">help.peerColors</a></h4>
<p>Contains info about multiple <a href="/api/colors">color palettes »</a>.</p>
<h4><a class="anchor" href="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.peerColors">help.peerColors</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#helppeercolors" id="helppeercolors" name="helppeercolors"><i class="anchor-icon"></i></a><a href="/constructor/help.peerColors">help.peerColors</a></h4>
<p>Contains info about multiple <a href="/api/colors">color palettes »</a>.</p>
<h4><a class="anchor" href="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.timezonesList">help.timezonesList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#helptimezoneslist" id="helptimezoneslist" name="helptimezoneslist"><i class="anchor-icon"></i></a><a href="/constructor/help.timezonesList">help.timezonesList</a></h4>
<p>Timezone information that may be used elsewhere in the API, such as to set <a href="/api/business#opening-hours">Telegram Business opening hours »</a>.</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></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.allStickers">messages.allStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -80,9 +80,7 @@
<p><a href="/type/messages.AllStickers">messages.AllStickers</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#messagesallstickers" id="messagesallstickers" name="messagesallstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.allStickers">messages.allStickers</a></h4>
<p>Info about all installed stickers</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/attachMenuBots">attachMenuBots</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#attachmenubots" id="attachmenubots" name="attachmenubots"><i class="anchor-icon"></i></a><a href="/constructor/attachMenuBots">attachMenuBots</a></h4>
<p>Represents a list of <a href="/api/bots/attach">bot mini apps that can be launched from the attachment menu »</a></p>
<h4><a class="anchor" href="#bot-attachment-menu-and-side-menu-entries" id="bot-attachment-menu-and-side-menu-entries" name="bot-attachment-menu-and-side-menu-entries"><i class="anchor-icon"></i></a><a href="/api/bots/attach">Bot attachment menu and side menu entries</a></h4>
<p>Bots can install attachment menu and side menu entries, offering conveniently accessible, versatile web apps.</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.availableEffects">messages.availableEffects</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#messagesavailableeffects" id="messagesavailableeffects" name="messagesavailableeffects"><i class="anchor-icon"></i></a><a href="/constructor/messages.availableEffects">messages.availableEffects</a></h4>
<p>The full list of usable <a href="/api/effects">animated message effects »</a>.</p>
<h4><a class="anchor" href="#animated-message-effects" id="animated-message-effects" name="animated-message-effects"><i class="anchor-icon"></i></a><a href="/api/effects">Animated message effects</a></h4>
<p>Telegram allows adding spectacular <strong>animated effects</strong> to messages you send.</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.availableReactions">messages.availableReactions</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#messagesavailablereactions" id="messagesavailablereactions" name="messagesavailablereactions"><i class="anchor-icon"></i></a><a href="/constructor/messages.availableReactions">messages.availableReactions</a></h4>
<p>Animations and metadata associated with <a href="/api/reactions">message reactions »</a></p>
<h4><a class="anchor" href="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.reactions">messages.reactions</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#messagesreactions" id="messagesreactions" name="messagesreactions"><i class="anchor-icon"></i></a><a href="/constructor/messages.reactions">messages.reactions</a></h4>
<p>List of <a href="/api/reactions">message reactions</a></p>
<h4><a class="anchor" href="#saved-messages" id="saved-messages" name="saved-messages"><i class="anchor-icon"></i></a><a href="/api/saved-messages">Saved messages</a></h4>
<p>The Saved Messages chat allows users to bookmark messages and media: it's a personal cloud storage for any messages or media you may want to send or forward there.</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.emojiGroups">messages.emojiGroups</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#messagesemojigroups" id="messagesemojigroups" name="messagesemojigroups"><i class="anchor-icon"></i></a><a href="/constructor/messages.emojiGroups">messages.emojiGroups</a></h4>
<p>Represents a list of <a href="/api/emoji-categories">emoji categories</a>.</p>
<h4><a class="anchor" href="#emoji-categories" id="emoji-categories" name="emoji-categories"><i class="anchor-icon"></i></a><a href="/api/emoji-categories">Emoji categories</a></h4>
<p>Sticker, custom emoji and GIF selection UIs should offer a list of categories to quickly filter results by a (list of) emojis, or by some other criteria.</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.emojiGroups">messages.emojiGroups</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#messagesemojigroups" id="messagesemojigroups" name="messagesemojigroups"><i class="anchor-icon"></i></a><a href="/constructor/messages.emojiGroups">messages.emojiGroups</a></h4>
<p>Represents a list of <a href="/api/emoji-categories">emoji categories</a>.</p>
<h4><a class="anchor" href="#emoji-categories" id="emoji-categories" name="emoji-categories"><i class="anchor-icon"></i></a><a href="/api/emoji-categories">Emoji categories</a></h4>
<p>Sticker, custom emoji and GIF selection UIs should offer a list of categories to quickly filter results by a (list of) emojis, or by some other criteria.</p>
<h4><a class="anchor" href="#uploading-and-downloading-files" id="uploading-and-downloading-files" name="uploading-and-downloading-files"><i class="anchor-icon"></i></a><a href="/api/files">Uploading and Downloading Files</a></h4>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.emojiGroups">messages.emojiGroups</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#messagesemojigroups" id="messagesemojigroups" name="messagesemojigroups"><i class="anchor-icon"></i></a><a href="/constructor/messages.emojiGroups">messages.emojiGroups</a></h4>
<p>Represents a list of <a href="/api/emoji-categories">emoji categories</a>.</p>
<h4><a class="anchor" href="#emoji-categories" id="emoji-categories" name="emoji-categories"><i class="anchor-icon"></i></a><a href="/api/emoji-categories">Emoji categories</a></h4>
<p>Sticker, custom emoji and GIF selection UIs should offer a list of categories to quickly filter results by a (list of) emojis, or by some other criteria.</p>
<h4><a class="anchor" href="#telegram-apis" id="telegram-apis" name="telegram-apis"><i class="anchor-icon"></i></a><a href="/api">Telegram APIs</a></h4></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.emojiGroups">messages.emojiGroups</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#messagesemojigroups" id="messagesemojigroups" name="messagesemojigroups"><i class="anchor-icon"></i></a><a href="/constructor/messages.emojiGroups">messages.emojiGroups</a></h4>
<p>Represents a list of <a href="/api/emoji-categories">emoji categories</a>.</p>
<h4><a class="anchor" href="#emoji-categories" id="emoji-categories" name="emoji-categories"><i class="anchor-icon"></i></a><a href="/api/emoji-categories">Emoji categories</a></h4>
<p>Sticker, custom emoji and GIF selection UIs should offer a list of categories to quickly filter results by a (list of) emojis, or by some other criteria.</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.allStickers">messages.allStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -81,8 +81,6 @@
<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="#messagesallstickers" id="messagesallstickers" name="messagesallstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.allStickers">messages.allStickers</a></h4>
<p>Info about all installed stickers</p>
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
<p>Telegram allows including animated and static custom emojis inside of messages.</p></div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.favedStickers">messages.favedStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -80,9 +80,7 @@
<p><a href="/type/messages.FavedStickers">messages.FavedStickers</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#messagesfavedstickers" id="messagesfavedstickers" name="messagesfavedstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.favedStickers">messages.favedStickers</a></h4>
<p>Favorited stickers</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.featuredStickers">messages.featuredStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -80,9 +80,7 @@
<p><a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#messagesfeaturedstickers" id="messagesfeaturedstickers" name="messagesfeaturedstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.featuredStickers">messages.featuredStickers</a></h4>
<p>Featured stickersets</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.featuredStickers">messages.featuredStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -80,9 +80,7 @@
<p><a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#messagesfeaturedstickers" id="messagesfeaturedstickers" name="messagesfeaturedstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.featuredStickers">messages.featuredStickers</a></h4>
<p>Featured stickersets</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.allStickers">messages.allStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -80,9 +80,7 @@
<p><a href="/type/messages.AllStickers">messages.AllStickers</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#messagesallstickers" id="messagesallstickers" name="messagesallstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.allStickers">messages.allStickers</a></h4>
<p>Info about all installed stickers</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -82,7 +82,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.featuredStickers">messages.featuredStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -90,9 +90,7 @@
<p><a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#messagesfeaturedstickers" id="messagesfeaturedstickers" name="messagesfeaturedstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.featuredStickers">messages.featuredStickers</a></h4>
<p>Featured stickersets</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -77,7 +77,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.reactions">messages.reactions</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -86,8 +86,6 @@
<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="#messagesreactions" id="messagesreactions" name="messagesreactions"><i class="anchor-icon"></i></a><a href="/constructor/messages.reactions">messages.reactions</a></h4>
<p>List of <a href="/api/reactions">message reactions</a></p>
<h4><a class="anchor" href="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p></div>

View file

@ -82,7 +82,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.recentStickers">messages.recentStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -90,9 +90,7 @@
<p><a href="/type/messages.RecentStickers">messages.RecentStickers</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#messagesrecentstickers" id="messagesrecentstickers" name="messagesrecentstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.recentStickers">messages.recentStickers</a></h4>
<p>Recently used stickers</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -72,7 +72,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.savedGifs">messages.savedGifs</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -80,9 +80,7 @@
<p><a href="/type/messages.SavedGifs">messages.SavedGifs</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#messagessavedgifs" id="messagessavedgifs" name="messagessavedgifs"><i class="anchor-icon"></i></a><a href="/constructor/messages.savedGifs">messages.savedGifs</a></h4>
<p>Saved gifs</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -82,7 +82,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.savedReactionTags">messages.savedReactionTags</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -92,9 +92,7 @@
<h4><a class="anchor" href="#saved-messages" id="saved-messages" name="saved-messages"><i class="anchor-icon"></i></a><a href="/api/saved-messages">Saved messages</a></h4>
<p>The Saved Messages chat allows users to bookmark messages and media: it's a personal cloud storage for any messages or media you may want to send or forward there.</p>
<h4><a class="anchor" href="#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="#messagessavedreactiontags" id="messagessavedreactiontags" name="messagessavedreactiontags"><i class="anchor-icon"></i></a><a href="/constructor/messages.savedReactionTags">messages.savedReactionTags</a></h4>
<p>List of <a href="/api/saved-messages#tags">reaction tag »</a> names assigned by the user.</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -77,7 +77,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.stickers">messages.stickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -102,9 +102,7 @@
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#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="#messagesstickers" id="messagesstickers" name="messagesstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.stickers">messages.stickers</a></h4>
<p>Found stickers</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -77,7 +77,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.reactions">messages.reactions</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -86,8 +86,6 @@
<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="#messagesreactions" id="messagesreactions" name="messagesreactions"><i class="anchor-icon"></i></a><a href="/constructor/messages.reactions">messages.reactions</a></h4>
<p>List of <a href="/api/reactions">message reactions</a></p>
<h4><a class="anchor" href="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p></div>

View file

@ -77,7 +77,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/emojiList">emojiList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -103,8 +103,6 @@
<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="#emojilist" id="emojilist" name="emojilist"><i class="anchor-icon"></i></a><a href="/constructor/emojiList">emojiList</a></h4>
<p>Represents a list of <a href="/api/custom-emoji">custom emojis</a>.</p>
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
<p>Telegram allows including animated and static custom emojis inside of messages.</p></div>

View file

@ -87,7 +87,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.foundStickerSets">messages.foundStickerSets</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -96,8 +96,6 @@
<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="#messagesfoundstickersets" id="messagesfoundstickersets" name="messagesfoundstickersets"><i class="anchor-icon"></i></a><a href="/constructor/messages.foundStickerSets">messages.foundStickerSets</a></h4>
<p>Found stickersets</p>
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
<p>Telegram allows including animated and static custom emojis inside of messages.</p></div>

View file

@ -87,7 +87,7 @@
<tr>
<td><strong>hash</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.foundStickerSets">messages.foundStickerSets</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
<td><a href="/api/offsets#hash-generation">Hash used for caching, for more info click here</a>.</td>
</tr>
</tbody>
</table>
@ -95,9 +95,7 @@
<p><a href="/type/messages.FoundStickerSets">messages.FoundStickerSets</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
<p>How to fetch results from large lists of objects.</p>
<h4><a class="anchor" href="#messagesfoundstickersets" id="messagesfoundstickersets" name="messagesfoundstickersets"><i class="anchor-icon"></i></a><a href="/constructor/messages.foundStickerSets">messages.foundStickerSets</a></h4>
<p>Found stickersets</p></div>
<p>How to fetch results from large lists of objects.</p></div>
</div>

View file

@ -206,7 +206,12 @@
<tr>
<td>400</td>
<td>FILE_REFERENCE_%d_EXPIRED</td>
<td> </td>
<td>File reference expired, it must be refetched as described in <a href="/api/file_reference">the documentation</a>.</td>
</tr>
<tr>
<td>400</td>
<td>FILE_REFERENCE_%d_INVALID</td>
<td>File reference invalid.</td>
</tr>
<tr>
<td>400</td>
@ -306,6 +311,8 @@
<p>How to transfer large data batches correctly.</p>
<h4><a class="anchor" href="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4>
<p>How to create styled text with message entities</p>
<h4><a class="anchor" href="#file-references" id="file-references" name="file-references"><i class="anchor-icon"></i></a><a href="/api/file_reference">File references</a></h4>
<p>How to handle file references.</p>
<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4>
<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</p></div>

View file

@ -94,12 +94,20 @@
</thead>
<tbody>
<tr>
<td>403</td>
<td>GROUPCALL_ALREADY_STARTED</td>
<td>The groupcall has already started, you can join directly using <a href="/method/phone.joinGroupCall">phone.joinGroupCall</a>.</td>
</tr>
<tr>
<td>400</td>
<td>GROUPCALL_INVALID</td>
<td>The specified group call is invalid.</td>
</tr>
</tbody>
</table></div>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#phonejoingroupcall" id="phonejoingroupcall" name="phonejoingroupcall"><i class="anchor-icon"></i></a><a href="/method/phone.joinGroupCall">phone.joinGroupCall</a></h4>
<p>Join a group call</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 38 8B 01 00 2B 91 A2 66
0010 | 14 00 00 00 F1 8E 7E BE 0A 10 39 86 07 65 90 2D
0020 | FB 0C AC B7 C5 6E 4D D1</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 94 1C 07 00 6F 1D A9 66
0010 | 14 00 00 00 F1 8E 7E BE 1B 09 A0 0A D2 F0 2D 7E
0020 | 1C 09 6E E6 37 8E 25 53</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>388B01002B91A266</code></td>
<td><code>941C07006F1DA966</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>0A1039860765902DFB0CACB7C56E4DD1</code></td>
<td><code>1B09A00AD2F02D7E1C096EE6378E2553</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 84 EC 20 2B 91 A2 66
0010 | 60 00 00 00 63 24 16 05 0A 10 39 86 07 65 90 2D
0020 | FB 0C AC B7 C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9
0030 | ED B5 CC 2B 80 59 9F 26 08 2C 8C 80 64 FA 45 27
0040 | BF 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 B4 AE 01 70 1D A9 66
0010 | 74 00 00 00 63 24 16 05 1B 09 A0 0A D2 F0 2D 7E
0020 | 1C 09 6E E6 37 8E 25 53 2B 28 6E 1E 25 E4 74 61
0030 | D3 0B C4 2E C9 8D 1F C7 08 23 4D 85 4D FC 28 0C
0040 | 41 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
0050 | 35 5F C3 0B 21 6B E8 6C 02 2B B4 C3 85 FD 64 DE
0060 | 85 1D 9D D0</code></pre>
<p>Payload (de)serialization:</p>
@ -132,13 +132,13 @@
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>0184EC202B91A266</code></td>
<td><code>01B4AE01701DA966</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>60000000</code> (96 in decimal)</td>
<td><code>74000000</code> (116 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>0A1039860765902DFB0CACB7C56E4DD1</code></td>
<td><code>1B09A00AD2F02D7E1C096EE6378E2553</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>C9359CB9B3E5FDC9EDB5CC2B80599F26</code></td>
<td><code>2B286E1E25E47461D30BC42EC98D1FC7</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>082C8C8064FA4527BF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3210081805592242111</td>
<td><code>08234D854DFC280C41000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2543835934523657281</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 = 3210081805592242111</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>3210081805592242111 = 1715908321 * 1870776991</code></p>
<pre><code>p = 1715908321
q = 1870776991</code></pre>
<pre><code>pq = 2543835934523657281</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2543835934523657281 = 1346951269 * 1888587949</code></p>
<pre><code>p = 1346951269
q = 1888587949</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 2C 8C 80 64 FA 45 27 BF 00 00 00
0010 | 04 66 46 AE E1 00 00 00 04 6F 81 CA 9F 00 00 00
0020 | 0A 10 39 86 07 65 90 2D FB 0C AC B7 C5 6E 4D D1
0030 | C9 35 9C B9 B3 E5 FD C9 ED B5 CC 2B 80 59 9F 26
0040 | 10 87 BD AD 57 39 94 4B 58 9D 6D D2 4C 7A B3 B0
0050 | 3E AA 4A B1 DF AF B8 2E 87 09 B5 18 85 0E 5B 8D
<pre><code>0000 | 95 5F F5 A9 08 23 4D 85 4D FC 28 0C 41 00 00 00
0010 | 04 50 48 D8 65 00 00 00 04 70 91 90 AD 00 00 00
0020 | 1B 09 A0 0A D2 F0 2D 7E 1C 09 6E E6 37 8E 25 53
0030 | 2B 28 6E 1E 25 E4 74 61 D3 0B C4 2E C9 8D 1F C7
0040 | 2D 36 E3 CA F0 41 D7 7A 54 F5 DD C1 10 EE 6B 0F
0050 | 9F 57 93 52 B3 0B 84 CD 97 59 03 2F D5 24 1D 9F
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 = 1870776991</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>082C8C8064FA4527BF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3210081805592242111</td>
<td><code>08234D854DFC280C41000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2543835934523657281</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>046646AEE1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1715908321</td>
<td><code>045048D865000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1346951269</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>046F81CA9F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1870776991</td>
<td><code>04709190AD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1888587949</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>0A1039860765902DFB0CACB7C56E4DD1</code></td>
<td><code>1B09A00AD2F02D7E1C096EE6378E2553</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>C9359CB9B3E5FDC9EDB5CC2B80599F26</code></td>
<td><code>2B286E1E25E47461D30BC42EC98D1FC7</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>1087BDAD5739944B589D6DD24C7AB3B0</code> <code>3EAA4AB1DFAFB82E8709B518850E5B8D</code></td>
<td><code>2D36E3CAF041D77A54F5DDC110EE6B0F</code> <code>9F579352B30B84CD9759032FD5241D9F</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1870776991</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 = 955FF5A9082C8C8064FA4527BF000000046646AEE1000000046F81CA9F0000000A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F261087BDAD5739944B589D6DD24C7AB3B03EAA4AB1DFAFB82E8709B518850E5B8D02000000
random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A844801765254D5FC4260376EC1536F738A1977AD0419E1C975C25C864EF4CCB49D100EAC8392B4A40B8C53C4C39B480243243212DCDD36A230D3F42D3C0751E8887D00DEF0</code></pre>
<pre><code>data = 955FF5A908234D854DFC280C41000000045048D86500000004709190AD0000001B09A00AD2F02D7E1C096EE6378E25532B286E1E25E47461D30BC42EC98D1FC72D36E3CAF041D77A54F5DDC110EE6B0F9F579352B30B84CD9759032FD5241D9F02000000
random_padding_bytes = 10F0A617F030366CC2EF71A81ED42B90190CA7832B8BEAFC416DFF5ACB4AC456E29E57798ED22A0D5740538DD13D7FB66D23FA451876C6B31621404AE1E2F2C6BACAFF48934B9152478E70E4FF3D2BD007D2F6FC3745FF2185A9961C</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 = 4936B5905D07C165BB5F70F454A400AE62F36EA466CD3789B1FE5D9F9D5A819637F6833F2A63DE96FC42118B654A71E8B97952400DDCD71D8C896A20DEDA04A13ED61991CC0F9EEDBC65F0CEF5B1009F76DCF1CEEBAEC4D9C72960E0850203189810402A33E317E5A959549C4242453B883D3BE0AAE7DBAE55665B74931ED0C0AA6FB21B143725B817FEC6C2556CBB49124311500FE348427433AE302E47184A994726CCA192A1EEB9244FAF5CEC041F8AAF67D5B9217160656B4031FFBA23127B94F12A3EC809C69A2EF99CDFC1E0AB2762EB794C6EE3A85DC27F0F00CC4FCC61F1CC9ED28F92F876F3E7B8FAA4E93891A7EE64B39A293730F8BC3D03F7AE93</code></pre>
<pre><code>encrypted_data = 92B3AB879CD052FAF2C6C9A1E39B43258C187AD82F04408BE1B78FA906D9328AC69E06F6A7BCBAF24729630F303929841FDBBDB90DF2FDA55E6F33BB89D0F007436676A5328D97F6C7E1BC16447E54F9CC56B345F818B24216FD60829E5263EFF6E9E9F85A18E3CD26126ED3C1CBB82CFFBFDC002F17BF40E9D45FDA4252088A456FDE816CBD33DD76436BA014323F345FAFCA016A8925498727E63DDBA6ADC63DB5E5B0B1127C30C86870A70F4D4658EE30AECBB7DF1F62CABD42222E3B81BC8A729A29E0FA817B7D0DA40FBA702456BEF51198CFC60E0085B3BE7EBC62140484A37E859C601B484F06C54A9A65342A21A8F18FBB5345F56D3DAAB0D791D1F2</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 AC 1B 03 00 2B 91 A2 66
0010 | 40 01 00 00 BE E4 12 D7 0A 10 39 86 07 65 90 2D
0020 | FB 0C AC B7 C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9
0030 | ED B5 CC 2B 80 59 9F 26 04 66 46 AE E1 00 00 00
0040 | 04 6F 81 CA 9F 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 49 36 B5 90 5D 07 C1 65 BB 5F 70 F4
0060 | 54 A4 00 AE 62 F3 6E A4 66 CD 37 89 B1 FE 5D 9F
0070 | 9D 5A 81 96 37 F6 83 3F 2A 63 DE 96 FC 42 11 8B
0080 | 65 4A 71 E8 B9 79 52 40 0D DC D7 1D 8C 89 6A 20
0090 | DE DA 04 A1 3E D6 19 91 CC 0F 9E ED BC 65 F0 CE
00A0 | F5 B1 00 9F 76 DC F1 CE EB AE C4 D9 C7 29 60 E0
00B0 | 85 02 03 18 98 10 40 2A 33 E3 17 E5 A9 59 54 9C
00C0 | 42 42 45 3B 88 3D 3B E0 AA E7 DB AE 55 66 5B 74
00D0 | 93 1E D0 C0 AA 6F B2 1B 14 37 25 B8 17 FE C6 C2
00E0 | 55 6C BB 49 12 43 11 50 0F E3 48 42 74 33 AE 30
00F0 | 2E 47 18 4A 99 47 26 CC A1 92 A1 EE B9 24 4F AF
0100 | 5C EC 04 1F 8A AF 67 D5 B9 21 71 60 65 6B 40 31
0110 | FF BA 23 12 7B 94 F1 2A 3E C8 09 C6 9A 2E F9 9C
0120 | DF C1 E0 AB 27 62 EB 79 4C 6E E3 A8 5D C2 7F 0F
0130 | 00 CC 4F CC 61 F1 CC 9E D2 8F 92 F8 76 F3 E7 B8
0140 | FA A4 E9 38 91 A7 EE 64 B3 9A 29 37 30 F8 BC 3D
0150 | 03 F7 AE 93</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 78 C0 07 00 70 1D A9 66
0010 | 40 01 00 00 BE E4 12 D7 1B 09 A0 0A D2 F0 2D 7E
0020 | 1C 09 6E E6 37 8E 25 53 2B 28 6E 1E 25 E4 74 61
0030 | D3 0B C4 2E C9 8D 1F C7 04 50 48 D8 65 00 00 00
0040 | 04 70 91 90 AD 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 92 B3 AB 87 9C D0 52 FA F2 C6 C9 A1
0060 | E3 9B 43 25 8C 18 7A D8 2F 04 40 8B E1 B7 8F A9
0070 | 06 D9 32 8A C6 9E 06 F6 A7 BC BA F2 47 29 63 0F
0080 | 30 39 29 84 1F DB BD B9 0D F2 FD A5 5E 6F 33 BB
0090 | 89 D0 F0 07 43 66 76 A5 32 8D 97 F6 C7 E1 BC 16
00A0 | 44 7E 54 F9 CC 56 B3 45 F8 18 B2 42 16 FD 60 82
00B0 | 9E 52 63 EF F6 E9 E9 F8 5A 18 E3 CD 26 12 6E D3
00C0 | C1 CB B8 2C FF BF DC 00 2F 17 BF 40 E9 D4 5F DA
00D0 | 42 52 08 8A 45 6F DE 81 6C BD 33 DD 76 43 6B A0
00E0 | 14 32 3F 34 5F AF CA 01 6A 89 25 49 87 27 E6 3D
00F0 | DB A6 AD C6 3D B5 E5 B0 B1 12 7C 30 C8 68 70 A7
0100 | 0F 4D 46 58 EE 30 AE CB B7 DF 1F 62 CA BD 42 22
0110 | 2E 3B 81 BC 8A 72 9A 29 E0 FA 81 7B 7D 0D A4 0F
0120 | BA 70 24 56 BE F5 11 98 CF C6 0E 00 85 B3 BE 7E
0130 | BC 62 14 04 84 A3 7E 85 9C 60 1B 48 4F 06 C5 4A
0140 | 9A 65 34 2A 21 A8 F1 8F BB 53 45 F5 6D 3D AA B0
0150 | D7 91 D1 F2</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 = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>AC1B03002B91A266</code></td>
<td><code>78C00700701DA966</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 = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>0A1039860765902DFB0CACB7C56E4DD1</code></td>
<td><code>1B09A00AD2F02D7E1C096EE6378E2553</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>C9359CB9B3E5FDC9EDB5CC2B80599F26</code></td>
<td><code>2B286E1E25E47461D30BC42EC98D1FC7</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>046646AEE1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1715908321</td>
<td><code>045048D865000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1346951269</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>046F81CA9F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1870776991</td>
<td><code>04709190AD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1888587949</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 = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001004936B5905D07C165BB5F70F4</code> <code>54A400AE62F36EA466CD3789B1FE5D9F</code> <code>9D5A819637F6833F2A63DE96FC42118B</code> <code>654A71E8B97952400DDCD71D8C896A20</code> <code>DEDA04A13ED61991CC0F9EEDBC65F0CE</code> <code>F5B1009F76DCF1CEEBAEC4D9C72960E0</code> <code>850203189810402A33E317E5A959549C</code> <code>4242453B883D3BE0AAE7DBAE55665B74</code> <code>931ED0C0AA6FB21B143725B817FEC6C2</code> <code>556CBB49124311500FE348427433AE30</code> <code>2E47184A994726CCA192A1EEB9244FAF</code> <code>5CEC041F8AAF67D5B9217160656B4031</code> <code>FFBA23127B94F12A3EC809C69A2EF99C</code> <code>DFC1E0AB2762EB794C6EE3A85DC27F0F</code> <code>00CC4FCC61F1CC9ED28F92F876F3E7B8</code> <code>FAA4E93891A7EE64B39A293730F8BC3D</code><br> <code>03F7AE93</code></td>
<td><code>FE00010092B3AB879CD052FAF2C6C9A1</code> <code>E39B43258C187AD82F04408BE1B78FA9</code> <code>06D9328AC69E06F6A7BCBAF24729630F</code> <code>303929841FDBBDB90DF2FDA55E6F33BB</code> <code>89D0F007436676A5328D97F6C7E1BC16</code> <code>447E54F9CC56B345F818B24216FD6082</code> <code>9E5263EFF6E9E9F85A18E3CD26126ED3</code> <code>C1CBB82CFFBFDC002F17BF40E9D45FDA</code> <code>4252088A456FDE816CBD33DD76436BA0</code> <code>14323F345FAFCA016A8925498727E63D</code> <code>DBA6ADC63DB5E5B0B1127C30C86870A7</code> <code>0F4D4658EE30AECBB7DF1F62CABD4222</code> <code>2E3B81BC8A729A29E0FA817B7D0DA40F</code> <code>BA702456BEF51198CFC60E0085B3BE7E</code> <code>BC62140484A37E859C601B484F06C54A</code> <code>9A65342A21A8F18FBB5345F56D3DAAB0</code><br> <code>D791D1F2</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
<h5><a class="anchor" href="#6-server-responds-with" id="6-server-responds-with" name="6-server-responds-with"><i class="anchor-icon"></i></a>6) Server responds with:</h5>
<!-- start server_DH_params_ok -->
<p>Received payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 C8 BA F5 2B 91 A2 66
0010 | 88 02 00 00 5C 07 E8 D0 0A 10 39 86 07 65 90 2D
0020 | FB 0C AC B7 C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9
0030 | ED B5 CC 2B 80 59 9F 26 FE 50 02 00 50 79 4F F6
0040 | F5 15 C8 15 AE B8 2B 19 BB FD B1 40 17 BD 59 29
0050 | FC 83 EA A9 41 65 E2 21 F6 13 2F 04 E9 A1 D2 69
0060 | 07 7A 43 4C 3D 44 9F E8 ED 47 BA 5B 88 C8 62 E8
0070 | A7 22 1E 05 AF D6 31 22 C9 EB 5B 3A 80 08 2F 44
0080 | 1E F0 BE 61 17 E9 AF F9 FE 72 D6 DF EC B5 9F 4D
0090 | 78 50 70 60 E0 11 42 B0 F4 53 42 4E 26 C0 A7 7E
00A0 | 7A C8 14 11 D8 86 5F 01 3F F2 BE 0A F8 03 A3 AA
00B0 | 80 6F 2A 86 14 23 F2 83 4E D5 AF 67 69 8D B6 5D
00C0 | F8 25 5C 2A 1C BD 02 EA D0 B9 AB 07 64 47 50 FB
00D0 | 0E DB EF 41 ED CE E4 41 DD D9 94 70 A7 59 F5 53
00E0 | 0F B6 5E E0 ED 80 6F 00 06 FF 1F 65 E7 5F 13 F4
00F0 | 2E 0B 37 A5 6D 92 A3 CA CB 02 E8 BB 97 8B EB 33
0100 | D8 50 3F 46 D2 10 AC 2B 9A 13 24 6A E4 3A 0B BD
0110 | 38 C3 E9 8C 5D 00 48 97 FE 50 FA 9A D6 CA 19 E0
0120 | 76 BF 59 AF D2 C7 65 93 81 C3 42 D8 36 A9 E7 EA
0130 | A4 25 7E 42 12 60 23 3A 3A 2F 5C 08 A7 B6 91 E9
0140 | B0 C7 4A 7E 15 5A 47 3A 9E E1 F7 AA 24 DA 0B A1
0150 | ED 68 D3 F0 A9 E1 0B 87 9D 64 FC 37 49 E1 97 30
0160 | 2C 34 B7 BD 25 BD 83 40 8E 9E 49 63 AA D2 3C 7F
0170 | A9 ED A1 9E EE 5B AB 9D B3 EC 9E FB 40 97 12 60
0180 | 94 CA 2A 81 15 83 23 4F 79 AC AC 6D FD 71 3C 18
0190 | F6 90 5E A4 20 78 DA 22 7E 34 0F 34 3E 7C B3 3E
01A0 | 2D 12 6E B3 32 7B 13 81 36 78 51 17 8A 7A 1F 6D
01B0 | 34 B0 39 59 94 AE 50 9D BF AA BB AF B1 C8 CF 6A
01C0 | 44 31 BE C6 C0 C5 7C AC 6C 87 48 3F 49 1C 3D F8
01D0 | C7 50 24 68 7E 67 0F 11 FD B8 08 8E 71 CC CB 88
01E0 | 91 48 28 A4 EE 1B A3 12 8E 58 C1 32 B3 7F 2F B6
01F0 | EE 2D 30 51 CC FC 76 F1 95 BF 5D DC 0C EF DB B3
0200 | 93 AE 5A 23 40 54 52 19 1E F6 B7 3B 44 A2 4A D0
0210 | 45 08 10 18 AC 05 97 6D 6C 15 45 78 20 B7 45 0A
0220 | 65 6E 88 30 BB 5A 82 A5 29 51 1D F4 D9 2D C4 02
0230 | 95 C5 5B AD 0C 5F 97 FD 36 DB 04 1E FD 0A E0 B3
0240 | 20 D3 50 4D 00 72 3E 81 8D 8B B5 EC 76 B8 59 71
0250 | FC D9 B8 C3 A2 34 DE 92 5E 15 08 6A DE 56 4E 85
0260 | A9 1D 2E EA D7 30 52 E2 99 48 20 EE 60 D4 B8 5C
0270 | 21 25 20 94 CD BC 19 68 FE CE AD 84 DB 66 51 ED
0280 | FA 0B FB F9 EA BB CA 7E AC 80 16 B5</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 84 B7 9C 70 1D A9 66
0010 | F4 02 00 00 5C 07 E8 D0 1B 09 A0 0A D2 F0 2D 7E
0020 | 1C 09 6E E6 37 8E 25 53 2B 28 6E 1E 25 E4 74 61
0030 | D3 0B C4 2E C9 8D 1F C7 FE 50 02 00 DF F2 AB 83
0040 | F3 18 F2 D9 9F 8D BC B3 CB 16 C6 51 43 08 C8 D9
0050 | B2 F5 BE BD B0 3B 9D 3D 0B 6C D0 C6 B6 5A 01 DD
0060 | B4 C4 27 D2 01 CE 8A FC 4F AE 07 37 EB B1 46 26
0070 | 2F 12 09 AA 86 6E BB FF A7 C3 80 22 76 A4 1C D5
0080 | 66 54 2D 5D 61 CE 19 AE 3D C2 76 C6 3F 9D 48 24
0090 | 71 20 0B A0 F8 4D DA F9 D5 85 61 7F 22 81 5F 36
00A0 | 09 CE CA 39 7F 09 3D 73 D2 29 10 19 D9 9A 8E DD
00B0 | BE 68 E3 27 B9 8F A9 2C E9 42 F3 B7 5F 4D 03 4E
00C0 | D3 29 0B 56 B2 D6 E8 BA 8F 1D BD 40 11 92 BE 0E
00D0 | 3A 41 03 F5 37 CB CB F9 30 F6 9E 6A C2 9D 84 96
00E0 | FD 5C F5 A7 61 9D 6E 02 49 8F 42 9B A2 D2 64 1F
00F0 | 31 A8 4B 8F CF 31 F9 FA B3 F4 28 84 29 66 58 A0
0100 | 52 0C CB 42 46 DD A8 D2 D1 0D 55 DC CA 6D A7 B3
0110 | 81 17 09 FE 42 60 47 88 7D A3 0A F9 0C B3 E4 79
0120 | FC F2 CB 3F 38 E5 58 6E E3 33 A8 3D D4 D5 E2 5F
0130 | 57 D9 A0 62 B5 9B 8A DB 77 06 CF 3C AB E6 2C F5
0140 | EA 10 28 57 D4 3A 28 87 79 64 6B 5E CA C9 21 59
0150 | 23 FD 2B 09 34 04 94 31 6D F0 E0 D9 7B A3 66 D8
0160 | 3D 22 70 79 E4 8B 7C 02 19 AC 63 FD 50 6F 18 96
0170 | 79 00 DE C5 F1 5A 14 D7 D4 A0 3E 98 02 A6 4A 3B
0180 | EF E4 FD 95 7C 69 B6 D0 23 73 FD AD AB AF 63 0D
0190 | A5 47 84 E1 AC 50 C1 AA C3 88 E2 D5 13 B9 BD 10
01A0 | 64 7A F4 D9 32 33 5B 57 F2 D8 C4 E6 C3 55 FA 02
01B0 | 6C 8C 8F CE E2 08 77 C9 60 A4 2A 29 01 B8 BE AD
01C0 | 9A 3A CB 9B A5 D3 88 F2 82 D9 29 2F D3 7B A4 89
01D0 | 2D A6 9D 35 92 D2 C2 45 01 51 95 52 45 EB 89 6A
01E0 | 29 8D 85 2B 37 82 EC EF 9D 7D A5 FB 2A 08 15 F8
01F0 | 1D 72 FD 53 29 05 42 AE 57 77 50 5F B0 53 2C 0A
0200 | 8E 0A 1D D5 DB E3 B7 90 82 5A 1A 8B 31 90 0A 6A
0210 | 00 4A 79 05 75 7B 66 4B 69 AF 22 FD 73 88 C6 39
0220 | 87 5D BE 35 17 E0 3A 05 9F A6 64 C4 B3 B6 A6 51
0230 | D6 DD DC F8 EC 17 0B C1 D1 7B 78 78 4A 07 0B ED
0240 | 40 DE 5C F9 A9 4E 75 2A 93 00 EF CD 49 EF 68 F7
0250 | B0 CD E0 FE 80 43 16 5D E5 9E D4 6D 2A EA 0A 37
0260 | FA 78 9C 98 13 B0 71 4A 96 51 7F 63 60 06 97 AE
0270 | 85 A7 A0 A0 15 F9 7F 8B 33 57 62 06 E7 52 70 E6
0280 | AF 35 94 10 33 ED F1 3F 8B E1 F0 68</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;</code></pre>
<table class="table">
@ -464,13 +464,13 @@ random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01C8BAF52B91A266</code></td>
<td><code>0184B79C701DA966</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>88020000</code> (648 in decimal)</td>
<td><code>F4020000</code> (756 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>0A1039860765902DFB0CACB7C56E4DD1</code></td>
<td><code>1B09A00AD2F02D7E1C096EE6378E2553</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>C9359CB9B3E5FDC9EDB5CC2B80599F26</code></td>
<td><code>2B286E1E25E47461D30BC42EC98D1FC7</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE50020050794FF6F515C815AEB82B19</code> <code>BBFDB14017BD5929FC83EAA94165E221</code> <code>F6132F04E9A1D269077A434C3D449FE8</code> <code>ED47BA5B88C862E8A7221E05AFD63122</code> <code>C9EB5B3A80082F441EF0BE6117E9AFF9</code> <code>FE72D6DFECB59F4D78507060E01142B0</code> <code>F453424E26C0A77E7AC81411D8865F01</code> <code>3FF2BE0AF803A3AA806F2A861423F283</code> <code>4ED5AF67698DB65DF8255C2A1CBD02EA</code> <code>D0B9AB07644750FB0EDBEF41EDCEE441</code> <code>DDD99470A759F5530FB65EE0ED806F00</code> <code>06FF1F65E75F13F42E0B37A56D92A3CA</code> <code>CB02E8BB978BEB33D8503F46D210AC2B</code> <code>9A13246AE43A0BBD38C3E98C5D004897</code> <code>FE50FA9AD6CA19E076BF59AFD2C76593</code> <code>81C342D836A9E7EAA4257E421260233A</code> <code>3A2F5C08A7B691E9B0C74A7E155A473A</code> <code>9EE1F7AA24DA0BA1ED68D3F0A9E10B87</code> <code>9D64FC3749E197302C34B7BD25BD8340</code> <code>8E9E4963AAD23C7FA9EDA19EEE5BAB9D</code> <code>B3EC9EFB4097126094CA2A811583234F</code> <code>79ACAC6DFD713C18F6905EA42078DA22</code> <code>7E340F343E7CB33E2D126EB3327B1381</code> <code>367851178A7A1F6D34B0395994AE509D</code> <code>BFAABBAFB1C8CF6A4431BEC6C0C57CAC</code> <code>6C87483F491C3DF8C75024687E670F11</code> <code>FDB8088E71CCCB88914828A4EE1BA312</code> <code>8E58C132B37F2FB6EE2D3051CCFC76F1</code> <code>95BF5DDC0CEFDBB393AE5A2340545219</code> <code>1EF6B73B44A24AD045081018AC05976D</code> <code>6C15457820B7450A656E8830BB5A82A5</code> <code>29511DF4D92DC40295C55BAD0C5F97FD</code> <code>36DB041EFD0AE0B320D3504D00723E81</code> <code>8D8BB5EC76B85971FCD9B8C3A234DE92</code> <code>5E15086ADE564E85A91D2EEAD73052E2</code> <code>994820EE60D4B85C21252094CDBC1968</code> <code>FECEAD84DB6651EDFA0BFBF9EABBCA7E</code><br> <code>AC8016B5</code></td>
<td><code>FE500200DFF2AB83F318F2D99F8DBCB3</code> <code>CB16C6514308C8D9B2F5BEBDB03B9D3D</code> <code>0B6CD0C6B65A01DDB4C427D201CE8AFC</code> <code>4FAE0737EBB146262F1209AA866EBBFF</code> <code>A7C3802276A41CD566542D5D61CE19AE</code> <code>3DC276C63F9D482471200BA0F84DDAF9</code> <code>D585617F22815F3609CECA397F093D73</code> <code>D2291019D99A8EDDBE68E327B98FA92C</code> <code>E942F3B75F4D034ED3290B56B2D6E8BA</code> <code>8F1DBD401192BE0E3A4103F537CBCBF9</code> <code>30F69E6AC29D8496FD5CF5A7619D6E02</code> <code>498F429BA2D2641F31A84B8FCF31F9FA</code> <code>B3F42884296658A0520CCB4246DDA8D2</code> <code>D10D55DCCA6DA7B3811709FE42604788</code> <code>7DA30AF90CB3E479FCF2CB3F38E5586E</code> <code>E333A83DD4D5E25F57D9A062B59B8ADB</code> <code>7706CF3CABE62CF5EA102857D43A2887</code> <code>79646B5ECAC9215923FD2B0934049431</code> <code>6DF0E0D97BA366D83D227079E48B7C02</code> <code>19AC63FD506F18967900DEC5F15A14D7</code> <code>D4A03E9802A64A3BEFE4FD957C69B6D0</code> <code>2373FDADABAF630DA54784E1AC50C1AA</code> <code>C388E2D513B9BD10647AF4D932335B57</code> <code>F2D8C4E6C355FA026C8C8FCEE20877C9</code> <code>60A42A2901B8BEAD9A3ACB9BA5D388F2</code> <code>82D9292FD37BA4892DA69D3592D2C245</code> <code>0151955245EB896A298D852B3782ECEF</code> <code>9D7DA5FB2A0815F81D72FD53290542AE</code> <code>5777505FB0532C0A8E0A1DD5DBE3B790</code> <code>825A1A8B31900A6A004A7905757B664B</code> <code>69AF22FD7388C639875DBE3517E03A05</code> <code>9FA664C4B3B6A651D6DDDCF8EC170BC1</code> <code>D17B78784A070BED40DE5CF9A94E752A</code> <code>9300EFCD49EF68F7B0CDE0FE8043165D</code> <code>E59ED46D2AEA0A37FA789C9813B0714A</code> <code>96517F63600697AE85A7A0A015F97F8B</code> <code>33576206E75270E6AF35941033EDF13F</code><br> <code>8BE1F068</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
<!-- 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 = 50794FF6F515C815AEB82B19BBFDB14017BD5929FC83EAA94165E221F6132F04E9A1D269077A434C3D449FE8ED47BA5B88C862E8A7221E05AFD63122C9EB5B3A80082F441EF0BE6117E9AFF9FE72D6DFECB59F4D78507060E01142B0F453424E26C0A77E7AC81411D8865F013FF2BE0AF803A3AA806F2A861423F2834ED5AF67698DB65DF8255C2A1CBD02EAD0B9AB07644750FB0EDBEF41EDCEE441DDD99470A759F5530FB65EE0ED806F0006FF1F65E75F13F42E0B37A56D92A3CACB02E8BB978BEB33D8503F46D210AC2B9A13246AE43A0BBD38C3E98C5D004897FE50FA9AD6CA19E076BF59AFD2C7659381C342D836A9E7EAA4257E421260233A3A2F5C08A7B691E9B0C74A7E155A473A9EE1F7AA24DA0BA1ED68D3F0A9E10B879D64FC3749E197302C34B7BD25BD83408E9E4963AAD23C7FA9EDA19EEE5BAB9DB3EC9EFB4097126094CA2A811583234F79ACAC6DFD713C18F6905EA42078DA227E340F343E7CB33E2D126EB3327B1381367851178A7A1F6D34B0395994AE509DBFAABBAFB1C8CF6A4431BEC6C0C57CAC6C87483F491C3DF8C75024687E670F11FDB8088E71CCCB88914828A4EE1BA3128E58C132B37F2FB6EE2D3051CCFC76F195BF5DDC0CEFDBB393AE5A23405452191EF6B73B44A24AD045081018AC05976D6C15457820B7450A656E8830BB5A82A529511DF4D92DC40295C55BAD0C5F97FD36DB041EFD0AE0B320D3504D00723E818D8BB5EC76B85971FCD9B8C3A234DE925E15086ADE564E85A91D2EEAD73052E2994820EE60D4B85C21252094CDBC1968FECEAD84DB6651EDFA0BFBF9EABBCA7EAC8016B5
tmp_aes_key = CF42CE543CA64B8450A2858436C60B94FF825A523F7C2B217DEBFEDD120851B6
tmp_aes_iv = 672B46D3963F476DFB337FE5A0F2947764124A707F0F751671B2EF291087BDAD</code></pre>
<pre><code>encrypted_answer = DFF2AB83F318F2D99F8DBCB3CB16C6514308C8D9B2F5BEBDB03B9D3D0B6CD0C6B65A01DDB4C427D201CE8AFC4FAE0737EBB146262F1209AA866EBBFFA7C3802276A41CD566542D5D61CE19AE3DC276C63F9D482471200BA0F84DDAF9D585617F22815F3609CECA397F093D73D2291019D99A8EDDBE68E327B98FA92CE942F3B75F4D034ED3290B56B2D6E8BA8F1DBD401192BE0E3A4103F537CBCBF930F69E6AC29D8496FD5CF5A7619D6E02498F429BA2D2641F31A84B8FCF31F9FAB3F42884296658A0520CCB4246DDA8D2D10D55DCCA6DA7B3811709FE426047887DA30AF90CB3E479FCF2CB3F38E5586EE333A83DD4D5E25F57D9A062B59B8ADB7706CF3CABE62CF5EA102857D43A288779646B5ECAC9215923FD2B09340494316DF0E0D97BA366D83D227079E48B7C0219AC63FD506F18967900DEC5F15A14D7D4A03E9802A64A3BEFE4FD957C69B6D02373FDADABAF630DA54784E1AC50C1AAC388E2D513B9BD10647AF4D932335B57F2D8C4E6C355FA026C8C8FCEE20877C960A42A2901B8BEAD9A3ACB9BA5D388F282D9292FD37BA4892DA69D3592D2C2450151955245EB896A298D852B3782ECEF9D7DA5FB2A0815F81D72FD53290542AE5777505FB0532C0A8E0A1DD5DBE3B790825A1A8B31900A6A004A7905757B664B69AF22FD7388C639875DBE3517E03A059FA664C4B3B6A651D6DDDCF8EC170BC1D17B78784A070BED40DE5CF9A94E752A9300EFCD49EF68F7B0CDE0FE8043165DE59ED46D2AEA0A37FA789C9813B0714A96517F63600697AE85A7A0A015F97F8B33576206E75270E6AF35941033EDF13F8BE1F068
tmp_aes_key = BF8FF67F42007055B61FAE3671FBA3AF607DF251913CF366DE0BA460421C070B
tmp_aes_iv = 2D68123E7ACC27D87F65F78C0E79A4322ADE8167C038837EE3CF90242D36E3CA</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 56D52B1FE4961315681D5CCC0AF1CE7F6099165EBA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010073A185573E261B72086F130E6CF8BD8F6628575E840FABD8E422B65EF77AA31E7DC312263D43852BC5BD169FB181A6F79AED9A7D777D199D8F5998E2767680CBB4B038687EF52D6221688A39476F5167175211D52E3C774161C2E64448DC92ECFC123058AB29EC8F481FA99F779DCD48FB83942AB1F72FDAAFC3009629FF47BEE6C9DBEEB915CDEA6FB825E64BA3EA32E7C1D4BA7569A6D7C8F4BC9FB2DF84759412B6E78F219274833071BCF440437D6042A5C51DFE8217E0C15EDF03F9A9D181C922DDB8DD139E538860AA83B35799984E6680658DC0173E53B5746E03714312FA93D0ED398C7158093442CD650134C3C6DF5C98CB8E4494FBA2DEE763F36B2B91A266E701676115091A16
answer = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010073A185573E261B72086F130E6CF8BD8F6628575E840FABD8E422B65EF77AA31E7DC312263D43852BC5BD169FB181A6F79AED9A7D777D199D8F5998E2767680CBB4B038687EF52D6221688A39476F5167175211D52E3C774161C2E64448DC92ECFC123058AB29EC8F481FA99F779DCD48FB83942AB1F72FDAAFC3009629FF47BEE6C9DBEEB915CDEA6FB825E64BA3EA32E7C1D4BA7569A6D7C8F4BC9FB2DF84759412B6E78F219274833071BCF440437D6042A5C51DFE8217E0C15EDF03F9A9D181C922DDB8DD139E538860AA83B35799984E6680658DC0173E53B5746E03714312FA93D0ED398C7158093442CD650134C3C6DF5C98CB8E4494FBA2DEE763F36B2B91A266E701676115091A16</code></pre>
<pre><code>answer_with_hash = 238E6CEA29AFA41F508619EC043179DB59372EEEBA0D89B51B09A00AD2F02D7E1C096EE6378E25532B286E1E25E47461D30BC42EC98D1FC703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100353086B5320D6D2ADFBBCF3E38188758836182EFF9E322C4ECCDA84589EB39E6AF37FCA53C050EACA31778DA6753B12507D57597073C5150895F0A181D25071D1B0B7D1C7DCDE99DF8069B1E795FA281082E4E16C0D3078C2867D58D8DE4E57122A960366DA5C4CA552FA22F413E8F958F91A7D4AE75D1957D9F5526E592C79EC052ADD1D6FBC2301EB7D3AB7A47C5643B0ACAAB09755AC14878EB0244F01F41A35302AC03619D62FB65E434E8390891C0517B7D3C77FF8016836B9D291BD10F269016F284FDED3A295B5753EFC3A6A79326314425973FD6FBDC464CC310A210AB138E69A987F90425A92C5D5C7BED21DA71ECEF6760656C244815F5455FC95B701DA9660A5EE20EAF966551
answer = BA0D89B51B09A00AD2F02D7E1C096EE6378E25532B286E1E25E47461D30BC42EC98D1FC703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100353086B5320D6D2ADFBBCF3E38188758836182EFF9E322C4ECCDA84589EB39E6AF37FCA53C050EACA31778DA6753B12507D57597073C5150895F0A181D25071D1B0B7D1C7DCDE99DF8069B1E795FA281082E4E16C0D3078C2867D58D8DE4E57122A960366DA5C4CA552FA22F413E8F958F91A7D4AE75D1957D9F5526E592C79EC052ADD1D6FBC2301EB7D3AB7A47C5643B0ACAAB09755AC14878EB0244F01F41A35302AC03619D62FB65E434E8390891C0517B7D3C77FF8016836B9D291BD10F269016F284FDED3A295B5753EFC3A6A79326314425973FD6FBDC464CC310A210AB138E69A987F90425A92C5D5C7BED21DA71ECEF6760656C244815F5455FC95B701DA9660A5EE20EAF966551</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 0A 10 39 86 07 65 90 2D FB 0C AC B7
0010 | C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9 ED B5 CC 2B
0020 | 80 59 9F 26 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 1B 09 A0 0A D2 F0 2D 7E 1C 09 6E E6
0010 | 37 8E 25 53 2B 28 6E 1E 25 E4 74 61 D3 0B C4 2E
0020 | C9 8D 1F C7 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 = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
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 | 73 A1 85 57 3E 26 1B 72 08 6F 13 0E 6C F8 BD 8F
0140 | 66 28 57 5E 84 0F AB D8 E4 22 B6 5E F7 7A A3 1E
0150 | 7D C3 12 26 3D 43 85 2B C5 BD 16 9F B1 81 A6 F7
0160 | 9A ED 9A 7D 77 7D 19 9D 8F 59 98 E2 76 76 80 CB
0170 | B4 B0 38 68 7E F5 2D 62 21 68 8A 39 47 6F 51 67
0180 | 17 52 11 D5 2E 3C 77 41 61 C2 E6 44 48 DC 92 EC
0190 | FC 12 30 58 AB 29 EC 8F 48 1F A9 9F 77 9D CD 48
01A0 | FB 83 94 2A B1 F7 2F DA AF C3 00 96 29 FF 47 BE
01B0 | E6 C9 DB EE B9 15 CD EA 6F B8 25 E6 4B A3 EA 32
01C0 | E7 C1 D4 BA 75 69 A6 D7 C8 F4 BC 9F B2 DF 84 75
01D0 | 94 12 B6 E7 8F 21 92 74 83 30 71 BC F4 40 43 7D
01E0 | 60 42 A5 C5 1D FE 82 17 E0 C1 5E DF 03 F9 A9 D1
01F0 | 81 C9 22 DD B8 DD 13 9E 53 88 60 AA 83 B3 57 99
0200 | 98 4E 66 80 65 8D C0 17 3E 53 B5 74 6E 03 71 43
0210 | 12 FA 93 D0 ED 39 8C 71 58 09 34 42 CD 65 01 34
0220 | C3 C6 DF 5C 98 CB 8E 44 94 FB A2 DE E7 63 F3 6B
0230 | 2B 91 A2 66</code></pre>
0130 | 35 30 86 B5 32 0D 6D 2A DF BB CF 3E 38 18 87 58
0140 | 83 61 82 EF F9 E3 22 C4 EC CD A8 45 89 EB 39 E6
0150 | AF 37 FC A5 3C 05 0E AC A3 17 78 DA 67 53 B1 25
0160 | 07 D5 75 97 07 3C 51 50 89 5F 0A 18 1D 25 07 1D
0170 | 1B 0B 7D 1C 7D CD E9 9D F8 06 9B 1E 79 5F A2 81
0180 | 08 2E 4E 16 C0 D3 07 8C 28 67 D5 8D 8D E4 E5 71
0190 | 22 A9 60 36 6D A5 C4 CA 55 2F A2 2F 41 3E 8F 95
01A0 | 8F 91 A7 D4 AE 75 D1 95 7D 9F 55 26 E5 92 C7 9E
01B0 | C0 52 AD D1 D6 FB C2 30 1E B7 D3 AB 7A 47 C5 64
01C0 | 3B 0A CA AB 09 75 5A C1 48 78 EB 02 44 F0 1F 41
01D0 | A3 53 02 AC 03 61 9D 62 FB 65 E4 34 E8 39 08 91
01E0 | C0 51 7B 7D 3C 77 FF 80 16 83 6B 9D 29 1B D1 0F
01F0 | 26 90 16 F2 84 FD ED 3A 29 5B 57 53 EF C3 A6 A7
0200 | 93 26 31 44 25 97 3F D6 FB DC 46 4C C3 10 A2 10
0210 | AB 13 8E 69 A9 87 F9 04 25 A9 2C 5D 5C 7B ED 21
0220 | DA 71 EC EF 67 60 65 6C 24 48 15 F5 45 5F C9 5B
0230 | 70 1D A9 66</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>0A1039860765902DFB0CACB7C56E4DD1</code></td>
<td><code>1B09A00AD2F02D7E1C096EE6378E2553</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>C9359CB9B3E5FDC9EDB5CC2B80599F26</code></td>
<td><code>2B286E1E25E47461D30BC42EC98D1FC7</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE00010073A185573E261B72086F130E</code> <code>6CF8BD8F6628575E840FABD8E422B65E</code> <code>F77AA31E7DC312263D43852BC5BD169F</code> <code>B181A6F79AED9A7D777D199D8F5998E2</code> <code>767680CBB4B038687EF52D6221688A39</code> <code>476F5167175211D52E3C774161C2E644</code> <code>48DC92ECFC123058AB29EC8F481FA99F</code> <code>779DCD48FB83942AB1F72FDAAFC30096</code> <code>29FF47BEE6C9DBEEB915CDEA6FB825E6</code> <code>4BA3EA32E7C1D4BA7569A6D7C8F4BC9F</code> <code>B2DF84759412B6E78F219274833071BC</code> <code>F440437D6042A5C51DFE8217E0C15EDF</code> <code>03F9A9D181C922DDB8DD139E538860AA</code> <code>83B35799984E6680658DC0173E53B574</code> <code>6E03714312FA93D0ED398C7158093442</code> <code>CD650134C3C6DF5C98CB8E4494FBA2DE</code><br> <code>E763F36B</code></td>
<td><code>FE000100353086B5320D6D2ADFBBCF3E</code> <code>38188758836182EFF9E322C4ECCDA845</code> <code>89EB39E6AF37FCA53C050EACA31778DA</code> <code>6753B12507D57597073C5150895F0A18</code> <code>1D25071D1B0B7D1C7DCDE99DF8069B1E</code> <code>795FA281082E4E16C0D3078C2867D58D</code> <code>8DE4E57122A960366DA5C4CA552FA22F</code> <code>413E8F958F91A7D4AE75D1957D9F5526</code> <code>E592C79EC052ADD1D6FBC2301EB7D3AB</code> <code>7A47C5643B0ACAAB09755AC14878EB02</code> <code>44F01F41A35302AC03619D62FB65E434</code> <code>E8390891C0517B7D3C77FF8016836B9D</code> <code>291BD10F269016F284FDED3A295B5753</code> <code>EFC3A6A79326314425973FD6FBDC464C</code> <code>C310A210AB138E69A987F90425A92C5D</code> <code>5C7BED21DA71ECEF6760656C244815F5</code><br> <code>455FC95B</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>2B91A266</code> (1721930027 in decimal)</td>
<td><code>701DA966</code> (1722359152 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
<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 = E5AFB9BD1A8109B130D03FEA6DFD0FD35F43F5274812B439FD03FFD5C9F1198FA69356AB11FD14CBACE9D880706648EC6FC4C30A9B64E2715493F41A5878E46953CA3ABDDEFC785ED9520025F46589EA3F510DF9CBBC00C68E5662496B20A6AE65FFDBA3129F181EEC911239E56A0072390465C8E23D81FB8A7B8C97E3551E27FDCBB2ADA5ACD6BB85D83567F7CAC988292050BE57CA777BA270DBBD261425C2FE46B4B13E21E58DACB8669DDA31BD4E60A7D89C4B564C7AF7CD6E02E2277D01C7F5CFBB85CDB44F085738DEE5C28EDD1FE30921CD8AE5341AA44CFE3B20EB158D06BA71ACF535A9E365D3CDBB87B38CDDA60600B6FCFA20526A286663C10A69</code></pre>
<pre><code>b = C50B014B940357684175E3F98827022D9D690611C4B50ACEB30167B0BD71C1D0D93B1FB077B0033298D55D269D26BDDA90D21FDAAD2C71387FB9E8E10883147BBDB4BCF1F7218DFFA0FC619578460A108343A174D73DF72294DBCFAB78B657B29B13F503A51D48BBCEEC273B13DA839C8556471D883DC9991931A5CBA9E77A1D2BD493DC097BE3E98E8D634E26E684EFF957D4093E01F8EA80A37FDF9657ECE73C41C9F0D9F47935D22F21C5F3B869A38A4322C2B57CAA4E8564A8DE38A41DAFEAC81DC8B47115EF1CBAA3E32DD36A93FF5D1994B9A060E0A1E2A84766EC1FA266AF4E7F4AE27B8C6D2556D57346CB7D5AB960975EF6EA6BE0DB2BF3095150E9</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 = 86E93E1DF1F8460AE26C7A848264DBFF888F6126739A56EA5DD6C0788CC7F52A594F58ECED2C2E2005E5D2BF14503970BC4D9833CDCEB97A57E2E3EDDF3A7684C2A11AF274DD99760D4EFEDACF5B04F55BB215FA2A3F672D57CC3A3D9A13657FA6C33B81646A4B7353D5A9310EA25BB850932969E98B244B80C98E33BD3B9F884B03FB4751FB6B12E14B17362A89508F6E2044396AE62A08F24015FB583C7B7151807D88966CF4D6113D22A8CB2020B8765F9F8F244D4E38FDD66B806347FBC1C3FC8D3FA0B645611237104A469B8160A7817A36B87AB641C9540D5C6823A6E390D9A8C247DD89B8F4653F26800174BF6FE88CF7B61E4F653422FA19188FE3D4</code></pre>
<pre><code>g_b = 5BB8E71133D532E21ECEC093F121C606EA2703CF4544B34DBFA5ED57D94186BCCBFA1E1E1A0F4681518D21568CBA2A4D5B0650525D662B8D0631D10B697C0BFE71E35E798B925904EDD66EEF684927DDB490CC98CC6ADCC76A75ACCC698EFBDA1BD415D4E9E14B4A570E56DB3964B1C1D86601A3EBBF6F55FC92D7313FD8F9F17EC84386D9D7E2BFA47A318ACC094B4E75D38AAB017423EC8EA025B23FE03B3F4793AFAECB810A35077996BA424368DE5F24CCE33BA8958E86BB56A5F49E0412C02E46F7A39E2C50442CC2A0E46A0F736D04F56175CF52570C8CC661FEEDA2F4EAC223D71B10C7E78C2C7D86B28252F72B29649A488A29E9B0D3ABA238AA2EF7</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 0A 10 39 86 07 65 90 2D FB 0C AC B7
0010 | C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9 ED B5 CC 2B
0020 | 80 59 9F 26 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 86 E9 3E 1D F1 F8 46 0A E2 6C 7A 84 82 64 DB FF
0040 | 88 8F 61 26 73 9A 56 EA 5D D6 C0 78 8C C7 F5 2A
0050 | 59 4F 58 EC ED 2C 2E 20 05 E5 D2 BF 14 50 39 70
0060 | BC 4D 98 33 CD CE B9 7A 57 E2 E3 ED DF 3A 76 84
0070 | C2 A1 1A F2 74 DD 99 76 0D 4E FE DA CF 5B 04 F5
0080 | 5B B2 15 FA 2A 3F 67 2D 57 CC 3A 3D 9A 13 65 7F
0090 | A6 C3 3B 81 64 6A 4B 73 53 D5 A9 31 0E A2 5B B8
00A0 | 50 93 29 69 E9 8B 24 4B 80 C9 8E 33 BD 3B 9F 88
00B0 | 4B 03 FB 47 51 FB 6B 12 E1 4B 17 36 2A 89 50 8F
00C0 | 6E 20 44 39 6A E6 2A 08 F2 40 15 FB 58 3C 7B 71
00D0 | 51 80 7D 88 96 6C F4 D6 11 3D 22 A8 CB 20 20 B8
00E0 | 76 5F 9F 8F 24 4D 4E 38 FD D6 6B 80 63 47 FB C1
00F0 | C3 FC 8D 3F A0 B6 45 61 12 37 10 4A 46 9B 81 60
0100 | A7 81 7A 36 B8 7A B6 41 C9 54 0D 5C 68 23 A6 E3
0110 | 90 D9 A8 C2 47 DD 89 B8 F4 65 3F 26 80 01 74 BF
0120 | 6F E8 8C F7 B6 1E 4F 65 34 22 FA 19 18 8F E3 D4</code></pre>
<pre><code>0000 | 54 B6 43 66 1B 09 A0 0A D2 F0 2D 7E 1C 09 6E E6
0010 | 37 8E 25 53 2B 28 6E 1E 25 E4 74 61 D3 0B C4 2E
0020 | C9 8D 1F C7 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 5B B8 E7 11 33 D5 32 E2 1E CE C0 93 F1 21 C6 06
0040 | EA 27 03 CF 45 44 B3 4D BF A5 ED 57 D9 41 86 BC
0050 | CB FA 1E 1E 1A 0F 46 81 51 8D 21 56 8C BA 2A 4D
0060 | 5B 06 50 52 5D 66 2B 8D 06 31 D1 0B 69 7C 0B FE
0070 | 71 E3 5E 79 8B 92 59 04 ED D6 6E EF 68 49 27 DD
0080 | B4 90 CC 98 CC 6A DC C7 6A 75 AC CC 69 8E FB DA
0090 | 1B D4 15 D4 E9 E1 4B 4A 57 0E 56 DB 39 64 B1 C1
00A0 | D8 66 01 A3 EB BF 6F 55 FC 92 D7 31 3F D8 F9 F1
00B0 | 7E C8 43 86 D9 D7 E2 BF A4 7A 31 8A CC 09 4B 4E
00C0 | 75 D3 8A AB 01 74 23 EC 8E A0 25 B2 3F E0 3B 3F
00D0 | 47 93 AF AE CB 81 0A 35 07 79 96 BA 42 43 68 DE
00E0 | 5F 24 CC E3 3B A8 95 8E 86 BB 56 A5 F4 9E 04 12
00F0 | C0 2E 46 F7 A3 9E 2C 50 44 2C C2 A0 E4 6A 0F 73
0100 | 6D 04 F5 61 75 CF 52 57 0C 8C C6 61 FE ED A2 F4
0110 | EA C2 23 D7 1B 10 C7 E7 8C 2C 7D 86 B2 82 52 F7
0120 | 2B 29 64 9A 48 8A 29 E9 B0 D3 AB A2 38 AA 2E F7</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 = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>0A1039860765902DFB0CACB7C56E4DD1</code></td>
<td><code>1B09A00AD2F02D7E1C096EE6378E2553</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>C9359CB9B3E5FDC9EDB5CC2B80599F26</code></td>
<td><code>2B286E1E25E47461D30BC42EC98D1FC7</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE00010086E93E1DF1F8460AE26C7A84</code> <code>8264DBFF888F6126739A56EA5DD6C078</code> <code>8CC7F52A594F58ECED2C2E2005E5D2BF</code> <code>14503970BC4D9833CDCEB97A57E2E3ED</code> <code>DF3A7684C2A11AF274DD99760D4EFEDA</code> <code>CF5B04F55BB215FA2A3F672D57CC3A3D</code> <code>9A13657FA6C33B81646A4B7353D5A931</code> <code>0EA25BB850932969E98B244B80C98E33</code> <code>BD3B9F884B03FB4751FB6B12E14B1736</code> <code>2A89508F6E2044396AE62A08F24015FB</code> <code>583C7B7151807D88966CF4D6113D22A8</code> <code>CB2020B8765F9F8F244D4E38FDD66B80</code> <code>6347FBC1C3FC8D3FA0B645611237104A</code> <code>469B8160A7817A36B87AB641C9540D5C</code> <code>6823A6E390D9A8C247DD89B8F4653F26</code> <code>800174BF6FE88CF7B61E4F653422FA19</code><br> <code>188FE3D4</code></td>
<td><code>FE0001005BB8E71133D532E21ECEC093</code> <code>F121C606EA2703CF4544B34DBFA5ED57</code> <code>D94186BCCBFA1E1E1A0F4681518D2156</code> <code>8CBA2A4D5B0650525D662B8D0631D10B</code> <code>697C0BFE71E35E798B925904EDD66EEF</code> <code>684927DDB490CC98CC6ADCC76A75ACCC</code> <code>698EFBDA1BD415D4E9E14B4A570E56DB</code> <code>3964B1C1D86601A3EBBF6F55FC92D731</code> <code>3FD8F9F17EC84386D9D7E2BFA47A318A</code> <code>CC094B4E75D38AAB017423EC8EA025B2</code> <code>3FE03B3F4793AFAECB810A35077996BA</code> <code>424368DE5F24CCE33BA8958E86BB56A5</code> <code>F49E0412C02E46F7A39E2C50442CC2A0</code> <code>E46A0F736D04F56175CF52570C8CC661</code> <code>FEEDA2F4EAC223D71B10C7E78C2C7D86</code> <code>B28252F72B29649A488A29E9B0D3ABA2</code><br> <code>38AA2EF7</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 = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
<!-- 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 = 54B643660A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F260000000000000000FE00010086E93E1DF1F8460AE26C7A848264DBFF888F6126739A56EA5DD6C0788CC7F52A594F58ECED2C2E2005E5D2BF14503970BC4D9833CDCEB97A57E2E3EDDF3A7684C2A11AF274DD99760D4EFEDACF5B04F55BB215FA2A3F672D57CC3A3D9A13657FA6C33B81646A4B7353D5A9310EA25BB850932969E98B244B80C98E33BD3B9F884B03FB4751FB6B12E14B17362A89508F6E2044396AE62A08F24015FB583C7B7151807D88966CF4D6113D22A8CB2020B8765F9F8F244D4E38FDD66B806347FBC1C3FC8D3FA0B645611237104A469B8160A7817A36B87AB641C9540D5C6823A6E390D9A8C247DD89B8F4653F26800174BF6FE88CF7B61E4F653422FA19188FE3D4
padding = 46AE79AED34A2D759CB0EB9F
tmp_aes_key = CF42CE543CA64B8450A2858436C60B94FF825A523F7C2B217DEBFEDD120851B6
tmp_aes_iv = 672B46D3963F476DFB337FE5A0F2947764124A707F0F751671B2EF291087BDAD</code></pre>
<pre><code>data = 54B643661B09A00AD2F02D7E1C096EE6378E25532B286E1E25E47461D30BC42EC98D1FC70000000000000000FE0001005BB8E71133D532E21ECEC093F121C606EA2703CF4544B34DBFA5ED57D94186BCCBFA1E1E1A0F4681518D21568CBA2A4D5B0650525D662B8D0631D10B697C0BFE71E35E798B925904EDD66EEF684927DDB490CC98CC6ADCC76A75ACCC698EFBDA1BD415D4E9E14B4A570E56DB3964B1C1D86601A3EBBF6F55FC92D7313FD8F9F17EC84386D9D7E2BFA47A318ACC094B4E75D38AAB017423EC8EA025B23FE03B3F4793AFAECB810A35077996BA424368DE5F24CCE33BA8958E86BB56A5F49E0412C02E46F7A39E2C50442CC2A0E46A0F736D04F56175CF52570C8CC661FEEDA2F4EAC223D71B10C7E78C2C7D86B28252F72B29649A488A29E9B0D3ABA238AA2EF7
padding = C114FC8E454401EBFCD3AADA
tmp_aes_key = BF8FF67F42007055B61FAE3671FBA3AF607DF251913CF366DE0BA460421C070B
tmp_aes_iv = 2D68123E7ACC27D87F65F78C0E79A4322ADE8167C038837EE3CF90242D36E3CA</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 = 7406AD67E426A062396063968F85D25F714A3396284EDBDFB8F8E9770DCA96A9CCC3C9A3EF2C3701CC59F6C9B1BE398AA3DCEA461ED5B7DA12A4001BC1F4E863869CF873F8A7839273F2779C301412E07B468D6AA574EBB8072FD09C1FE371448ACA7EDD7E7FBC57FD7721C1CCEDD095948A4DD79C80322190808EE622DC1E7DBEE9E9FB3AB76644F486C772ACF8822DCB16C61B205807D3ABA6CF46B4EF34DF8F00EF953D910ABE4CEA362D454B8788814FB0C1BAB3E2E1EDF5355111013E0C1CFB12075AF3F060BDBECE57EC654D1A235F4890C94F4B7D3422F58BF4A627A9357FC87A50F5205A39B1C783A45CF7E30CDAD60FAB5CC5019AE31DF7C5A632BC1010BF988C2E927690DA854CB12295CC97A9FDCA968CC0EA2B69FB1F2BEE68A44156BE6889DFEA563FC1E7F0923DCEF99F58256D20C633BDEBD050C24551E1539F3450867F3EBACAE4EE128493855C00</code></pre>
<pre><code>encrypted_data = A2F0334D96B6EB07B0D1A07AEFD51165EC2EBE8FDA475F17046A2105C68645E86371887BEA1C18BFE96A55866876A70591E66279724CF9CE6FDE5CC7CD01699067D9876055A147517D0CC9B06CC44540D888A978D9264074BC0A5BE53B04516A997851EBFEB6B5ECD5B0E2D1CCB0335E676D55BD41BA7F9FE32C4CE61379132AB8F947815B5C55DEF0EECB24C9A1B0A6D18F0D908FF785EDB3E3FF45C29EA0D5F5CFD4EE13A0B313B7EA578384CD61E09B188B90E126713753693D350E6CA457C346B245B2A255002D8B2C15F910E9BCB914404CB465751E04D24D13B37BA881949F91EC0FE5CB4CC4E5FF47F7ECE36CB31C02414A9392BA4CBC80BEC449CC279DE6F0FBC72E1B3B2F79D607C08F33808401EFC300B75EBAFB004343B15ABA06D3A95740E217C6707EE6F17749970A86803C310A2A6BB2F793FDDC972783351E94FC061F9FBD357C5D55BEAEDFCD236F</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 54 8F 07 00 2C 91 A2 66
0010 | 78 01 00 00 1F 5F 04 F5 0A 10 39 86 07 65 90 2D
0020 | FB 0C AC B7 C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9
0030 | ED B5 CC 2B 80 59 9F 26 FE 50 01 00 74 06 AD 67
0040 | E4 26 A0 62 39 60 63 96 8F 85 D2 5F 71 4A 33 96
0050 | 28 4E DB DF B8 F8 E9 77 0D CA 96 A9 CC C3 C9 A3
0060 | EF 2C 37 01 CC 59 F6 C9 B1 BE 39 8A A3 DC EA 46
0070 | 1E D5 B7 DA 12 A4 00 1B C1 F4 E8 63 86 9C F8 73
0080 | F8 A7 83 92 73 F2 77 9C 30 14 12 E0 7B 46 8D 6A
0090 | A5 74 EB B8 07 2F D0 9C 1F E3 71 44 8A CA 7E DD
00A0 | 7E 7F BC 57 FD 77 21 C1 CC ED D0 95 94 8A 4D D7
00B0 | 9C 80 32 21 90 80 8E E6 22 DC 1E 7D BE E9 E9 FB
00C0 | 3A B7 66 44 F4 86 C7 72 AC F8 82 2D CB 16 C6 1B
00D0 | 20 58 07 D3 AB A6 CF 46 B4 EF 34 DF 8F 00 EF 95
00E0 | 3D 91 0A BE 4C EA 36 2D 45 4B 87 88 81 4F B0 C1
00F0 | BA B3 E2 E1 ED F5 35 51 11 01 3E 0C 1C FB 12 07
0100 | 5A F3 F0 60 BD BE CE 57 EC 65 4D 1A 23 5F 48 90
0110 | C9 4F 4B 7D 34 22 F5 8B F4 A6 27 A9 35 7F C8 7A
0120 | 50 F5 20 5A 39 B1 C7 83 A4 5C F7 E3 0C DA D6 0F
0130 | AB 5C C5 01 9A E3 1D F7 C5 A6 32 BC 10 10 BF 98
0140 | 8C 2E 92 76 90 DA 85 4C B1 22 95 CC 97 A9 FD CA
0150 | 96 8C C0 EA 2B 69 FB 1F 2B EE 68 A4 41 56 BE 68
0160 | 89 DF EA 56 3F C1 E7 F0 92 3D CE F9 9F 58 25 6D
0170 | 20 C6 33 BD EB D0 50 C2 45 51 E1 53 9F 34 50 86
0180 | 7F 3E BA CA E4 EE 12 84 93 85 5C 00</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 88 C6 0D 00 70 1D A9 66
0010 | 78 01 00 00 1F 5F 04 F5 1B 09 A0 0A D2 F0 2D 7E
0020 | 1C 09 6E E6 37 8E 25 53 2B 28 6E 1E 25 E4 74 61
0030 | D3 0B C4 2E C9 8D 1F C7 FE 50 01 00 A2 F0 33 4D
0040 | 96 B6 EB 07 B0 D1 A0 7A EF D5 11 65 EC 2E BE 8F
0050 | DA 47 5F 17 04 6A 21 05 C6 86 45 E8 63 71 88 7B
0060 | EA 1C 18 BF E9 6A 55 86 68 76 A7 05 91 E6 62 79
0070 | 72 4C F9 CE 6F DE 5C C7 CD 01 69 90 67 D9 87 60
0080 | 55 A1 47 51 7D 0C C9 B0 6C C4 45 40 D8 88 A9 78
0090 | D9 26 40 74 BC 0A 5B E5 3B 04 51 6A 99 78 51 EB
00A0 | FE B6 B5 EC D5 B0 E2 D1 CC B0 33 5E 67 6D 55 BD
00B0 | 41 BA 7F 9F E3 2C 4C E6 13 79 13 2A B8 F9 47 81
00C0 | 5B 5C 55 DE F0 EE CB 24 C9 A1 B0 A6 D1 8F 0D 90
00D0 | 8F F7 85 ED B3 E3 FF 45 C2 9E A0 D5 F5 CF D4 EE
00E0 | 13 A0 B3 13 B7 EA 57 83 84 CD 61 E0 9B 18 8B 90
00F0 | E1 26 71 37 53 69 3D 35 0E 6C A4 57 C3 46 B2 45
0100 | B2 A2 55 00 2D 8B 2C 15 F9 10 E9 BC B9 14 40 4C
0110 | B4 65 75 1E 04 D2 4D 13 B3 7B A8 81 94 9F 91 EC
0120 | 0F E5 CB 4C C4 E5 FF 47 F7 EC E3 6C B3 1C 02 41
0130 | 4A 93 92 BA 4C BC 80 BE C4 49 CC 27 9D E6 F0 FB
0140 | C7 2E 1B 3B 2F 79 D6 07 C0 8F 33 80 84 01 EF C3
0150 | 00 B7 5E BA FB 00 43 43 B1 5A BA 06 D3 A9 57 40
0160 | E2 17 C6 70 7E E6 F1 77 49 97 0A 86 80 3C 31 0A
0170 | 2A 6B B2 F7 93 FD DC 97 27 83 35 1E 94 FC 06 1F
0180 | 9F BD 35 7C 5D 55 BE AE DF CD 23 6F</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>548F07002C91A266</code></td>
<td><code>88C60D00701DA966</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>0A1039860765902DFB0CACB7C56E4DD1</code></td>
<td><code>1B09A00AD2F02D7E1C096EE6378E2553</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>C9359CB9B3E5FDC9EDB5CC2B80599F26</code></td>
<td><code>2B286E1E25E47461D30BC42EC98D1FC7</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE5001007406AD67E426A06239606396</code> <code>8F85D25F714A3396284EDBDFB8F8E977</code> <code>0DCA96A9CCC3C9A3EF2C3701CC59F6C9</code> <code>B1BE398AA3DCEA461ED5B7DA12A4001B</code> <code>C1F4E863869CF873F8A7839273F2779C</code> <code>301412E07B468D6AA574EBB8072FD09C</code> <code>1FE371448ACA7EDD7E7FBC57FD7721C1</code> <code>CCEDD095948A4DD79C80322190808EE6</code> <code>22DC1E7DBEE9E9FB3AB76644F486C772</code> <code>ACF8822DCB16C61B205807D3ABA6CF46</code> <code>B4EF34DF8F00EF953D910ABE4CEA362D</code> <code>454B8788814FB0C1BAB3E2E1EDF53551</code> <code>11013E0C1CFB12075AF3F060BDBECE57</code> <code>EC654D1A235F4890C94F4B7D3422F58B</code> <code>F4A627A9357FC87A50F5205A39B1C783</code> <code>A45CF7E30CDAD60FAB5CC5019AE31DF7</code> <code>C5A632BC1010BF988C2E927690DA854C</code> <code>B12295CC97A9FDCA968CC0EA2B69FB1F</code> <code>2BEE68A44156BE6889DFEA563FC1E7F0</code> <code>923DCEF99F58256D20C633BDEBD050C2</code> <code>4551E1539F3450867F3EBACAE4EE1284</code><br> <code>93855C00</code></td>
<td><code>FE500100A2F0334D96B6EB07B0D1A07A</code> <code>EFD51165EC2EBE8FDA475F17046A2105</code> <code>C68645E86371887BEA1C18BFE96A5586</code> <code>6876A70591E66279724CF9CE6FDE5CC7</code> <code>CD01699067D9876055A147517D0CC9B0</code> <code>6CC44540D888A978D9264074BC0A5BE5</code> <code>3B04516A997851EBFEB6B5ECD5B0E2D1</code> <code>CCB0335E676D55BD41BA7F9FE32C4CE6</code> <code>1379132AB8F947815B5C55DEF0EECB24</code> <code>C9A1B0A6D18F0D908FF785EDB3E3FF45</code> <code>C29EA0D5F5CFD4EE13A0B313B7EA5783</code> <code>84CD61E09B188B90E126713753693D35</code> <code>0E6CA457C346B245B2A255002D8B2C15</code> <code>F910E9BCB914404CB465751E04D24D13</code> <code>B37BA881949F91EC0FE5CB4CC4E5FF47</code> <code>F7ECE36CB31C02414A9392BA4CBC80BE</code> <code>C449CC279DE6F0FBC72E1B3B2F79D607</code> <code>C08F33808401EFC300B75EBAFB004343</code> <code>B15ABA06D3A95740E217C6707EE6F177</code> <code>49970A86803C310A2A6BB2F793FDDC97</code> <code>2783351E94FC061F9FBD357C5D55BEAE</code><br> <code>DFCD236F</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 = 32012E3302ECA4E5BCFDDE193C70510CACBDCE18BF28537B007E398059E77135529A83E5D034060E1890709B8C26D00BEDBCE93EBA47F5CD0CF2B79E280A5005C908AE62D58B1CA6294E33FA8C2B007D1B5E0A70506BDD9BF513271C9B21FA2B3F6CCE88125B340D44DBF7FC80D4176B678290A067D4DA03D1DA690B5339D585D718023020F279AED47BFF0F329614B4B76BFE0A2A825AE81747DE9CF6A09611A1C219503A43C5050929B2D053055897D62330100C7764E487AB998FF4D0A2F1C3DACAB1EBC4663A607DE8293EFE2892C1301AE431494F5B7E65EA8A59FC3E68DB3F14204245F98ECA9F935F0B7B9D82F1FFCA423F64FD5136AC7CD6A9705F47</code></pre>
<pre><code>auth_key = 16E17B2AA4A9AAB6B77E454D361E99A2DC0AC6DFFBD620DA1997D8D651F7C18297701846F1FD26601E99F62E5A4ED9996FA00BDBDB5D6EB39DDBBEA44F234B9A00D019775DEDB3782CF5D1A89E5543DAC0F7777AD1D5BD63ADA28D664BF4CECA35A671A9856FEC06D1641A3F9A0BA8B0D40B6644A5E9C9168D91DE902AE52D035EA3732BF25154B7E5BB08F658C96A0593A52CCEBB80C10CD2981E2303F1B29A9600688BB7D12E0BCAE3E1641CD6760DB5D3285FF5B4324A9E52854409A68E7841156A2410E951431D24C52F4D38F51ABF9BAF58A739AAB1657846AB859584C528A5349B103D35B99AC21550DC4A78AAAE071EEFEF77559A0867053905DF040D</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 7D 0D 2D 91 A2 66
0010 | 88 00 00 00 34 F7 CB 3B 0A 10 39 86 07 65 90 2D
0020 | FB 0C AC B7 C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9
0030 | ED B5 CC 2B 80 59 9F 26 11 19 7A DF EC BB D4 B3
0040 | 7D 11 CE 01 32 46 94 A2</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 3C DB 7D 71 1D A9 66
0010 | 58 00 00 00 34 F7 CB 3B 1B 09 A0 0A D2 F0 2D 7E
0020 | 1C 09 6E E6 37 8E 25 53 2B 28 6E 1E 25 E4 74 61
0030 | D3 0B C4 2E C9 8D 1F C7 C2 D0 77 13 D0 60 18 08
0040 | 8E DA 4B 41 66 B7 1C 8C</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;</code></pre>
<table class="table">
@ -817,13 +817,13 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01107D0D2D91A266</code></td>
<td><code>013CDB7D711DA966</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>88000000</code> (136 in decimal)</td>
<td><code>58000000</code> (88 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>0A1039860765902DFB0CACB7C56E4DD1</code></td>
<td><code>1B09A00AD2F02D7E1C096EE6378E2553</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>C9359CB9B3E5FDC9EDB5CC2B80599F26</code></td>
<td><code>2B286E1E25E47461D30BC42EC98D1FC7</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>11197ADFECBBD4B37D11CE01324694A2</code></td>
<td><code>C2D07713D06018088EDA4B4166B71C8C</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>