mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-03-14 04:51:42 +01:00
Update content of files
This commit is contained in:
parent
a9121a0f43
commit
14f301cfd3
8 changed files with 240 additions and 251 deletions
|
@ -116,6 +116,14 @@ Note that <a href="/constructor/message">message</a>.<code>from_boosts_applied</
|
|||
After reaching at least the boost level specified in the <a href="/api/config#channel-custom-wallpaper-level-min"><code>channel_custom_wallpaper_level_min</code> »</a>/<a href="/api/config#group-custom-wallpaper-level-min"><code>group_custom_wallpaper_level_min</code> »</a> config parameters, channels/supergroups gain the ability to set any custom <a href="/api/wallpapers">wallpaper</a>, not just <a href="/api/wallpapers">fill channel/supergroup wallpapers, see here » for more info</a>. </p>
|
||||
<h4><a class="anchor" href="#setting-a-custom-emoji-status" id="setting-a-custom-emoji-status" name="setting-a-custom-emoji-status"><i class="anchor-icon"></i></a>Setting a custom emoji status</h4>
|
||||
<p>After reaching at least the boost level specified in the <a href="/api/config#channel-emoji-status-level-min"><code>channel_emoji_status_level_min</code> »</a>/<a href="/api/config#group-emoji-status-level-min"><code>group_emoji_status_level_min</code> »</a> config parameters, channels/supergroups gain the ability to change their <a href="/api/emoji-status">status emoji »</a>. </p>
|
||||
<h4><a class="anchor" href="#bypass-slowmode-and-chat-restrictions" id="bypass-slowmode-and-chat-restrictions" name="bypass-slowmode-and-chat-restrictions"><i class="anchor-icon"></i></a>Bypass slowmode and chat restrictions</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><<a href='/type/BotInfo'>BotInfo</a>> 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><<a href='/type/string'>string</a>> 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><<a href='/type/long'>long</a>> 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>;
|
||||
|
||||
---functions---
|
||||
|
||||
<a href='/method/channels.setBoostsToUnblockRestrictions'>channels.setBoostsToUnblockRestrictions</a>#ad399cee channel:<a href='/type/InputChannel'>InputChannel</a> boosts:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre>
|
||||
<p>Supergroup admins with <a href="/constructor/chatAdminRights">ban_users admin rights »</a> may allow users that apply a certain number of boosts to the group to bypass <a href="/method/channels.toggleSlowMode">slow mode »</a> and <a href="/api/rights#default-rights">other »</a> supergroup restrictions using <a href="/method/channels.setBoostsToUnblockRestrictions">channels.setBoostsToUnblockRestrictions</a>. </p>
|
||||
<p>The number of required boosts must be specified in the <code>boosts</code> parameter (1-8, 0 to disable), and will be returned in <a href="/constructor/channelFull">channelFull</a>.<code>boosts_unrestrict</code>. </p>
|
||||
<h4><a class="anchor" href="#setting-a-custom-emoji-stickerset-for-supergroups" id="setting-a-custom-emoji-stickerset-for-supergroups" name="setting-a-custom-emoji-stickerset-for-supergroups"><i class="anchor-icon"></i></a>Setting a custom emoji stickerset for supergroups</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><<a href='/type/BotInfo'>BotInfo</a>> 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><<a href='/type/string'>string</a>> 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><<a href='/type/long'>long</a>> 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>;
|
||||
|
||||
|
|
|
@ -64,8 +64,9 @@ Also, one can't invite people into gigagroups and participants of voice chats in
|
|||
<p>In previous versions of telegram, only basic groups (represented by <a href="/constructor/chat">chat</a> constructors) could be created using <a href="/method/messages.createChat">messages.createChat</a>: these groups have fewer features, and can only have 200 members at max.<br>
|
||||
Messages from all basic groups are stored in the <a href="/api/updates#message-related-event-sequences">user's message box »</a>: this means that all basic groups and all private chats share the same, single message ID and <a href="/api/updates">PTS</a> sequence. </p>
|
||||
<h4><a class="anchor" href="#migration" id="migration" name="migration"><i class="anchor-icon"></i></a>Migration</h4>
|
||||
<p>To upgrade a basic group to a supergroup, <a href="/method/messages.migrateChat">messages.migrateChat</a> can be used.
|
||||
The <code>chats</code> field of the result will have two objects: </p>
|
||||
<p>To upgrade a basic group to a supergroup, <a href="/method/messages.migrateChat">messages.migrateChat</a> can be used. </p>
|
||||
<p>Clients should automatically migrate basic groups to supergroups if an admin tries to execute an action that is only supported by supergroups. </p>
|
||||
<p>The <code>chats</code> field of the result will have two objects: </p>
|
||||
<ul>
|
||||
<li>A <a href="/constructor/chat">chat</a> constructor with a <code>migrated_to</code> field, indicating the address of the new supergroup</li>
|
||||
<li>The new <a href="/constructor/channel">channel</a> megagroup constructor</li>
|
||||
|
|
|
@ -49,8 +49,8 @@
|
|||
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/method/messages.editFactCheck">messages.editFactCheck</a> - Edit/create a <a href="/api/factcheck">fact-check</a> on a message; can only be used by independent fact-checkers as specified by the <a href="/api/config#can-edit-factcheck">appConfig.can_edit_factcheck</a> configuration flag.</li>
|
||||
<li>Added <a href="/method/messages.deleteFactCheck">messages.deleteFactCheck</a> - Delete a <a href="/api/factcheck">fact-check</a> from a message; can only be used by independent fact-checkers as specified by the <a href="/api/config#can-edit-factcheck">appConfig.can_edit_factcheck</a> configuration flag.</li>
|
||||
<li>Added <a href="/method/messages.editFactCheck">messages.editFactCheck</a> - Edit/create a <a href="/api/factcheck">fact-check</a> on a message.</li>
|
||||
<li>Added <a href="/method/messages.deleteFactCheck">messages.deleteFactCheck</a> - Delete a <a href="/api/factcheck">fact-check</a> from a message.</li>
|
||||
<li>Added <a href="/method/messages.getFactCheck">messages.getFactCheck</a> - </li>
|
||||
<li>Added <a href="/method/payments.getStarsTopupOptions">payments.getStarsTopupOptions</a> - </li>
|
||||
<li>Added <a href="/method/payments.getStarsStatus">payments.getStarsStatus</a> - </li>
|
||||
|
@ -574,7 +574,7 @@
|
|||
<ul>
|
||||
<li>Added <a href="/method/messages.getOutboxReadDate">messages.getOutboxReadDate</a> - </li>
|
||||
<li>Added <a href="/method/users.getIsPremiumRequiredToContact">users.getIsPremiumRequiredToContact</a> - Check whether we can write to the specified user (non-<a href="/api/premium">Premium</a> users only).</li>
|
||||
<li>Added <a href="/method/channels.setBoostsToUnblockRestrictions">channels.setBoostsToUnblockRestrictions</a> - </li>
|
||||
<li>Added <a href="/method/channels.setBoostsToUnblockRestrictions">channels.setBoostsToUnblockRestrictions</a> - Admins with <a href="/constructor/chatAdminRights">ban_users admin rights »</a> may allow users that apply a certain number of <a href="/api/boost">booosts »</a> to the group to bypass <a href="/method/channels.toggleSlowMode">slow mode »</a> and <a href="/api/rights#default-rights">other »</a> supergroup restrictions, see <a href="/api/boost#bypass-slowmode-and-chat-restrictions">here »</a> for more info.</li>
|
||||
<li>Added <a href="/method/channels.setEmojiStickers">channels.setEmojiStickers</a> - Set a <a href="/api/custom-emoji">custom emoji stickerset</a> for supergroups. Only usable after reaching at least the <a href="/api/boost">boost level »</a> specified in the <a href="/api/config#group-emoji-stickers-level-min"><code>group_emoji_stickers_level_min</code> »</a> config parameter.</li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
|
|
|
@ -354,7 +354,7 @@
|
|||
<tr>
|
||||
<td><strong>boosts_unrestrict</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags2</a>.9?<a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
<td>The number of <a href="/api/boost">boosts</a> this <em>supergroup</em> requires to bypass slowmode and other restrictions, see <a href="/api/boost#bypass-slowmode-and-chat-restrictions">here »</a> for more info.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>emojiset</strong></td>
|
||||
|
|
|
@ -4,40 +4,10 @@
|
|||
<meta charset="utf-8">
|
||||
<title>channels.setBoostsToUnblockRestrictions</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
channel
|
||||
InputChannel
|
||||
|
||||
boosts
|
||||
int
|
||||
|
||||
Result
|
||||
Updates
|
||||
Possible errors
|
||||
Code
|
||||
Type
|
||||
Description…">
|
||||
<meta property="description" content="Admins with ban_users admin rights » may allow users that apply a certain number of booosts » to the group to bypass slow mode » and other » supergroup restrictions, see here » for more info.">
|
||||
<meta property="og:title" content="channels.setBoostsToUnblockRestrictions">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
channel
|
||||
InputChannel
|
||||
|
||||
boosts
|
||||
int
|
||||
|
||||
Result
|
||||
Updates
|
||||
Possible errors
|
||||
Code
|
||||
Type
|
||||
Description…">
|
||||
<meta property="og:description" content="Admins with ban_users admin rights » may allow users that apply a certain number of booosts » to the group to bypass slow mode » and other » supergroup restrictions, see here » for more info.">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -72,7 +42,8 @@ Description…">
|
|||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/channels.setBoostsToUnblockRestrictions" >channels.setBoostsToUnblockRestrictions</a></li></ul></div>
|
||||
<h1 id="dev_page_title">channels.setBoostsToUnblockRestrictions</h1>
|
||||
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<div id="dev_page_content"><p>Admins with <a href="/constructor/chatAdminRights">ban_users admin rights »</a> may allow users that apply a certain number of <a href="/api/boost">booosts »</a> to the group to bypass <a href="/method/channels.toggleSlowMode">slow mode »</a> and <a href="/api/rights#default-rights">other »</a> supergroup restrictions, see <a href="/api/boost#bypass-slowmode-and-chat-restrictions">here »</a> for more info.</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>
|
||||
|
@ -106,12 +77,12 @@ Description…">
|
|||
<tr>
|
||||
<td><strong>channel</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td>
|
||||
<td> </td>
|
||||
<td>The supergroup.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>boosts</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td> </td>
|
||||
<td>The number of required boosts (1-8, 0 to disable).</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -133,7 +104,16 @@ Description…">
|
|||
<td>The provided channel 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="#chatadminrights" id="chatadminrights" name="chatadminrights"><i class="anchor-icon"></i></a><a href="/constructor/chatAdminRights">chatAdminRights</a></h4>
|
||||
<p>Represents the rights of an admin in a <a href="/api/channel">channel/supergroup</a>.</p>
|
||||
<h4><a class="anchor" href="#channel-and-supergroup-boosts" id="channel-and-supergroup-boosts" name="channel-and-supergroup-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel and supergroup boosts</a></h4>
|
||||
<p>Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.</p>
|
||||
<h4><a class="anchor" href="#channelstoggleslowmode" id="channelstoggleslowmode" name="channelstoggleslowmode"><i class="anchor-icon"></i></a><a href="/method/channels.toggleSlowMode">channels.toggleSlowMode</a></h4>
|
||||
<p>Toggle supergroup slow mode: if enabled, users will only be able to send one message every <code>seconds</code> seconds</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></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -3370,7 +3370,7 @@ Look for updates of telegram's terms of service…">
|
|||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/channels.setBoostsToUnblockRestrictions">channels.setBoostsToUnblockRestrictions</a></td>
|
||||
<td> </td>
|
||||
<td>Admins with <a href="/constructor/chatAdminRights">ban_users admin rights »</a> may allow users that apply a certain number of <a href="/api/boost">booosts »</a> to the group to bypass <a href="/method/channels.toggleSlowMode">slow mode »</a> and <a href="/api/rights#default-rights">other »</a> supergroup restrictions, see <a href="/api/boost#bypass-slowmode-and-chat-restrictions">here »</a> for more info.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/account.updateBusinessLocation">account.updateBusinessLocation</a></td>
|
||||
|
|
|
@ -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 3C 76 0D 00 99 F8 97 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 14 48 2B 90 FA E8 E3 5C
|
||||
0020 | E4 08 5A A7 53 2F 0F A8</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 C4 8A 04 00 89 FB 97 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE AE 3C 4B 5C 6F 3C 2B 0D
|
||||
0020 | 7D 27 2F 73 3E 43 D7 16</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>3C760D0099F89766</code></td>
|
||||
<td><code>C48A040089FB9766</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -95,7 +95,7 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>14482B90FAE8E35CE4085AA7532F0FA8</code></td>
|
||||
<td><code>AE3C4B5C6F3C2B0D7D272F733E43D716</code></td>
|
||||
<td>Random number</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -104,10 +104,10 @@
|
|||
<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 44 4B DF 99 F8 97 66
|
||||
0010 | A8 00 00 00 63 24 16 05 14 48 2B 90 FA E8 E3 5C
|
||||
0020 | E4 08 5A A7 53 2F 0F A8 E8 BA 72 BA FB B7 A6 C5
|
||||
0030 | DB 1D 85 74 D8 8F 6B 3A 08 1D 70 66 9E EC 19 9D
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 A8 12 6E 89 FB 97 66
|
||||
0010 | 50 00 00 00 63 24 16 05 AE 3C 4B 5C 6F 3C 2B 0D
|
||||
0020 | 7D 27 2F 73 3E 43 D7 16 2F C9 7B B4 A7 29 4A 97
|
||||
0030 | 8D 22 18 F0 39 EC B2 86 08 1F 24 6C E9 AB 05 AB
|
||||
0040 | AD 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>
|
||||
|
@ -132,13 +132,13 @@
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01444BDF99F89766</code></td>
|
||||
<td><code>01A8126E89FB9766</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>message_length</td>
|
||||
<td>16, 4</td>
|
||||
<td><code>A8000000</code> (168 in decimal)</td>
|
||||
<td><code>50000000</code> (80 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>14482B90FAE8E35CE4085AA7532F0FA8</code></td>
|
||||
<td><code>AE3C4B5C6F3C2B0D7D272F733E43D716</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>E8BA72BAFBB7A6C5DB1D8574D88F6B3A</code></td>
|
||||
<td><code>2FC97BB4A7294A978D2218F039ECB286</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>081D70669EEC199DAD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2121308257243471277</td>
|
||||
<td><code>081F246CE9AB05ABAD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2244038265189804973</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 < q.</h5>
|
||||
<!-- start pq -->
|
||||
<pre><code>pq = 2121308257243471277</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2121308257243471277 = 1377601429 * 1539856313</code></p>
|
||||
<pre><code>p = 1377601429
|
||||
q = 1539856313</code></pre>
|
||||
<pre><code>pq = 2244038265189804973</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2244038265189804973 = 1408624999 * 1593070027</code></p>
|
||||
<pre><code>p = 1408624999
|
||||
q = 1593070027</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 1D 70 66 9E EC 19 9D AD 00 00 00
|
||||
0010 | 04 52 1C 87 95 00 00 00 04 5B C8 57 B9 00 00 00
|
||||
0020 | 14 48 2B 90 FA E8 E3 5C E4 08 5A A7 53 2F 0F A8
|
||||
0030 | E8 BA 72 BA FB B7 A6 C5 DB 1D 85 74 D8 8F 6B 3A
|
||||
0040 | F9 09 96 64 AE 22 08 63 52 25 1B B9 50 D4 97 14
|
||||
0050 | 49 2D EB 71 D9 81 06 F4 BF 21 B1 A4 49 86 5D 28
|
||||
<pre><code>0000 | 95 5F F5 A9 08 1F 24 6C E9 AB 05 AB AD 00 00 00
|
||||
0010 | 04 53 F5 E9 67 00 00 00 04 5E F4 51 CB 00 00 00
|
||||
0020 | AE 3C 4B 5C 6F 3C 2B 0D 7D 27 2F 73 3E 43 D7 16
|
||||
0030 | 2F C9 7B B4 A7 29 4A 97 8D 22 18 F0 39 EC B2 86
|
||||
0040 | 93 1C 01 18 53 0C 27 7A 4A 14 D0 9A 0D 66 69 83
|
||||
0050 | 5D 59 2B F0 82 D8 38 FC 0D DA B1 AD 31 6B 2B E0
|
||||
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 = 1539856313</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>081D70669EEC199DAD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2121308257243471277</td>
|
||||
<td><code>081F246CE9AB05ABAD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2244038265189804973</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>04521C8795000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1377601429</td>
|
||||
<td><code>0453F5E967000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1408624999</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>045BC857B9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1539856313</td>
|
||||
<td><code>045EF451CB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1593070027</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>14482B90FAE8E35CE4085AA7532F0FA8</code></td>
|
||||
<td><code>AE3C4B5C6F3C2B0D7D272F733E43D716</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>E8BA72BAFBB7A6C5DB1D8574D88F6B3A</code></td>
|
||||
<td><code>2FC97BB4A7294A978D2218F039ECB286</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>F9099664AE22086352251BB950D49714</code> <code>492DEB71D98106F4BF21B1A449865D28</code></td>
|
||||
<td><code>931C0118530C277A4A14D09A0D666983</code> <code>5D592BF082D838FC0DDAB1AD316B2BE0</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1539856313</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 = 955FF5A9081D70669EEC199DAD00000004521C8795000000045BC857B900000014482B90FAE8E35CE4085AA7532F0FA8E8BA72BAFBB7A6C5DB1D8574D88F6B3AF9099664AE22086352251BB950D49714492DEB71D98106F4BF21B1A449865D2802000000
|
||||
random_padding_bytes = 7A881DD3A1A48086032513FB9E5E12D26EA2F2A1638117FABF0B10FF3C0AF8A3F54E5833BE879EA1DD7C77020707D1A8CA4AA49956107C8475B7B34901E29978191934994EF3ECC9CB05750945CF6111924260DA932052328617FD20</code></pre>
|
||||
<pre><code>data = 955FF5A9081F246CE9AB05ABAD0000000453F5E967000000045EF451CB000000AE3C4B5C6F3C2B0D7D272F733E43D7162FC97BB4A7294A978D2218F039ECB286931C0118530C277A4A14D09A0D6669835D592BF082D838FC0DDAB1AD316B2BE002000000
|
||||
random_padding_bytes = 0E2699DFACC1B6A2D082AEBE8C63650321BB14AFE76B6E0DDF2A8A6FF534715475D1FEEC91ABC1847BAF02BA2A7E295CAB7CDB9494C9B1A55786AC1C0E83C2720F31235532F031D936F410385637604AF66C25A4C3A4CE36169DA894</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 = 106D1395F405D025BFCD6B3CC73D7FC9D7C3B82AD5FFDF798172421059A949A512A74B4B885A8444B2AB9CB04AB50942045541C586C6F9509E651E2636729C8F4A060F81CD75574418B80D007E628E547698D2AAD2948C16C5EB2518FD2468A564663B9C521C811B2306D9009F63F6AA34F3E6B63130102702335C81ABCEC66AEAA317FCACB150A8D34B805204E26571ED2A4368DB061A2A2ACF5235CBE34C287331E2F0ACB2E007A6737098ECBC85C5C90B58E87EC0667EE69BBCE3658CE8B09F87575CD05A0C2E6DB57944112B438084006A06A4C24E59F31E13599867CFC4EDB06C0449A203D7E0D5BDF42E9C1D454F5C7067B18E8385822A1CE4DAFAE5C8</code></pre>
|
||||
<pre><code>encrypted_data = 309798B07DE64CAE6DB0111C1848BD936E2C4B2BD3A17401E5448A3560E72351D6BB5F7B2D753BECDC02DA804836B60307BA45CABE17AA38C914FCA05E87F2F7C00DDA86279AEEE0A00F0740EB88863EBD2B879472A5343935727285386819EE48012412A86766EEE54EE94A480DAF5D6C66777DC8F1F61F149498088E4CFFD972317F2F50A5ADF76596B302C56F5877061817C0FBC15E852F35C673A6658DA12053DDDD65297FE6F9F31A9699BD50861FF88CBBC0B37FF3F4CCBA3DB67A260F31DB113AE141D824DA0F62519BD2448878CEDA3A7B207C42E35762D6D252E00DAE36643972C4EE59FC919DF55F14CF8FAA2F9214FE4687FD5C058F7D7E832D09</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 88 EA 0C 00 9A F8 97 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 14 48 2B 90 FA E8 E3 5C
|
||||
0020 | E4 08 5A A7 53 2F 0F A8 E8 BA 72 BA FB B7 A6 C5
|
||||
0030 | DB 1D 85 74 D8 8F 6B 3A 04 52 1C 87 95 00 00 00
|
||||
0040 | 04 5B C8 57 B9 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 10 6D 13 95 F4 05 D0 25 BF CD 6B 3C
|
||||
0060 | C7 3D 7F C9 D7 C3 B8 2A D5 FF DF 79 81 72 42 10
|
||||
0070 | 59 A9 49 A5 12 A7 4B 4B 88 5A 84 44 B2 AB 9C B0
|
||||
0080 | 4A B5 09 42 04 55 41 C5 86 C6 F9 50 9E 65 1E 26
|
||||
0090 | 36 72 9C 8F 4A 06 0F 81 CD 75 57 44 18 B8 0D 00
|
||||
00A0 | 7E 62 8E 54 76 98 D2 AA D2 94 8C 16 C5 EB 25 18
|
||||
00B0 | FD 24 68 A5 64 66 3B 9C 52 1C 81 1B 23 06 D9 00
|
||||
00C0 | 9F 63 F6 AA 34 F3 E6 B6 31 30 10 27 02 33 5C 81
|
||||
00D0 | AB CE C6 6A EA A3 17 FC AC B1 50 A8 D3 4B 80 52
|
||||
00E0 | 04 E2 65 71 ED 2A 43 68 DB 06 1A 2A 2A CF 52 35
|
||||
00F0 | CB E3 4C 28 73 31 E2 F0 AC B2 E0 07 A6 73 70 98
|
||||
0100 | EC BC 85 C5 C9 0B 58 E8 7E C0 66 7E E6 9B BC E3
|
||||
0110 | 65 8C E8 B0 9F 87 57 5C D0 5A 0C 2E 6D B5 79 44
|
||||
0120 | 11 2B 43 80 84 00 6A 06 A4 C2 4E 59 F3 1E 13 59
|
||||
0130 | 98 67 CF C4 ED B0 6C 04 49 A2 03 D7 E0 D5 BD F4
|
||||
0140 | 2E 9C 1D 45 4F 5C 70 67 B1 8E 83 85 82 2A 1C E4
|
||||
0150 | DA FA E5 C8</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 EC B6 0B 00 89 FB 97 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 AE 3C 4B 5C 6F 3C 2B 0D
|
||||
0020 | 7D 27 2F 73 3E 43 D7 16 2F C9 7B B4 A7 29 4A 97
|
||||
0030 | 8D 22 18 F0 39 EC B2 86 04 53 F5 E9 67 00 00 00
|
||||
0040 | 04 5E F4 51 CB 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 30 97 98 B0 7D E6 4C AE 6D B0 11 1C
|
||||
0060 | 18 48 BD 93 6E 2C 4B 2B D3 A1 74 01 E5 44 8A 35
|
||||
0070 | 60 E7 23 51 D6 BB 5F 7B 2D 75 3B EC DC 02 DA 80
|
||||
0080 | 48 36 B6 03 07 BA 45 CA BE 17 AA 38 C9 14 FC A0
|
||||
0090 | 5E 87 F2 F7 C0 0D DA 86 27 9A EE E0 A0 0F 07 40
|
||||
00A0 | EB 88 86 3E BD 2B 87 94 72 A5 34 39 35 72 72 85
|
||||
00B0 | 38 68 19 EE 48 01 24 12 A8 67 66 EE E5 4E E9 4A
|
||||
00C0 | 48 0D AF 5D 6C 66 77 7D C8 F1 F6 1F 14 94 98 08
|
||||
00D0 | 8E 4C FF D9 72 31 7F 2F 50 A5 AD F7 65 96 B3 02
|
||||
00E0 | C5 6F 58 77 06 18 17 C0 FB C1 5E 85 2F 35 C6 73
|
||||
00F0 | A6 65 8D A1 20 53 DD DD 65 29 7F E6 F9 F3 1A 96
|
||||
0100 | 99 BD 50 86 1F F8 8C BB C0 B3 7F F3 F4 CC BA 3D
|
||||
0110 | B6 7A 26 0F 31 DB 11 3A E1 41 D8 24 DA 0F 62 51
|
||||
0120 | 9B D2 44 88 78 CE DA 3A 7B 20 7C 42 E3 57 62 D6
|
||||
0130 | D2 52 E0 0D AE 36 64 39 72 C4 EE 59 FC 91 9D F5
|
||||
0140 | 5F 14 CF 8F AA 2F 92 14 FE 46 87 FD 5C 05 8F 7D
|
||||
0150 | 7E 83 2D 09</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 = 7A881DD3A1A48086032513FB9E5E12D26EA2F2A1638117FABF0B10FF3
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>88EA0C009AF89766</code></td>
|
||||
<td><code>ECB60B0089FB9766</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -363,25 +363,25 @@ random_padding_bytes = 7A881DD3A1A48086032513FB9E5E12D26EA2F2A1638117FABF0B10FF3
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>14482B90FAE8E35CE4085AA7532F0FA8</code></td>
|
||||
<td><code>AE3C4B5C6F3C2B0D7D272F733E43D716</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>E8BA72BAFBB7A6C5DB1D8574D88F6B3A</code></td>
|
||||
<td><code>2FC97BB4A7294A978D2218F039ECB286</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>04521C8795000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1377601429</td>
|
||||
<td><code>0453F5E967000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1408624999</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>045BC857B9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1539856313</td>
|
||||
<td><code>045EF451CB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1593070027</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 = 7A881DD3A1A48086032513FB9E5E12D26EA2F2A1638117FABF0B10FF3
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE000100106D1395F405D025BFCD6B3C</code> <code>C73D7FC9D7C3B82AD5FFDF7981724210</code> <code>59A949A512A74B4B885A8444B2AB9CB0</code> <code>4AB50942045541C586C6F9509E651E26</code> <code>36729C8F4A060F81CD75574418B80D00</code> <code>7E628E547698D2AAD2948C16C5EB2518</code> <code>FD2468A564663B9C521C811B2306D900</code> <code>9F63F6AA34F3E6B63130102702335C81</code> <code>ABCEC66AEAA317FCACB150A8D34B8052</code> <code>04E26571ED2A4368DB061A2A2ACF5235</code> <code>CBE34C287331E2F0ACB2E007A6737098</code> <code>ECBC85C5C90B58E87EC0667EE69BBCE3</code> <code>658CE8B09F87575CD05A0C2E6DB57944</code> <code>112B438084006A06A4C24E59F31E1359</code> <code>9867CFC4EDB06C0449A203D7E0D5BDF4</code> <code>2E9C1D454F5C7067B18E8385822A1CE4</code><br> <code>DAFAE5C8</code></td>
|
||||
<td><code>FE000100309798B07DE64CAE6DB0111C</code> <code>1848BD936E2C4B2BD3A17401E5448A35</code> <code>60E72351D6BB5F7B2D753BECDC02DA80</code> <code>4836B60307BA45CABE17AA38C914FCA0</code> <code>5E87F2F7C00DDA86279AEEE0A00F0740</code> <code>EB88863EBD2B879472A5343935727285</code> <code>386819EE48012412A86766EEE54EE94A</code> <code>480DAF5D6C66777DC8F1F61F14949808</code> <code>8E4CFFD972317F2F50A5ADF76596B302</code> <code>C56F5877061817C0FBC15E852F35C673</code> <code>A6658DA12053DDDD65297FE6F9F31A96</code> <code>99BD50861FF88CBBC0B37FF3F4CCBA3D</code> <code>B67A260F31DB113AE141D824DA0F6251</code> <code>9BD2448878CEDA3A7B207C42E35762D6</code> <code>D252E00DAE36643972C4EE59FC919DF5</code> <code>5F14CF8FAA2F9214FE4687FD5C058F7D</code><br> <code>7E832D09</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = 7A881DD3A1A48086032513FB9E5E12D26EA2F2A1638117FABF0B10FF3
|
|||
<h5><a class="anchor" href="#6-server-responds-with" id="6-server-responds-with" name="6-server-responds-with"><i class="anchor-icon"></i></a>6) Server responds with:</h5>
|
||||
<!-- start server_DH_params_ok -->
|
||||
<p>Received payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 BC 30 94 9A F8 97 66
|
||||
0010 | 94 02 00 00 5C 07 E8 D0 14 48 2B 90 FA E8 E3 5C
|
||||
0020 | E4 08 5A A7 53 2F 0F A8 E8 BA 72 BA FB B7 A6 C5
|
||||
0030 | DB 1D 85 74 D8 8F 6B 3A FE 50 02 00 AE DB 97 24
|
||||
0040 | 1B DC 01 25 FC 04 D1 40 57 AB 83 7A EB 0F BA 29
|
||||
0050 | 58 38 23 CC 3C AE 7B 94 6A 7C 48 74 CF 44 5A EB
|
||||
0060 | 64 3D F6 B8 18 86 13 39 20 57 E8 3C FC FC 49 94
|
||||
0070 | 62 B8 99 EF 03 05 46 FE B9 B8 DA 2B C4 83 28 E6
|
||||
0080 | 08 13 35 D4 CC 0E D3 79 E6 C6 B2 D4 21 2F 69 EE
|
||||
0090 | 94 3C 54 CD 7F E9 0A 02 63 55 C5 4B 42 1D F3 DC
|
||||
00A0 | DD 83 C1 2F 97 CD AF 8D 61 3D 5E 03 34 52 BC 52
|
||||
00B0 | 55 3C C1 0C C3 95 D9 25 A0 FA FB 6D BC 14 63 A2
|
||||
00C0 | 31 81 F4 A9 9D D3 C9 D4 C7 17 2D 3E 29 48 B0 02
|
||||
00D0 | CC DC 40 2C 8A BE AE AC 4C ED 04 5F DF 2C 48 46
|
||||
00E0 | 67 E5 B4 AF BF A9 01 9A 12 2A 07 AC FE 72 41 5A
|
||||
00F0 | 5C C7 1C 4D DF CB D4 62 04 D6 E3 96 4D 8F BA 67
|
||||
0100 | B5 73 2D B1 58 60 11 E6 C1 4B 49 D2 E9 CC AB B1
|
||||
0110 | 5D 2B 98 DE A5 81 4A 71 EF 76 5B 40 43 BA 03 0C
|
||||
0120 | 48 B4 BF 67 C5 34 7C 1F 32 0C 19 98 57 90 56 00
|
||||
0130 | EA 19 39 F8 52 55 5A A5 C6 FF 01 FC 7A BC B2 4F
|
||||
0140 | CA 38 BD 53 AC 3C 91 8F 19 0B 48 3E B6 3C 31 4A
|
||||
0150 | 17 BB 4B D7 D5 41 F7 62 F5 6F D6 14 E6 BB 54 66
|
||||
0160 | 5F B2 3F F1 10 81 75 B3 A0 E3 F1 2C A3 39 10 44
|
||||
0170 | 44 33 99 D3 AA FF 21 E8 C0 CD 1C C1 85 6D 94 E8
|
||||
0180 | 25 3D 2E B0 F9 17 B2 30 F3 B2 24 34 DD D2 9C 6B
|
||||
0190 | 1B 24 D5 34 10 97 C5 2D 10 D0 5D 4B F6 ED 78 00
|
||||
01A0 | 93 24 CF E8 9F A3 DB 95 72 9C 57 2B 9C 49 76 FF
|
||||
01B0 | 11 A3 96 94 26 46 C8 63 79 83 D2 07 CF DB B8 43
|
||||
01C0 | 81 B9 14 E7 E9 32 36 01 C4 6B 32 22 C0 2A B4 24
|
||||
01D0 | 7B 0A 65 5E CB 7E F7 57 D7 27 0A DB AF D0 4E BE
|
||||
01E0 | D9 4F 60 15 14 30 6D BF 41 D1 6E CA BD 5C 5D 33
|
||||
01F0 | 1D 78 04 27 3E DB 0B 8E 55 B5 98 18 AF BB AD 04
|
||||
0200 | 0D C6 A8 D4 3B CB 8F 2D 23 70 2B 31 6A 39 21 40
|
||||
0210 | 54 CB 48 DE 92 04 74 71 A5 20 44 75 8C 3F 51 6D
|
||||
0220 | 71 22 40 6A 3B 2D 17 17 57 E9 B7 1E 2B 8E 5E 27
|
||||
0230 | 34 AB 80 BD A0 ED 20 CE 63 D4 6C DB 3D 44 2C 8B
|
||||
0240 | B3 56 28 28 25 27 9E E4 37 2C F5 67 21 28 86 99
|
||||
0250 | 06 C1 CF DC C3 AA A8 38 D7 33 61 79 B3 7A 3A 43
|
||||
0260 | 7B 67 9A 05 22 53 B6 B3 7E 6D EB 1F EF D8 91 72
|
||||
0270 | E6 06 0A 57 78 C8 F5 04 1E 17 C6 B1 2A 35 F5 2D
|
||||
0280 | 03 BA 1F F5 0F 8F AF 46 36 66 E2 FB</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 A4 FD 2D 8A FB 97 66
|
||||
0010 | E4 02 00 00 5C 07 E8 D0 AE 3C 4B 5C 6F 3C 2B 0D
|
||||
0020 | 7D 27 2F 73 3E 43 D7 16 2F C9 7B B4 A7 29 4A 97
|
||||
0030 | 8D 22 18 F0 39 EC B2 86 FE 50 02 00 97 5B 48 71
|
||||
0040 | 85 A4 2B D9 73 ED DA 56 46 88 39 DF 4B DC 23 52
|
||||
0050 | 1C 76 90 9D BB 7F 72 71 79 57 34 D2 AF 47 48 49
|
||||
0060 | D2 20 0F 5D 17 E4 34 74 A4 7E 29 B0 DD 1D 6C A7
|
||||
0070 | 67 CC BC E3 E1 7E A2 F6 76 2D 75 51 2C A0 D1 BD
|
||||
0080 | 29 CB 5C 19 B7 DB D2 11 C3 7D 40 AB 71 8C 03 E1
|
||||
0090 | 9D F4 F4 F2 03 C5 C4 E5 BD 8E D3 75 40 47 D9 DC
|
||||
00A0 | 1B 7B C1 15 29 48 41 BE C2 8D 6A 27 9E F8 BB BA
|
||||
00B0 | BF 75 9A 1D AB 8E F5 3D 83 BC F0 6F DB F7 C1 50
|
||||
00C0 | 8A 8F 59 55 D7 5D C7 CB 86 C0 AD DD 2E 6D 59 22
|
||||
00D0 | 80 88 D4 90 80 AC A6 5D 93 9E C4 34 19 A9 55 46
|
||||
00E0 | 9B 98 36 A4 88 69 D9 0B DE FE B7 55 5C 0A B3 63
|
||||
00F0 | 4A 4E 6A 60 69 A9 85 74 32 52 F3 28 4F 16 87 82
|
||||
0100 | B9 93 BF 72 29 25 19 0B F1 FE 79 94 03 DE C1 BC
|
||||
0110 | 28 94 C2 75 C0 2D 0B 04 8C EF 8B A7 7C BF D0 C0
|
||||
0120 | 6A A0 63 7C 5E CD D1 FC 23 1E D2 B8 FA 7B 1B 7E
|
||||
0130 | 83 2E 22 69 BA 9B 62 FB 6B B9 95 58 A1 3A 0C F5
|
||||
0140 | 76 1D 4E B9 0A 2C D1 8D E0 BA BE BC 86 B6 C7 DB
|
||||
0150 | AF 83 13 7E B5 47 3A FB 3F 03 5C 15 D9 DD 5D 2D
|
||||
0160 | 65 14 68 35 CB 6B AB 39 4A 83 36 CA EC 75 B9 9B
|
||||
0170 | 1E 92 3D 7E D5 5A 9F 1C 3B 96 E3 6D 6A B2 11 9C
|
||||
0180 | 45 24 41 DE AE 66 F4 B1 5A 91 8F FC BC C4 42 7D
|
||||
0190 | 49 5D A2 57 02 A5 84 DA 27 E4 F0 C5 9C E5 01 99
|
||||
01A0 | 99 BF 0B 8E 2A 81 0F B5 25 D2 DD 92 04 91 02 B1
|
||||
01B0 | 57 95 24 CB 7B D6 2C 71 4E E2 29 0E EB 6F 4D 0B
|
||||
01C0 | 69 9F 11 89 6D 49 A7 3F 24 BC BE 7D AF 23 04 71
|
||||
01D0 | 88 D1 7E ED 8B 92 71 48 79 80 0B AB DF 4C 9D FB
|
||||
01E0 | 12 A3 3F 00 68 D6 52 5F 1A 6B 22 17 78 5E 52 68
|
||||
01F0 | 8E 21 42 6F 3B 62 D7 54 8C 56 96 15 E8 0F 46 AC
|
||||
0200 | FE F3 79 2E 28 80 A6 BE 2D C1 0A 91 26 E1 C6 CA
|
||||
0210 | 71 13 10 FF DE FB 46 0F C3 A4 CE 0A 7F EB 21 42
|
||||
0220 | 84 C7 46 15 31 F3 22 0A F2 D4 7C 37 8A 0B B8 FD
|
||||
0230 | 55 D1 9D 06 30 9F F5 FC DF 7B A5 51 6F 23 A0 C2
|
||||
0240 | 76 5C 4F 47 1F F4 8D 8B 53 01 A2 BC 85 59 C6 69
|
||||
0250 | 4C FD 9D 53 7C E4 27 64 92 34 86 3F B6 1B C7 2D
|
||||
0260 | 1A 2B A0 3C FC AA 1B 17 A1 35 54 A9 80 C7 5A 04
|
||||
0270 | 56 00 6F 45 73 91 E0 F6 CD 7A A8 A3 90 68 91 5D
|
||||
0280 | D1 8A FA 82 5F D3 8A 52 26 E7 C3 B5</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 = 7A881DD3A1A48086032513FB9E5E12D26EA2F2A1638117FABF0B10FF3
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01BC30949AF89766</code></td>
|
||||
<td><code>01A4FD2D8AFB9766</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>message_length</td>
|
||||
<td>16, 4</td>
|
||||
<td><code>94020000</code> (660 in decimal)</td>
|
||||
<td><code>E4020000</code> (740 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = 7A881DD3A1A48086032513FB9E5E12D26EA2F2A1638117FABF0B10FF3
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>14482B90FAE8E35CE4085AA7532F0FA8</code></td>
|
||||
<td><code>AE3C4B5C6F3C2B0D7D272F733E43D716</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>E8BA72BAFBB7A6C5DB1D8574D88F6B3A</code></td>
|
||||
<td><code>2FC97BB4A7294A978D2218F039ECB286</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE500200AEDB97241BDC0125FC04D140</code> <code>57AB837AEB0FBA29583823CC3CAE7B94</code> <code>6A7C4874CF445AEB643DF6B818861339</code> <code>2057E83CFCFC499462B899EF030546FE</code> <code>B9B8DA2BC48328E6081335D4CC0ED379</code> <code>E6C6B2D4212F69EE943C54CD7FE90A02</code> <code>6355C54B421DF3DCDD83C12F97CDAF8D</code> <code>613D5E033452BC52553CC10CC395D925</code> <code>A0FAFB6DBC1463A23181F4A99DD3C9D4</code> <code>C7172D3E2948B002CCDC402C8ABEAEAC</code> <code>4CED045FDF2C484667E5B4AFBFA9019A</code> <code>122A07ACFE72415A5CC71C4DDFCBD462</code> <code>04D6E3964D8FBA67B5732DB1586011E6</code> <code>C14B49D2E9CCABB15D2B98DEA5814A71</code> <code>EF765B4043BA030C48B4BF67C5347C1F</code> <code>320C199857905600EA1939F852555AA5</code> <code>C6FF01FC7ABCB24FCA38BD53AC3C918F</code> <code>190B483EB63C314A17BB4BD7D541F762</code> <code>F56FD614E6BB54665FB23FF1108175B3</code> <code>A0E3F12CA3391044443399D3AAFF21E8</code> <code>C0CD1CC1856D94E8253D2EB0F917B230</code> <code>F3B22434DDD29C6B1B24D5341097C52D</code> <code>10D05D4BF6ED78009324CFE89FA3DB95</code> <code>729C572B9C4976FF11A396942646C863</code> <code>7983D207CFDBB84381B914E7E9323601</code> <code>C46B3222C02AB4247B0A655ECB7EF757</code> <code>D7270ADBAFD04EBED94F601514306DBF</code> <code>41D16ECABD5C5D331D7804273EDB0B8E</code> <code>55B59818AFBBAD040DC6A8D43BCB8F2D</code> <code>23702B316A39214054CB48DE92047471</code> <code>A52044758C3F516D7122406A3B2D1717</code> <code>57E9B71E2B8E5E2734AB80BDA0ED20CE</code> <code>63D46CDB3D442C8BB356282825279EE4</code> <code>372CF5672128869906C1CFDCC3AAA838</code> <code>D7336179B37A3A437B679A052253B6B3</code> <code>7E6DEB1FEFD89172E6060A5778C8F504</code> <code>1E17C6B12A35F52D03BA1FF50F8FAF46</code><br> <code>3666E2FB</code></td>
|
||||
<td><code>FE500200975B487185A42BD973EDDA56</code> <code>468839DF4BDC23521C76909DBB7F7271</code> <code>795734D2AF474849D2200F5D17E43474</code> <code>A47E29B0DD1D6CA767CCBCE3E17EA2F6</code> <code>762D75512CA0D1BD29CB5C19B7DBD211</code> <code>C37D40AB718C03E19DF4F4F203C5C4E5</code> <code>BD8ED3754047D9DC1B7BC115294841BE</code> <code>C28D6A279EF8BBBABF759A1DAB8EF53D</code> <code>83BCF06FDBF7C1508A8F5955D75DC7CB</code> <code>86C0ADDD2E6D59228088D49080ACA65D</code> <code>939EC43419A955469B9836A48869D90B</code> <code>DEFEB7555C0AB3634A4E6A6069A98574</code> <code>3252F3284F168782B993BF722925190B</code> <code>F1FE799403DEC1BC2894C275C02D0B04</code> <code>8CEF8BA77CBFD0C06AA0637C5ECDD1FC</code> <code>231ED2B8FA7B1B7E832E2269BA9B62FB</code> <code>6BB99558A13A0CF5761D4EB90A2CD18D</code> <code>E0BABEBC86B6C7DBAF83137EB5473AFB</code> <code>3F035C15D9DD5D2D65146835CB6BAB39</code> <code>4A8336CAEC75B99B1E923D7ED55A9F1C</code> <code>3B96E36D6AB2119C452441DEAE66F4B1</code> <code>5A918FFCBCC4427D495DA25702A584DA</code> <code>27E4F0C59CE5019999BF0B8E2A810FB5</code> <code>25D2DD92049102B1579524CB7BD62C71</code> <code>4EE2290EEB6F4D0B699F11896D49A73F</code> <code>24BCBE7DAF23047188D17EED8B927148</code> <code>79800BABDF4C9DFB12A33F0068D6525F</code> <code>1A6B2217785E52688E21426F3B62D754</code> <code>8C569615E80F46ACFEF3792E2880A6BE</code> <code>2DC10A9126E1C6CA711310FFDEFB460F</code> <code>C3A4CE0A7FEB214284C7461531F3220A</code> <code>F2D47C378A0BB8FD55D19D06309FF5FC</code> <code>DF7BA5516F23A0C2765C4F471FF48D8B</code> <code>5301A2BC8559C6694CFD9D537CE42764</code> <code>9234863FB61BC72D1A2BA03CFCAA1B17</code> <code>A13554A980C75A0456006F457391E0F6</code> <code>CD7AA8A39068915DD18AFA825FD38A52</code><br> <code>26E7C3B5</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = 7A881DD3A1A48086032513FB9E5E12D26EA2F2A1638117FABF0B10FF3
|
|||
<!-- 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 = AEDB97241BDC0125FC04D14057AB837AEB0FBA29583823CC3CAE7B946A7C4874CF445AEB643DF6B8188613392057E83CFCFC499462B899EF030546FEB9B8DA2BC48328E6081335D4CC0ED379E6C6B2D4212F69EE943C54CD7FE90A026355C54B421DF3DCDD83C12F97CDAF8D613D5E033452BC52553CC10CC395D925A0FAFB6DBC1463A23181F4A99DD3C9D4C7172D3E2948B002CCDC402C8ABEAEAC4CED045FDF2C484667E5B4AFBFA9019A122A07ACFE72415A5CC71C4DDFCBD46204D6E3964D8FBA67B5732DB1586011E6C14B49D2E9CCABB15D2B98DEA5814A71EF765B4043BA030C48B4BF67C5347C1F320C199857905600EA1939F852555AA5C6FF01FC7ABCB24FCA38BD53AC3C918F190B483EB63C314A17BB4BD7D541F762F56FD614E6BB54665FB23FF1108175B3A0E3F12CA3391044443399D3AAFF21E8C0CD1CC1856D94E8253D2EB0F917B230F3B22434DDD29C6B1B24D5341097C52D10D05D4BF6ED78009324CFE89FA3DB95729C572B9C4976FF11A396942646C8637983D207CFDBB84381B914E7E9323601C46B3222C02AB4247B0A655ECB7EF757D7270ADBAFD04EBED94F601514306DBF41D16ECABD5C5D331D7804273EDB0B8E55B59818AFBBAD040DC6A8D43BCB8F2D23702B316A39214054CB48DE92047471A52044758C3F516D7122406A3B2D171757E9B71E2B8E5E2734AB80BDA0ED20CE63D46CDB3D442C8BB356282825279EE4372CF5672128869906C1CFDCC3AAA838D7336179B37A3A437B679A052253B6B37E6DEB1FEFD89172E6060A5778C8F5041E17C6B12A35F52D03BA1FF50F8FAF463666E2FB
|
||||
tmp_aes_key = 0D1AB98D8C2FE3AF83F67E85F0645D332B54D807D35779A8FB36B70042422BF8
|
||||
tmp_aes_iv = 8E80A24FA6022D3165BA7BA0A9834DFFE4F0C061932BEC0859B04466F9099664</code></pre>
|
||||
<pre><code>encrypted_answer = 975B487185A42BD973EDDA56468839DF4BDC23521C76909DBB7F7271795734D2AF474849D2200F5D17E43474A47E29B0DD1D6CA767CCBCE3E17EA2F6762D75512CA0D1BD29CB5C19B7DBD211C37D40AB718C03E19DF4F4F203C5C4E5BD8ED3754047D9DC1B7BC115294841BEC28D6A279EF8BBBABF759A1DAB8EF53D83BCF06FDBF7C1508A8F5955D75DC7CB86C0ADDD2E6D59228088D49080ACA65D939EC43419A955469B9836A48869D90BDEFEB7555C0AB3634A4E6A6069A985743252F3284F168782B993BF722925190BF1FE799403DEC1BC2894C275C02D0B048CEF8BA77CBFD0C06AA0637C5ECDD1FC231ED2B8FA7B1B7E832E2269BA9B62FB6BB99558A13A0CF5761D4EB90A2CD18DE0BABEBC86B6C7DBAF83137EB5473AFB3F035C15D9DD5D2D65146835CB6BAB394A8336CAEC75B99B1E923D7ED55A9F1C3B96E36D6AB2119C452441DEAE66F4B15A918FFCBCC4427D495DA25702A584DA27E4F0C59CE5019999BF0B8E2A810FB525D2DD92049102B1579524CB7BD62C714EE2290EEB6F4D0B699F11896D49A73F24BCBE7DAF23047188D17EED8B92714879800BABDF4C9DFB12A33F0068D6525F1A6B2217785E52688E21426F3B62D7548C569615E80F46ACFEF3792E2880A6BE2DC10A9126E1C6CA711310FFDEFB460FC3A4CE0A7FEB214284C7461531F3220AF2D47C378A0BB8FD55D19D06309FF5FCDF7BA5516F23A0C2765C4F471FF48D8B5301A2BC8559C6694CFD9D537CE427649234863FB61BC72D1A2BA03CFCAA1B17A13554A980C75A0456006F457391E0F6CD7AA8A39068915DD18AFA825FD38A5226E7C3B5
|
||||
tmp_aes_key = BC4BB4D5C4F912636BB5A3D4219F1925CD6E756F9E6725E97483C3DE053BFF5D
|
||||
tmp_aes_iv = A13FE055E9216E10852EEAEA353FBA643B7F0ACA7980AE2C20635707931C0118</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = 2FBD28F7EC0B0029CCBA947CF72CA0DDA4701368BA0D89B514482B90FAE8E35CE4085AA7532F0FA8E8BA72BAFBB7A6C5DB1D8574D88F6B3A03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010066528525A93B29EB2527FE4F1A27F1AD78788B2AF9B05C4E5B4D6A16CFD0063EFE2E4CA8311A974FD3898A659CC4B19506D516BF3784227C4827766E2729FF7C46EBE0FD20A539417EAC566BFB921B3CE1D91CCE578B64CDAB0ED07B41EEA85A168492B519B6B2A0E9DAFB60855788D1A8B0B930B4D20A16F8C51AFC30F84FC32CBE48B600DFFE9FC62149D2912667D045CCFC4B0375F23B0E91B1EC65C475CA8ABC4305B556190DFF146AE4DC004D1FBD8E85219A8073AFEAAD7DBA57191774E473A76374F38912691B231340AC104AC1C6BDA1DDF047848B8BB8AE0D6F21CA78350E7B55253BC1D7DE588DA0A935443703ACFDCAE572CD93F581EB4387F7859AF89766DF0F57024D2651EA
|
||||
answer = BA0D89B514482B90FAE8E35CE4085AA7532F0FA8E8BA72BAFBB7A6C5DB1D8574D88F6B3A03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010066528525A93B29EB2527FE4F1A27F1AD78788B2AF9B05C4E5B4D6A16CFD0063EFE2E4CA8311A974FD3898A659CC4B19506D516BF3784227C4827766E2729FF7C46EBE0FD20A539417EAC566BFB921B3CE1D91CCE578B64CDAB0ED07B41EEA85A168492B519B6B2A0E9DAFB60855788D1A8B0B930B4D20A16F8C51AFC30F84FC32CBE48B600DFFE9FC62149D2912667D045CCFC4B0375F23B0E91B1EC65C475CA8ABC4305B556190DFF146AE4DC004D1FBD8E85219A8073AFEAAD7DBA57191774E473A76374F38912691B231340AC104AC1C6BDA1DDF047848B8BB8AE0D6F21CA78350E7B55253BC1D7DE588DA0A935443703ACFDCAE572CD93F581EB4387F7859AF89766DF0F57024D2651EA</code></pre>
|
||||
<pre><code>answer_with_hash = 961B9875971383CEAB2D2F776FB5BD243242EB94BA0D89B5AE3C4B5C6F3C2B0D7D272F733E43D7162FC97BB4A7294A978D2218F039ECB28603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100BA3A312DB835FDBBBABB7545AEECFC6D0DD1544B81A03268F431DD7DC59AD953379A9CB6AAC6BCA19936D4C49CEECF7A58547E924A52190B2AB6FE40BFA6CB8074308E1CA1DAA30B0AAA77B04C4CBD3AB7D3E83E25ED1C413497B4634C98A0E3BFA21DA80050A1A6AEEBBE3BCE4C54C433F6CE9AE4126A20E1EA4984FA7A9868F60D3AC18169FADCF48EE448A430AD6296FC69C692CC320AC1DAE2A15679D561D5323AD075D93F3BEDEEA1DA886A131A8C243EEB0182FE6D0CA7D14C2A83FBC23345216859B1594B0FE4B07C5768DAEC4305B9A9E681B8AFB410EB91626014C2923D638FDC99E14F85B66F4BCF96591074293E51342C87655829C524545113C48AFB9766A21E7D0748F66A5E
|
||||
answer = BA0D89B5AE3C4B5C6F3C2B0D7D272F733E43D7162FC97BB4A7294A978D2218F039ECB28603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100BA3A312DB835FDBBBABB7545AEECFC6D0DD1544B81A03268F431DD7DC59AD953379A9CB6AAC6BCA19936D4C49CEECF7A58547E924A52190B2AB6FE40BFA6CB8074308E1CA1DAA30B0AAA77B04C4CBD3AB7D3E83E25ED1C413497B4634C98A0E3BFA21DA80050A1A6AEEBBE3BCE4C54C433F6CE9AE4126A20E1EA4984FA7A9868F60D3AC18169FADCF48EE448A430AD6296FC69C692CC320AC1DAE2A15679D561D5323AD075D93F3BEDEEA1DA886A131A8C243EEB0182FE6D0CA7D14C2A83FBC23345216859B1594B0FE4B07C5768DAEC4305B9A9E681B8AFB410EB91626014C2923D638FDC99E14F85B66F4BCF96591074293E51342C87655829C524545113C48AFB9766A21E7D0748F66A5E</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 14 48 2B 90 FA E8 E3 5C E4 08 5A A7
|
||||
0010 | 53 2F 0F A8 E8 BA 72 BA FB B7 A6 C5 DB 1D 85 74
|
||||
0020 | D8 8F 6B 3A 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 AE 3C 4B 5C 6F 3C 2B 0D 7D 27 2F 73
|
||||
0010 | 3E 43 D7 16 2F C9 7B B4 A7 29 4A 97 8D 22 18 F0
|
||||
0020 | 39 EC B2 86 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 = BA0D89B514482B90FAE8E35CE4085AA7532F0FA8E8BA72BAFBB7A6C5DB1D8574D88F6B3
|
|||
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 | 66 52 85 25 A9 3B 29 EB 25 27 FE 4F 1A 27 F1 AD
|
||||
0140 | 78 78 8B 2A F9 B0 5C 4E 5B 4D 6A 16 CF D0 06 3E
|
||||
0150 | FE 2E 4C A8 31 1A 97 4F D3 89 8A 65 9C C4 B1 95
|
||||
0160 | 06 D5 16 BF 37 84 22 7C 48 27 76 6E 27 29 FF 7C
|
||||
0170 | 46 EB E0 FD 20 A5 39 41 7E AC 56 6B FB 92 1B 3C
|
||||
0180 | E1 D9 1C CE 57 8B 64 CD AB 0E D0 7B 41 EE A8 5A
|
||||
0190 | 16 84 92 B5 19 B6 B2 A0 E9 DA FB 60 85 57 88 D1
|
||||
01A0 | A8 B0 B9 30 B4 D2 0A 16 F8 C5 1A FC 30 F8 4F C3
|
||||
01B0 | 2C BE 48 B6 00 DF FE 9F C6 21 49 D2 91 26 67 D0
|
||||
01C0 | 45 CC FC 4B 03 75 F2 3B 0E 91 B1 EC 65 C4 75 CA
|
||||
01D0 | 8A BC 43 05 B5 56 19 0D FF 14 6A E4 DC 00 4D 1F
|
||||
01E0 | BD 8E 85 21 9A 80 73 AF EA AD 7D BA 57 19 17 74
|
||||
01F0 | E4 73 A7 63 74 F3 89 12 69 1B 23 13 40 AC 10 4A
|
||||
0200 | C1 C6 BD A1 DD F0 47 84 8B 8B B8 AE 0D 6F 21 CA
|
||||
0210 | 78 35 0E 7B 55 25 3B C1 D7 DE 58 8D A0 A9 35 44
|
||||
0220 | 37 03 AC FD CA E5 72 CD 93 F5 81 EB 43 87 F7 85
|
||||
0230 | 9A F8 97 66</code></pre>
|
||||
0130 | BA 3A 31 2D B8 35 FD BB BA BB 75 45 AE EC FC 6D
|
||||
0140 | 0D D1 54 4B 81 A0 32 68 F4 31 DD 7D C5 9A D9 53
|
||||
0150 | 37 9A 9C B6 AA C6 BC A1 99 36 D4 C4 9C EE CF 7A
|
||||
0160 | 58 54 7E 92 4A 52 19 0B 2A B6 FE 40 BF A6 CB 80
|
||||
0170 | 74 30 8E 1C A1 DA A3 0B 0A AA 77 B0 4C 4C BD 3A
|
||||
0180 | B7 D3 E8 3E 25 ED 1C 41 34 97 B4 63 4C 98 A0 E3
|
||||
0190 | BF A2 1D A8 00 50 A1 A6 AE EB BE 3B CE 4C 54 C4
|
||||
01A0 | 33 F6 CE 9A E4 12 6A 20 E1 EA 49 84 FA 7A 98 68
|
||||
01B0 | F6 0D 3A C1 81 69 FA DC F4 8E E4 48 A4 30 AD 62
|
||||
01C0 | 96 FC 69 C6 92 CC 32 0A C1 DA E2 A1 56 79 D5 61
|
||||
01D0 | D5 32 3A D0 75 D9 3F 3B ED EE A1 DA 88 6A 13 1A
|
||||
01E0 | 8C 24 3E EB 01 82 FE 6D 0C A7 D1 4C 2A 83 FB C2
|
||||
01F0 | 33 45 21 68 59 B1 59 4B 0F E4 B0 7C 57 68 DA EC
|
||||
0200 | 43 05 B9 A9 E6 81 B8 AF B4 10 EB 91 62 60 14 C2
|
||||
0210 | 92 3D 63 8F DC 99 E1 4F 85 B6 6F 4B CF 96 59 10
|
||||
0220 | 74 29 3E 51 34 2C 87 65 58 29 C5 24 54 51 13 C4
|
||||
0230 | 8A FB 97 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 = BA0D89B514482B90FAE8E35CE4085AA7532F0FA8E8BA72BAFBB7A6C5DB1D8574D88F6B3
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>14482B90FAE8E35CE4085AA7532F0FA8</code></td>
|
||||
<td><code>AE3C4B5C6F3C2B0D7D272F733E43D716</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>E8BA72BAFBB7A6C5DB1D8574D88F6B3A</code></td>
|
||||
<td><code>2FC97BB4A7294A978D2218F039ECB286</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B514482B90FAE8E35CE4085AA7532F0FA8E8BA72BAFBB7A6C5DB1D8574D88F6B3
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE00010066528525A93B29EB2527FE4F</code> <code>1A27F1AD78788B2AF9B05C4E5B4D6A16</code> <code>CFD0063EFE2E4CA8311A974FD3898A65</code> <code>9CC4B19506D516BF3784227C4827766E</code> <code>2729FF7C46EBE0FD20A539417EAC566B</code> <code>FB921B3CE1D91CCE578B64CDAB0ED07B</code> <code>41EEA85A168492B519B6B2A0E9DAFB60</code> <code>855788D1A8B0B930B4D20A16F8C51AFC</code> <code>30F84FC32CBE48B600DFFE9FC62149D2</code> <code>912667D045CCFC4B0375F23B0E91B1EC</code> <code>65C475CA8ABC4305B556190DFF146AE4</code> <code>DC004D1FBD8E85219A8073AFEAAD7DBA</code> <code>57191774E473A76374F38912691B2313</code> <code>40AC104AC1C6BDA1DDF047848B8BB8AE</code> <code>0D6F21CA78350E7B55253BC1D7DE588D</code> <code>A0A935443703ACFDCAE572CD93F581EB</code><br> <code>4387F785</code></td>
|
||||
<td><code>FE000100BA3A312DB835FDBBBABB7545</code> <code>AEECFC6D0DD1544B81A03268F431DD7D</code> <code>C59AD953379A9CB6AAC6BCA19936D4C4</code> <code>9CEECF7A58547E924A52190B2AB6FE40</code> <code>BFA6CB8074308E1CA1DAA30B0AAA77B0</code> <code>4C4CBD3AB7D3E83E25ED1C413497B463</code> <code>4C98A0E3BFA21DA80050A1A6AEEBBE3B</code> <code>CE4C54C433F6CE9AE4126A20E1EA4984</code> <code>FA7A9868F60D3AC18169FADCF48EE448</code> <code>A430AD6296FC69C692CC320AC1DAE2A1</code> <code>5679D561D5323AD075D93F3BEDEEA1DA</code> <code>886A131A8C243EEB0182FE6D0CA7D14C</code> <code>2A83FBC23345216859B1594B0FE4B07C</code> <code>5768DAEC4305B9A9E681B8AFB410EB91</code> <code>626014C2923D638FDC99E14F85B66F4B</code> <code>CF96591074293E51342C87655829C524</code><br> <code>545113C4</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>9AF89766</code> (1721235610 in decimal)</td>
|
||||
<td><code>8AFB9766</code> (1721236362 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B514482B90FAE8E35CE4085AA7532F0FA8E8BA72BAFBB7A6C5DB1D8574D88F6B3
|
|||
<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 = F1AA65728283F290C0E0A2B1EFEE107F2FDEA6CCA3166BCD254BF3D00F46A9690A56389518BBEB1E88FB2E2D0FC5DDED0C5209D649E91B366ADDF426CA140B77C443705E9D1C13B207F8F1D318225E9B0C35319A4A7CD3D81824AEBFB27E45C9EA7E61045A044863EF54E5E8068A8E6D33F5CCD8BE24221909F24D3272E184A3BC96E6E44EE74DA78D4BC6A5F1CF10987386A57439E1F05C8B0317FB0F7139A4E3E24C8A6792638A37A2975CD3CBB7F6E5255CF304A14A2516F939F4EACFD8FD4E18DCAA02F2C6FB017B5DB56B308DEED41B0BB55481C168185DAB7F4B38B084528D272DA9EA08559620ADC3DB6A17583236B76DE76D7C84A91F36201574AF42</code></pre>
|
||||
<pre><code>b = 4406BC2FE9FD9A1433D43B469A59C65F53A050155251BAF69FA08F2EF888B3553F1406F8EC5A9ABFDF8F7954820A634942EC7D328D8548E5FDB222A491A7094CFAA201FEEA6F9AC2975F35B017156A93A4EFDAF8D4C219011D82BF626BD2DECB47D0F7964BD8D605F9D7093D1BC59781F7FC1E879C8CF62D584B4BBE0EB392958D828ECE29E7CBBD3B3CB35E66661D3204794C721FA4BE30C11EA7C95D1D075414FE2E778B926C9AAB1A6921161987B7256CF52974CF7B343DA5BF04CDB0EDEC24A945989D2D9D78A8C8E707EA82B523901FF3376BCB3168A042416E026F9F17E3ABB7CBF5F8C572BE387C97CF96CCCA89F25CD8375DD679E4A2AD131BC23F9B</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 = 4D9AF0C3A92DBD05D49DCED6EEB260D5D38DF8DA0F18F969C083A51197CC61E85ACF92092A779BF9295AD191034E49FA1FD7B8E8E1E4E757D476E1BCBD0FABDC2807E94E3AAAF0D40D364B78E115104E1BB4CDD9371CEC96DBAA4382F878C7E8F6927E0EEE3A57CEA0508EDE1FE3564321C82916347A4E36730FE17C104113AB9060974BD0ACC65401CCAC258BA1B4FE621E9F359933237C0D2DEE76EA2584A80DF5121F9316E11E16CA427CFA19D61819C3976D9A1A60797EA92636781B0C9D127797EF53CB13EBD846B00BD215CE46B1A906AF97460490DFF9F368A109DD5BFAD6DA57375C0772D1830CDB3E2260E7A027BC122C92347E94E122F2A3E4A319</code></pre>
|
||||
<pre><code>g_b = 26F04C7F105FAB7CEC3327DCAE6FB808E4BD2CF11C4FA238D9B7028D7C694E44289ABA0029FAF7F54CFE8919E9B2F07AA04952BE59BDC68516E6610382816B13B109D8FB0124A4C45CD7E7953F300D650EE3092B1E952BD9A9E9EBD55CCA88E3C62FAA80081511239B0FDC21D58DE71CAD8136C5BB2CE8B45806F091AFA91EBAD69D195C1724C1197768F65CAC1D3A3C0B8B3C3E21A555F2F92CD81B8326B54CF871ED06ECEBFA86D31B301892122490588DDFBBF07C5920EBA3913ACD72C3D142F7A8A95B08FAE2F05742A9A5DC0B53CC9B90D85921C13F0DE18538152EDCF6DDAA860B196E7D36E1E16CA045C38CF484FAD5E974B679A899EB563E69BEC09B</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 14 48 2B 90 FA E8 E3 5C E4 08 5A A7
|
||||
0010 | 53 2F 0F A8 E8 BA 72 BA FB B7 A6 C5 DB 1D 85 74
|
||||
0020 | D8 8F 6B 3A 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 4D 9A F0 C3 A9 2D BD 05 D4 9D CE D6 EE B2 60 D5
|
||||
0040 | D3 8D F8 DA 0F 18 F9 69 C0 83 A5 11 97 CC 61 E8
|
||||
0050 | 5A CF 92 09 2A 77 9B F9 29 5A D1 91 03 4E 49 FA
|
||||
0060 | 1F D7 B8 E8 E1 E4 E7 57 D4 76 E1 BC BD 0F AB DC
|
||||
0070 | 28 07 E9 4E 3A AA F0 D4 0D 36 4B 78 E1 15 10 4E
|
||||
0080 | 1B B4 CD D9 37 1C EC 96 DB AA 43 82 F8 78 C7 E8
|
||||
0090 | F6 92 7E 0E EE 3A 57 CE A0 50 8E DE 1F E3 56 43
|
||||
00A0 | 21 C8 29 16 34 7A 4E 36 73 0F E1 7C 10 41 13 AB
|
||||
00B0 | 90 60 97 4B D0 AC C6 54 01 CC AC 25 8B A1 B4 FE
|
||||
00C0 | 62 1E 9F 35 99 33 23 7C 0D 2D EE 76 EA 25 84 A8
|
||||
00D0 | 0D F5 12 1F 93 16 E1 1E 16 CA 42 7C FA 19 D6 18
|
||||
00E0 | 19 C3 97 6D 9A 1A 60 79 7E A9 26 36 78 1B 0C 9D
|
||||
00F0 | 12 77 97 EF 53 CB 13 EB D8 46 B0 0B D2 15 CE 46
|
||||
0100 | B1 A9 06 AF 97 46 04 90 DF F9 F3 68 A1 09 DD 5B
|
||||
0110 | FA D6 DA 57 37 5C 07 72 D1 83 0C DB 3E 22 60 E7
|
||||
0120 | A0 27 BC 12 2C 92 34 7E 94 E1 22 F2 A3 E4 A3 19</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 AE 3C 4B 5C 6F 3C 2B 0D 7D 27 2F 73
|
||||
0010 | 3E 43 D7 16 2F C9 7B B4 A7 29 4A 97 8D 22 18 F0
|
||||
0020 | 39 EC B2 86 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 26 F0 4C 7F 10 5F AB 7C EC 33 27 DC AE 6F B8 08
|
||||
0040 | E4 BD 2C F1 1C 4F A2 38 D9 B7 02 8D 7C 69 4E 44
|
||||
0050 | 28 9A BA 00 29 FA F7 F5 4C FE 89 19 E9 B2 F0 7A
|
||||
0060 | A0 49 52 BE 59 BD C6 85 16 E6 61 03 82 81 6B 13
|
||||
0070 | B1 09 D8 FB 01 24 A4 C4 5C D7 E7 95 3F 30 0D 65
|
||||
0080 | 0E E3 09 2B 1E 95 2B D9 A9 E9 EB D5 5C CA 88 E3
|
||||
0090 | C6 2F AA 80 08 15 11 23 9B 0F DC 21 D5 8D E7 1C
|
||||
00A0 | AD 81 36 C5 BB 2C E8 B4 58 06 F0 91 AF A9 1E BA
|
||||
00B0 | D6 9D 19 5C 17 24 C1 19 77 68 F6 5C AC 1D 3A 3C
|
||||
00C0 | 0B 8B 3C 3E 21 A5 55 F2 F9 2C D8 1B 83 26 B5 4C
|
||||
00D0 | F8 71 ED 06 EC EB FA 86 D3 1B 30 18 92 12 24 90
|
||||
00E0 | 58 8D DF BB F0 7C 59 20 EB A3 91 3A CD 72 C3 D1
|
||||
00F0 | 42 F7 A8 A9 5B 08 FA E2 F0 57 42 A9 A5 DC 0B 53
|
||||
0100 | CC 9B 90 D8 59 21 C1 3F 0D E1 85 38 15 2E DC F6
|
||||
0110 | DD AA 86 0B 19 6E 7D 36 E1 E1 6C A0 45 C3 8C F4
|
||||
0120 | 84 FA D5 E9 74 B6 79 A8 99 EB 56 3E 69 BE C0 9B</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 = BA0D89B514482B90FAE8E35CE4085AA7532F0FA8E8BA72BAFBB7A6C5DB1D8574D88F6B3
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>14482B90FAE8E35CE4085AA7532F0FA8</code></td>
|
||||
<td><code>AE3C4B5C6F3C2B0D7D272F733E43D716</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>E8BA72BAFBB7A6C5DB1D8574D88F6B3A</code></td>
|
||||
<td><code>2FC97BB4A7294A978D2218F039ECB286</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE0001004D9AF0C3A92DBD05D49DCED6</code> <code>EEB260D5D38DF8DA0F18F969C083A511</code> <code>97CC61E85ACF92092A779BF9295AD191</code> <code>034E49FA1FD7B8E8E1E4E757D476E1BC</code> <code>BD0FABDC2807E94E3AAAF0D40D364B78</code> <code>E115104E1BB4CDD9371CEC96DBAA4382</code> <code>F878C7E8F6927E0EEE3A57CEA0508EDE</code> <code>1FE3564321C82916347A4E36730FE17C</code> <code>104113AB9060974BD0ACC65401CCAC25</code> <code>8BA1B4FE621E9F359933237C0D2DEE76</code> <code>EA2584A80DF5121F9316E11E16CA427C</code> <code>FA19D61819C3976D9A1A60797EA92636</code> <code>781B0C9D127797EF53CB13EBD846B00B</code> <code>D215CE46B1A906AF97460490DFF9F368</code> <code>A109DD5BFAD6DA57375C0772D1830CDB</code> <code>3E2260E7A027BC122C92347E94E122F2</code><br> <code>A3E4A319</code></td>
|
||||
<td><code>FE00010026F04C7F105FAB7CEC3327DC</code> <code>AE6FB808E4BD2CF11C4FA238D9B7028D</code> <code>7C694E44289ABA0029FAF7F54CFE8919</code> <code>E9B2F07AA04952BE59BDC68516E66103</code> <code>82816B13B109D8FB0124A4C45CD7E795</code> <code>3F300D650EE3092B1E952BD9A9E9EBD5</code> <code>5CCA88E3C62FAA80081511239B0FDC21</code> <code>D58DE71CAD8136C5BB2CE8B45806F091</code> <code>AFA91EBAD69D195C1724C1197768F65C</code> <code>AC1D3A3C0B8B3C3E21A555F2F92CD81B</code> <code>8326B54CF871ED06ECEBFA86D31B3018</code> <code>92122490588DDFBBF07C5920EBA3913A</code> <code>CD72C3D142F7A8A95B08FAE2F05742A9</code> <code>A5DC0B53CC9B90D85921C13F0DE18538</code> <code>152EDCF6DDAA860B196E7D36E1E16CA0</code> <code>45C38CF484FAD5E974B679A899EB563E</code><br> <code>69BEC09B</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 = BA0D89B514482B90FAE8E35CE4085AA7532F0FA8E8BA72BAFBB7A6C5DB1D8574D88F6B3
|
|||
<!-- 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 = 54B6436614482B90FAE8E35CE4085AA7532F0FA8E8BA72BAFBB7A6C5DB1D8574D88F6B3A0000000000000000FE0001004D9AF0C3A92DBD05D49DCED6EEB260D5D38DF8DA0F18F969C083A51197CC61E85ACF92092A779BF9295AD191034E49FA1FD7B8E8E1E4E757D476E1BCBD0FABDC2807E94E3AAAF0D40D364B78E115104E1BB4CDD9371CEC96DBAA4382F878C7E8F6927E0EEE3A57CEA0508EDE1FE3564321C82916347A4E36730FE17C104113AB9060974BD0ACC65401CCAC258BA1B4FE621E9F359933237C0D2DEE76EA2584A80DF5121F9316E11E16CA427CFA19D61819C3976D9A1A60797EA92636781B0C9D127797EF53CB13EBD846B00BD215CE46B1A906AF97460490DFF9F368A109DD5BFAD6DA57375C0772D1830CDB3E2260E7A027BC122C92347E94E122F2A3E4A319
|
||||
padding = 0C14B6770150477FC8A1D763
|
||||
tmp_aes_key = 0D1AB98D8C2FE3AF83F67E85F0645D332B54D807D35779A8FB36B70042422BF8
|
||||
tmp_aes_iv = 8E80A24FA6022D3165BA7BA0A9834DFFE4F0C061932BEC0859B04466F9099664</code></pre>
|
||||
<pre><code>data = 54B64366AE3C4B5C6F3C2B0D7D272F733E43D7162FC97BB4A7294A978D2218F039ECB2860000000000000000FE00010026F04C7F105FAB7CEC3327DCAE6FB808E4BD2CF11C4FA238D9B7028D7C694E44289ABA0029FAF7F54CFE8919E9B2F07AA04952BE59BDC68516E6610382816B13B109D8FB0124A4C45CD7E7953F300D650EE3092B1E952BD9A9E9EBD55CCA88E3C62FAA80081511239B0FDC21D58DE71CAD8136C5BB2CE8B45806F091AFA91EBAD69D195C1724C1197768F65CAC1D3A3C0B8B3C3E21A555F2F92CD81B8326B54CF871ED06ECEBFA86D31B301892122490588DDFBBF07C5920EBA3913ACD72C3D142F7A8A95B08FAE2F05742A9A5DC0B53CC9B90D85921C13F0DE18538152EDCF6DDAA860B196E7D36E1E16CA045C38CF484FAD5E974B679A899EB563E69BEC09B
|
||||
padding = 2E6CA76A6788CA7CCE0B19E7
|
||||
tmp_aes_key = BC4BB4D5C4F912636BB5A3D4219F1925CD6E756F9E6725E97483C3DE053BFF5D
|
||||
tmp_aes_iv = A13FE055E9216E10852EEAEA353FBA643B7F0ACA7980AE2C20635707931C0118</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 = B7B9874BF5A0342D8FB4A85528A61EB3F6FA78A6DF9B14A177B01E7E987C1E173CE6120713AAFD44F2E9239F5EB49AAD196E13A266E4D6BF208EA4FD1CBD08EF946115A49347BB92030A04C43FB26B58D96FFF3E59B6435B5FC707D1EE88C0430443C88FD4E41E1A9381F82EEE38BD3449295E9E478F10B4F13022F88E1D17E3D21DAA84B9A934535BD4E10ADF7491058277154FB2862213AD83E5B859809A745754A9CA01187A06AE81E7AA11ABC0949B0FA622E78F89613F74BA835A41E833E7943E47C0E43DAA15B771A3177F3F8034918AA01DB50247D81A2AB22B5822200FF7D14351373824A3145F769A1F1CC8351FA1F0FB825D1874C6E688A39C901003CF84C758D144959C81E50240D1DD934D45AEDDDD67CCBCBF4F3258401ECE04D40BA39BD658EC90E40BA3D27C8A7EAB7831588A982201DD02E96471C131739A574208ACA00133A1738D1106B84C8A09</code></pre>
|
||||
<pre><code>encrypted_data = 4EDF0BAB91AB5250729778E446C83E3B4B9FFFB4E473148C1B7382F52140C891D19A941F04F8AB07F86862C0B5F265BEAFFC6A381D4B0BAE9D7D026C5CD6A7436CEDA5E97D66857B4431731217196393D117D773A78816CFC381FF1AE01E5921EF1A43ABBD905CCF7E2F850455CAAC4F586A619016FFF25F8FDD47EC21D404E81E85A93FB194E96414FEF6EDC009E3E61E19BEB666B7EBD591605F2F84428C2A83AA57CE5CC6A4C4E9DA0442ECB633507997ECC35D5D9D996529A81AA6C6D64D39CE715B1B2261D972061053BD14EA3473CD1F3F089A286B8D9AF99A8FDEDC9FBE969EBEB8FFCC8E21579E27BB5FA5DE0DACD3BB76003CAC1E17562F786C3D4B420864F83789EFE5DE3CF2A81954974E3ACE2EB9E51736B6628A7308DB51DBA78F252C96FD7876D8008B45DCB1CD4DEE41045DC98405C62A544E5C9B12C53EC035AF2EF3B628D90050DCBFE28BD57D08</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 E8 46 0C 00 9B F8 97 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 14 48 2B 90 FA E8 E3 5C
|
||||
0020 | E4 08 5A A7 53 2F 0F A8 E8 BA 72 BA FB B7 A6 C5
|
||||
0030 | DB 1D 85 74 D8 8F 6B 3A FE 50 01 00 B7 B9 87 4B
|
||||
0040 | F5 A0 34 2D 8F B4 A8 55 28 A6 1E B3 F6 FA 78 A6
|
||||
0050 | DF 9B 14 A1 77 B0 1E 7E 98 7C 1E 17 3C E6 12 07
|
||||
0060 | 13 AA FD 44 F2 E9 23 9F 5E B4 9A AD 19 6E 13 A2
|
||||
0070 | 66 E4 D6 BF 20 8E A4 FD 1C BD 08 EF 94 61 15 A4
|
||||
0080 | 93 47 BB 92 03 0A 04 C4 3F B2 6B 58 D9 6F FF 3E
|
||||
0090 | 59 B6 43 5B 5F C7 07 D1 EE 88 C0 43 04 43 C8 8F
|
||||
00A0 | D4 E4 1E 1A 93 81 F8 2E EE 38 BD 34 49 29 5E 9E
|
||||
00B0 | 47 8F 10 B4 F1 30 22 F8 8E 1D 17 E3 D2 1D AA 84
|
||||
00C0 | B9 A9 34 53 5B D4 E1 0A DF 74 91 05 82 77 15 4F
|
||||
00D0 | B2 86 22 13 AD 83 E5 B8 59 80 9A 74 57 54 A9 CA
|
||||
00E0 | 01 18 7A 06 AE 81 E7 AA 11 AB C0 94 9B 0F A6 22
|
||||
00F0 | E7 8F 89 61 3F 74 BA 83 5A 41 E8 33 E7 94 3E 47
|
||||
0100 | C0 E4 3D AA 15 B7 71 A3 17 7F 3F 80 34 91 8A A0
|
||||
0110 | 1D B5 02 47 D8 1A 2A B2 2B 58 22 20 0F F7 D1 43
|
||||
0120 | 51 37 38 24 A3 14 5F 76 9A 1F 1C C8 35 1F A1 F0
|
||||
0130 | FB 82 5D 18 74 C6 E6 88 A3 9C 90 10 03 CF 84 C7
|
||||
0140 | 58 D1 44 95 9C 81 E5 02 40 D1 DD 93 4D 45 AE DD
|
||||
0150 | DD 67 CC BC BF 4F 32 58 40 1E CE 04 D4 0B A3 9B
|
||||
0160 | D6 58 EC 90 E4 0B A3 D2 7C 8A 7E AB 78 31 58 8A
|
||||
0170 | 98 22 01 DD 02 E9 64 71 C1 31 73 9A 57 42 08 AC
|
||||
0180 | A0 01 33 A1 73 8D 11 06 B8 4C 8A 09</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 B0 88 09 00 8A FB 97 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 AE 3C 4B 5C 6F 3C 2B 0D
|
||||
0020 | 7D 27 2F 73 3E 43 D7 16 2F C9 7B B4 A7 29 4A 97
|
||||
0030 | 8D 22 18 F0 39 EC B2 86 FE 50 01 00 4E DF 0B AB
|
||||
0040 | 91 AB 52 50 72 97 78 E4 46 C8 3E 3B 4B 9F FF B4
|
||||
0050 | E4 73 14 8C 1B 73 82 F5 21 40 C8 91 D1 9A 94 1F
|
||||
0060 | 04 F8 AB 07 F8 68 62 C0 B5 F2 65 BE AF FC 6A 38
|
||||
0070 | 1D 4B 0B AE 9D 7D 02 6C 5C D6 A7 43 6C ED A5 E9
|
||||
0080 | 7D 66 85 7B 44 31 73 12 17 19 63 93 D1 17 D7 73
|
||||
0090 | A7 88 16 CF C3 81 FF 1A E0 1E 59 21 EF 1A 43 AB
|
||||
00A0 | BD 90 5C CF 7E 2F 85 04 55 CA AC 4F 58 6A 61 90
|
||||
00B0 | 16 FF F2 5F 8F DD 47 EC 21 D4 04 E8 1E 85 A9 3F
|
||||
00C0 | B1 94 E9 64 14 FE F6 ED C0 09 E3 E6 1E 19 BE B6
|
||||
00D0 | 66 B7 EB D5 91 60 5F 2F 84 42 8C 2A 83 AA 57 CE
|
||||
00E0 | 5C C6 A4 C4 E9 DA 04 42 EC B6 33 50 79 97 EC C3
|
||||
00F0 | 5D 5D 9D 99 65 29 A8 1A A6 C6 D6 4D 39 CE 71 5B
|
||||
0100 | 1B 22 61 D9 72 06 10 53 BD 14 EA 34 73 CD 1F 3F
|
||||
0110 | 08 9A 28 6B 8D 9A F9 9A 8F DE DC 9F BE 96 9E BE
|
||||
0120 | B8 FF CC 8E 21 57 9E 27 BB 5F A5 DE 0D AC D3 BB
|
||||
0130 | 76 00 3C AC 1E 17 56 2F 78 6C 3D 4B 42 08 64 F8
|
||||
0140 | 37 89 EF E5 DE 3C F2 A8 19 54 97 4E 3A CE 2E B9
|
||||
0150 | E5 17 36 B6 62 8A 73 08 DB 51 DB A7 8F 25 2C 96
|
||||
0160 | FD 78 76 D8 00 8B 45 DC B1 CD 4D EE 41 04 5D C9
|
||||
0170 | 84 05 C6 2A 54 4E 5C 9B 12 C5 3E C0 35 AF 2E F3
|
||||
0180 | B6 28 D9 00 50 DC BF E2 8B D5 7D 08</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>E8460C009BF89766</code></td>
|
||||
<td><code>B08809008AFB9766</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 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>14482B90FAE8E35CE4085AA7532F0FA8</code></td>
|
||||
<td><code>AE3C4B5C6F3C2B0D7D272F733E43D716</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>E8BA72BAFBB7A6C5DB1D8574D88F6B3A</code></td>
|
||||
<td><code>2FC97BB4A7294A978D2218F039ECB286</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE500100B7B9874BF5A0342D8FB4A855</code> <code>28A61EB3F6FA78A6DF9B14A177B01E7E</code> <code>987C1E173CE6120713AAFD44F2E9239F</code> <code>5EB49AAD196E13A266E4D6BF208EA4FD</code> <code>1CBD08EF946115A49347BB92030A04C4</code> <code>3FB26B58D96FFF3E59B6435B5FC707D1</code> <code>EE88C0430443C88FD4E41E1A9381F82E</code> <code>EE38BD3449295E9E478F10B4F13022F8</code> <code>8E1D17E3D21DAA84B9A934535BD4E10A</code> <code>DF7491058277154FB2862213AD83E5B8</code> <code>59809A745754A9CA01187A06AE81E7AA</code> <code>11ABC0949B0FA622E78F89613F74BA83</code> <code>5A41E833E7943E47C0E43DAA15B771A3</code> <code>177F3F8034918AA01DB50247D81A2AB2</code> <code>2B5822200FF7D14351373824A3145F76</code> <code>9A1F1CC8351FA1F0FB825D1874C6E688</code> <code>A39C901003CF84C758D144959C81E502</code> <code>40D1DD934D45AEDDDD67CCBCBF4F3258</code> <code>401ECE04D40BA39BD658EC90E40BA3D2</code> <code>7C8A7EAB7831588A982201DD02E96471</code> <code>C131739A574208ACA00133A1738D1106</code><br> <code>B84C8A09</code></td>
|
||||
<td><code>FE5001004EDF0BAB91AB5250729778E4</code> <code>46C83E3B4B9FFFB4E473148C1B7382F5</code> <code>2140C891D19A941F04F8AB07F86862C0</code> <code>B5F265BEAFFC6A381D4B0BAE9D7D026C</code> <code>5CD6A7436CEDA5E97D66857B44317312</code> <code>17196393D117D773A78816CFC381FF1A</code> <code>E01E5921EF1A43ABBD905CCF7E2F8504</code> <code>55CAAC4F586A619016FFF25F8FDD47EC</code> <code>21D404E81E85A93FB194E96414FEF6ED</code> <code>C009E3E61E19BEB666B7EBD591605F2F</code> <code>84428C2A83AA57CE5CC6A4C4E9DA0442</code> <code>ECB633507997ECC35D5D9D996529A81A</code> <code>A6C6D64D39CE715B1B2261D972061053</code> <code>BD14EA3473CD1F3F089A286B8D9AF99A</code> <code>8FDEDC9FBE969EBEB8FFCC8E21579E27</code> <code>BB5FA5DE0DACD3BB76003CAC1E17562F</code> <code>786C3D4B420864F83789EFE5DE3CF2A8</code> <code>1954974E3ACE2EB9E51736B6628A7308</code> <code>DB51DBA78F252C96FD7876D8008B45DC</code> <code>B1CD4DEE41045DC98405C62A544E5C9B</code> <code>12C53EC035AF2EF3B628D90050DCBFE2</code><br> <code>8BD57D08</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 = 1D5CF4EEF0CEB1BF14A2CBCC3E9DF593C6D863BABB8984191CA8DA219ECFAB20C4B6C7CA6D7F83D7530B486DB4492EF140697676DBC5E3F2AD515240F988E8DDCD8A10277D219983009EC1212BD194D11C611DA4882E95369E4036A28607E8439C04BFFC9499E9C7286EE6DADAE51677288B1AF8934C67897C8164B69777BBBA89E7017FD93B47FB823011AD5AF635D96683D80D16076D4266BC700E6EE661AE85961F1DD071C2305DE9BA4659B7CC9BEA0ACBA41B360717DA28CB6F08774C3CFB4B75E828998CDE737574D062531AAB00AA2C243A70F8D5F3BED2AD01D79F8C76766ABD0C5283CABA6F385777BD383F8BC19D6C23FCF6D6EF43B10B4C372DAB</code></pre>
|
||||
<pre><code>auth_key = 3A9004900BD0727B577AE5A980CB926FDAE8AB789393017A2A7ECC8B827AF8A29F79E2CE69C72B069F72A26102FE0CBC41AE02B769280A03E63A9B4EFB041229945F199616E91CD263BD6DFC3F5E65C72699718345E398ED51D76661BD5229AAED89EB1265621785A041F2F4CCF5640A741358B6A222F60B00A10C2944BA02DCDEF2E745D70FC1D2B44356C2C2C955D597E5BEBB8FA1DAF49C7A8458431BFB4AD058288475E594237D5F4421FAB8BC8DC62425AE03BBA715841B4B34660BBDEF30179AA114526AD0A7208A659068DA900FEF9EA1C07ACEC2E1DE571832BF4D4DD18D865E47E4DF517BEB55107C371F84FEDD78CE779681D0D4C97A1CBE3A68D6</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 48 15 BD 9B F8 97 66
|
||||
0010 | A4 00 00 00 34 F7 CB 3B 14 48 2B 90 FA E8 E3 5C
|
||||
0020 | E4 08 5A A7 53 2F 0F A8 E8 BA 72 BA FB B7 A6 C5
|
||||
0030 | DB 1D 85 74 D8 8F 6B 3A 19 44 CC 6D 4B 8B 8C 1B
|
||||
0040 | D0 DE 7E 89 D6 89 E7 DC</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 FC 99 FE 8A FB 97 66
|
||||
0010 | 90 00 00 00 34 F7 CB 3B AE 3C 4B 5C 6F 3C 2B 0D
|
||||
0020 | 7D 27 2F 73 3E 43 D7 16 2F C9 7B B4 A7 29 4A 97
|
||||
0030 | 8D 22 18 F0 39 EC B2 86 7F 18 82 EA A8 E0 08 35
|
||||
0040 | 93 39 C3 53 51 A9 7D 9F</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>014815BD9BF89766</code></td>
|
||||
<td><code>01FC99FE8AFB9766</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>message_length</td>
|
||||
<td>16, 4</td>
|
||||
<td><code>A4000000</code> (164 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>14482B90FAE8E35CE4085AA7532F0FA8</code></td>
|
||||
<td><code>AE3C4B5C6F3C2B0D7D272F733E43D716</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>E8BA72BAFBB7A6C5DB1D8574D88F6B3A</code></td>
|
||||
<td><code>2FC97BB4A7294A978D2218F039ECB286</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>1944CC6D4B8B8C1BD0DE7E89D689E7DC</code></td>
|
||||
<td><code>7F1882EAA8E008359339C35351A97D9F</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>
|
||||
|
|
|
@ -603,7 +603,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/channels.setBoostsToUnblockRestrictions">channels.setBoostsToUnblockRestrictions</a></td>
|
||||
<td> </td>
|
||||
<td>Admins with <a href="/constructor/chatAdminRights">ban_users admin rights »</a> may allow users that apply a certain number of <a href="/api/boost">booosts »</a> to the group to bypass <a href="/method/channels.toggleSlowMode">slow mode »</a> and <a href="/api/rights#default-rights">other »</a> supergroup restrictions, see <a href="/api/boost#bypass-slowmode-and-chat-restrictions">here »</a> for more info.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/messages.sendQuickReplyMessages">messages.sendQuickReplyMessages</a></td>
|
||||
|
@ -627,11 +627,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/messages.editFactCheck">messages.editFactCheck</a></td>
|
||||
<td>Edit/create a <a href="/api/factcheck">fact-check</a> on a message; can only be used by independent fact-checkers as specified by the <a href="/api/config#can-edit-factcheck">appConfig.can_edit_factcheck</a> configuration flag.</td>
|
||||
<td>Edit/create a <a href="/api/factcheck">fact-check</a> on a message.<br><br>Can only be used by independent fact-checkers as specified by the <a href="/api/config#can-edit-factcheck">appConfig.can_edit_factcheck</a> configuration flag.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/messages.deleteFactCheck">messages.deleteFactCheck</a></td>
|
||||
<td>Delete a <a href="/api/factcheck">fact-check</a> from a message; can only be used by independent fact-checkers as specified by the <a href="/api/config#can-edit-factcheck">appConfig.can_edit_factcheck</a> configuration flag.</td>
|
||||
<td>Delete a <a href="/api/factcheck">fact-check</a> from a message.<br><br>Can only be used by independent fact-checkers as specified by the <a href="/api/config#can-edit-factcheck">appConfig.can_edit_factcheck</a> configuration flag.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/payments.refundStarsCharge">payments.refundStarsCharge</a></td>
|
||||
|
|
Loading…
Add table
Reference in a new issue