Update content of files

This commit is contained in:
GitHub Action 2024-07-08 16:47:29 +00:00
parent 6a9cb1834f
commit 8578456071
11 changed files with 264 additions and 324 deletions

View file

@ -298,7 +298,7 @@ This will also emit an <a href="/constructor/updateDeleteQuickReply">updateDelet
<a href='/constructor/businessIntro'>businessIntro</a>#5a0a066d flags:<a href='/type/%23'>#</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> sticker:flags.0?<a href='/type/Document'>Document</a> = <a href='/type/BusinessIntro'>BusinessIntro</a>;
<a href='/constructor/userFull'>userFull</a>#cc997720 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> phone_calls_available:flags.4?<a href='/constructor/true'>true</a> phone_calls_private:flags.5?<a href='/constructor/true'>true</a> can_pin_message:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.12?<a href='/constructor/true'>true</a> video_calls_available:flags.13?<a href='/constructor/true'>true</a> voice_messages_forbidden:flags.20?<a href='/constructor/true'>true</a> translations_disabled:flags.23?<a href='/constructor/true'>true</a> stories_pinned_available:flags.26?<a href='/constructor/true'>true</a> blocked_my_stories_from:flags.27?<a href='/constructor/true'>true</a> wallpaper_overridden:flags.28?<a href='/constructor/true'>true</a> contact_require_premium:flags.29?<a href='/constructor/true'>true</a> read_dates_private:flags.30?<a href='/constructor/true'>true</a> flags2:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> about:flags.1?<a href='/type/string'>string</a> settings:<a href='/type/PeerSettings'>PeerSettings</a> personal_photo:flags.21?<a href='/type/Photo'>Photo</a> profile_photo:flags.2?<a href='/type/Photo'>Photo</a> fallback_photo:flags.22?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> bot_info:flags.3?<a href='/type/BotInfo'>BotInfo</a> pinned_msg_id:flags.6?<a href='/type/int'>int</a> common_chats_count:<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> ttl_period:flags.14?<a href='/type/int'>int</a> theme_emoticon:flags.15?<a href='/type/string'>string</a> private_forward_name:flags.16?<a href='/type/string'>string</a> bot_group_admin_rights:flags.17?<a href='/type/ChatAdminRights'>ChatAdminRights</a> bot_broadcast_admin_rights:flags.18?<a href='/type/ChatAdminRights'>ChatAdminRights</a> premium_gifts:flags.19?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/PremiumGiftOption'>PremiumGiftOption</a>&gt; wallpaper:flags.24?<a href='/type/WallPaper'>WallPaper</a> stories:flags.25?<a href='/type/PeerStories'>PeerStories</a> business_work_hours:flags2.0?<a href='/type/BusinessWorkHours'>BusinessWorkHours</a> business_location:flags2.1?<a href='/type/BusinessLocation'>BusinessLocation</a> business_greeting_message:flags2.2?<a href='/type/BusinessGreetingMessage'>BusinessGreetingMessage</a> business_away_message:flags2.3?<a href='/type/BusinessAwayMessage'>BusinessAwayMessage</a> business_intro:flags2.4?<a href='/type/BusinessIntro'>BusinessIntro</a> birthday:flags2.5?<a href='/type/Birthday'>Birthday</a> personal_channel_id:flags2.6?<a href='/type/long'>long</a> personal_channel_message:flags2.6?<a href='/type/int'>int</a> = <a href='/type/UserFull'>UserFull</a>;
<a href='/constructor/userFull'>userFull</a>#cc997720 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> phone_calls_available:flags.4?<a href='/constructor/true'>true</a> phone_calls_private:flags.5?<a href='/constructor/true'>true</a> can_pin_message:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.12?<a href='/constructor/true'>true</a> video_calls_available:flags.13?<a href='/constructor/true'>true</a> voice_messages_forbidden:flags.20?<a href='/constructor/true'>true</a> translations_disabled:flags.23?<a href='/constructor/true'>true</a> stories_pinned_available:flags.26?<a href='/constructor/true'>true</a> blocked_my_stories_from:flags.27?<a href='/constructor/true'>true</a> wallpaper_overridden:flags.28?<a href='/constructor/true'>true</a> contact_require_premium:flags.29?<a href='/constructor/true'>true</a> read_dates_private:flags.30?<a href='/constructor/true'>true</a> flags2:<a href='/type/%23'>#</a> sponsored_enabled:flags2.7?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:flags.1?<a href='/type/string'>string</a> settings:<a href='/type/PeerSettings'>PeerSettings</a> personal_photo:flags.21?<a href='/type/Photo'>Photo</a> profile_photo:flags.2?<a href='/type/Photo'>Photo</a> fallback_photo:flags.22?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> bot_info:flags.3?<a href='/type/BotInfo'>BotInfo</a> pinned_msg_id:flags.6?<a href='/type/int'>int</a> common_chats_count:<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> ttl_period:flags.14?<a href='/type/int'>int</a> theme_emoticon:flags.15?<a href='/type/string'>string</a> private_forward_name:flags.16?<a href='/type/string'>string</a> bot_group_admin_rights:flags.17?<a href='/type/ChatAdminRights'>ChatAdminRights</a> bot_broadcast_admin_rights:flags.18?<a href='/type/ChatAdminRights'>ChatAdminRights</a> premium_gifts:flags.19?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/PremiumGiftOption'>PremiumGiftOption</a>&gt; wallpaper:flags.24?<a href='/type/WallPaper'>WallPaper</a> stories:flags.25?<a href='/type/PeerStories'>PeerStories</a> business_work_hours:flags2.0?<a href='/type/BusinessWorkHours'>BusinessWorkHours</a> business_location:flags2.1?<a href='/type/BusinessLocation'>BusinessLocation</a> business_greeting_message:flags2.2?<a href='/type/BusinessGreetingMessage'>BusinessGreetingMessage</a> business_away_message:flags2.3?<a href='/type/BusinessAwayMessage'>BusinessAwayMessage</a> business_intro:flags2.4?<a href='/type/BusinessIntro'>BusinessIntro</a> birthday:flags2.5?<a href='/type/Birthday'>Birthday</a> personal_channel_id:flags2.6?<a href='/type/long'>long</a> personal_channel_message:flags2.6?<a href='/type/int'>int</a> = <a href='/type/UserFull'>UserFull</a>;
---functions---

View file

@ -249,7 +249,7 @@
<ul>
<li>Added <a href="/method/invokeWithBusinessConnection">invokeWithBusinessConnection</a> - Invoke a method using a <a href="/api/business#connected-bots">Telegram Business Bot connection, see here » for more info, including a list of the methods that can be wrapped in this constructor</a>.</li>
<li>Added <a href="/method/account.getBotBusinessConnection">account.getBotBusinessConnection</a> - Bots may invoke this method to re-fetch the <a href="/constructor/updateBotBusinessConnect">updateBotBusinessConnect</a> constructor associated with a specific <a href="/api/business#connected-bots">business <code>connection_id</code>, see here »</a> for more info on connected business bots. </li>
<li>Added <a href="/method/account.updateBusinessIntro">account.updateBusinessIntro</a> - </li>
<li>Added <a href="/method/account.updateBusinessIntro">account.updateBusinessIntro</a> - Set or remove the <a href="/api/business#business-introduction">Telegram Business introduction »</a>.</li>
<li>Added <a href="/method/stickers.replaceSticker">stickers.replaceSticker</a> - Replace a sticker in a <a href="/api/stickers">stickerset »</a>.</li>
<li>Added <a href="/method/messages.getMyStickers">messages.getMyStickers</a> - </li>
<li>Added <a href="/method/fragment.getCollectibleInfo">fragment.getCollectibleInfo</a> - </li>
@ -288,8 +288,8 @@
<li>Added <a href="/constructor/updateBotEditBusinessMessage">updateBotEditBusinessMessage</a> - </li>
<li>Added <a href="/constructor/updateBotDeleteBusinessMessage">updateBotDeleteBusinessMessage</a> - </li>
<li>Added <a href="/constructor/botBusinessConnection">botBusinessConnection</a> - Contains info about a <a href="/api/business#connected-bots">bot business connection</a>.</li>
<li>Added <a href="/constructor/inputBusinessIntro">inputBusinessIntro</a> - </li>
<li>Added <a href="/constructor/businessIntro">businessIntro</a> - </li>
<li>Added <a href="/constructor/inputBusinessIntro">inputBusinessIntro</a> - <a href="/api/business#business-introduction">Telegram Business introduction »</a>.</li>
<li>Added <a href="/constructor/businessIntro">businessIntro</a> - <a href="/api/business#business-introduction">Telegram Business introduction »</a>.</li>
<li>Added <a href="/constructor/messages.myStickers">messages.myStickers</a> - </li>
<li>Added <a href="/constructor/inputCollectibleUsername">inputCollectibleUsername</a> - </li>
<li>Added <a href="/constructor/inputCollectiblePhone">inputCollectiblePhone</a> - </li>

View file

@ -4,38 +4,10 @@
<meta charset="utf-8">
<title>businessIntro</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
title
string
 
description
string
 
sticker
…">
<meta property="description" content="Telegram Business introduction ».">
<meta property="og:title" content="businessIntro">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
title
string
 
description
string
 
sticker
…">
<meta property="og:description" content="Telegram Business introduction ».">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -70,7 +42,8 @@ sticker
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/businessIntro" >businessIntro</a></li></ul></div>
<h1 id="dev_page_title">businessIntro</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p><a href="/api/business#business-introduction">Telegram Business introduction »</a>.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 181 <b class="caret"></b></a>
@ -101,22 +74,27 @@ sticker
<tr>
<td><strong>title</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Title of the introduction message</td>
</tr>
<tr>
<td><strong>description</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Profile introduction</td>
</tr>
<tr>
<td><strong>sticker</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Document">Document</a></td>
<td> </td>
<td>Optional introduction <a href="/api/stickers">sticker</a>.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/BusinessIntro">BusinessIntro</a></p></div>
<p><a href="/type/BusinessIntro">BusinessIntro</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="#stickers" id="stickers" name="stickers"><i class="anchor-icon"></i></a><a href="/api/stickers">Stickers</a></h4>
<p>Telegram clients support displaying static and animated stickers.</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>
</div>

View file

@ -4,38 +4,10 @@
<meta charset="utf-8">
<title>inputBusinessIntro</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
title
string
 
description
string
 
sticker
…">
<meta property="description" content="Telegram Business introduction ».">
<meta property="og:title" content="inputBusinessIntro">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
title
string
 
description
string
 
sticker
…">
<meta property="og:description" content="Telegram Business introduction ».">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -70,7 +42,8 @@ sticker
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputBusinessIntro" >inputBusinessIntro</a></li></ul></div>
<h1 id="dev_page_title">inputBusinessIntro</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p><a href="/api/business#business-introduction">Telegram Business introduction »</a>.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 181 <b class="caret"></b></a>
@ -101,22 +74,27 @@ sticker
<tr>
<td><strong>title</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Title of the introduction message</td>
</tr>
<tr>
<td><strong>description</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Profile introduction</td>
</tr>
<tr>
<td><strong>sticker</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/InputDocument">InputDocument</a></td>
<td> </td>
<td>Optional introduction <a href="/api/stickers">sticker</a>.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/InputBusinessIntro">InputBusinessIntro</a></p></div>
<p><a href="/type/InputBusinessIntro">InputBusinessIntro</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="#stickers" id="stickers" name="stickers"><i class="anchor-icon"></i></a><a href="/api/stickers">Stickers</a></h4>
<p>Telegram clients support displaying static and animated stickers.</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>
</div>

View file

@ -244,32 +244,32 @@
<tr>
<td><strong>business_work_hours</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.0?<a href="/type/BusinessWorkHours">BusinessWorkHours</a></td>
<td> </td>
<td><a href="/api/business#opening-hours">Telegram Business working hours »</a>.</td>
</tr>
<tr>
<td><strong>business_location</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.1?<a href="/type/BusinessLocation">BusinessLocation</a></td>
<td> </td>
<td><a href="/api/business#location">Telegram Business location »</a>.</td>
</tr>
<tr>
<td><strong>business_greeting_message</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.2?<a href="/type/BusinessGreetingMessage">BusinessGreetingMessage</a></td>
<td> </td>
<td><a href="/api/business#greeting-messages">Telegram Business greeting message »</a>.</td>
</tr>
<tr>
<td><strong>business_away_message</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.3?<a href="/type/BusinessAwayMessage">BusinessAwayMessage</a></td>
<td> </td>
<td><a href="/api/business#away-messages">Telegram Business away message »</a>.</td>
</tr>
<tr>
<td><strong>business_intro</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.4?<a href="/type/BusinessIntro">BusinessIntro</a></td>
<td> </td>
<td>Specifies a custom <a href="/api/business#business-introduction">Telegram Business profile introduction »</a>.</td>
</tr>
<tr>
<td><strong>birthday</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.5?<a href="/type/Birthday">Birthday</a></td>
<td> </td>
<td>Contains info about the user's <a href="/api/profile#birthday">birthday »</a>.</td>
</tr>
<tr>
<td><strong>personal_channel_id</strong></td>
@ -319,10 +319,12 @@
<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</p>
<h4><a class="anchor" href="#admin-banned-default-rights" id="admin-banned-default-rights" name="admin-banned-default-rights"><i class="anchor-icon"></i></a><a href="/api/rights">Admin, banned, default rights</a></h4>
<p>How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.</p>
<h4><a class="anchor" href="#channels-supergroups-gigagroups-and-basic-groups" id="channels-supergroups-gigagroups-and-basic-groups" name="channels-supergroups-gigagroups-and-basic-groups"><i class="anchor-icon"></i></a><a href="/api/channel">Channels, supergroups, gigagroups and basic groups</a></h4>
<p>How to handle channels, supergroups, gigagroups, basic groups, and what's the difference between them.</p>
<h4><a class="anchor" href="#business" id="business" name="business"><i class="anchor-icon"></i></a><a href="/api/business">Business</a></h4>
<p>Users can turn their Telegram account into a business account, gaining access to business features such as opening hours, location, quick replies, automated messages, custom start pages, chatbot support, and more.</p>
<h4><a class="anchor" href="#profile" id="profile" name="profile"><i class="anchor-icon"></i></a><a href="/api/profile">Profile</a></h4>
<p>Telegram offers many customization options for your profile!</p></div>
<p>Telegram offers many customization options for your profile!</p>
<h4><a class="anchor" href="#channels-supergroups-gigagroups-and-basic-groups" id="channels-supergroups-gigagroups-and-basic-groups" name="channels-supergroups-gigagroups-and-basic-groups"><i class="anchor-icon"></i></a><a href="/api/channel">Channels, supergroups, gigagroups and basic groups</a></h4>
<p>How to handle channels, supergroups, gigagroups, basic groups, and what's the difference between them.</p></div>
</div>

View file

@ -4,32 +4,10 @@
<meta charset="utf-8">
<title>account.updateBusinessIntro</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
intro
flags.0?InputBusinessIntro
 
Result
Bool">
<meta property="description" content="Set or remove the Telegram Business introduction ».">
<meta property="og:title" content="account.updateBusinessIntro">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
intro
flags.0?InputBusinessIntro
 
Result
Bool">
<meta property="og:description" content="Set or remove the Telegram Business introduction ».">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -64,7 +42,8 @@ Bool">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/account.updateBusinessIntro" >account.updateBusinessIntro</a></li></ul></div>
<h1 id="dev_page_title">account.updateBusinessIntro</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Set or remove the <a href="/api/business#business-introduction">Telegram Business introduction »</a>.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 181 <b class="caret"></b></a>
@ -98,12 +77,15 @@ Bool">
<tr>
<td><strong>intro</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/InputBusinessIntro">InputBusinessIntro</a></td>
<td> </td>
<td>Telegram Business introduction, to remove it call the method without setting this flag.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3>
<p><a href="/type/Bool">Bool</a></p></div>
<p><a href="/type/Bool">Bool</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="#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>
</div>

View file

@ -3290,7 +3290,7 @@ Look for updates of telegram&#39;s terms of service…">
</tr>
<tr>
<td><a href="/method/account.updateBusinessIntro">account.updateBusinessIntro</a></td>
<td> </td>
<td>Set or remove the <a href="/api/business#business-introduction">Telegram Business introduction »</a>.</td>
</tr>
<tr>
<td><a href="/method/stickers.replaceSticker">stickers.replaceSticker</a></td>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 64 3F 0A 00 8B 78 89 66
0010 | 14 00 00 00 F1 8E 7E BE 23 00 4D B0 2E A4 32 B4
0020 | 51 42 F9 A4 B3 F8 D2 DC</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 30 9A 01 00 21 16 8C 66
0010 | 14 00 00 00 F1 8E 7E BE D8 F3 E2 33 6A 52 CF A2
0020 | A8 32 1A FE E3 DD EB 54</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>643F0A008B788966</code></td>
<td><code>309A010021168C66</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>23004DB02EA432B45142F9A4B3F8D2DC</code></td>
<td><code>D8F3E2336A52CFA2A8321AFEE3DDEB54</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 8C A7 3F 8B 78 89 66
0010 | 50 00 00 00 63 24 16 05 23 00 4D B0 2E A4 32 B4
0020 | 51 42 F9 A4 B3 F8 D2 DC 1E B7 5D 37 0D C0 B6 22
0030 | 9B AD AA 07 F8 A0 C9 94 08 2D CB 39 5E A3 CA C0
0040 | A1 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 0C 46 7B 21 16 8C 66
0010 | 68 00 00 00 63 24 16 05 D8 F3 E2 33 6A 52 CF A2
0020 | A8 32 1A FE E3 DD EB 54 96 AC AE 31 5A 55 4E C1
0030 | 36 A5 CE 5E 09 18 9E 4C 08 23 80 E5 92 94 20 8C
0040 | 17 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>018CA73F8B788966</code></td>
<td><code>010C467B21168C66</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>50000000</code> (80 in decimal)</td>
<td><code>68000000</code> (104 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>23004DB02EA432B45142F9A4B3F8D2DC</code></td>
<td><code>D8F3E2336A52CFA2A8321AFEE3DDEB54</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>1EB75D370DC0B6229BADAA07F8A0C994</code></td>
<td><code>96ACAE315A554EC136A5CE5E09189E4C</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>082DCB395EA3CAC0A1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3299794230616703137</td>
<td><code>082380E59294208C17000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2558297006059588631</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 = 3299794230616703137</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>3299794230616703137 = 1751492063 * 1883990399</code></p>
<pre><code>p = 1751492063
q = 1883990399</code></pre>
<pre><code>pq = 2558297006059588631</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2558297006059588631 = 1450226423 * 1764067297</code></p>
<pre><code>p = 1450226423
q = 1764067297</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 2D CB 39 5E A3 CA C0 A1 00 00 00
0010 | 04 68 65 A5 DF 00 00 00 04 70 4B 69 7F 00 00 00
0020 | 23 00 4D B0 2E A4 32 B4 51 42 F9 A4 B3 F8 D2 DC
0030 | 1E B7 5D 37 0D C0 B6 22 9B AD AA 07 F8 A0 C9 94
0040 | BD 50 A7 4D 41 51 E5 46 82 C4 8D D7 1F 97 75 0E
0050 | 10 F5 46 49 78 41 68 C6 02 62 DF 9D 07 B7 C1 02
<pre><code>0000 | 95 5F F5 A9 08 23 80 E5 92 94 20 8C 17 00 00 00
0010 | 04 56 70 B2 F7 00 00 00 04 69 25 87 E1 00 00 00
0020 | D8 F3 E2 33 6A 52 CF A2 A8 32 1A FE E3 DD EB 54
0030 | 96 AC AE 31 5A 55 4E C1 36 A5 CE 5E 09 18 9E 4C
0040 | B4 96 E9 02 42 5F FB 7C 82 8F 33 DB 4A C5 A6 CA
0050 | D8 A3 BD 8A 09 CE 09 77 CA F0 C8 8D AF 24 1B 43
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 = 1883990399</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>082DCB395EA3CAC0A1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3299794230616703137</td>
<td><code>082380E59294208C17000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2558297006059588631</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>046865A5DF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1751492063</td>
<td><code>045670B2F7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1450226423</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>04704B697F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1883990399</td>
<td><code>04692587E1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1764067297</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>23004DB02EA432B45142F9A4B3F8D2DC</code></td>
<td><code>D8F3E2336A52CFA2A8321AFEE3DDEB54</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>1EB75D370DC0B6229BADAA07F8A0C994</code></td>
<td><code>96ACAE315A554EC136A5CE5E09189E4C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>BD50A74D4151E54682C48DD71F97750E</code> <code>10F54649784168C60262DF9D07B7C102</code></td>
<td><code>B496E902425FFB7C828F33DB4AC5A6CA</code> <code>D8A3BD8A09CE0977CAF0C88DAF241B43</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1883990399</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 = 955FF5A9082DCB395EA3CAC0A1000000046865A5DF00000004704B697F00000023004DB02EA432B45142F9A4B3F8D2DC1EB75D370DC0B6229BADAA07F8A0C994BD50A74D4151E54682C48DD71F97750E10F54649784168C60262DF9D07B7C10202000000
random_padding_bytes = C4E43C4F26A7E55D5F9F7233FF763F2DE3F7AF5DA4F63C0843967342071791DC6180A97D17AC1D13B6F6A8E3764AE43939A0B8D0409E39E579791430011FA96399C4A8013B32E80F838BEF1DF497EB20D417030C41CA3080557CA87E</code></pre>
<pre><code>data = 955FF5A9082380E59294208C17000000045670B2F700000004692587E1000000D8F3E2336A52CFA2A8321AFEE3DDEB5496ACAE315A554EC136A5CE5E09189E4CB496E902425FFB7C828F33DB4AC5A6CAD8A3BD8A09CE0977CAF0C88DAF241B4302000000
random_padding_bytes = 92C15230DFD9DFF77DEA9BD7084AE529436D7828DBF6B33B46807E8969B0F49B6FDEB33185AF89A9E11E31326B8A15E6624299EB7BD8A9DC4369DF65488C29CE6472FED0F9733B7FEA649E4DBDC8913B19EA4F06CF226AC3A05ED273</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 = 8AD69B7B309807A798C95E81629D8C0CFB5CAA11FE73D2DEBC7ED583658840B376EF348FDE50FD020D2CD1570E2CCE912CD0306461B9B5088004F60B2D5CDD080C2EF906DC044DD95993FA148AC3BBF0CA0397BB595BEA78BE19E3A789564E453521E7016C1B27828418A6FC65A4EB0F500C2D8BB3BB5808F65D2B4F7397CEE47DD4AD4589337519E5677E381FBEAA9AD8114399670F33BBE98F6DA3AD80D8338753B7CDFAD41BB9C277742953B1D23235BFE1F97B0946003E933C853E03F2639042DB8A2A55E588397D6B49D5F12F20EF8ADFB081447884B588BEA11405EE5B4D50B69EE10C5029190A62D4918D561E8AB9375C85A8D4276652A8DA7B3DF91D</code></pre>
<pre><code>encrypted_data = 4CDD4961438B90DC95EE906EF50CE809AD7539F1CC33BE480578599A30504A35F246860679F0347B66A543CB3F65BC0B274F945DB8C24379C99DBE856CB9400A558E8EF54FC01F55681EC5FDD43D669616CEFC70C5FE71FF594C19D10031DAC24359DB89C1E845C1583C37C48C7945D93543FAE5FF2C197FEAF9CDE9D719123B2BDAB5EEF445E8C2EE8AE6FF1E03923F7DC510159B1795EE2D3BA0CDF280D63EAF78CB4923B18A32C05A76C88CD1E6CF317C38A492EAFC079AE0940DC6A67551CA61AA1F2DCC7A31A1E8E5ECD8E597CB3C1E64C59F0CC807F089FDB170675A77FB5806DEC426662E679AE7068A28DCF629AD733AFED2B09D1D7A5F20805325D9</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 68 3F 0A 00 8B 78 89 66
0010 | 40 01 00 00 BE E4 12 D7 23 00 4D B0 2E A4 32 B4
0020 | 51 42 F9 A4 B3 F8 D2 DC 1E B7 5D 37 0D C0 B6 22
0030 | 9B AD AA 07 F8 A0 C9 94 04 68 65 A5 DF 00 00 00
0040 | 04 70 4B 69 7F 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 8A D6 9B 7B 30 98 07 A7 98 C9 5E 81
0060 | 62 9D 8C 0C FB 5C AA 11 FE 73 D2 DE BC 7E D5 83
0070 | 65 88 40 B3 76 EF 34 8F DE 50 FD 02 0D 2C D1 57
0080 | 0E 2C CE 91 2C D0 30 64 61 B9 B5 08 80 04 F6 0B
0090 | 2D 5C DD 08 0C 2E F9 06 DC 04 4D D9 59 93 FA 14
00A0 | 8A C3 BB F0 CA 03 97 BB 59 5B EA 78 BE 19 E3 A7
00B0 | 89 56 4E 45 35 21 E7 01 6C 1B 27 82 84 18 A6 FC
00C0 | 65 A4 EB 0F 50 0C 2D 8B B3 BB 58 08 F6 5D 2B 4F
00D0 | 73 97 CE E4 7D D4 AD 45 89 33 75 19 E5 67 7E 38
00E0 | 1F BE AA 9A D8 11 43 99 67 0F 33 BB E9 8F 6D A3
00F0 | AD 80 D8 33 87 53 B7 CD FA D4 1B B9 C2 77 74 29
0100 | 53 B1 D2 32 35 BF E1 F9 7B 09 46 00 3E 93 3C 85
0110 | 3E 03 F2 63 90 42 DB 8A 2A 55 E5 88 39 7D 6B 49
0120 | D5 F1 2F 20 EF 8A DF B0 81 44 78 84 B5 88 BE A1
0130 | 14 05 EE 5B 4D 50 B6 9E E1 0C 50 29 19 0A 62 D4
0140 | 91 8D 56 1E 8A B9 37 5C 85 A8 D4 27 66 52 A8 DA
0150 | 7B 3D F9 1D</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 8C 1A 06 00 21 16 8C 66
0010 | 40 01 00 00 BE E4 12 D7 D8 F3 E2 33 6A 52 CF A2
0020 | A8 32 1A FE E3 DD EB 54 96 AC AE 31 5A 55 4E C1
0030 | 36 A5 CE 5E 09 18 9E 4C 04 56 70 B2 F7 00 00 00
0040 | 04 69 25 87 E1 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 4C DD 49 61 43 8B 90 DC 95 EE 90 6E
0060 | F5 0C E8 09 AD 75 39 F1 CC 33 BE 48 05 78 59 9A
0070 | 30 50 4A 35 F2 46 86 06 79 F0 34 7B 66 A5 43 CB
0080 | 3F 65 BC 0B 27 4F 94 5D B8 C2 43 79 C9 9D BE 85
0090 | 6C B9 40 0A 55 8E 8E F5 4F C0 1F 55 68 1E C5 FD
00A0 | D4 3D 66 96 16 CE FC 70 C5 FE 71 FF 59 4C 19 D1
00B0 | 00 31 DA C2 43 59 DB 89 C1 E8 45 C1 58 3C 37 C4
00C0 | 8C 79 45 D9 35 43 FA E5 FF 2C 19 7F EA F9 CD E9
00D0 | D7 19 12 3B 2B DA B5 EE F4 45 E8 C2 EE 8A E6 FF
00E0 | 1E 03 92 3F 7D C5 10 15 9B 17 95 EE 2D 3B A0 CD
00F0 | F2 80 D6 3E AF 78 CB 49 23 B1 8A 32 C0 5A 76 C8
0100 | 8C D1 E6 CF 31 7C 38 A4 92 EA FC 07 9A E0 94 0D
0110 | C6 A6 75 51 CA 61 AA 1F 2D CC 7A 31 A1 E8 E5 EC
0120 | D8 E5 97 CB 3C 1E 64 C5 9F 0C C8 07 F0 89 FD B1
0130 | 70 67 5A 77 FB 58 06 DE C4 26 66 2E 67 9A E7 06
0140 | 8A 28 DC F6 29 AD 73 3A FE D2 B0 9D 1D 7A 5F 20
0150 | 80 53 25 D9</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 = C4E43C4F26A7E55D5F9F7233FF763F2DE3F7AF5DA4F63C08439673420
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>683F0A008B788966</code></td>
<td><code>8C1A060021168C66</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 = C4E43C4F26A7E55D5F9F7233FF763F2DE3F7AF5DA4F63C08439673420
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>23004DB02EA432B45142F9A4B3F8D2DC</code></td>
<td><code>D8F3E2336A52CFA2A8321AFEE3DDEB54</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>1EB75D370DC0B6229BADAA07F8A0C994</code></td>
<td><code>96ACAE315A554EC136A5CE5E09189E4C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>046865A5DF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1751492063</td>
<td><code>045670B2F7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1450226423</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>04704B697F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1883990399</td>
<td><code>04692587E1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1764067297</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 = C4E43C4F26A7E55D5F9F7233FF763F2DE3F7AF5DA4F63C08439673420
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001008AD69B7B309807A798C95E81</code> <code>629D8C0CFB5CAA11FE73D2DEBC7ED583</code> <code>658840B376EF348FDE50FD020D2CD157</code> <code>0E2CCE912CD0306461B9B5088004F60B</code> <code>2D5CDD080C2EF906DC044DD95993FA14</code> <code>8AC3BBF0CA0397BB595BEA78BE19E3A7</code> <code>89564E453521E7016C1B27828418A6FC</code> <code>65A4EB0F500C2D8BB3BB5808F65D2B4F</code> <code>7397CEE47DD4AD4589337519E5677E38</code> <code>1FBEAA9AD8114399670F33BBE98F6DA3</code> <code>AD80D8338753B7CDFAD41BB9C2777429</code> <code>53B1D23235BFE1F97B0946003E933C85</code> <code>3E03F2639042DB8A2A55E588397D6B49</code> <code>D5F12F20EF8ADFB081447884B588BEA1</code> <code>1405EE5B4D50B69EE10C5029190A62D4</code> <code>918D561E8AB9375C85A8D4276652A8DA</code><br> <code>7B3DF91D</code></td>
<td><code>FE0001004CDD4961438B90DC95EE906E</code> <code>F50CE809AD7539F1CC33BE480578599A</code> <code>30504A35F246860679F0347B66A543CB</code> <code>3F65BC0B274F945DB8C24379C99DBE85</code> <code>6CB9400A558E8EF54FC01F55681EC5FD</code> <code>D43D669616CEFC70C5FE71FF594C19D1</code> <code>0031DAC24359DB89C1E845C1583C37C4</code> <code>8C7945D93543FAE5FF2C197FEAF9CDE9</code> <code>D719123B2BDAB5EEF445E8C2EE8AE6FF</code> <code>1E03923F7DC510159B1795EE2D3BA0CD</code> <code>F280D63EAF78CB4923B18A32C05A76C8</code> <code>8CD1E6CF317C38A492EAFC079AE0940D</code> <code>C6A67551CA61AA1F2DCC7A31A1E8E5EC</code> <code>D8E597CB3C1E64C59F0CC807F089FDB1</code> <code>70675A77FB5806DEC426662E679AE706</code> <code>8A28DCF629AD733AFED2B09D1D7A5F20</code><br> <code>805325D9</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = C4E43C4F26A7E55D5F9F7233FF763F2DE3F7AF5DA4F63C08439673420
<h5><a class="anchor" href="#6-server-responds-with" id="6-server-responds-with" name="6-server-responds-with"><i class="anchor-icon"></i></a>6) Server responds with:</h5>
<!-- start server_DH_params_ok -->
<p>Received payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 78 01 FE 8B 78 89 66
0010 | 8C 02 00 00 5C 07 E8 D0 23 00 4D B0 2E A4 32 B4
0020 | 51 42 F9 A4 B3 F8 D2 DC 1E B7 5D 37 0D C0 B6 22
0030 | 9B AD AA 07 F8 A0 C9 94 FE 50 02 00 2D D1 01 08
0040 | 24 7B C0 2A 26 B4 9C 83 A6 8A F6 B1 33 29 A0 3C
0050 | F6 CA DF 9B C3 42 7D 11 D0 15 CD 2C A4 86 E7 2C
0060 | 6E 70 DC 44 30 55 38 FB C2 E0 E0 B0 13 D7 23 A1
0070 | BA FE EA B4 8B D0 1D 74 EA D9 E9 1C 61 29 65 43
0080 | 49 91 A7 F5 3A 96 35 F3 2F AC A1 18 CB EE 3A 14
0090 | 85 45 73 12 A3 65 0F 12 01 A6 4E 11 EE 61 4A 7E
00A0 | E0 A2 08 98 DB 6B 3D A0 D9 A1 A9 92 C3 B7 C5 CF
00B0 | AD C6 9F 6E 01 81 99 42 89 A6 8D 59 8B 2D 6F 70
00C0 | 64 53 F8 83 A5 CB 58 1E 9B E2 AB F3 7C 50 1E AE
00D0 | 51 13 5F D7 1F E7 B2 F3 21 DC 24 A7 CC BF E9 7A
00E0 | 97 CA 07 47 F5 E8 0D 6E 73 7A 5A 48 D6 5F 6B 1A
00F0 | 9A FB 56 36 92 E1 C3 67 64 9C DB 5E F6 CF 18 16
0100 | E4 17 C1 21 C9 7F 87 FC 17 3F D9 94 1E C9 43 69
0110 | 0E 5D 57 9C 7A 57 2E B3 D4 11 36 56 EC CA 07 6A
0120 | BE F8 F2 19 86 28 9E 8D 48 B0 55 60 75 73 5C 9A
0130 | E2 6F 3B 8A C9 9C 33 CC C2 48 F8 73 42 D1 E5 2E
0140 | 35 94 17 B0 15 8C EE B0 62 0F 2C 2E 28 77 5F 88
0150 | B5 6B 96 88 79 CD 47 51 00 72 A4 FD 27 7A 93 39
0160 | 52 57 13 CE A1 A1 9E 18 46 B2 C9 7D 4E E2 1D D6
0170 | 74 B2 E2 D2 95 E8 AB 41 61 24 C6 8C EF 78 FD CC
0180 | E8 77 7A 49 80 A7 FE F3 EE FD 36 34 24 F1 80 3F
0190 | 32 07 BF F8 A7 2F 1C 31 5E 75 69 64 12 FA F7 AD
01A0 | 62 C6 BA FF 1B ED 42 BD 4C D7 03 19 0F 82 7F 61
01B0 | E8 70 28 07 55 35 0B D0 ED 4C 69 92 3D C0 AC BC
01C0 | EA 47 57 83 EA DC 31 74 46 04 91 1A B0 C0 54 AA
01D0 | 1E 74 DA D0 6C 08 3B 14 16 24 17 63 9F DA F6 14
01E0 | 80 A5 E0 02 FC BA 7D 9C 0E E1 24 6A F2 8B 96 6B
01F0 | 4E CE 02 97 44 73 E2 7C 0F 2A 12 0F 61 97 89 0F
0200 | C2 AE 5C C8 F7 D8 21 1C BC 92 BF 09 0B 18 55 FF
0210 | 0C 78 DA B8 9D 30 6F 21 8C 8A 79 8A 7B 53 27 55
0220 | BB E7 D6 A7 1C 2A FC 3D 32 F5 16 6D C8 87 A1 15
0230 | 0A BC 11 D0 E1 DE 6D 1C EE 88 D1 D4 6E 9A C9 BA
0240 | 6F 8E BC CF C0 E4 E6 34 C2 2C E6 F6 BF 4E FC 18
0250 | CB 20 1E CA F3 DD 17 16 FC 50 07 BC 6B B6 62 21
0260 | DC 22 1B E6 59 54 96 F2 31 26 8B EF BB 6D DF 9F
0270 | 8E A6 12 0D D1 CA 74 5F EC B1 3A 13 44 BF 3D F2
0280 | 38 BC 33 05 D2 C8 94 4D F3 8E B3 70</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 C4 8A 24 22 16 8C 66
0010 | C4 02 00 00 5C 07 E8 D0 D8 F3 E2 33 6A 52 CF A2
0020 | A8 32 1A FE E3 DD EB 54 96 AC AE 31 5A 55 4E C1
0030 | 36 A5 CE 5E 09 18 9E 4C FE 50 02 00 E7 77 87 B2
0040 | F2 CE 56 BC C5 CE 9A 9E 72 08 7A 57 6E 6C 75 2F
0050 | 4E BD 90 CF 80 AB F3 59 38 5F 72 7D FE CD 08 6D
0060 | 2E 69 98 12 43 6B 10 82 36 A8 ED 20 19 39 CA AC
0070 | 6A E1 B9 47 A6 8E 3C 0B 6A 99 C0 19 A7 21 EE 23
0080 | 7C 67 85 BC 34 E5 BD 2C E4 0C DA 7D FD E1 90 3F
0090 | DF 96 30 53 7C 7D A3 7E 09 43 DB B0 4B 63 B3 F3
00A0 | D7 02 FA 38 BF C8 26 35 C3 41 FA 59 A2 AE 04 9A
00B0 | 92 83 F9 F3 39 23 C3 25 43 CF 55 1F D3 F9 33 8B
00C0 | CD F1 8F 3F 4D F8 6C 72 FF 9D 77 78 71 F8 C6 1D
00D0 | 93 0A 40 BF D9 E3 74 70 67 DE A6 8E 30 84 31 7C
00E0 | D0 28 E8 6F B5 0B BD BC 55 76 36 7C E0 A0 D5 D7
00F0 | 56 7C A8 84 9B ED 14 08 DF 88 02 17 8E E4 70 A2
0100 | B2 1D 80 D2 C4 DE 79 E6 98 F5 64 CF 0D 13 30 25
0110 | 11 36 51 B0 EE 93 25 AE 5E 7C 5E 0B B8 E7 04 21
0120 | 52 C3 5F C9 C2 9C 25 35 48 78 C9 1D 0C EB A6 18
0130 | D6 F3 41 9E B9 5C F3 A4 70 EE 93 FC EF E6 C4 C9
0140 | C9 8D EC 0E 29 58 A6 E1 2C 5D ED FC 4E 9A AA A1
0150 | A5 E7 E5 93 15 CE C8 D4 A5 D8 1B 7C 75 C1 FB 2C
0160 | 4F C4 0D 9B A1 15 97 1C 9E D0 1E 2C BA F8 C0 6E
0170 | 5B B9 E1 39 04 E8 F1 4E 96 C6 D0 0C 28 CB 71 EE
0180 | 72 BF 00 CF D3 1C 94 62 E8 34 4F 60 AA B9 44 EA
0190 | E3 B2 78 30 EF BC 42 3D D7 DA EC BD 09 1D 91 59
01A0 | 2D D8 6B 1F FA 8A 7A A1 B1 C1 51 C0 35 94 CD A9
01B0 | D1 E6 72 54 53 46 AD 3E AA B5 B6 7C 79 78 54 DB
01C0 | 09 A2 D2 C5 9A E7 AD AD CF 78 58 3F 15 02 B4 26
01D0 | E9 F1 24 75 98 8C 83 F9 B9 07 35 F7 8B 05 2F 3B
01E0 | 5F B2 A6 82 34 96 6B F5 32 0A D2 61 4E AB 10 38
01F0 | 3A 02 89 63 6D 41 3A 91 D5 C5 50 E4 D8 4C FE ED
0200 | 6E E0 1C FD A6 F4 5B 7E 38 59 72 A6 69 75 BE F8
0210 | D5 67 69 FC A2 3F 9F 98 79 29 93 72 34 5A BD AB
0220 | F6 A7 D9 AA 9F 40 A2 65 2F EE D2 09 DB CF 99 91
0230 | D8 A5 DF 4A 76 CA 4D 8C 61 31 A9 43 59 45 EC C2
0240 | 65 E8 39 6A 3C A3 17 67 67 86 13 DB A2 A2 76 ED
0250 | 02 88 D6 A7 17 3A 2D D0 8B A5 8B 44 AC 35 48 3E
0260 | 25 32 D4 4E 81 3F 70 94 FF F7 1D 96 B3 6A 44 DE
0270 | 50 76 2B 6F 0D CA A7 D6 A1 85 2F 5F 93 7C 28 6B
0280 | 26 0A 2E 41 74 B3 60 EB 01 49 10 50</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 = C4E43C4F26A7E55D5F9F7233FF763F2DE3F7AF5DA4F63C08439673420
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>017801FE8B788966</code></td>
<td><code>01C48A2422168C66</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>8C020000</code> (652 in decimal)</td>
<td><code>C4020000</code> (708 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = C4E43C4F26A7E55D5F9F7233FF763F2DE3F7AF5DA4F63C08439673420
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>23004DB02EA432B45142F9A4B3F8D2DC</code></td>
<td><code>D8F3E2336A52CFA2A8321AFEE3DDEB54</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>1EB75D370DC0B6229BADAA07F8A0C994</code></td>
<td><code>96ACAE315A554EC136A5CE5E09189E4C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002002DD10108247BC02A26B49C83</code> <code>A68AF6B13329A03CF6CADF9BC3427D11</code> <code>D015CD2CA486E72C6E70DC44305538FB</code> <code>C2E0E0B013D723A1BAFEEAB48BD01D74</code> <code>EAD9E91C612965434991A7F53A9635F3</code> <code>2FACA118CBEE3A1485457312A3650F12</code> <code>01A64E11EE614A7EE0A20898DB6B3DA0</code> <code>D9A1A992C3B7C5CFADC69F6E01819942</code> <code>89A68D598B2D6F706453F883A5CB581E</code> <code>9BE2ABF37C501EAE51135FD71FE7B2F3</code> <code>21DC24A7CCBFE97A97CA0747F5E80D6E</code> <code>737A5A48D65F6B1A9AFB563692E1C367</code> <code>649CDB5EF6CF1816E417C121C97F87FC</code> <code>173FD9941EC943690E5D579C7A572EB3</code> <code>D4113656ECCA076ABEF8F21986289E8D</code> <code>48B0556075735C9AE26F3B8AC99C33CC</code> <code>C248F87342D1E52E359417B0158CEEB0</code> <code>620F2C2E28775F88B56B968879CD4751</code> <code>0072A4FD277A9339525713CEA1A19E18</code> <code>46B2C97D4EE21DD674B2E2D295E8AB41</code> <code>6124C68CEF78FDCCE8777A4980A7FEF3</code> <code>EEFD363424F1803F3207BFF8A72F1C31</code> <code>5E75696412FAF7AD62C6BAFF1BED42BD</code> <code>4CD703190F827F61E870280755350BD0</code> <code>ED4C69923DC0ACBCEA475783EADC3174</code> <code>4604911AB0C054AA1E74DAD06C083B14</code> <code>162417639FDAF61480A5E002FCBA7D9C</code> <code>0EE1246AF28B966B4ECE02974473E27C</code> <code>0F2A120F6197890FC2AE5CC8F7D8211C</code> <code>BC92BF090B1855FF0C78DAB89D306F21</code> <code>8C8A798A7B532755BBE7D6A71C2AFC3D</code> <code>32F5166DC887A1150ABC11D0E1DE6D1C</code> <code>EE88D1D46E9AC9BA6F8EBCCFC0E4E634</code> <code>C22CE6F6BF4EFC18CB201ECAF3DD1716</code> <code>FC5007BC6BB66221DC221BE6595496F2</code> <code>31268BEFBB6DDF9F8EA6120DD1CA745F</code> <code>ECB13A1344BF3DF238BC3305D2C8944D</code><br> <code>F38EB370</code></td>
<td><code>FE500200E77787B2F2CE56BCC5CE9A9E</code> <code>72087A576E6C752F4EBD90CF80ABF359</code> <code>385F727DFECD086D2E699812436B1082</code> <code>36A8ED201939CAAC6AE1B947A68E3C0B</code> <code>6A99C019A721EE237C6785BC34E5BD2C</code> <code>E40CDA7DFDE1903FDF9630537C7DA37E</code> <code>0943DBB04B63B3F3D702FA38BFC82635</code> <code>C341FA59A2AE049A9283F9F33923C325</code> <code>43CF551FD3F9338BCDF18F3F4DF86C72</code> <code>FF9D777871F8C61D930A40BFD9E37470</code> <code>67DEA68E3084317CD028E86FB50BBDBC</code> <code>5576367CE0A0D5D7567CA8849BED1408</code> <code>DF8802178EE470A2B21D80D2C4DE79E6</code> <code>98F564CF0D133025113651B0EE9325AE</code> <code>5E7C5E0BB8E7042152C35FC9C29C2535</code> <code>4878C91D0CEBA618D6F3419EB95CF3A4</code> <code>70EE93FCEFE6C4C9C98DEC0E2958A6E1</code> <code>2C5DEDFC4E9AAAA1A5E7E59315CEC8D4</code> <code>A5D81B7C75C1FB2C4FC40D9BA115971C</code> <code>9ED01E2CBAF8C06E5BB9E13904E8F14E</code> <code>96C6D00C28CB71EE72BF00CFD31C9462</code> <code>E8344F60AAB944EAE3B27830EFBC423D</code> <code>D7DAECBD091D91592DD86B1FFA8A7AA1</code> <code>B1C151C03594CDA9D1E672545346AD3E</code> <code>AAB5B67C797854DB09A2D2C59AE7ADAD</code> <code>CF78583F1502B426E9F12475988C83F9</code> <code>B90735F78B052F3B5FB2A68234966BF5</code> <code>320AD2614EAB10383A0289636D413A91</code> <code>D5C550E4D84CFEED6EE01CFDA6F45B7E</code> <code>385972A66975BEF8D56769FCA23F9F98</code> <code>79299372345ABDABF6A7D9AA9F40A265</code> <code>2FEED209DBCF9991D8A5DF4A76CA4D8C</code> <code>6131A9435945ECC265E8396A3CA31767</code> <code>678613DBA2A276ED0288D6A7173A2DD0</code> <code>8BA58B44AC35483E2532D44E813F7094</code> <code>FFF71D96B36A44DE50762B6F0DCAA7D6</code> <code>A1852F5F937C286B260A2E4174B360EB</code><br> <code>01491050</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = C4E43C4F26A7E55D5F9F7233FF763F2DE3F7AF5DA4F63C08439673420
<!-- 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 = 2DD10108247BC02A26B49C83A68AF6B13329A03CF6CADF9BC3427D11D015CD2CA486E72C6E70DC44305538FBC2E0E0B013D723A1BAFEEAB48BD01D74EAD9E91C612965434991A7F53A9635F32FACA118CBEE3A1485457312A3650F1201A64E11EE614A7EE0A20898DB6B3DA0D9A1A992C3B7C5CFADC69F6E0181994289A68D598B2D6F706453F883A5CB581E9BE2ABF37C501EAE51135FD71FE7B2F321DC24A7CCBFE97A97CA0747F5E80D6E737A5A48D65F6B1A9AFB563692E1C367649CDB5EF6CF1816E417C121C97F87FC173FD9941EC943690E5D579C7A572EB3D4113656ECCA076ABEF8F21986289E8D48B0556075735C9AE26F3B8AC99C33CCC248F87342D1E52E359417B0158CEEB0620F2C2E28775F88B56B968879CD47510072A4FD277A9339525713CEA1A19E1846B2C97D4EE21DD674B2E2D295E8AB416124C68CEF78FDCCE8777A4980A7FEF3EEFD363424F1803F3207BFF8A72F1C315E75696412FAF7AD62C6BAFF1BED42BD4CD703190F827F61E870280755350BD0ED4C69923DC0ACBCEA475783EADC31744604911AB0C054AA1E74DAD06C083B14162417639FDAF61480A5E002FCBA7D9C0EE1246AF28B966B4ECE02974473E27C0F2A120F6197890FC2AE5CC8F7D8211CBC92BF090B1855FF0C78DAB89D306F218C8A798A7B532755BBE7D6A71C2AFC3D32F5166DC887A1150ABC11D0E1DE6D1CEE88D1D46E9AC9BA6F8EBCCFC0E4E634C22CE6F6BF4EFC18CB201ECAF3DD1716FC5007BC6BB66221DC221BE6595496F231268BEFBB6DDF9F8EA6120DD1CA745FECB13A1344BF3DF238BC3305D2C8944DF38EB370
tmp_aes_key = 90B448A39F3C8681ACE767470201D93D0763A9863A333E49438C990FC881A2DB
tmp_aes_iv = E24C9ADD7896815475F5D99A4401D0F47A4C56DD50355376E1560763BD50A74D</code></pre>
<pre><code>encrypted_answer = E77787B2F2CE56BCC5CE9A9E72087A576E6C752F4EBD90CF80ABF359385F727DFECD086D2E699812436B108236A8ED201939CAAC6AE1B947A68E3C0B6A99C019A721EE237C6785BC34E5BD2CE40CDA7DFDE1903FDF9630537C7DA37E0943DBB04B63B3F3D702FA38BFC82635C341FA59A2AE049A9283F9F33923C32543CF551FD3F9338BCDF18F3F4DF86C72FF9D777871F8C61D930A40BFD9E3747067DEA68E3084317CD028E86FB50BBDBC5576367CE0A0D5D7567CA8849BED1408DF8802178EE470A2B21D80D2C4DE79E698F564CF0D133025113651B0EE9325AE5E7C5E0BB8E7042152C35FC9C29C25354878C91D0CEBA618D6F3419EB95CF3A470EE93FCEFE6C4C9C98DEC0E2958A6E12C5DEDFC4E9AAAA1A5E7E59315CEC8D4A5D81B7C75C1FB2C4FC40D9BA115971C9ED01E2CBAF8C06E5BB9E13904E8F14E96C6D00C28CB71EE72BF00CFD31C9462E8344F60AAB944EAE3B27830EFBC423DD7DAECBD091D91592DD86B1FFA8A7AA1B1C151C03594CDA9D1E672545346AD3EAAB5B67C797854DB09A2D2C59AE7ADADCF78583F1502B426E9F12475988C83F9B90735F78B052F3B5FB2A68234966BF5320AD2614EAB10383A0289636D413A91D5C550E4D84CFEED6EE01CFDA6F45B7E385972A66975BEF8D56769FCA23F9F9879299372345ABDABF6A7D9AA9F40A2652FEED209DBCF9991D8A5DF4A76CA4D8C6131A9435945ECC265E8396A3CA31767678613DBA2A276ED0288D6A7173A2DD08BA58B44AC35483E2532D44E813F7094FFF71D96B36A44DE50762B6F0DCAA7D6A1852F5F937C286B260A2E4174B360EB01491050
tmp_aes_key = 966C419FB48CFB2CB3B4AB61A519A9AFE243B280C258CEB9089B78D374D6BC2C
tmp_aes_iv = 9F36806ABB858119A8FC4CFA189118F2A6BF82EC8C21B9B7A13ED5E2B496E902</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 2F9DE8C7F2ECA589AF0B1F614DFF3832DD17A401BA0D89B523004DB02EA432B45142F9A4B3F8D2DC1EB75D370DC0B6229BADAA07F8A0C99403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010074AF2B1581DAA3356CEC52AE21B3341BEE6BB53BC9BE29F80FC653B369EEC8C5B5199C178EC52E47A52C99F07977D148E3499AEEB7A99A41CF8FBA55F0CB5B62483E4F5843ACAB6C985C58E6655A063240387E389223D8D7C01EF69C72573766304DDFE0C9B826005D10A64991E846F3BF765CDC74C63F7BE736928C266C5807FEE64820B907E6EFEDF75BA05896CC9CECF458D3A384846EE35E79258AC0C150C681831ED501AE4C7DCBA4EA1673F6FEC3919752D4F3A6733B81F56E9C6707FB96B9D6EB88E01E03175446D1DFCAB90E954A0AE3C670B9D87BA2CDF11D948DE41C04A7E3EF7EB77795B9F54AAACB5297A66642ADEF7499A799DCB2DC197E1D408B788966B8E1C758A95D0E01
answer = BA0D89B523004DB02EA432B45142F9A4B3F8D2DC1EB75D370DC0B6229BADAA07F8A0C99403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010074AF2B1581DAA3356CEC52AE21B3341BEE6BB53BC9BE29F80FC653B369EEC8C5B5199C178EC52E47A52C99F07977D148E3499AEEB7A99A41CF8FBA55F0CB5B62483E4F5843ACAB6C985C58E6655A063240387E389223D8D7C01EF69C72573766304DDFE0C9B826005D10A64991E846F3BF765CDC74C63F7BE736928C266C5807FEE64820B907E6EFEDF75BA05896CC9CECF458D3A384846EE35E79258AC0C150C681831ED501AE4C7DCBA4EA1673F6FEC3919752D4F3A6733B81F56E9C6707FB96B9D6EB88E01E03175446D1DFCAB90E954A0AE3C670B9D87BA2CDF11D948DE41C04A7E3EF7EB77795B9F54AAACB5297A66642ADEF7499A799DCB2DC197E1D408B788966B8E1C758A95D0E01</code></pre>
<pre><code>answer_with_hash = A51E6E81B6D5C3A97AD8444848F185A3885667E1BA0D89B5D8F3E2336A52CFA2A8321AFEE3DDEB5496ACAE315A554EC136A5CE5E09189E4C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001001138081AE3FCC398AB6E9A89C6A3496A11D5506E5AAFCFF471DD91D90ACA01C205E1674E34140B798174579F22D44ECFDB4DDD1138E9DDC0CF2083F63BB86114884DDE3DC4C8DDD4C0FF895727E0FE53F2FD190867D60736BCA691DF2631C761522833ED9AD67359226819A6E9AEEA36679558B54B41414B06AD0D31F80B88D5B836499CAF97C2E4DCAC9E4AA3F4D01F0451B2CD9A862E7694ED3ED9618A77B1076734E785778A443A22C6119F2D995B0588CDDA9809595206DA9BCA6A3E44ABF1BE9D0ADC485A7C2DF773A7827F3D2D25FC3F892F79CB034891663F63DDC1ED4342360D8E3ECBA57125B3EDB46D33C2538EDA54033CB367C5A4285D5882D00322168C660F85ED59FE075F64
answer = BA0D89B5D8F3E2336A52CFA2A8321AFEE3DDEB5496ACAE315A554EC136A5CE5E09189E4C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001001138081AE3FCC398AB6E9A89C6A3496A11D5506E5AAFCFF471DD91D90ACA01C205E1674E34140B798174579F22D44ECFDB4DDD1138E9DDC0CF2083F63BB86114884DDE3DC4C8DDD4C0FF895727E0FE53F2FD190867D60736BCA691DF2631C761522833ED9AD67359226819A6E9AEEA36679558B54B41414B06AD0D31F80B88D5B836499CAF97C2E4DCAC9E4AA3F4D01F0451B2CD9A862E7694ED3ED9618A77B1076734E785778A443A22C6119F2D995B0588CDDA9809595206DA9BCA6A3E44ABF1BE9D0ADC485A7C2DF773A7827F3D2D25FC3F892F79CB034891663F63DDC1ED4342360D8E3ECBA57125B3EDB46D33C2538EDA54033CB367C5A4285D5882D00322168C660F85ED59FE075F64</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 23 00 4D B0 2E A4 32 B4 51 42 F9 A4
0010 | B3 F8 D2 DC 1E B7 5D 37 0D C0 B6 22 9B AD AA 07
0020 | F8 A0 C9 94 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 D8 F3 E2 33 6A 52 CF A2 A8 32 1A FE
0010 | E3 DD EB 54 96 AC AE 31 5A 55 4E C1 36 A5 CE 5E
0020 | 09 18 9E 4C 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 = BA0D89B523004DB02EA432B45142F9A4B3F8D2DC1EB75D370DC0B6229BADAA07F8A0C99
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 | 74 AF 2B 15 81 DA A3 35 6C EC 52 AE 21 B3 34 1B
0140 | EE 6B B5 3B C9 BE 29 F8 0F C6 53 B3 69 EE C8 C5
0150 | B5 19 9C 17 8E C5 2E 47 A5 2C 99 F0 79 77 D1 48
0160 | E3 49 9A EE B7 A9 9A 41 CF 8F BA 55 F0 CB 5B 62
0170 | 48 3E 4F 58 43 AC AB 6C 98 5C 58 E6 65 5A 06 32
0180 | 40 38 7E 38 92 23 D8 D7 C0 1E F6 9C 72 57 37 66
0190 | 30 4D DF E0 C9 B8 26 00 5D 10 A6 49 91 E8 46 F3
01A0 | BF 76 5C DC 74 C6 3F 7B E7 36 92 8C 26 6C 58 07
01B0 | FE E6 48 20 B9 07 E6 EF ED F7 5B A0 58 96 CC 9C
01C0 | EC F4 58 D3 A3 84 84 6E E3 5E 79 25 8A C0 C1 50
01D0 | C6 81 83 1E D5 01 AE 4C 7D CB A4 EA 16 73 F6 FE
01E0 | C3 91 97 52 D4 F3 A6 73 3B 81 F5 6E 9C 67 07 FB
01F0 | 96 B9 D6 EB 88 E0 1E 03 17 54 46 D1 DF CA B9 0E
0200 | 95 4A 0A E3 C6 70 B9 D8 7B A2 CD F1 1D 94 8D E4
0210 | 1C 04 A7 E3 EF 7E B7 77 95 B9 F5 4A AA CB 52 97
0220 | A6 66 42 AD EF 74 99 A7 99 DC B2 DC 19 7E 1D 40
0230 | 8B 78 89 66</code></pre>
0130 | 11 38 08 1A E3 FC C3 98 AB 6E 9A 89 C6 A3 49 6A
0140 | 11 D5 50 6E 5A AF CF F4 71 DD 91 D9 0A CA 01 C2
0150 | 05 E1 67 4E 34 14 0B 79 81 74 57 9F 22 D4 4E CF
0160 | DB 4D DD 11 38 E9 DD C0 CF 20 83 F6 3B B8 61 14
0170 | 88 4D DE 3D C4 C8 DD D4 C0 FF 89 57 27 E0 FE 53
0180 | F2 FD 19 08 67 D6 07 36 BC A6 91 DF 26 31 C7 61
0190 | 52 28 33 ED 9A D6 73 59 22 68 19 A6 E9 AE EA 36
01A0 | 67 95 58 B5 4B 41 41 4B 06 AD 0D 31 F8 0B 88 D5
01B0 | B8 36 49 9C AF 97 C2 E4 DC AC 9E 4A A3 F4 D0 1F
01C0 | 04 51 B2 CD 9A 86 2E 76 94 ED 3E D9 61 8A 77 B1
01D0 | 07 67 34 E7 85 77 8A 44 3A 22 C6 11 9F 2D 99 5B
01E0 | 05 88 CD DA 98 09 59 52 06 DA 9B CA 6A 3E 44 AB
01F0 | F1 BE 9D 0A DC 48 5A 7C 2D F7 73 A7 82 7F 3D 2D
0200 | 25 FC 3F 89 2F 79 CB 03 48 91 66 3F 63 DD C1 ED
0210 | 43 42 36 0D 8E 3E CB A5 71 25 B3 ED B4 6D 33 C2
0220 | 53 8E DA 54 03 3C B3 67 C5 A4 28 5D 58 82 D0 03
0230 | 22 16 8C 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 = BA0D89B523004DB02EA432B45142F9A4B3F8D2DC1EB75D370DC0B6229BADAA07F8A0C99
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>23004DB02EA432B45142F9A4B3F8D2DC</code></td>
<td><code>D8F3E2336A52CFA2A8321AFEE3DDEB54</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>1EB75D370DC0B6229BADAA07F8A0C994</code></td>
<td><code>96ACAE315A554EC136A5CE5E09189E4C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B523004DB02EA432B45142F9A4B3F8D2DC1EB75D370DC0B6229BADAA07F8A0C99
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE00010074AF2B1581DAA3356CEC52AE</code> <code>21B3341BEE6BB53BC9BE29F80FC653B3</code> <code>69EEC8C5B5199C178EC52E47A52C99F0</code> <code>7977D148E3499AEEB7A99A41CF8FBA55</code> <code>F0CB5B62483E4F5843ACAB6C985C58E6</code> <code>655A063240387E389223D8D7C01EF69C</code> <code>72573766304DDFE0C9B826005D10A649</code> <code>91E846F3BF765CDC74C63F7BE736928C</code> <code>266C5807FEE64820B907E6EFEDF75BA0</code> <code>5896CC9CECF458D3A384846EE35E7925</code> <code>8AC0C150C681831ED501AE4C7DCBA4EA</code> <code>1673F6FEC3919752D4F3A6733B81F56E</code> <code>9C6707FB96B9D6EB88E01E03175446D1</code> <code>DFCAB90E954A0AE3C670B9D87BA2CDF1</code> <code>1D948DE41C04A7E3EF7EB77795B9F54A</code> <code>AACB5297A66642ADEF7499A799DCB2DC</code><br> <code>197E1D40</code></td>
<td><code>FE0001001138081AE3FCC398AB6E9A89</code> <code>C6A3496A11D5506E5AAFCFF471DD91D9</code> <code>0ACA01C205E1674E34140B798174579F</code> <code>22D44ECFDB4DDD1138E9DDC0CF2083F6</code> <code>3BB86114884DDE3DC4C8DDD4C0FF8957</code> <code>27E0FE53F2FD190867D60736BCA691DF</code> <code>2631C761522833ED9AD67359226819A6</code> <code>E9AEEA36679558B54B41414B06AD0D31</code> <code>F80B88D5B836499CAF97C2E4DCAC9E4A</code> <code>A3F4D01F0451B2CD9A862E7694ED3ED9</code> <code>618A77B1076734E785778A443A22C611</code> <code>9F2D995B0588CDDA9809595206DA9BCA</code> <code>6A3E44ABF1BE9D0ADC485A7C2DF773A7</code> <code>827F3D2D25FC3F892F79CB034891663F</code> <code>63DDC1ED4342360D8E3ECBA57125B3ED</code> <code>B46D33C2538EDA54033CB367C5A4285D</code><br> <code>5882D003</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>8B788966</code> (1720285323 in decimal)</td>
<td><code>22168C66</code> (1720456738 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B523004DB02EA432B45142F9A4B3F8D2DC1EB75D370DC0B6229BADAA07F8A0C99
<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 = B9526D6395ED9ED7DFF9B61C5A8F851A051AFC039B18239677FF5E86E70CC9945C30263D33AB8A7FEB2EFF68CC545DC43C5F573FC7248ECE6951E1375A7D58279BBCA6EACCB020F060022F6E1AAE14D3B711A666BB7B1629BA6463D591ABDDE89BF7FFAE62A0A9126627ACAD451ADD06103EB4805C20E4123C05CBA5473B76D2D85479BB1D11E3F4A7E93DA9EAA5D9589C1D5A6AC85F42E1E37CB7C82BA176A57E3B3FFA0EA83EA81A27BFC7497461E56E64CFA9C4230FEE0E56CFA893C0901F736A032A896BB323F0BD07C01BCCEA81F7574462145CB96BD817EC1E833DB002480C11214129039B524EFE5E5E422A1662B9DCFBAF986AA37DA952F74405C289</code></pre>
<pre><code>b = C56DD7721179CF4695969A22A80E3BB8763B45E57506063253498C107AF711736035740CF2C548CF009476206D5E62ECC17EFD6D92CD24B9BC869DC6CAFE87351F6F7954310272621FFC74AC96D3F07FC919FB818E6A558E6C7F09827A0F31DEE0C67A8DE1AD1A1C3DEE5675BCA0E677722E522D17368055469295836B007A1CD71679D93F7F006684E084E497ECE9D17A1E101529B599AC5FCA2C95F480F4552419C9F8041E2A74698D0F4D57A86ABADF2FA51BB2F0177AF59B491C647D25977AE40E5D996402BF4829E635E31237A2D3AF2FCFC1BB0611739C4FB377F9211FADB11699AC4FEDD46567FFD3A814910646267DA15CA28489473FC70B8974D16F</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 = 0A769804311C255AB78311A004EF08F9EC3906A8547D8DA7552B9A79CF186D5C1B9E7C5050EC833169DF93046892A83A759DB47E8B0B978E51D1652D6B44F6787EDD3948D584343D9E119C45E0D577167727750E3F1964FD62CD3E4E6910E8FFBFCBC61A65425053CF3BB82E763737D0A36DB84823C6404E07CFE41103A390D5093EB1B568A92CC00C136C21FF373CEE2E006E978815CBF5AD0ABF5A2E958C03FEECC1B208337B3ABB9A126FD7D7B6BB4CDD690790B66BBEEE2FACA30E1BC3DE6F7C876EDE7F1CB2E896CFAB0D962F1C363B8F3A8E24C24A7017A3E905A3C1E182559C9B4FB91754B94CDEA17BC87062512F218F0C674135A3F38D33629887F3</code></pre>
<pre><code>g_b = 1C88AEAF2A3ECD06CB022864781916499458ACA118C5669FA5BE620E9CC3DD17730849E7837B320321ECD76E0AB0B0D2135D0710AE1C5DC2A4E5141E67E9864D96A8268F2E7D29BB18B32F9997F0CBD82B0A4BF3C39173ED5E20C3D4A529C181E4E8FFA80104533FF127E973E646F76FC803CD22C267692A03D69349AC56961A06F565FFECC4C779D3BB1EA5215411ED0EA824A64AAC9F4ABF06C2DB2B6954B7A26332AD0F731AD7E10BAA1B0523396F0F1EDA3B874A6C7285B57A104628E9916B896E581C0FCDE5BBF24CB745FED1C5CB38E90BE85A36B6A2957097C3A5B1FA7C74AA976AD0B85710524070496ABB9C29B4139EC8F2E622DEC3FA9FB9BC6FF6</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 23 00 4D B0 2E A4 32 B4 51 42 F9 A4
0010 | B3 F8 D2 DC 1E B7 5D 37 0D C0 B6 22 9B AD AA 07
0020 | F8 A0 C9 94 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 0A 76 98 04 31 1C 25 5A B7 83 11 A0 04 EF 08 F9
0040 | EC 39 06 A8 54 7D 8D A7 55 2B 9A 79 CF 18 6D 5C
0050 | 1B 9E 7C 50 50 EC 83 31 69 DF 93 04 68 92 A8 3A
0060 | 75 9D B4 7E 8B 0B 97 8E 51 D1 65 2D 6B 44 F6 78
0070 | 7E DD 39 48 D5 84 34 3D 9E 11 9C 45 E0 D5 77 16
0080 | 77 27 75 0E 3F 19 64 FD 62 CD 3E 4E 69 10 E8 FF
0090 | BF CB C6 1A 65 42 50 53 CF 3B B8 2E 76 37 37 D0
00A0 | A3 6D B8 48 23 C6 40 4E 07 CF E4 11 03 A3 90 D5
00B0 | 09 3E B1 B5 68 A9 2C C0 0C 13 6C 21 FF 37 3C EE
00C0 | 2E 00 6E 97 88 15 CB F5 AD 0A BF 5A 2E 95 8C 03
00D0 | FE EC C1 B2 08 33 7B 3A BB 9A 12 6F D7 D7 B6 BB
00E0 | 4C DD 69 07 90 B6 6B BE EE 2F AC A3 0E 1B C3 DE
00F0 | 6F 7C 87 6E DE 7F 1C B2 E8 96 CF AB 0D 96 2F 1C
0100 | 36 3B 8F 3A 8E 24 C2 4A 70 17 A3 E9 05 A3 C1 E1
0110 | 82 55 9C 9B 4F B9 17 54 B9 4C DE A1 7B C8 70 62
0120 | 51 2F 21 8F 0C 67 41 35 A3 F3 8D 33 62 98 87 F3</code></pre>
<pre><code>0000 | 54 B6 43 66 D8 F3 E2 33 6A 52 CF A2 A8 32 1A FE
0010 | E3 DD EB 54 96 AC AE 31 5A 55 4E C1 36 A5 CE 5E
0020 | 09 18 9E 4C 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 1C 88 AE AF 2A 3E CD 06 CB 02 28 64 78 19 16 49
0040 | 94 58 AC A1 18 C5 66 9F A5 BE 62 0E 9C C3 DD 17
0050 | 73 08 49 E7 83 7B 32 03 21 EC D7 6E 0A B0 B0 D2
0060 | 13 5D 07 10 AE 1C 5D C2 A4 E5 14 1E 67 E9 86 4D
0070 | 96 A8 26 8F 2E 7D 29 BB 18 B3 2F 99 97 F0 CB D8
0080 | 2B 0A 4B F3 C3 91 73 ED 5E 20 C3 D4 A5 29 C1 81
0090 | E4 E8 FF A8 01 04 53 3F F1 27 E9 73 E6 46 F7 6F
00A0 | C8 03 CD 22 C2 67 69 2A 03 D6 93 49 AC 56 96 1A
00B0 | 06 F5 65 FF EC C4 C7 79 D3 BB 1E A5 21 54 11 ED
00C0 | 0E A8 24 A6 4A AC 9F 4A BF 06 C2 DB 2B 69 54 B7
00D0 | A2 63 32 AD 0F 73 1A D7 E1 0B AA 1B 05 23 39 6F
00E0 | 0F 1E DA 3B 87 4A 6C 72 85 B5 7A 10 46 28 E9 91
00F0 | 6B 89 6E 58 1C 0F CD E5 BB F2 4C B7 45 FE D1 C5
0100 | CB 38 E9 0B E8 5A 36 B6 A2 95 70 97 C3 A5 B1 FA
0110 | 7C 74 AA 97 6A D0 B8 57 10 52 40 70 49 6A BB 9C
0120 | 29 B4 13 9E C8 F2 E6 22 DE C3 FA 9F B9 BC 6F F6</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 = BA0D89B523004DB02EA432B45142F9A4B3F8D2DC1EB75D370DC0B6229BADAA07F8A0C99
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>23004DB02EA432B45142F9A4B3F8D2DC</code></td>
<td><code>D8F3E2336A52CFA2A8321AFEE3DDEB54</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>1EB75D370DC0B6229BADAA07F8A0C994</code></td>
<td><code>96ACAE315A554EC136A5CE5E09189E4C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001000A769804311C255AB78311A0</code> <code>04EF08F9EC3906A8547D8DA7552B9A79</code> <code>CF186D5C1B9E7C5050EC833169DF9304</code> <code>6892A83A759DB47E8B0B978E51D1652D</code> <code>6B44F6787EDD3948D584343D9E119C45</code> <code>E0D577167727750E3F1964FD62CD3E4E</code> <code>6910E8FFBFCBC61A65425053CF3BB82E</code> <code>763737D0A36DB84823C6404E07CFE411</code> <code>03A390D5093EB1B568A92CC00C136C21</code> <code>FF373CEE2E006E978815CBF5AD0ABF5A</code> <code>2E958C03FEECC1B208337B3ABB9A126F</code> <code>D7D7B6BB4CDD690790B66BBEEE2FACA3</code> <code>0E1BC3DE6F7C876EDE7F1CB2E896CFAB</code> <code>0D962F1C363B8F3A8E24C24A7017A3E9</code> <code>05A3C1E182559C9B4FB91754B94CDEA1</code> <code>7BC87062512F218F0C674135A3F38D33</code><br> <code>629887F3</code></td>
<td><code>FE0001001C88AEAF2A3ECD06CB022864</code> <code>781916499458ACA118C5669FA5BE620E</code> <code>9CC3DD17730849E7837B320321ECD76E</code> <code>0AB0B0D2135D0710AE1C5DC2A4E5141E</code> <code>67E9864D96A8268F2E7D29BB18B32F99</code> <code>97F0CBD82B0A4BF3C39173ED5E20C3D4</code> <code>A529C181E4E8FFA80104533FF127E973</code> <code>E646F76FC803CD22C267692A03D69349</code> <code>AC56961A06F565FFECC4C779D3BB1EA5</code> <code>215411ED0EA824A64AAC9F4ABF06C2DB</code> <code>2B6954B7A26332AD0F731AD7E10BAA1B</code> <code>0523396F0F1EDA3B874A6C7285B57A10</code> <code>4628E9916B896E581C0FCDE5BBF24CB7</code> <code>45FED1C5CB38E90BE85A36B6A2957097</code> <code>C3A5B1FA7C74AA976AD0B85710524070</code> <code>496ABB9C29B4139EC8F2E622DEC3FA9F</code><br> <code>B9BC6FF6</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 = BA0D89B523004DB02EA432B45142F9A4B3F8D2DC1EB75D370DC0B6229BADAA07F8A0C99
<!-- 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 = 54B6436623004DB02EA432B45142F9A4B3F8D2DC1EB75D370DC0B6229BADAA07F8A0C9940000000000000000FE0001000A769804311C255AB78311A004EF08F9EC3906A8547D8DA7552B9A79CF186D5C1B9E7C5050EC833169DF93046892A83A759DB47E8B0B978E51D1652D6B44F6787EDD3948D584343D9E119C45E0D577167727750E3F1964FD62CD3E4E6910E8FFBFCBC61A65425053CF3BB82E763737D0A36DB84823C6404E07CFE41103A390D5093EB1B568A92CC00C136C21FF373CEE2E006E978815CBF5AD0ABF5A2E958C03FEECC1B208337B3ABB9A126FD7D7B6BB4CDD690790B66BBEEE2FACA30E1BC3DE6F7C876EDE7F1CB2E896CFAB0D962F1C363B8F3A8E24C24A7017A3E905A3C1E182559C9B4FB91754B94CDEA17BC87062512F218F0C674135A3F38D33629887F3
padding = 36171DEE20476DCDC51A6942
tmp_aes_key = 90B448A39F3C8681ACE767470201D93D0763A9863A333E49438C990FC881A2DB
tmp_aes_iv = E24C9ADD7896815475F5D99A4401D0F47A4C56DD50355376E1560763BD50A74D</code></pre>
<pre><code>data = 54B64366D8F3E2336A52CFA2A8321AFEE3DDEB5496ACAE315A554EC136A5CE5E09189E4C0000000000000000FE0001001C88AEAF2A3ECD06CB022864781916499458ACA118C5669FA5BE620E9CC3DD17730849E7837B320321ECD76E0AB0B0D2135D0710AE1C5DC2A4E5141E67E9864D96A8268F2E7D29BB18B32F9997F0CBD82B0A4BF3C39173ED5E20C3D4A529C181E4E8FFA80104533FF127E973E646F76FC803CD22C267692A03D69349AC56961A06F565FFECC4C779D3BB1EA5215411ED0EA824A64AAC9F4ABF06C2DB2B6954B7A26332AD0F731AD7E10BAA1B0523396F0F1EDA3B874A6C7285B57A104628E9916B896E581C0FCDE5BBF24CB745FED1C5CB38E90BE85A36B6A2957097C3A5B1FA7C74AA976AD0B85710524070496ABB9C29B4139EC8F2E622DEC3FA9FB9BC6FF6
padding = E70A90A74B61606283C6BC8E
tmp_aes_key = 966C419FB48CFB2CB3B4AB61A519A9AFE243B280C258CEB9089B78D374D6BC2C
tmp_aes_iv = 9F36806ABB858119A8FC4CFA189118F2A6BF82EC8C21B9B7A13ED5E2B496E902</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 = 11D37CB7A0AECE95AC2D93938D9F3AA0465E9FC216D9081915C1820F336450C77B951DD024ECCBAD3F69D25030CA8C963BDF41C8DF1F5DE536990AA3A444AA3E4D726DA0F631AF4D3A3122090C6F287FB282109C690684D6C19E79BC18EA3D417A829EA7E09E596DE3F87E0BC8355ED5708080F3937023D08D6A4AA84C6817C8F458B490A2E01F44F26DA712208055C95F0AB2AC5A9E2F002DF51157F7D70E37EC1656A1C8C9EC14DBAD72CE75E6B9121759B55B1CEE6E2C5E5AF9643BBAF6B2555A6182B509600698D618DA9131B7E3CAAEB341A0FC929EB19B1BBD2E878B56BF9A9D25FDCBD6F2E774AF95CABF7D41F6352D1E0CC38460129AC4E17A587145A994FB2A44B8DE8FE7DAB98D6DBA78AEB7EF9B3F9D27E859B80E28C22764BEB9A135850769DBB018C1D8A8527533FF285C928D7F1FC957979C9CE87C98CDA8994BAF2EEECEBEEF397FE539B14E0A2452</code></pre>
<pre><code>encrypted_data = 72CB150088AF156F0AE4CF0357CEE8D26D41559177F8303A92C1200CD1349A68CCF03ED1E61D9D796BC7CAE668EB3282E0DC03846392E392C6E90DB1F747BCFBA2A503E196EB9876629913E16013AAC044F70DD05E561A8126E836EFFCFE1B70235E5233234DC5F602CFDD420295D87229D3D44E46F80441D84790A5FCF171B6D195D9E11A344303F995664DA33A3D83A823449C60694C5B687E16F79177DD97A437EAAD74E4F2B0F8CDB766A3EFC3F0C56B8CD675C1FFC076BE8F9BE74B2925AD5D4ABB26196EE9625E2E8C2F6DBC9E0D1D98A3CBBF7EC32FCC9C292C5208D377C83E94F430A0E94E5B7488227CADC975CC513B57859DC76E43FD8AF0EB245EED209B822C1342E3DE64FB9F459FD761C727572D7D7514C26AD889F76FE37AD5B6E235B2D53E68007F5F7CFC2993F93EB2961711FDB4C2D9CEF414F7EBCAAD739A02E2E272FDA1583119D715A3300B96</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 6C 3F 0A 00 8B 78 89 66
0010 | 78 01 00 00 1F 5F 04 F5 23 00 4D B0 2E A4 32 B4
0020 | 51 42 F9 A4 B3 F8 D2 DC 1E B7 5D 37 0D C0 B6 22
0030 | 9B AD AA 07 F8 A0 C9 94 FE 50 01 00 11 D3 7C B7
0040 | A0 AE CE 95 AC 2D 93 93 8D 9F 3A A0 46 5E 9F C2
0050 | 16 D9 08 19 15 C1 82 0F 33 64 50 C7 7B 95 1D D0
0060 | 24 EC CB AD 3F 69 D2 50 30 CA 8C 96 3B DF 41 C8
0070 | DF 1F 5D E5 36 99 0A A3 A4 44 AA 3E 4D 72 6D A0
0080 | F6 31 AF 4D 3A 31 22 09 0C 6F 28 7F B2 82 10 9C
0090 | 69 06 84 D6 C1 9E 79 BC 18 EA 3D 41 7A 82 9E A7
00A0 | E0 9E 59 6D E3 F8 7E 0B C8 35 5E D5 70 80 80 F3
00B0 | 93 70 23 D0 8D 6A 4A A8 4C 68 17 C8 F4 58 B4 90
00C0 | A2 E0 1F 44 F2 6D A7 12 20 80 55 C9 5F 0A B2 AC
00D0 | 5A 9E 2F 00 2D F5 11 57 F7 D7 0E 37 EC 16 56 A1
00E0 | C8 C9 EC 14 DB AD 72 CE 75 E6 B9 12 17 59 B5 5B
00F0 | 1C EE 6E 2C 5E 5A F9 64 3B BA F6 B2 55 5A 61 82
0100 | B5 09 60 06 98 D6 18 DA 91 31 B7 E3 CA AE B3 41
0110 | A0 FC 92 9E B1 9B 1B BD 2E 87 8B 56 BF 9A 9D 25
0120 | FD CB D6 F2 E7 74 AF 95 CA BF 7D 41 F6 35 2D 1E
0130 | 0C C3 84 60 12 9A C4 E1 7A 58 71 45 A9 94 FB 2A
0140 | 44 B8 DE 8F E7 DA B9 8D 6D BA 78 AE B7 EF 9B 3F
0150 | 9D 27 E8 59 B8 0E 28 C2 27 64 BE B9 A1 35 85 07
0160 | 69 DB B0 18 C1 D8 A8 52 75 33 FF 28 5C 92 8D 7F
0170 | 1F C9 57 97 9C 9C E8 7C 98 CD A8 99 4B AF 2E EE
0180 | CE BE EF 39 7F E5 39 B1 4E 0A 24 52</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 98 AC 0D 00 22 16 8C 66
0010 | 78 01 00 00 1F 5F 04 F5 D8 F3 E2 33 6A 52 CF A2
0020 | A8 32 1A FE E3 DD EB 54 96 AC AE 31 5A 55 4E C1
0030 | 36 A5 CE 5E 09 18 9E 4C FE 50 01 00 72 CB 15 00
0040 | 88 AF 15 6F 0A E4 CF 03 57 CE E8 D2 6D 41 55 91
0050 | 77 F8 30 3A 92 C1 20 0C D1 34 9A 68 CC F0 3E D1
0060 | E6 1D 9D 79 6B C7 CA E6 68 EB 32 82 E0 DC 03 84
0070 | 63 92 E3 92 C6 E9 0D B1 F7 47 BC FB A2 A5 03 E1
0080 | 96 EB 98 76 62 99 13 E1 60 13 AA C0 44 F7 0D D0
0090 | 5E 56 1A 81 26 E8 36 EF FC FE 1B 70 23 5E 52 33
00A0 | 23 4D C5 F6 02 CF DD 42 02 95 D8 72 29 D3 D4 4E
00B0 | 46 F8 04 41 D8 47 90 A5 FC F1 71 B6 D1 95 D9 E1
00C0 | 1A 34 43 03 F9 95 66 4D A3 3A 3D 83 A8 23 44 9C
00D0 | 60 69 4C 5B 68 7E 16 F7 91 77 DD 97 A4 37 EA AD
00E0 | 74 E4 F2 B0 F8 CD B7 66 A3 EF C3 F0 C5 6B 8C D6
00F0 | 75 C1 FF C0 76 BE 8F 9B E7 4B 29 25 AD 5D 4A BB
0100 | 26 19 6E E9 62 5E 2E 8C 2F 6D BC 9E 0D 1D 98 A3
0110 | CB BF 7E C3 2F CC 9C 29 2C 52 08 D3 77 C8 3E 94
0120 | F4 30 A0 E9 4E 5B 74 88 22 7C AD C9 75 CC 51 3B
0130 | 57 85 9D C7 6E 43 FD 8A F0 EB 24 5E ED 20 9B 82
0140 | 2C 13 42 E3 DE 64 FB 9F 45 9F D7 61 C7 27 57 2D
0150 | 7D 75 14 C2 6A D8 89 F7 6F E3 7A D5 B6 E2 35 B2
0160 | D5 3E 68 00 7F 5F 7C FC 29 93 F9 3E B2 96 17 11
0170 | FD B4 C2 D9 CE F4 14 F7 EB CA AD 73 9A 02 E2 E2
0180 | 72 FD A1 58 31 19 D7 15 A3 30 0B 96</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>6C3F0A008B788966</code></td>
<td><code>98AC0D0022168C66</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>23004DB02EA432B45142F9A4B3F8D2DC</code></td>
<td><code>D8F3E2336A52CFA2A8321AFEE3DDEB54</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>1EB75D370DC0B6229BADAA07F8A0C994</code></td>
<td><code>96ACAE315A554EC136A5CE5E09189E4C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010011D37CB7A0AECE95AC2D9393</code> <code>8D9F3AA0465E9FC216D9081915C1820F</code> <code>336450C77B951DD024ECCBAD3F69D250</code> <code>30CA8C963BDF41C8DF1F5DE536990AA3</code> <code>A444AA3E4D726DA0F631AF4D3A312209</code> <code>0C6F287FB282109C690684D6C19E79BC</code> <code>18EA3D417A829EA7E09E596DE3F87E0B</code> <code>C8355ED5708080F3937023D08D6A4AA8</code> <code>4C6817C8F458B490A2E01F44F26DA712</code> <code>208055C95F0AB2AC5A9E2F002DF51157</code> <code>F7D70E37EC1656A1C8C9EC14DBAD72CE</code> <code>75E6B9121759B55B1CEE6E2C5E5AF964</code> <code>3BBAF6B2555A6182B509600698D618DA</code> <code>9131B7E3CAAEB341A0FC929EB19B1BBD</code> <code>2E878B56BF9A9D25FDCBD6F2E774AF95</code> <code>CABF7D41F6352D1E0CC38460129AC4E1</code> <code>7A587145A994FB2A44B8DE8FE7DAB98D</code> <code>6DBA78AEB7EF9B3F9D27E859B80E28C2</code> <code>2764BEB9A135850769DBB018C1D8A852</code> <code>7533FF285C928D7F1FC957979C9CE87C</code> <code>98CDA8994BAF2EEECEBEEF397FE539B1</code><br> <code>4E0A2452</code></td>
<td><code>FE50010072CB150088AF156F0AE4CF03</code> <code>57CEE8D26D41559177F8303A92C1200C</code> <code>D1349A68CCF03ED1E61D9D796BC7CAE6</code> <code>68EB3282E0DC03846392E392C6E90DB1</code> <code>F747BCFBA2A503E196EB9876629913E1</code> <code>6013AAC044F70DD05E561A8126E836EF</code> <code>FCFE1B70235E5233234DC5F602CFDD42</code> <code>0295D87229D3D44E46F80441D84790A5</code> <code>FCF171B6D195D9E11A344303F995664D</code> <code>A33A3D83A823449C60694C5B687E16F7</code> <code>9177DD97A437EAAD74E4F2B0F8CDB766</code> <code>A3EFC3F0C56B8CD675C1FFC076BE8F9B</code> <code>E74B2925AD5D4ABB26196EE9625E2E8C</code> <code>2F6DBC9E0D1D98A3CBBF7EC32FCC9C29</code> <code>2C5208D377C83E94F430A0E94E5B7488</code> <code>227CADC975CC513B57859DC76E43FD8A</code> <code>F0EB245EED209B822C1342E3DE64FB9F</code> <code>459FD761C727572D7D7514C26AD889F7</code> <code>6FE37AD5B6E235B2D53E68007F5F7CFC</code> <code>2993F93EB2961711FDB4C2D9CEF414F7</code> <code>EBCAAD739A02E2E272FDA1583119D715</code><br> <code>A3300B96</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 = 29828E34CBECB254AFFD08DA01CA16A420724BAADBF19BB49A8C6F0DB809852B20D98751847527777B0870C8F4B81EBE195D405811540568974287B2234AD99D7648EE881B4B1A8C54F4D317E1B52332059F45DFDD83B28655470CC15D59CE88AC902670AC66990E6ADD60A1459AC705BF36796C289FC8C4BB41209FDF8B917786E4E38E19A5E0EEE69098329FB3CCB37FE16CDF16424D9F6B07A5AE882FA51EBBF26F40409F0971DE744D174259CB674EE73D47E9BC60DFEAB13934CC2F204560699C2A9A5F25BC3A5908F7B9BD3AFDB384DB4E7F5F29B3F65A25EF1B2736140982A4AE9192D9EB5FEB05151F9E0BCEA41026C16ACF0E09408607B2DA6C77B0</code></pre>
<pre><code>auth_key = 1C5D7078A25E8171B228AB85227D6229A84EB388235A3C66CC828A0944B70100BBD0485DC96ABFA8C6153324D5E6EEB0F7FB1D231537EED161F391A7632B200FC5C90EE316AD3430E44406BEE715D83C097C3E7964AAF20D45A238A6F3D7E2F705EC740D64505ECAF3EA779C3020B77BB0EFC75DF7A3B76797365B4BD6DA555C108DE1385A40AD4134143CFEFC1C283AA66F1428C053C1CDFDDE73263665408ECA2ABA902A3785C11F2BEFACD270A4FC04255708094BFEA9AF22DC2E00310A4010EEFF02208C05A92C8511CBBFD6F37BAC01D9D6F4C779FD0FBBED63E452405FA8BB1C9C4F977E86F132C14EED50F1F5C7DBF4192F06E56C69AB2D0FCBDA947F</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 4C 09 7A 8C 78 89 66
0010 | 6C 00 00 00 34 F7 CB 3B 23 00 4D B0 2E A4 32 B4
0020 | 51 42 F9 A4 B3 F8 D2 DC 1E B7 5D 37 0D C0 B6 22
0030 | 9B AD AA 07 F8 A0 C9 94 03 E5 25 2A 17 84 07 2E
0040 | 33 2B 11 DC 59 40 00 A2</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 DC 54 90 22 16 8C 66
0010 | 90 00 00 00 34 F7 CB 3B D8 F3 E2 33 6A 52 CF A2
0020 | A8 32 1A FE E3 DD EB 54 96 AC AE 31 5A 55 4E C1
0030 | 36 A5 CE 5E 09 18 9E 4C BC F5 0E 88 8B F9 6E 3D
0040 | 64 EA 6E 75 02 F7 3A FA</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>014C097A8C788966</code></td>
<td><code>01DC549022168C66</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>6C000000</code> (108 in decimal)</td>
<td><code>90000000</code> (144 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>23004DB02EA432B45142F9A4B3F8D2DC</code></td>
<td><code>D8F3E2336A52CFA2A8321AFEE3DDEB54</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>1EB75D370DC0B6229BADAA07F8A0C994</code></td>
<td><code>96ACAE315A554EC136A5CE5E09189E4C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>03E5252A1784072E332B11DC594000A2</code></td>
<td><code>BCF50E888BF96E3D64EA6E7502F73AFA</code></td>
<td>The 128 lower-order bits of SHA1 of the byte string derived from the <code>new_nonce</code> string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with <code>auth_key_aux_hash</code>. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.</td>
</tr>
</tbody>

View file

@ -948,7 +948,7 @@
</tr>
<tr>
<td><a href="/method/account.updateBusinessIntro">account.updateBusinessIntro</a></td>
<td> </td>
<td>Set or remove the <a href="/api/business#business-introduction">Telegram Business introduction »</a>.</td>
</tr>
<tr>
<td><a href="/method/account.toggleConnectedBotPaused">account.toggleConnectedBotPaused</a></td>

View file

@ -8,14 +8,14 @@
Constructor
Description
businessIntro
 ">
Telegram Business introduction ».">
<meta property="og:title" content="BusinessIntro">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
businessIntro
 ">
Telegram Business introduction ».">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -74,7 +74,7 @@ businessIntro
<tbody>
<tr>
<td><a href="/constructor/businessIntro">businessIntro</a></td>
<td> </td>
<td><a href="/api/business#business-introduction">Telegram Business introduction »</a>.</td>
</tr>
</tbody>
</table></div>

View file

@ -8,14 +8,14 @@
Constructor
Description
inputBusinessIntro
 ">
Telegram Business introduction ».">
<meta property="og:title" content="InputBusinessIntro">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
inputBusinessIntro
 ">
Telegram Business introduction ».">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -74,7 +74,7 @@ inputBusinessIntro
<tbody>
<tr>
<td><a href="/constructor/inputBusinessIntro">inputBusinessIntro</a></td>
<td> </td>
<td><a href="/api/business#business-introduction">Telegram Business introduction »</a>.</td>
</tr>
</tbody>
</table></div>