Update content of files

This commit is contained in:
GitHub Action 2024-07-06 15:55:12 +00:00
parent 2f3e479507
commit cf8ae3e071
10 changed files with 256 additions and 241 deletions

View file

@ -66,6 +66,9 @@
<a href='/constructor/message'>message</a>#94345242 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> noforwards:flags.26?<a href='/constructor/true'>true</a> invert_media:flags.27?<a href='/constructor/true'>true</a> flags2:<a href='/type/%23'>#</a> offline:flags2.1?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> from_boosts_applied:flags.29?<a href='/type/int'>int</a> peer_id:<a href='/type/Peer'>Peer</a> saved_peer_id:flags.28?<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> via_business_bot_id:flags2.0?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/MessageEntity'>MessageEntity</a>&gt; views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> reactions:flags.20?<a href='/type/MessageReactions'>MessageReactions</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/RestrictionReason'>RestrictionReason</a>&gt; ttl_period:flags.25?<a href='/type/int'>int</a> quick_reply_shortcut_id:flags.30?<a href='/type/int'>int</a> effect:flags2.2?<a href='/type/long'>long</a> factcheck:flags2.3?<a href='/type/FactCheck'>FactCheck</a> = <a href='/type/Message'>Message</a>;
<a href='/constructor/channelFull'>channelFull</a>#bbab348d flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> flags2:<a href='/type/%23'>#</a> can_delete_channel:flags2.0?<a href='/constructor/true'>true</a> antispam:flags2.1?<a href='/constructor/true'>true</a> participants_hidden:flags2.2?<a href='/constructor/true'>true</a> translations_disabled:flags2.3?<a href='/constructor/true'>true</a> stories_pinned_available:flags2.5?<a href='/constructor/true'>true</a> view_forum_as_messages:flags2.6?<a href='/constructor/true'>true</a> restricted_sponsored:flags2.11?<a href='/constructor/true'>true</a> can_view_revenue:flags2.12?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/BotInfo'>BotInfo</a>&gt; migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/string'>string</a>&gt; groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> requests_pending:flags.28?<a href='/type/int'>int</a> recent_requesters:flags.28?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt; default_send_as:flags.29?<a href='/type/Peer'>Peer</a> available_reactions:flags.30?<a href='/type/ChatReactions'>ChatReactions</a> reactions_limit:flags2.13?<a href='/type/int'>int</a> stories:flags2.4?<a href='/type/PeerStories'>PeerStories</a> wallpaper:flags2.7?<a href='/type/WallPaper'>WallPaper</a> boosts_applied:flags2.8?<a href='/type/int'>int</a> boosts_unrestrict:flags2.9?<a href='/type/int'>int</a> emojiset:flags2.10?<a href='/type/StickerSet'>StickerSet</a> = <a href='/type/ChatFull'>ChatFull</a>;
<a href='/constructor/messageActionBoostApply'>messageActionBoostApply</a>#cc02aa6d boosts:<a href='/type/int'>int</a> = <a href='/type/MessageAction'>MessageAction</a>;
<a href='/constructor/messageService'>messageService</a>#2b085862 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;
---functions---
<a href='/method/premium.getMyBoosts'>premium.getMyBoosts</a>#0be77b4a = <a href='/type/premium.MyBoosts'>premium.MyBoosts</a>;
@ -85,6 +88,7 @@ A <code>BOOST_NOT_MODIFIED</code> RPC error will be returned when calling any of
<p>Users may also invoke <a href="/method/premium.getBoostsStatus">premium.getBoostsStatus</a>, to get the current boost status of a channel or supergroup as a <a href="/constructor/premium.boostsStatus">premium.boostsStatus</a> constructor, check out the <a href="/constructor/premium.boostsStatus">constructor page</a> for more info.</p>
<p>The number of boosts we have currently assigned to the channel/supergroup will also be visible in <a href="/constructor/channelFull">channelFull</a>.<code>boosts_applied</code>. </p>
<p>Channel or supergroup administrators may invoke <a href="/method/premium.getBoostsList">premium.getBoostsList</a> to fetch the list of users currently boosting the channel or supergroup, and <a href="/method/premium.getUserBoosts">premium.getUserBoosts</a> to get info about the boosts sent to a channel or supergroup by a specific user.</p>
<p>Boosting a channel or supergroup will emit (not immediately, after max 15 seconds to allow grouping of repeated boosts) a <a href="/constructor/messageService">messageService</a> with a <a href="/constructor/messageActionBoostApply">messageActionBoostApply</a> to all users (supergroups) or for just the sender (channels), with <code>from_id</code> equal to the sender of the boosts. </p>
<h3><a class="anchor" href="#features" id="features" name="features"><i class="anchor-icon"></i></a>Features</h3>
<h4><a class="anchor" href="#posting-stories-as-a-channel-or-supergroup" id="posting-stories-as-a-channel-or-supergroup" name="posting-stories-as-a-channel-or-supergroup"><i class="anchor-icon"></i></a>Posting stories as a channel or supergroup</h4>
<p>With each boost, channels and supergroups can post 1 additional story per day to their subscribers' story feeds.</p>

View file

@ -282,7 +282,7 @@
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/birthday">birthday</a> - </li>
<li>Added <a href="/constructor/birthday">birthday</a> - <a href="/api/profile#birthday">Birthday</a> information for a user.</li>
<li>Added <a href="/constructor/updateBotBusinessConnect">updateBotBusinessConnect</a> - </li>
<li>Added <a href="/constructor/updateBotNewBusinessMessage">updateBotNewBusinessMessage</a> - </li>
<li>Added <a href="/constructor/updateBotEditBusinessMessage">updateBotEditBusinessMessage</a> - </li>
@ -584,7 +584,7 @@
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/outboxReadDate">outboxReadDate</a> - </li>
<li>Added <a href="/constructor/messageActionBoostApply">messageActionBoostApply</a> - </li>
<li>Added <a href="/constructor/messageActionBoostApply">messageActionBoostApply</a> - Some <a href="/api/boost">boosts »</a> were applied to the channel or supergroup.</li>
<li>Added <a href="/constructor/channelAdminLogEventActionChangeEmojiStickerSet">channelAdminLogEventActionChangeEmojiStickerSet</a> - The supergroup's <a href="/api/boost#setting-a-custom-emoji-stickerset-for-supergroups">custom emoji stickerset</a> was changed.</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>

View file

@ -59,6 +59,21 @@
<p>Use <a href="/method/account.updateProfile">account.updateProfile</a> to change the name and bio (<code>about</code>) of the current account.</p>
<p><code>first_name</code> and <code>last_name</code> will be contained in the <a href="/constructor/user">user</a> constructor, and the <code>about</code> field in the <a href="/constructor/userFull">userFull</a> constructor. </p>
<p>Changing the first/last name will emit an <a href="/constructor/updateUserName">updateUserName</a> update, changing the <code>about</code> bio will emit an <a href="/constructor/updateUser">updateUser</a> update (which should lead to an invalidation of the locally cached <a href="/constructor/userFull">userFull</a> constructor, and subsequent refetch using <a href="/method/users.getFullUser">users.getFullUser</a> if and when needed). </p>
<h3><a class="anchor" href="#profile-photo" id="profile-photo" name="profile-photo"><i class="anchor-icon"></i></a>Profile photo</h3>
<pre><code><a href='/constructor/userProfilePhotoEmpty'>userProfilePhotoEmpty</a>#4f11bae1 = <a href='/type/UserProfilePhoto'>UserProfilePhoto</a>;
<a href='/constructor/userProfilePhoto'>userProfilePhoto</a>#82d1f706 flags:<a href='/type/%23'>#</a> has_video:flags.0?<a href='/constructor/true'>true</a> personal:flags.2?<a href='/constructor/true'>true</a> photo_id:<a href='/type/long'>long</a> stripped_thumb:flags.1?<a href='/type/bytes'>bytes</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/UserProfilePhoto'>UserProfilePhoto</a>;
<a href='/constructor/user'>user</a>#215c4438 flags:<a href='/type/%23'>#</a> self:flags.10?<a href='/constructor/true'>true</a> contact:flags.11?<a href='/constructor/true'>true</a> mutual_contact:flags.12?<a href='/constructor/true'>true</a> deleted:flags.13?<a href='/constructor/true'>true</a> bot:flags.14?<a href='/constructor/true'>true</a> bot_chat_history:flags.15?<a href='/constructor/true'>true</a> bot_nochats:flags.16?<a href='/constructor/true'>true</a> verified:flags.17?<a href='/constructor/true'>true</a> restricted:flags.18?<a href='/constructor/true'>true</a> min:flags.20?<a href='/constructor/true'>true</a> bot_inline_geo:flags.21?<a href='/constructor/true'>true</a> support:flags.23?<a href='/constructor/true'>true</a> scam:flags.24?<a href='/constructor/true'>true</a> apply_min_photo:flags.25?<a href='/constructor/true'>true</a> fake:flags.26?<a href='/constructor/true'>true</a> bot_attach_menu:flags.27?<a href='/constructor/true'>true</a> premium:flags.28?<a href='/constructor/true'>true</a> attach_menu_enabled:flags.29?<a href='/constructor/true'>true</a> flags2:<a href='/type/%23'>#</a> bot_can_edit:flags2.1?<a href='/constructor/true'>true</a> close_friend:flags2.2?<a href='/constructor/true'>true</a> stories_hidden:flags2.3?<a href='/constructor/true'>true</a> stories_unavailable:flags2.4?<a href='/constructor/true'>true</a> contact_require_premium:flags2.10?<a href='/constructor/true'>true</a> bot_business:flags2.11?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:flags.0?<a href='/type/long'>long</a> first_name:flags.1?<a href='/type/string'>string</a> last_name:flags.2?<a href='/type/string'>string</a> username:flags.3?<a href='/type/string'>string</a> phone:flags.4?<a href='/type/string'>string</a> photo:flags.5?<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:flags.6?<a href='/type/UserStatus'>UserStatus</a> bot_info_version:flags.14?<a href='/type/int'>int</a> restriction_reason:flags.18?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/RestrictionReason'>RestrictionReason</a>&gt; bot_inline_placeholder:flags.19?<a href='/type/string'>string</a> lang_code:flags.22?<a href='/type/string'>string</a> emoji_status:flags.30?<a href='/type/EmojiStatus'>EmojiStatus</a> usernames:flags2.0?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Username'>Username</a>&gt; stories_max_id:flags2.5?<a href='/type/int'>int</a> color:flags2.8?<a href='/type/PeerColor'>PeerColor</a> profile_color:flags2.9?<a href='/type/PeerColor'>PeerColor</a> = <a href='/type/User'>User</a>;
<a href='/constructor/updateUser'>updateUser</a>#20529438 user_id:<a href='/type/long'>long</a> = <a href='/type/Update'>Update</a>;
---functions---
<a href='/method/photos.updateProfilePhoto'>photos.updateProfilePhoto</a>#9e82039 flags:<a href='/type/%23'>#</a> fallback:flags.0?<a href='/constructor/true'>true</a> bot:flags.1?<a href='/type/InputUser'>InputUser</a> id:<a href='/type/InputPhoto'>InputPhoto</a> = <a href='/type/photos.Photo'>photos.Photo</a>;
<a href='/method/photos.uploadProfilePhoto'>photos.uploadProfilePhoto</a>#388a3b5 flags:<a href='/type/%23'>#</a> fallback:flags.3?<a href='/constructor/true'>true</a> bot:flags.5?<a href='/type/InputUser'>InputUser</a> file:flags.0?<a href='/type/InputFile'>InputFile</a> video:flags.1?<a href='/type/InputFile'>InputFile</a> video_start_ts:flags.2?<a href='/type/double'>double</a> video_emoji_markup:flags.4?<a href='/type/VideoSize'>VideoSize</a> = <a href='/type/photos.Photo'>photos.Photo</a>;</code></pre>
<p>Use <a href="/method/photos.updateProfilePhoto">photos.updateProfilePhoto</a> or <a href="/method/photos.uploadProfilePhoto">photos.uploadProfilePhoto</a> to set a profile (optionally animated) picture, emitting an <a href="/constructor/updateUser">updateUser</a>. </p>
<p>The photo will be contained in <a href="/constructor/user">user</a>.<code>photo</code>. </p>
<p>See <a href="/api/files#uploading-profile-or-chat-pictures">here »</a> for full info on profile pictures and how to work with them. </p>
<h3><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a>Emoji status</h3>
<pre><code><a href='/constructor/user'>user</a>#215c4438 flags:<a href='/type/%23'>#</a> self:flags.10?<a href='/constructor/true'>true</a> contact:flags.11?<a href='/constructor/true'>true</a> mutual_contact:flags.12?<a href='/constructor/true'>true</a> deleted:flags.13?<a href='/constructor/true'>true</a> bot:flags.14?<a href='/constructor/true'>true</a> bot_chat_history:flags.15?<a href='/constructor/true'>true</a> bot_nochats:flags.16?<a href='/constructor/true'>true</a> verified:flags.17?<a href='/constructor/true'>true</a> restricted:flags.18?<a href='/constructor/true'>true</a> min:flags.20?<a href='/constructor/true'>true</a> bot_inline_geo:flags.21?<a href='/constructor/true'>true</a> support:flags.23?<a href='/constructor/true'>true</a> scam:flags.24?<a href='/constructor/true'>true</a> apply_min_photo:flags.25?<a href='/constructor/true'>true</a> fake:flags.26?<a href='/constructor/true'>true</a> bot_attach_menu:flags.27?<a href='/constructor/true'>true</a> premium:flags.28?<a href='/constructor/true'>true</a> attach_menu_enabled:flags.29?<a href='/constructor/true'>true</a> flags2:<a href='/type/%23'>#</a> bot_can_edit:flags2.1?<a href='/constructor/true'>true</a> close_friend:flags2.2?<a href='/constructor/true'>true</a> stories_hidden:flags2.3?<a href='/constructor/true'>true</a> stories_unavailable:flags2.4?<a href='/constructor/true'>true</a> contact_require_premium:flags2.10?<a href='/constructor/true'>true</a> bot_business:flags2.11?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:flags.0?<a href='/type/long'>long</a> first_name:flags.1?<a href='/type/string'>string</a> last_name:flags.2?<a href='/type/string'>string</a> username:flags.3?<a href='/type/string'>string</a> phone:flags.4?<a href='/type/string'>string</a> photo:flags.5?<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:flags.6?<a href='/type/UserStatus'>UserStatus</a> bot_info_version:flags.14?<a href='/type/int'>int</a> restriction_reason:flags.18?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/RestrictionReason'>RestrictionReason</a>&gt; bot_inline_placeholder:flags.19?<a href='/type/string'>string</a> lang_code:flags.22?<a href='/type/string'>string</a> emoji_status:flags.30?<a href='/type/EmojiStatus'>EmojiStatus</a> usernames:flags2.0?<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Username'>Username</a>&gt; stories_max_id:flags2.5?<a href='/type/int'>int</a> color:flags2.8?<a href='/type/PeerColor'>PeerColor</a> profile_color:flags2.9?<a href='/type/PeerColor'>PeerColor</a> = <a href='/type/User'>User</a>;
@ -149,6 +164,7 @@ Updating/reordering usernames will emit an <a href="/constructor/updateUserName"
<a href='/method/account.updateBusinessGreetingMessage'>account.updateBusinessGreetingMessage</a>#66cdafc4 flags:<a href='/type/%23'>#</a> message:flags.0?<a href='/type/InputBusinessGreetingMessage'>InputBusinessGreetingMessage</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/account.updateBusinessAwayMessage'>account.updateBusinessAwayMessage</a>#a26a7fa5 flags:<a href='/type/%23'>#</a> message:flags.0?<a href='/type/InputBusinessAwayMessage'>InputBusinessAwayMessage</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/account.updateBusinessIntro'>account.updateBusinessIntro</a>#a614d034 flags:<a href='/type/%23'>#</a> intro:flags.0?<a href='/type/InputBusinessIntro'>InputBusinessIntro</a> = <a href='/type/Bool'>Bool</a>;</code></pre>
<p>A large number of <a href="/api/business">Telegram Business-related</a> information should be displayed on the profile page, see <a href="/api/business">here »</a> for the full list of fields and how they can be changed. </p>
<h3><a class="anchor" href="#online-status" id="online-status" name="online-status"><i class="anchor-icon"></i></a>Online status</h3>
<pre><code><a href='/constructor/userStatusEmpty'>userStatusEmpty</a>#9d05049 = <a href='/type/UserStatus'>UserStatus</a>;
<a href='/constructor/userStatusOnline'>userStatusOnline</a>#edb93949 expires:<a href='/type/int'>int</a> = <a href='/type/UserStatus'>UserStatus</a>;

View file

@ -4,12 +4,10 @@
<meta charset="utf-8">
<title>birthday</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Birthday information for a user.
Also used to invite users to gift Telegram Premium subscriptions » to other users with…">
<meta property="description" content="Birthday information for a user. Also used to invite users to gift Telegram Premium subscriptions » to other users with birthdays within a +1/-1 day time range, related to the current day.">
<meta property="og:title" content="birthday">
<meta property="og:image" content="">
<meta property="og:description" content="Birthday information for a user.
Also used to invite users to gift Telegram Premium subscriptions » to other users with…">
<meta property="og:description" content="Birthday information for a user. Also used to invite users to gift Telegram Premium subscriptions » to other users with birthdays within a +1/-1 day time range, related to the current day.">
<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">
@ -45,7 +43,7 @@ Also used to invite users to gift Telegram Premium subscriptions » to other use
<h1 id="dev_page_title">birthday</h1>
<div id="dev_page_content"><p><a href="/api/profile#birthday">Birthday</a> information for a user.</p>
<p>Also used to invite users to gift <a href="/api/premium#gifting-telegram-premium">Telegram Premium subscriptions »</a> to other users with birthdays within a +1/-1 day time range, related to the current day. </p>
<p>Also used to invite users to gift <a href="/api/premium#gifting-telegram-premium">Telegram Premium subscriptions »</a> to other users with birthdays within a +1/-1 day time range, related to the current day.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -92,7 +90,12 @@ Also used to invite users to gift Telegram Premium subscriptions » to other use
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/Birthday">Birthday</a></p></div>
<p><a href="/type/Birthday">Birthday</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="#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>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p></div>
</div>

View file

@ -4,26 +4,10 @@
<meta charset="utf-8">
<title>messageActionBoostApply</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
boosts
int
 
Type
MessageAction">
<meta property="description" content="Some boosts » were applied to the channel or supergroup.">
<meta property="og:title" content="messageActionBoostApply">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
boosts
int
 
Type
MessageAction">
<meta property="og:description" content="Some boosts » were applied to the channel or supergroup.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -58,7 +42,8 @@ MessageAction">
<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/messageActionBoostApply" >messageActionBoostApply</a></li></ul></div>
<h1 id="dev_page_title">messageActionBoostApply</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Some <a href="/api/boost">boosts »</a> were applied to the channel or supergroup.</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>
@ -84,12 +69,15 @@ MessageAction">
<tr>
<td><strong>boosts</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Number of applied <a href="/api/boost">boosts</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/MessageAction">MessageAction</a></p></div>
<p><a href="/type/MessageAction">MessageAction</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#channel-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></div>
</div>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>updateUser</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="User information was updated, it must be refetched using users.getFullUser.">
<meta property="description" content="User (user and/or userFull) information was updated, it must be refetched using users.getFullUser.">
<meta property="og:title" content="updateUser">
<meta property="og:image" content="">
<meta property="og:description" content="User information was updated, it must be refetched using users.getFullUser.">
<meta property="og:description" content="User (user and/or userFull) information was updated, it must be refetched using users.getFullUser.">
<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">
@ -42,7 +42,7 @@
<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/updateUser" >updateUser</a></li></ul></div>
<h1 id="dev_page_title">updateUser</h1>
<div id="dev_page_content"><p>User information was updated, it must be refetched using <a href="/method/users.getFullUser">users.getFullUser</a>.</p>
<div id="dev_page_content"><p>User (<a href="/constructor/user">user</a> and/or <a href="/constructor/userFull">userFull</a>) information was updated, it must be refetched using <a href="/method/users.getFullUser">users.getFullUser</a>.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -76,6 +76,10 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/Update">Update</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#user" id="user" name="user"><i class="anchor-icon"></i></a><a href="/constructor/user">user</a></h4>
<p>Indicates info about a certain user</p>
<h4><a class="anchor" href="#userfull" id="userfull" name="userfull"><i class="anchor-icon"></i></a><a href="/constructor/userFull">userFull</a></h4>
<p>Extended user info</p>
<h4><a class="anchor" href="#usersgetfulluser" id="usersgetfulluser" name="usersgetfulluser"><i class="anchor-icon"></i></a><a href="/method/users.getFullUser">users.getFullUser</a></h4>
<p>Returns extended user info by ID.</p></div>

View file

@ -87,7 +87,7 @@
<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>
<h4><a class="anchor" href="#updateuser" id="updateuser" name="updateuser"><i class="anchor-icon"></i></a><a href="/constructor/updateUser">updateUser</a></h4>
<p>User information was updated, it must be refetched using <a href="/method/users.getFullUser">users.getFullUser</a>.</p></div>
<p>User (<a href="/constructor/user">user</a> and/or <a href="/constructor/userFull">userFull</a>) information was updated, it must be refetched using <a href="/method/users.getFullUser">users.getFullUser</a>.</p></div>
</div>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 C0 66 04 00 8F 61 89 66
0010 | 14 00 00 00 F1 8E 7E BE 8A 74 6C B5 B5 A8 B2 09
0020 | 60 7A C2 3F 42 38 1C 8D</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 E0 DF 08 00 DF 67 89 66
0010 | 14 00 00 00 F1 8E 7E BE 24 51 93 B7 F5 9B 5B BC
0020 | 8C C5 6C B6 43 18 20 22</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>C06604008F618966</code></td>
<td><code>E0DF0800DF678966</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>8A746CB5B5A8B209607AC23F42381C8D</code></td>
<td><code>245193B7F59B5BBC8CC56CB643182022</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 44 56 57 8F 61 89 66
0010 | 54 00 00 00 63 24 16 05 8A 74 6C B5 B5 A8 B2 09
0020 | 60 7A C2 3F 42 38 1C 8D 9E 84 14 64 C6 56 0C E5
0030 | 91 60 C5 0C 1F F4 76 17 08 29 F6 69 A5 77 4E A5
0040 | 49 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 30 97 6E DF 67 89 66
0010 | 58 00 00 00 63 24 16 05 24 51 93 B7 F5 9B 5B BC
0020 | 8C C5 6C B6 43 18 20 22 12 38 54 3A 19 42 67 BC
0030 | 53 14 82 A7 E3 C2 ED 64 08 1D B8 A4 A1 D9 52 C3
0040 | 8B 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>014456578F618966</code></td>
<td><code>0130976EDF678966</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>54000000</code> (84 in decimal)</td>
<td><code>58000000</code> (88 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>8A746CB5B5A8B209607AC23F42381C8D</code></td>
<td><code>245193B7F59B5BBC8CC56CB643182022</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>9E841464C6560CE59160C50C1FF47617</code></td>
<td><code>1238543A194267BC531482A7E3C2ED64</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0829F669A5774EA549000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3023720359218029897</td>
<td><code>081DB8A4A1D952C38B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2141642637857440651</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 = 3023720359218029897</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>3023720359218029897 = 1603108193 * 1886161129</code></p>
<pre><code>p = 1603108193
q = 1886161129</code></pre>
<pre><code>pq = 2141642637857440651</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2141642637857440651 = 1329070753 * 1611383467</code></p>
<pre><code>p = 1329070753
q = 1611383467</code></pre>
<!-- end pq -->
<h4><a class="anchor" href="#presenting-proof-of-work-server-authentication" id="presenting-proof-of-work-server-authentication" name="presenting-proof-of-work-server-authentication"><i class="anchor-icon"></i></a>Presenting proof of work; Server authentication</h4>
<h5><a class="anchor" href="#4-encrypted-data-payload-generation" id="4-encrypted-data-payload-generation" name="4-encrypted-data-payload-generation"><i class="anchor-icon"></i></a>4) <code>encrypted_data</code> payload generation</h5>
<p>First of all, generate an <code>encrypted_data</code> payload as follows:</p>
<!-- start p_q_inner_data_dc -->
<p>Generated payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 95 5F F5 A9 08 29 F6 69 A5 77 4E A5 49 00 00 00
0010 | 04 5F 8D 7D 61 00 00 00 04 70 6C 88 E9 00 00 00
0020 | 8A 74 6C B5 B5 A8 B2 09 60 7A C2 3F 42 38 1C 8D
0030 | 9E 84 14 64 C6 56 0C E5 91 60 C5 0C 1F F4 76 17
0040 | FB C0 49 04 1D 75 6E 0F C5 05 AA 27 17 62 9C 44
0050 | B4 71 2F 0E B5 7F 1E 08 B9 50 7E 29 14 C1 85 31
<pre><code>0000 | 95 5F F5 A9 08 1D B8 A4 A1 D9 52 C3 8B 00 00 00
0010 | 04 4F 38 02 A1 00 00 00 04 60 0B C2 AB 00 00 00
0020 | 24 51 93 B7 F5 9B 5B BC 8C C5 6C B6 43 18 20 22
0030 | 12 38 54 3A 19 42 67 BC 53 14 82 A7 E3 C2 ED 64
0040 | 61 55 EC C9 94 CB BC FB 0D C2 C7 93 F9 80 9B 96
0050 | 58 39 3B FD 15 01 BD E0 D1 64 B2 E4 B7 E9 42 4B
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 = 1886161129</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0829F669A5774EA549000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3023720359218029897</td>
<td><code>081DB8A4A1D952C38B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2141642637857440651</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>045F8D7D61000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1603108193</td>
<td><code>044F3802A1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1329070753</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>04706C88E9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1886161129</td>
<td><code>04600BC2AB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1611383467</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>8A746CB5B5A8B209607AC23F42381C8D</code></td>
<td><code>245193B7F59B5BBC8CC56CB643182022</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>9E841464C6560CE59160C50C1FF47617</code></td>
<td><code>1238543A194267BC531482A7E3C2ED64</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>FBC049041D756E0FC505AA2717629C44</code> <code>B4712F0EB57F1E08B9507E2914C18531</code></td>
<td><code>6155ECC994CBBCFB0DC2C793F9809B96</code> <code>58393BFD1501BDE0D164B2E4B7E9424B</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1886161129</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 = 955FF5A90829F669A5774EA549000000045F8D7D6100000004706C88E90000008A746CB5B5A8B209607AC23F42381C8D9E841464C6560CE59160C50C1FF47617FBC049041D756E0FC505AA2717629C44B4712F0EB57F1E08B9507E2914C1853102000000
random_padding_bytes = BC9C93671B69DBE52455F0C7F543141805CAE69A5EF8B26A25C3B971B0702997678141B1079D38FBD1B15F9B30C29DF39F8F7DB2A25C963F808668FCCF33427079D568A45A1E2280472A1563403548155361C412D24C6C85B0A46971</code></pre>
<pre><code>data = 955FF5A9081DB8A4A1D952C38B000000044F3802A100000004600BC2AB000000245193B7F59B5BBC8CC56CB6431820221238543A194267BC531482A7E3C2ED646155ECC994CBBCFB0DC2C793F9809B9658393BFD1501BDE0D164B2E4B7E9424B02000000
random_padding_bytes = EA0DEB206D25CC5E8D38D80517DF22693C90E630FED547496596D195302D3533B2E25A0BCBAE9AB55AF20A73ADD1B3E5C7910FB7FC22FD241CB2FF1012793625810226EA738F28054935B34BC673A92FF094E32F11C3843AE135CB6A</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 = 360075AD1A519DBFB16611CD0291CEB0090E7E7076CC2AB2130ACB621A298302004BE8CF6CD8DD0FA9C7F555C6BB3B882132CA14AD8049BA74E23046011DCA9FAF820C1959701D9F4E697ED03DC068454E0CA897CAB18C4BA7BE4A478875869D4229587F42A5E8D400010F3614E3C01654F5982AD6CF3A69EF0C7A3471A4BC195B2EFF6881ABD6AA32520EE59F8D4FEA3D4A98E48EFFC69742A577D86C70F1017B0327E8D5ECCEA8E5216EECBD851225E69FCF09B3CADBFCFF76AA13C3284BF246B26305CBF7F0D850E376238F9C99131B7BCB2E2455DDE96F42073EC4670639605F11A8298CA95FA98E0D0B6ECC64A69540B272CB09B1C7E0B9F8F7B2449F90</code></pre>
<pre><code>encrypted_data = 31338A47F38101AF1CE82D2C64632A2BA0497EF970194478825BDB1CFB0BB1CD28605D729DC0658CC756C6338B20459B2CBFC33EB4EB94F9D352B59643EC449F4C5611CA246BE2BC47152BFB2837AF86298F8A80175E242215169170C96E058A162419C2DAA0E3A1D59290DAA2CD5456FD2B6D569A399FFA454CF28DF922B33B2CF693433C0E1E74EC0EE5B8D454EC442799110462048EE523F47952FE00F06095D93D4DE0D55E6D4DB360248C83278515EC8547DF872CB39354F1CFA7670E2FB457585E0FB7264DEA8F4DC7DC80BD931769796227C776B8BB0F7E32014B7558F369169496DA990345A38C8415E6678DDC9933A4D5F0AC213D60E3A8D9B74B8F</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 C4 66 04 00 8F 61 89 66
0010 | 40 01 00 00 BE E4 12 D7 8A 74 6C B5 B5 A8 B2 09
0020 | 60 7A C2 3F 42 38 1C 8D 9E 84 14 64 C6 56 0C E5
0030 | 91 60 C5 0C 1F F4 76 17 04 5F 8D 7D 61 00 00 00
0040 | 04 70 6C 88 E9 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 36 00 75 AD 1A 51 9D BF B1 66 11 CD
0060 | 02 91 CE B0 09 0E 7E 70 76 CC 2A B2 13 0A CB 62
0070 | 1A 29 83 02 00 4B E8 CF 6C D8 DD 0F A9 C7 F5 55
0080 | C6 BB 3B 88 21 32 CA 14 AD 80 49 BA 74 E2 30 46
0090 | 01 1D CA 9F AF 82 0C 19 59 70 1D 9F 4E 69 7E D0
00A0 | 3D C0 68 45 4E 0C A8 97 CA B1 8C 4B A7 BE 4A 47
00B0 | 88 75 86 9D 42 29 58 7F 42 A5 E8 D4 00 01 0F 36
00C0 | 14 E3 C0 16 54 F5 98 2A D6 CF 3A 69 EF 0C 7A 34
00D0 | 71 A4 BC 19 5B 2E FF 68 81 AB D6 AA 32 52 0E E5
00E0 | 9F 8D 4F EA 3D 4A 98 E4 8E FF C6 97 42 A5 77 D8
00F0 | 6C 70 F1 01 7B 03 27 E8 D5 EC CE A8 E5 21 6E EC
0100 | BD 85 12 25 E6 9F CF 09 B3 CA DB FC FF 76 AA 13
0110 | C3 28 4B F2 46 B2 63 05 CB F7 F0 D8 50 E3 76 23
0120 | 8F 9C 99 13 1B 7B CB 2E 24 55 DD E9 6F 42 07 3E
0130 | C4 67 06 39 60 5F 11 A8 29 8C A9 5F A9 8E 0D 0B
0140 | 6E CC 64 A6 95 40 B2 72 CB 09 B1 C7 E0 B9 F8 F7
0150 | B2 44 9F 90</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 E4 DF 08 00 DF 67 89 66
0010 | 40 01 00 00 BE E4 12 D7 24 51 93 B7 F5 9B 5B BC
0020 | 8C C5 6C B6 43 18 20 22 12 38 54 3A 19 42 67 BC
0030 | 53 14 82 A7 E3 C2 ED 64 04 4F 38 02 A1 00 00 00
0040 | 04 60 0B C2 AB 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 31 33 8A 47 F3 81 01 AF 1C E8 2D 2C
0060 | 64 63 2A 2B A0 49 7E F9 70 19 44 78 82 5B DB 1C
0070 | FB 0B B1 CD 28 60 5D 72 9D C0 65 8C C7 56 C6 33
0080 | 8B 20 45 9B 2C BF C3 3E B4 EB 94 F9 D3 52 B5 96
0090 | 43 EC 44 9F 4C 56 11 CA 24 6B E2 BC 47 15 2B FB
00A0 | 28 37 AF 86 29 8F 8A 80 17 5E 24 22 15 16 91 70
00B0 | C9 6E 05 8A 16 24 19 C2 DA A0 E3 A1 D5 92 90 DA
00C0 | A2 CD 54 56 FD 2B 6D 56 9A 39 9F FA 45 4C F2 8D
00D0 | F9 22 B3 3B 2C F6 93 43 3C 0E 1E 74 EC 0E E5 B8
00E0 | D4 54 EC 44 27 99 11 04 62 04 8E E5 23 F4 79 52
00F0 | FE 00 F0 60 95 D9 3D 4D E0 D5 5E 6D 4D B3 60 24
0100 | 8C 83 27 85 15 EC 85 47 DF 87 2C B3 93 54 F1 CF
0110 | A7 67 0E 2F B4 57 58 5E 0F B7 26 4D EA 8F 4D C7
0120 | DC 80 BD 93 17 69 79 62 27 C7 76 B8 BB 0F 7E 32
0130 | 01 4B 75 58 F3 69 16 94 96 DA 99 03 45 A3 8C 84
0140 | 15 E6 67 8D DC 99 33 A4 D5 F0 AC 21 3D 60 E3 A8
0150 | D9 B7 4B 8F</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 = BC9C93671B69DBE52455F0C7F543141805CAE69A5EF8B26A25C3B971B
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>C46604008F618966</code></td>
<td><code>E4DF0800DF678966</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 = BC9C93671B69DBE52455F0C7F543141805CAE69A5EF8B26A25C3B971B
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>8A746CB5B5A8B209607AC23F42381C8D</code></td>
<td><code>245193B7F59B5BBC8CC56CB643182022</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>9E841464C6560CE59160C50C1FF47617</code></td>
<td><code>1238543A194267BC531482A7E3C2ED64</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>045F8D7D61000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1603108193</td>
<td><code>044F3802A1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1329070753</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>04706C88E9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1886161129</td>
<td><code>04600BC2AB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1611383467</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 = BC9C93671B69DBE52455F0C7F543141805CAE69A5EF8B26A25C3B971B
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE000100360075AD1A519DBFB16611CD</code> <code>0291CEB0090E7E7076CC2AB2130ACB62</code> <code>1A298302004BE8CF6CD8DD0FA9C7F555</code> <code>C6BB3B882132CA14AD8049BA74E23046</code> <code>011DCA9FAF820C1959701D9F4E697ED0</code> <code>3DC068454E0CA897CAB18C4BA7BE4A47</code> <code>8875869D4229587F42A5E8D400010F36</code> <code>14E3C01654F5982AD6CF3A69EF0C7A34</code> <code>71A4BC195B2EFF6881ABD6AA32520EE5</code> <code>9F8D4FEA3D4A98E48EFFC69742A577D8</code> <code>6C70F1017B0327E8D5ECCEA8E5216EEC</code> <code>BD851225E69FCF09B3CADBFCFF76AA13</code> <code>C3284BF246B26305CBF7F0D850E37623</code> <code>8F9C99131B7BCB2E2455DDE96F42073E</code> <code>C4670639605F11A8298CA95FA98E0D0B</code> <code>6ECC64A69540B272CB09B1C7E0B9F8F7</code><br> <code>B2449F90</code></td>
<td><code>FE00010031338A47F38101AF1CE82D2C</code> <code>64632A2BA0497EF970194478825BDB1C</code> <code>FB0BB1CD28605D729DC0658CC756C633</code> <code>8B20459B2CBFC33EB4EB94F9D352B596</code> <code>43EC449F4C5611CA246BE2BC47152BFB</code> <code>2837AF86298F8A80175E242215169170</code> <code>C96E058A162419C2DAA0E3A1D59290DA</code> <code>A2CD5456FD2B6D569A399FFA454CF28D</code> <code>F922B33B2CF693433C0E1E74EC0EE5B8</code> <code>D454EC442799110462048EE523F47952</code> <code>FE00F06095D93D4DE0D55E6D4DB36024</code> <code>8C83278515EC8547DF872CB39354F1CF</code> <code>A7670E2FB457585E0FB7264DEA8F4DC7</code> <code>DC80BD931769796227C776B8BB0F7E32</code> <code>014B7558F369169496DA990345A38C84</code> <code>15E6678DDC9933A4D5F0AC213D60E3A8</code><br> <code>D9B74B8F</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = BC9C93671B69DBE52455F0C7F543141805CAE69A5EF8B26A25C3B971B
<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 EC 8E 1D 90 61 89 66
0010 | 7C 02 00 00 5C 07 E8 D0 8A 74 6C B5 B5 A8 B2 09
0020 | 60 7A C2 3F 42 38 1C 8D 9E 84 14 64 C6 56 0C E5
0030 | 91 60 C5 0C 1F F4 76 17 FE 50 02 00 6D 5A AD DF
0040 | 81 C7 99 97 17 4E 5F DB A0 37 1A 00 8C 05 88 0D
0050 | BE AA 2C 84 20 5A 4D 2B 14 A3 58 41 9D 2A AC F1
0060 | CF 91 D8 62 CE 3D 8F 18 93 08 7B FF C2 4F 2C DE
0070 | 28 2A A0 CF 50 A9 8C C7 F5 76 ED B0 37 AD B5 45
0080 | CC 15 F9 71 88 BD EE 88 1E 3F 96 37 85 73 91 A5
0090 | E2 75 91 F1 39 4C 81 29 F8 BB 0C 39 E2 8B 81 90
00A0 | DD C1 8F 19 C6 67 A7 35 3F E0 F3 9E F6 05 54 48
00B0 | 83 00 C9 6F CC A2 54 32 36 87 47 B2 F0 D3 2F A1
00C0 | B4 CB D8 CB E9 E8 88 77 A1 B2 EB 4A 53 6C C9 67
00D0 | 17 B5 44 01 FF 29 2B FB 3A E7 D7 0B 0D B9 CE 62
00E0 | 68 46 9E AC 4A 51 C3 DE 5D 60 23 2A 71 18 3B 98
00F0 | 1B AC 7E D9 86 E7 26 CE A8 F9 4D 4A B4 41 01 C4
0100 | F5 70 00 0E 05 52 2F B7 52 7F E9 20 5F 3A AD 12
0110 | 7F 69 81 D7 08 DE 1B 30 E4 0B E2 F6 8A 8B 02 95
0120 | 80 0E 58 96 8F 97 67 28 AD C6 F7 6E 82 6E 9F DA
0130 | 13 9C A4 A8 CE 40 8C 7C B0 CC 29 2D 92 23 84 79
0140 | CB 16 53 62 CA 28 47 6D 73 DB F6 18 B2 49 AD 16
0150 | 6C 5F 8F 42 63 07 28 A0 AB 3F E0 76 EF F8 3C AD
0160 | D8 21 36 77 6E D1 75 C7 3B 2D E1 7A C8 54 DC EB
0170 | FB 44 6A 76 BA 32 9F 5C 99 F7 F0 CD B3 81 DA D5
0180 | D3 66 2E C6 D7 20 C7 25 B7 99 C9 CF 1F 52 C0 21
0190 | 8E 48 36 E4 0D 2C 77 98 F4 F3 97 C3 99 A2 D5 C2
01A0 | 6F 23 5D 46 22 BB 3C DB 40 74 93 DD 89 2F A5 31
01B0 | D6 67 4A 3C C7 49 5C BD 44 A2 EE CC BC 72 C6 9C
01C0 | 42 07 C0 22 0C 99 95 1B 0C 60 BB 03 4D 1E 1C BF
01D0 | 54 D7 17 3F 18 40 F5 C7 E1 92 83 13 9B 12 E8 AB
01E0 | 1D BD 21 7A B2 8A 40 79 87 9C 0D 2C A1 D6 C9 96
01F0 | 55 4B 6D F5 41 29 50 35 FB CA 61 FE CF 25 9D 23
0200 | BD 9C 12 9E 65 88 D0 5A 42 93 96 A3 C1 52 AC 54
0210 | C3 6B CF 31 11 A3 48 C2 F3 62 D0 13 BA 95 45 11
0220 | 8E DB 27 BA 7C FF 61 01 71 EF 1E 34 CB EC 38 A8
0230 | 4A 19 9B 87 DD BD 3F 9E B1 82 2D 39 FA 15 2A 1C
0240 | 78 0C A5 57 57 5D AD 73 11 B9 85 43 B1 99 34 8B
0250 | 89 FA 3B 01 C8 E4 9D 9B 21 C8 F7 97 0D C2 95 A5
0260 | BB 84 DA B0 CF C9 A5 75 E4 3D 5F 68 AF 0D 6E F9
0270 | 4D F8 BC 36 C3 98 B4 94 02 F1 7B 5D 9B 55 39 F5
0280 | 96 17 DD 85 C4 86 20 47 CD F7 64 A7</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 08 66 20 E0 67 89 66
0010 | E8 02 00 00 5C 07 E8 D0 24 51 93 B7 F5 9B 5B BC
0020 | 8C C5 6C B6 43 18 20 22 12 38 54 3A 19 42 67 BC
0030 | 53 14 82 A7 E3 C2 ED 64 FE 50 02 00 35 D5 91 1D
0040 | F0 26 5E 6E F5 2A B9 9A 6E ED 40 AD E9 59 2C 9C
0050 | E2 3A B8 B6 56 01 0E 92 B9 9E 40 8E 91 D8 60 A1
0060 | B1 A3 75 00 FD 9D AA AC B2 75 E3 1A 7B 97 84 89
0070 | 3F 6C 04 C1 18 60 ED 86 1F CD B4 BB 17 F3 76 EA
0080 | 6F F7 D3 75 94 D4 2E FF 93 9D 42 C6 9B B8 A8 BB
0090 | 4C DB CE 00 5D B7 F7 B6 D4 15 DC 8C FA B4 0D F0
00A0 | A2 A4 22 3C 49 55 B1 75 83 5D B9 3E 11 7E FD 52
00B0 | D4 8F EA 47 6C 6C BF C8 3B A1 A0 42 2B B7 C8 B8
00C0 | 44 EE B5 CA 7D E6 2F 59 54 A1 67 D8 41 E1 6F 44
00D0 | 2B B7 1C CC A7 D6 1D D5 C7 84 CC 8C 09 46 60 BF
00E0 | C5 EB CF B1 F0 37 25 87 F1 DB A4 50 0B 86 8F 2C
00F0 | E0 5B 18 AC DB 98 88 16 CF F6 66 4E 23 3A 4B 57
0100 | D2 8F FB 44 3F BE 74 C0 22 9F F3 04 29 D5 72 E9
0110 | 77 C2 7E A6 05 E7 0C 7B 0E 2C D4 3D 30 5D BB 25
0120 | FC 0B E7 04 58 F9 93 BB 48 8C 37 32 DD D6 E3 06
0130 | 72 39 82 D4 4A 49 03 A6 4D 0E FB 21 45 46 2A F8
0140 | 6A 1E 19 93 FD 8C C4 F4 2F EB AB A0 0B 86 ED CC
0150 | 50 60 17 98 79 42 07 B5 EE 67 DE 52 44 2C 7D A9
0160 | C5 F9 5C F9 DC 12 03 B0 9A 5C 7A BD 67 CC DE 63
0170 | 18 4F A1 E9 5B 20 CD EB 5F CD 91 45 20 E6 DF 62
0180 | 4B 84 4B F0 2D 5F F2 F4 89 B0 09 D9 71 5D 98 C5
0190 | A3 2A CC 6E 7E 78 E8 E0 C2 6A 89 99 97 A4 80 30
01A0 | B0 1F 3A 23 48 2D AD 5D BA 59 6D A8 FD 7C B1 5F
01B0 | 14 08 F1 F6 6A 88 36 3E 21 2A 13 3F 0D 8A D0 BD
01C0 | 04 C1 4B 06 AD 86 5C 62 1F A8 92 3C BC A9 1F 3A
01D0 | F3 4C 97 D5 26 FA 0A 1B 82 39 5B AF E0 45 C8 30
01E0 | 7C 31 5F 1C FA 05 C9 DE 22 6B 63 6C 52 46 38 95
01F0 | 80 3B 07 D0 90 2B 40 A4 48 88 51 3C F2 41 58 D7
0200 | 55 3C 84 C4 1D 32 70 1A 5E E1 68 82 F5 C5 F0 26
0210 | 1F 19 F4 7A 2C B2 3D C2 BB 92 44 5B 58 65 61 51
0220 | 62 B6 11 70 39 97 BC C9 7C 2A F7 8E 0E 2F 21 85
0230 | B2 F2 F4 7F 47 A3 9C 50 FC 77 64 D6 D7 3A A2 D9
0240 | EB BB 5D E3 95 05 F2 FD 49 E4 9F AC E0 0C F9 7A
0250 | 37 23 35 89 81 E6 40 90 80 C9 BE E4 F8 5B 0D 8E
0260 | 13 90 C8 BE B2 99 49 C8 B7 37 81 8B E6 83 1B 2C
0270 | 7C 30 7C 38 84 EA FE 8D 0E F4 11 D7 05 E1 C1 1F
0280 | EA 23 45 73 C6 61 2E 23 32 77 AC 65</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 = BC9C93671B69DBE52455F0C7F543141805CAE69A5EF8B26A25C3B971B
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01EC8E1D90618966</code></td>
<td><code>01086620E0678966</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>7C020000</code> (636 in decimal)</td>
<td><code>E8020000</code> (744 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = BC9C93671B69DBE52455F0C7F543141805CAE69A5EF8B26A25C3B971B
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>8A746CB5B5A8B209607AC23F42381C8D</code></td>
<td><code>245193B7F59B5BBC8CC56CB643182022</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>9E841464C6560CE59160C50C1FF47617</code></td>
<td><code>1238543A194267BC531482A7E3C2ED64</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002006D5AADDF81C79997174E5FDB</code> <code>A0371A008C05880DBEAA2C84205A4D2B</code> <code>14A358419D2AACF1CF91D862CE3D8F18</code> <code>93087BFFC24F2CDE282AA0CF50A98CC7</code> <code>F576EDB037ADB545CC15F97188BDEE88</code> <code>1E3F9637857391A5E27591F1394C8129</code> <code>F8BB0C39E28B8190DDC18F19C667A735</code> <code>3FE0F39EF60554488300C96FCCA25432</code> <code>368747B2F0D32FA1B4CBD8CBE9E88877</code> <code>A1B2EB4A536CC96717B54401FF292BFB</code> <code>3AE7D70B0DB9CE6268469EAC4A51C3DE</code> <code>5D60232A71183B981BAC7ED986E726CE</code> <code>A8F94D4AB44101C4F570000E05522FB7</code> <code>527FE9205F3AAD127F6981D708DE1B30</code> <code>E40BE2F68A8B0295800E58968F976728</code> <code>ADC6F76E826E9FDA139CA4A8CE408C7C</code> <code>B0CC292D92238479CB165362CA28476D</code> <code>73DBF618B249AD166C5F8F42630728A0</code> <code>AB3FE076EFF83CADD82136776ED175C7</code> <code>3B2DE17AC854DCEBFB446A76BA329F5C</code> <code>99F7F0CDB381DAD5D3662EC6D720C725</code> <code>B799C9CF1F52C0218E4836E40D2C7798</code> <code>F4F397C399A2D5C26F235D4622BB3CDB</code> <code>407493DD892FA531D6674A3CC7495CBD</code> <code>44A2EECCBC72C69C4207C0220C99951B</code> <code>0C60BB034D1E1CBF54D7173F1840F5C7</code> <code>E19283139B12E8AB1DBD217AB28A4079</code> <code>879C0D2CA1D6C996554B6DF541295035</code> <code>FBCA61FECF259D23BD9C129E6588D05A</code> <code>429396A3C152AC54C36BCF3111A348C2</code> <code>F362D013BA9545118EDB27BA7CFF6101</code> <code>71EF1E34CBEC38A84A199B87DDBD3F9E</code> <code>B1822D39FA152A1C780CA557575DAD73</code> <code>11B98543B199348B89FA3B01C8E49D9B</code> <code>21C8F7970DC295A5BB84DAB0CFC9A575</code> <code>E43D5F68AF0D6EF94DF8BC36C398B494</code> <code>02F17B5D9B5539F59617DD85C4862047</code><br> <code>CDF764A7</code></td>
<td><code>FE50020035D5911DF0265E6EF52AB99A</code> <code>6EED40ADE9592C9CE23AB8B656010E92</code> <code>B99E408E91D860A1B1A37500FD9DAAAC</code> <code>B275E31A7B9784893F6C04C11860ED86</code> <code>1FCDB4BB17F376EA6FF7D37594D42EFF</code> <code>939D42C69BB8A8BB4CDBCE005DB7F7B6</code> <code>D415DC8CFAB40DF0A2A4223C4955B175</code> <code>835DB93E117EFD52D48FEA476C6CBFC8</code> <code>3BA1A0422BB7C8B844EEB5CA7DE62F59</code> <code>54A167D841E16F442BB71CCCA7D61DD5</code> <code>C784CC8C094660BFC5EBCFB1F0372587</code> <code>F1DBA4500B868F2CE05B18ACDB988816</code> <code>CFF6664E233A4B57D28FFB443FBE74C0</code> <code>229FF30429D572E977C27EA605E70C7B</code> <code>0E2CD43D305DBB25FC0BE70458F993BB</code> <code>488C3732DDD6E306723982D44A4903A6</code> <code>4D0EFB2145462AF86A1E1993FD8CC4F4</code> <code>2FEBABA00B86EDCC50601798794207B5</code> <code>EE67DE52442C7DA9C5F95CF9DC1203B0</code> <code>9A5C7ABD67CCDE63184FA1E95B20CDEB</code> <code>5FCD914520E6DF624B844BF02D5FF2F4</code> <code>89B009D9715D98C5A32ACC6E7E78E8E0</code> <code>C26A899997A48030B01F3A23482DAD5D</code> <code>BA596DA8FD7CB15F1408F1F66A88363E</code> <code>212A133F0D8AD0BD04C14B06AD865C62</code> <code>1FA8923CBCA91F3AF34C97D526FA0A1B</code> <code>82395BAFE045C8307C315F1CFA05C9DE</code> <code>226B636C52463895803B07D0902B40A4</code> <code>4888513CF24158D7553C84C41D32701A</code> <code>5EE16882F5C5F0261F19F47A2CB23DC2</code> <code>BB92445B5865615162B611703997BCC9</code> <code>7C2AF78E0E2F2185B2F2F47F47A39C50</code> <code>FC7764D6D73AA2D9EBBB5DE39505F2FD</code> <code>49E49FACE00CF97A3723358981E64090</code> <code>80C9BEE4F85B0D8E1390C8BEB29949C8</code> <code>B737818BE6831B2C7C307C3884EAFE8D</code> <code>0EF411D705E1C11FEA234573C6612E23</code><br> <code>3277AC65</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = BC9C93671B69DBE52455F0C7F543141805CAE69A5EF8B26A25C3B971B
<!-- 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 = 6D5AADDF81C79997174E5FDBA0371A008C05880DBEAA2C84205A4D2B14A358419D2AACF1CF91D862CE3D8F1893087BFFC24F2CDE282AA0CF50A98CC7F576EDB037ADB545CC15F97188BDEE881E3F9637857391A5E27591F1394C8129F8BB0C39E28B8190DDC18F19C667A7353FE0F39EF60554488300C96FCCA25432368747B2F0D32FA1B4CBD8CBE9E88877A1B2EB4A536CC96717B54401FF292BFB3AE7D70B0DB9CE6268469EAC4A51C3DE5D60232A71183B981BAC7ED986E726CEA8F94D4AB44101C4F570000E05522FB7527FE9205F3AAD127F6981D708DE1B30E40BE2F68A8B0295800E58968F976728ADC6F76E826E9FDA139CA4A8CE408C7CB0CC292D92238479CB165362CA28476D73DBF618B249AD166C5F8F42630728A0AB3FE076EFF83CADD82136776ED175C73B2DE17AC854DCEBFB446A76BA329F5C99F7F0CDB381DAD5D3662EC6D720C725B799C9CF1F52C0218E4836E40D2C7798F4F397C399A2D5C26F235D4622BB3CDB407493DD892FA531D6674A3CC7495CBD44A2EECCBC72C69C4207C0220C99951B0C60BB034D1E1CBF54D7173F1840F5C7E19283139B12E8AB1DBD217AB28A4079879C0D2CA1D6C996554B6DF541295035FBCA61FECF259D23BD9C129E6588D05A429396A3C152AC54C36BCF3111A348C2F362D013BA9545118EDB27BA7CFF610171EF1E34CBEC38A84A199B87DDBD3F9EB1822D39FA152A1C780CA557575DAD7311B98543B199348B89FA3B01C8E49D9B21C8F7970DC295A5BB84DAB0CFC9A575E43D5F68AF0D6EF94DF8BC36C398B49402F17B5D9B5539F59617DD85C4862047CDF764A7
tmp_aes_key = F6C8B70E28B38F579298486D999B0FCF25918C61A50C6C6E269AD587FB88E194
tmp_aes_iv = 7250DE6AE3E631E6D7AACDF78A312205C83A84A8ECFEFA5B11D67BC9FBC04904</code></pre>
<pre><code>encrypted_answer = 35D5911DF0265E6EF52AB99A6EED40ADE9592C9CE23AB8B656010E92B99E408E91D860A1B1A37500FD9DAAACB275E31A7B9784893F6C04C11860ED861FCDB4BB17F376EA6FF7D37594D42EFF939D42C69BB8A8BB4CDBCE005DB7F7B6D415DC8CFAB40DF0A2A4223C4955B175835DB93E117EFD52D48FEA476C6CBFC83BA1A0422BB7C8B844EEB5CA7DE62F5954A167D841E16F442BB71CCCA7D61DD5C784CC8C094660BFC5EBCFB1F0372587F1DBA4500B868F2CE05B18ACDB988816CFF6664E233A4B57D28FFB443FBE74C0229FF30429D572E977C27EA605E70C7B0E2CD43D305DBB25FC0BE70458F993BB488C3732DDD6E306723982D44A4903A64D0EFB2145462AF86A1E1993FD8CC4F42FEBABA00B86EDCC50601798794207B5EE67DE52442C7DA9C5F95CF9DC1203B09A5C7ABD67CCDE63184FA1E95B20CDEB5FCD914520E6DF624B844BF02D5FF2F489B009D9715D98C5A32ACC6E7E78E8E0C26A899997A48030B01F3A23482DAD5DBA596DA8FD7CB15F1408F1F66A88363E212A133F0D8AD0BD04C14B06AD865C621FA8923CBCA91F3AF34C97D526FA0A1B82395BAFE045C8307C315F1CFA05C9DE226B636C52463895803B07D0902B40A44888513CF24158D7553C84C41D32701A5EE16882F5C5F0261F19F47A2CB23DC2BB92445B5865615162B611703997BCC97C2AF78E0E2F2185B2F2F47F47A39C50FC7764D6D73AA2D9EBBB5DE39505F2FD49E49FACE00CF97A3723358981E6409080C9BEE4F85B0D8E1390C8BEB29949C8B737818BE6831B2C7C307C3884EAFE8D0EF411D705E1C11FEA234573C6612E233277AC65
tmp_aes_key = EB1DEED079C861DCBB389AFC13961A14C1DFD95EED5800484B54AE157EB980B0
tmp_aes_iv = 804327EBEF76C86A7C81ACD8E82F02EDF3F5DEE0FE475FA0A8697D2C6155ECC9</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 470230E9F0704272DE68166D4484486AFFC514ACBA0D89B58A746CB5B5A8B209607AC23F42381C8D9E841464C6560CE59160C50C1FF4761703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002B06F35519FB9B69A441ACEDD6A8F77A22D90209189A4A22C89FC4D255E9BC5DB1DD4D27E2B41027981B861708465084A0759367DA102A5FEF15C368EB56996AD18255256D59136FDC0E6211B81AE72D27BEA5C444CB9DA38750345C51C06AD34E62E04820F4AF96D580EFE8ED7C5593F5E3BC989EABF8A46AA43FF6881F85A3E8BD654FD078D2DD6A8C7ABBAA899BD68B3142A64516DD356F357ABC4F88CC37EFF4C2A66DCF6DE8C4C110D87142B39FE241E890AF985354DF02ADE13EF0293325F09118A700F8A27C567C75F5B4EC65E6A12E69BEFCD611CBB497650E15E0FD6A1AED0049F40228B5CDBA0BF81934CB9497F33294499AF660CE8980B0017C9890618966FA9FA97CF1B88E97
answer = BA0D89B58A746CB5B5A8B209607AC23F42381C8D9E841464C6560CE59160C50C1FF4761703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002B06F35519FB9B69A441ACEDD6A8F77A22D90209189A4A22C89FC4D255E9BC5DB1DD4D27E2B41027981B861708465084A0759367DA102A5FEF15C368EB56996AD18255256D59136FDC0E6211B81AE72D27BEA5C444CB9DA38750345C51C06AD34E62E04820F4AF96D580EFE8ED7C5593F5E3BC989EABF8A46AA43FF6881F85A3E8BD654FD078D2DD6A8C7ABBAA899BD68B3142A64516DD356F357ABC4F88CC37EFF4C2A66DCF6DE8C4C110D87142B39FE241E890AF985354DF02ADE13EF0293325F09118A700F8A27C567C75F5B4EC65E6A12E69BEFCD611CBB497650E15E0FD6A1AED0049F40228B5CDBA0BF81934CB9497F33294499AF660CE8980B0017C9890618966FA9FA97CF1B88E97</code></pre>
<pre><code>answer_with_hash = 7DF01684237F0202BA8E36E4821EB3E75D5B1FABBA0D89B5245193B7F59B5BBC8CC56CB6431820221238543A194267BC531482A7E3C2ED6403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009C6DA0F03FC74CF209ABCA82CEA24A45FFA65FCDFABBC51D0256B841B6878074CA8E267FBEEB8665BEB6379FCE7037EC1BFA4493D42988A5C1327DC05B96C27778D1932EE617A499259F743AF43D0993DCBCAED1F6AB711649C3C3F844D98E3A6EA52F73EF4A05EC57054E774C7497C49B9128F28E3E4391CA3E01CB701721B2A0974ED269EAC14F5CB3966B4F9E7D149AAF769A87BC2FF224798B2B5B32FF3378AE2E4D8A3D31DF9F7F8938B310EE9ADB8784873A60F2641F55E977AC0A24458DF7793980E93043B83EC70D890E43B822CF040FDD57081C1B943396C7A5C26338FA2E66BF0022EE1A6371DCD48CDF22763BF6DEF856E0EF29967BB1674247BEE0678966C32B46BCE0A56975
answer = BA0D89B5245193B7F59B5BBC8CC56CB6431820221238543A194267BC531482A7E3C2ED6403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009C6DA0F03FC74CF209ABCA82CEA24A45FFA65FCDFABBC51D0256B841B6878074CA8E267FBEEB8665BEB6379FCE7037EC1BFA4493D42988A5C1327DC05B96C27778D1932EE617A499259F743AF43D0993DCBCAED1F6AB711649C3C3F844D98E3A6EA52F73EF4A05EC57054E774C7497C49B9128F28E3E4391CA3E01CB701721B2A0974ED269EAC14F5CB3966B4F9E7D149AAF769A87BC2FF224798B2B5B32FF3378AE2E4D8A3D31DF9F7F8938B310EE9ADB8784873A60F2641F55E977AC0A24458DF7793980E93043B83EC70D890E43B822CF040FDD57081C1B943396C7A5C26338FA2E66BF0022EE1A6371DCD48CDF22763BF6DEF856E0EF29967BB1674247BEE0678966C32B46BCE0A56975</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 8A 74 6C B5 B5 A8 B2 09 60 7A C2 3F
0010 | 42 38 1C 8D 9E 84 14 64 C6 56 0C E5 91 60 C5 0C
0020 | 1F F4 76 17 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 24 51 93 B7 F5 9B 5B BC 8C C5 6C B6
0010 | 43 18 20 22 12 38 54 3A 19 42 67 BC 53 14 82 A7
0020 | E3 C2 ED 64 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 = BA0D89B58A746CB5B5A8B209607AC23F42381C8D9E841464C6560CE59160C50C1FF4761
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 | 2B 06 F3 55 19 FB 9B 69 A4 41 AC ED D6 A8 F7 7A
0140 | 22 D9 02 09 18 9A 4A 22 C8 9F C4 D2 55 E9 BC 5D
0150 | B1 DD 4D 27 E2 B4 10 27 98 1B 86 17 08 46 50 84
0160 | A0 75 93 67 DA 10 2A 5F EF 15 C3 68 EB 56 99 6A
0170 | D1 82 55 25 6D 59 13 6F DC 0E 62 11 B8 1A E7 2D
0180 | 27 BE A5 C4 44 CB 9D A3 87 50 34 5C 51 C0 6A D3
0190 | 4E 62 E0 48 20 F4 AF 96 D5 80 EF E8 ED 7C 55 93
01A0 | F5 E3 BC 98 9E AB F8 A4 6A A4 3F F6 88 1F 85 A3
01B0 | E8 BD 65 4F D0 78 D2 DD 6A 8C 7A BB AA 89 9B D6
01C0 | 8B 31 42 A6 45 16 DD 35 6F 35 7A BC 4F 88 CC 37
01D0 | EF F4 C2 A6 6D CF 6D E8 C4 C1 10 D8 71 42 B3 9F
01E0 | E2 41 E8 90 AF 98 53 54 DF 02 AD E1 3E F0 29 33
01F0 | 25 F0 91 18 A7 00 F8 A2 7C 56 7C 75 F5 B4 EC 65
0200 | E6 A1 2E 69 BE FC D6 11 CB B4 97 65 0E 15 E0 FD
0210 | 6A 1A ED 00 49 F4 02 28 B5 CD BA 0B F8 19 34 CB
0220 | 94 97 F3 32 94 49 9A F6 60 CE 89 80 B0 01 7C 98
0230 | 90 61 89 66</code></pre>
0130 | 9C 6D A0 F0 3F C7 4C F2 09 AB CA 82 CE A2 4A 45
0140 | FF A6 5F CD FA BB C5 1D 02 56 B8 41 B6 87 80 74
0150 | CA 8E 26 7F BE EB 86 65 BE B6 37 9F CE 70 37 EC
0160 | 1B FA 44 93 D4 29 88 A5 C1 32 7D C0 5B 96 C2 77
0170 | 78 D1 93 2E E6 17 A4 99 25 9F 74 3A F4 3D 09 93
0180 | DC BC AE D1 F6 AB 71 16 49 C3 C3 F8 44 D9 8E 3A
0190 | 6E A5 2F 73 EF 4A 05 EC 57 05 4E 77 4C 74 97 C4
01A0 | 9B 91 28 F2 8E 3E 43 91 CA 3E 01 CB 70 17 21 B2
01B0 | A0 97 4E D2 69 EA C1 4F 5C B3 96 6B 4F 9E 7D 14
01C0 | 9A AF 76 9A 87 BC 2F F2 24 79 8B 2B 5B 32 FF 33
01D0 | 78 AE 2E 4D 8A 3D 31 DF 9F 7F 89 38 B3 10 EE 9A
01E0 | DB 87 84 87 3A 60 F2 64 1F 55 E9 77 AC 0A 24 45
01F0 | 8D F7 79 39 80 E9 30 43 B8 3E C7 0D 89 0E 43 B8
0200 | 22 CF 04 0F DD 57 08 1C 1B 94 33 96 C7 A5 C2 63
0210 | 38 FA 2E 66 BF 00 22 EE 1A 63 71 DC D4 8C DF 22
0220 | 76 3B F6 DE F8 56 E0 EF 29 96 7B B1 67 42 47 BE
0230 | E0 67 89 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 = BA0D89B58A746CB5B5A8B209607AC23F42381C8D9E841464C6560CE59160C50C1FF4761
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>8A746CB5B5A8B209607AC23F42381C8D</code></td>
<td><code>245193B7F59B5BBC8CC56CB643182022</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>9E841464C6560CE59160C50C1FF47617</code></td>
<td><code>1238543A194267BC531482A7E3C2ED64</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B58A746CB5B5A8B209607AC23F42381C8D9E841464C6560CE59160C50C1FF4761
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001002B06F35519FB9B69A441ACED</code> <code>D6A8F77A22D90209189A4A22C89FC4D2</code> <code>55E9BC5DB1DD4D27E2B41027981B8617</code> <code>08465084A0759367DA102A5FEF15C368</code> <code>EB56996AD18255256D59136FDC0E6211</code> <code>B81AE72D27BEA5C444CB9DA38750345C</code> <code>51C06AD34E62E04820F4AF96D580EFE8</code> <code>ED7C5593F5E3BC989EABF8A46AA43FF6</code> <code>881F85A3E8BD654FD078D2DD6A8C7ABB</code> <code>AA899BD68B3142A64516DD356F357ABC</code> <code>4F88CC37EFF4C2A66DCF6DE8C4C110D8</code> <code>7142B39FE241E890AF985354DF02ADE1</code> <code>3EF0293325F09118A700F8A27C567C75</code> <code>F5B4EC65E6A12E69BEFCD611CBB49765</code> <code>0E15E0FD6A1AED0049F40228B5CDBA0B</code> <code>F81934CB9497F33294499AF660CE8980</code><br> <code>B0017C98</code></td>
<td><code>FE0001009C6DA0F03FC74CF209ABCA82</code> <code>CEA24A45FFA65FCDFABBC51D0256B841</code> <code>B6878074CA8E267FBEEB8665BEB6379F</code> <code>CE7037EC1BFA4493D42988A5C1327DC0</code> <code>5B96C27778D1932EE617A499259F743A</code> <code>F43D0993DCBCAED1F6AB711649C3C3F8</code> <code>44D98E3A6EA52F73EF4A05EC57054E77</code> <code>4C7497C49B9128F28E3E4391CA3E01CB</code> <code>701721B2A0974ED269EAC14F5CB3966B</code> <code>4F9E7D149AAF769A87BC2FF224798B2B</code> <code>5B32FF3378AE2E4D8A3D31DF9F7F8938</code> <code>B310EE9ADB8784873A60F2641F55E977</code> <code>AC0A24458DF7793980E93043B83EC70D</code> <code>890E43B822CF040FDD57081C1B943396</code> <code>C7A5C26338FA2E66BF0022EE1A6371DC</code> <code>D48CDF22763BF6DEF856E0EF29967BB1</code><br> <code>674247BE</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>90618966</code> (1720279440 in decimal)</td>
<td><code>E0678966</code> (1720281056 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B58A746CB5B5A8B209607AC23F42381C8D9E841464C6560CE59160C50C1FF4761
<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 = C1330D14BF326E49DCB91171D2CAA83CC5C98562C6D608D9CD48C8A510830AF282D90260DFC0A65266D6A86776F191DC3F798D4B5345BCC163CE8D6D9294076F60396341017C09B6164729F1D859B6161B1277B15F1B60464AD9BED0C6C396D1993347F2BADF8CAB3CB8D7FE784A3C57C2F0229ED2C0E51593D0C76B547D3389E73E42EE30860D039F3D9D533AD2AD34560DAF4BE2EC02C254F77CD660962675667A2196ED485346B42E818B35754ED03EE9FC5F02060D43202D6BD44C7DAA2E94C7551159A3C166B616A10B1E6C3D271E38534C3D33C9B6733309D2229942E5491198BE626CEB4AC8F229C099E4C5F72F43ED9FAE497D4A02CE6F47AF913997</code></pre>
<pre><code>b = A2D7C1DC092B41FBD4D0E65F7EABB90AFCD1A575A1CDEC150ED971CF3ED1E63B05C18670115E3F0A708C4025E1F398CCDA44AC164696BA35004B06CF50E8656E3AF8D6E055F20D872FEB052CCD5088A106D397C540FF230475D5A5901CC81CE9662928F556189032AED0A56CCAB46C583AC16D9A66104E3BB9FB6B61353BBF0B77DCE83C7ED01280E45362B891CEE149C3505018EDC23486FB7A6062FEFC6BFFD0CB62E359CB7FCF95657A7CBF85C1F52F21BCD24166AA1A93F252E24736F65632AC73D3116EF7BE9317F066C3AC825789BCAF0DFA55AFA4D23AC25C5BA2C1E95C21927D8FBCC78F5163F2393239BFAB48537ECB8A9433030CE6925259AF3F60</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 = 1C5E3A3FC0740AB61E09EBFE006A990103D77A0877A7B2F11052B12672180BAFC743616A864AC41A91E5EA8AC9CEC9434D9916899DC878FDF8EC4C452C6CACB14EB91FB8EB5153259E05634A46379034993391B0F438FB9417A2787E605D9C41F44BFC0049A34D0FD0F5265E592024CCABECBA1B60E04A9CE960F5FA00D38D23F22F0C013FCCCDB34686160BD09ECB2482DE4D0946D9C9DCE337161366F934186E1D11A06260CDA5E4F85F3298055DDA12EED331AE5E1D0F2B206AB9BD3552D5CC7A85C9C4231BA990949B9B2FB2D7B205FE06B1D482FD21BCF8FE7FEF3D96347FA4F01C46952E84C9B7B40AB35D5177D83A346039AE7843C59012FF1063A60B</code></pre>
<pre><code>g_b = AB97981E05567552D981606DB53FBBF54BA7A999809FDD0D0F7D023B0AD846125C39BD0B323331C71302945CFD5E5A66E1F48265E88A17A465B647DD0B14142A80AFC44E8DC7A6ECE7A48BC6F4111FA9E4CDACCD8C8E92CFBC7149B93EB362B32EB02BA9789DAF248B7335406C3891931568181BD54EF08F303430E234AA21251284A2C40D52001DF41AC3ED1A5BB83723C554B767EF2DD9B4B18ADD9AB24F9F2499084BA67D9A6D72516AA4D205113581B60E3BC8AB76530B1D00D6931FD4AAEBE4930F18C10005D935C6BC991EC46A942396C693D5224713AC74720D4EA2B784F9B47C2472CA9148C8C2CF227856FB2D226BA5BE424BD517D3A2093761C10A</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 8A 74 6C B5 B5 A8 B2 09 60 7A C2 3F
0010 | 42 38 1C 8D 9E 84 14 64 C6 56 0C E5 91 60 C5 0C
0020 | 1F F4 76 17 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 1C 5E 3A 3F C0 74 0A B6 1E 09 EB FE 00 6A 99 01
0040 | 03 D7 7A 08 77 A7 B2 F1 10 52 B1 26 72 18 0B AF
0050 | C7 43 61 6A 86 4A C4 1A 91 E5 EA 8A C9 CE C9 43
0060 | 4D 99 16 89 9D C8 78 FD F8 EC 4C 45 2C 6C AC B1
0070 | 4E B9 1F B8 EB 51 53 25 9E 05 63 4A 46 37 90 34
0080 | 99 33 91 B0 F4 38 FB 94 17 A2 78 7E 60 5D 9C 41
0090 | F4 4B FC 00 49 A3 4D 0F D0 F5 26 5E 59 20 24 CC
00A0 | AB EC BA 1B 60 E0 4A 9C E9 60 F5 FA 00 D3 8D 23
00B0 | F2 2F 0C 01 3F CC CD B3 46 86 16 0B D0 9E CB 24
00C0 | 82 DE 4D 09 46 D9 C9 DC E3 37 16 13 66 F9 34 18
00D0 | 6E 1D 11 A0 62 60 CD A5 E4 F8 5F 32 98 05 5D DA
00E0 | 12 EE D3 31 AE 5E 1D 0F 2B 20 6A B9 BD 35 52 D5
00F0 | CC 7A 85 C9 C4 23 1B A9 90 94 9B 9B 2F B2 D7 B2
0100 | 05 FE 06 B1 D4 82 FD 21 BC F8 FE 7F EF 3D 96 34
0110 | 7F A4 F0 1C 46 95 2E 84 C9 B7 B4 0A B3 5D 51 77
0120 | D8 3A 34 60 39 AE 78 43 C5 90 12 FF 10 63 A6 0B</code></pre>
<pre><code>0000 | 54 B6 43 66 24 51 93 B7 F5 9B 5B BC 8C C5 6C B6
0010 | 43 18 20 22 12 38 54 3A 19 42 67 BC 53 14 82 A7
0020 | E3 C2 ED 64 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | AB 97 98 1E 05 56 75 52 D9 81 60 6D B5 3F BB F5
0040 | 4B A7 A9 99 80 9F DD 0D 0F 7D 02 3B 0A D8 46 12
0050 | 5C 39 BD 0B 32 33 31 C7 13 02 94 5C FD 5E 5A 66
0060 | E1 F4 82 65 E8 8A 17 A4 65 B6 47 DD 0B 14 14 2A
0070 | 80 AF C4 4E 8D C7 A6 EC E7 A4 8B C6 F4 11 1F A9
0080 | E4 CD AC CD 8C 8E 92 CF BC 71 49 B9 3E B3 62 B3
0090 | 2E B0 2B A9 78 9D AF 24 8B 73 35 40 6C 38 91 93
00A0 | 15 68 18 1B D5 4E F0 8F 30 34 30 E2 34 AA 21 25
00B0 | 12 84 A2 C4 0D 52 00 1D F4 1A C3 ED 1A 5B B8 37
00C0 | 23 C5 54 B7 67 EF 2D D9 B4 B1 8A DD 9A B2 4F 9F
00D0 | 24 99 08 4B A6 7D 9A 6D 72 51 6A A4 D2 05 11 35
00E0 | 81 B6 0E 3B C8 AB 76 53 0B 1D 00 D6 93 1F D4 AA
00F0 | EB E4 93 0F 18 C1 00 05 D9 35 C6 BC 99 1E C4 6A
0100 | 94 23 96 C6 93 D5 22 47 13 AC 74 72 0D 4E A2 B7
0110 | 84 F9 B4 7C 24 72 CA 91 48 C8 C2 CF 22 78 56 FB
0120 | 2D 22 6B A5 BE 42 4B D5 17 D3 A2 09 37 61 C1 0A</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 = BA0D89B58A746CB5B5A8B209607AC23F42381C8D9E841464C6560CE59160C50C1FF4761
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>8A746CB5B5A8B209607AC23F42381C8D</code></td>
<td><code>245193B7F59B5BBC8CC56CB643182022</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>9E841464C6560CE59160C50C1FF47617</code></td>
<td><code>1238543A194267BC531482A7E3C2ED64</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001001C5E3A3FC0740AB61E09EBFE</code> <code>006A990103D77A0877A7B2F11052B126</code> <code>72180BAFC743616A864AC41A91E5EA8A</code> <code>C9CEC9434D9916899DC878FDF8EC4C45</code> <code>2C6CACB14EB91FB8EB5153259E05634A</code> <code>46379034993391B0F438FB9417A2787E</code> <code>605D9C41F44BFC0049A34D0FD0F5265E</code> <code>592024CCABECBA1B60E04A9CE960F5FA</code> <code>00D38D23F22F0C013FCCCDB34686160B</code> <code>D09ECB2482DE4D0946D9C9DCE3371613</code> <code>66F934186E1D11A06260CDA5E4F85F32</code> <code>98055DDA12EED331AE5E1D0F2B206AB9</code> <code>BD3552D5CC7A85C9C4231BA990949B9B</code> <code>2FB2D7B205FE06B1D482FD21BCF8FE7F</code> <code>EF3D96347FA4F01C46952E84C9B7B40A</code> <code>B35D5177D83A346039AE7843C59012FF</code><br> <code>1063A60B</code></td>
<td><code>FE000100AB97981E05567552D981606D</code> <code>B53FBBF54BA7A999809FDD0D0F7D023B</code> <code>0AD846125C39BD0B323331C71302945C</code> <code>FD5E5A66E1F48265E88A17A465B647DD</code> <code>0B14142A80AFC44E8DC7A6ECE7A48BC6</code> <code>F4111FA9E4CDACCD8C8E92CFBC7149B9</code> <code>3EB362B32EB02BA9789DAF248B733540</code> <code>6C3891931568181BD54EF08F303430E2</code> <code>34AA21251284A2C40D52001DF41AC3ED</code> <code>1A5BB83723C554B767EF2DD9B4B18ADD</code> <code>9AB24F9F2499084BA67D9A6D72516AA4</code> <code>D205113581B60E3BC8AB76530B1D00D6</code> <code>931FD4AAEBE4930F18C10005D935C6BC</code> <code>991EC46A942396C693D5224713AC7472</code> <code>0D4EA2B784F9B47C2472CA9148C8C2CF</code> <code>227856FB2D226BA5BE424BD517D3A209</code><br> <code>3761C10A</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 = BA0D89B58A746CB5B5A8B209607AC23F42381C8D9E841464C6560CE59160C50C1FF4761
<!-- 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 = 54B643668A746CB5B5A8B209607AC23F42381C8D9E841464C6560CE59160C50C1FF476170000000000000000FE0001001C5E3A3FC0740AB61E09EBFE006A990103D77A0877A7B2F11052B12672180BAFC743616A864AC41A91E5EA8AC9CEC9434D9916899DC878FDF8EC4C452C6CACB14EB91FB8EB5153259E05634A46379034993391B0F438FB9417A2787E605D9C41F44BFC0049A34D0FD0F5265E592024CCABECBA1B60E04A9CE960F5FA00D38D23F22F0C013FCCCDB34686160BD09ECB2482DE4D0946D9C9DCE337161366F934186E1D11A06260CDA5E4F85F3298055DDA12EED331AE5E1D0F2B206AB9BD3552D5CC7A85C9C4231BA990949B9B2FB2D7B205FE06B1D482FD21BCF8FE7FEF3D96347FA4F01C46952E84C9B7B40AB35D5177D83A346039AE7843C59012FF1063A60B
padding = CCC1EFD6BF664FE1B892B41B
tmp_aes_key = F6C8B70E28B38F579298486D999B0FCF25918C61A50C6C6E269AD587FB88E194
tmp_aes_iv = 7250DE6AE3E631E6D7AACDF78A312205C83A84A8ECFEFA5B11D67BC9FBC04904</code></pre>
<pre><code>data = 54B64366245193B7F59B5BBC8CC56CB6431820221238543A194267BC531482A7E3C2ED640000000000000000FE000100AB97981E05567552D981606DB53FBBF54BA7A999809FDD0D0F7D023B0AD846125C39BD0B323331C71302945CFD5E5A66E1F48265E88A17A465B647DD0B14142A80AFC44E8DC7A6ECE7A48BC6F4111FA9E4CDACCD8C8E92CFBC7149B93EB362B32EB02BA9789DAF248B7335406C3891931568181BD54EF08F303430E234AA21251284A2C40D52001DF41AC3ED1A5BB83723C554B767EF2DD9B4B18ADD9AB24F9F2499084BA67D9A6D72516AA4D205113581B60E3BC8AB76530B1D00D6931FD4AAEBE4930F18C10005D935C6BC991EC46A942396C693D5224713AC74720D4EA2B784F9B47C2472CA9148C8C2CF227856FB2D226BA5BE424BD517D3A2093761C10A
padding = A9110132D6F262C66402E6D7
tmp_aes_key = EB1DEED079C861DCBB389AFC13961A14C1DFD95EED5800484B54AE157EB980B0
tmp_aes_iv = 804327EBEF76C86A7C81ACD8E82F02EDF3F5DEE0FE475FA0A8697D2C6155ECC9</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 = 2CFB9E47A412980CD68FAC7CD010727A6F8FEAF131891FFC62462CA3BB17847C39F884DA945EA57DD94A55FEA50CE72D737121CC7DD269C1C0C5D756C3720800AFECB573E89618DA3C7A285474F901D4F73755C0D811BBFBFEA82E9E6DEE71643743046E8FAFF01430F61CCA0CD63E235BFD8EB32D018C3ECEFFCF4A7ACA54A64527D5DB4129B2DD9D58F72124366F385214B59E3DE6CFFCB56D537D2748C23E60BE32C815FDF5DFFA0F042A27ADA968F38E3E3087350B9577B9AB3B6F41D799BC4D8DA8F74620469435A12631FD4CAA7C65713A44230D7B855E55AF2D6890B3947646C623D8875A24D6E271D824CCFECCE8AA24E4E036B4111015B41F7F1CFD3A26982F537BE2BA6CFE87434B612139B0C51A9AE588356264E8B7990C8D7D11E38EEECFC308484752AC91A062BBFA0EBDF674A8A019485FA73B28ED5FAC1555E80BC33DCA107F17BE9DCE453760C3C1</code></pre>
<pre><code>encrypted_data = 5E5CFE20CCB74AE7EB61E477571FF7A76D881352C1EB1B4FD8ED80B64FDFC256B6DE061C89BB387BFECCD39D8BFEA22D8EED63984DF8980F9BF2BBF1BFDAE37F897C24BFBCCE51A8D6AD15D27EF6FBA49041432A88408B0A9E4922F9B27262A4D231CE27CEFE86C6FA15A87FA48E53C4599D315E9B3B988F054E6D6AE76CA08CCDB9F3AD12646E05C4A42D8F6BF3ADDE0D5F0388C762EE8F7454A34B3CC9854843EEC9C090AE6D74A75FA397F20C6A451B1A90DB330E15474ADB94F18AC80237E5C46B4CD9F3628BDA267948535103BEB5B8E22DF2A0C8DFC236DF0C800A36FA23FF3BB057BF33162DE271D73795BDCE094DCC02F8840022D220F4FBD89DF86E561F75C2407342BFF8C70C1E4FD2F47DDBC2866BF6F22DE9E6BFCBB502D534F75602C0305EB9E26BA03835923339B159D894DC36D1C3F9B6863FC197E5632D2495863AF73434B30F795FC44934EFF107</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 E4 EF 00 00 90 61 89 66
0010 | 78 01 00 00 1F 5F 04 F5 8A 74 6C B5 B5 A8 B2 09
0020 | 60 7A C2 3F 42 38 1C 8D 9E 84 14 64 C6 56 0C E5
0030 | 91 60 C5 0C 1F F4 76 17 FE 50 01 00 2C FB 9E 47
0040 | A4 12 98 0C D6 8F AC 7C D0 10 72 7A 6F 8F EA F1
0050 | 31 89 1F FC 62 46 2C A3 BB 17 84 7C 39 F8 84 DA
0060 | 94 5E A5 7D D9 4A 55 FE A5 0C E7 2D 73 71 21 CC
0070 | 7D D2 69 C1 C0 C5 D7 56 C3 72 08 00 AF EC B5 73
0080 | E8 96 18 DA 3C 7A 28 54 74 F9 01 D4 F7 37 55 C0
0090 | D8 11 BB FB FE A8 2E 9E 6D EE 71 64 37 43 04 6E
00A0 | 8F AF F0 14 30 F6 1C CA 0C D6 3E 23 5B FD 8E B3
00B0 | 2D 01 8C 3E CE FF CF 4A 7A CA 54 A6 45 27 D5 DB
00C0 | 41 29 B2 DD 9D 58 F7 21 24 36 6F 38 52 14 B5 9E
00D0 | 3D E6 CF FC B5 6D 53 7D 27 48 C2 3E 60 BE 32 C8
00E0 | 15 FD F5 DF FA 0F 04 2A 27 AD A9 68 F3 8E 3E 30
00F0 | 87 35 0B 95 77 B9 AB 3B 6F 41 D7 99 BC 4D 8D A8
0100 | F7 46 20 46 94 35 A1 26 31 FD 4C AA 7C 65 71 3A
0110 | 44 23 0D 7B 85 5E 55 AF 2D 68 90 B3 94 76 46 C6
0120 | 23 D8 87 5A 24 D6 E2 71 D8 24 CC FE CC E8 AA 24
0130 | E4 E0 36 B4 11 10 15 B4 1F 7F 1C FD 3A 26 98 2F
0140 | 53 7B E2 BA 6C FE 87 43 4B 61 21 39 B0 C5 1A 9A
0150 | E5 88 35 62 64 E8 B7 99 0C 8D 7D 11 E3 8E EE CF
0160 | C3 08 48 47 52 AC 91 A0 62 BB FA 0E BD F6 74 A8
0170 | A0 19 48 5F A7 3B 28 ED 5F AC 15 55 E8 0B C3 3D
0180 | CA 10 7F 17 BE 9D CE 45 37 60 C3 C1</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 A8 BC 00 00 E0 67 89 66
0010 | 78 01 00 00 1F 5F 04 F5 24 51 93 B7 F5 9B 5B BC
0020 | 8C C5 6C B6 43 18 20 22 12 38 54 3A 19 42 67 BC
0030 | 53 14 82 A7 E3 C2 ED 64 FE 50 01 00 5E 5C FE 20
0040 | CC B7 4A E7 EB 61 E4 77 57 1F F7 A7 6D 88 13 52
0050 | C1 EB 1B 4F D8 ED 80 B6 4F DF C2 56 B6 DE 06 1C
0060 | 89 BB 38 7B FE CC D3 9D 8B FE A2 2D 8E ED 63 98
0070 | 4D F8 98 0F 9B F2 BB F1 BF DA E3 7F 89 7C 24 BF
0080 | BC CE 51 A8 D6 AD 15 D2 7E F6 FB A4 90 41 43 2A
0090 | 88 40 8B 0A 9E 49 22 F9 B2 72 62 A4 D2 31 CE 27
00A0 | CE FE 86 C6 FA 15 A8 7F A4 8E 53 C4 59 9D 31 5E
00B0 | 9B 3B 98 8F 05 4E 6D 6A E7 6C A0 8C CD B9 F3 AD
00C0 | 12 64 6E 05 C4 A4 2D 8F 6B F3 AD DE 0D 5F 03 88
00D0 | C7 62 EE 8F 74 54 A3 4B 3C C9 85 48 43 EE C9 C0
00E0 | 90 AE 6D 74 A7 5F A3 97 F2 0C 6A 45 1B 1A 90 DB
00F0 | 33 0E 15 47 4A DB 94 F1 8A C8 02 37 E5 C4 6B 4C
0100 | D9 F3 62 8B DA 26 79 48 53 51 03 BE B5 B8 E2 2D
0110 | F2 A0 C8 DF C2 36 DF 0C 80 0A 36 FA 23 FF 3B B0
0120 | 57 BF 33 16 2D E2 71 D7 37 95 BD CE 09 4D CC 02
0130 | F8 84 00 22 D2 20 F4 FB D8 9D F8 6E 56 1F 75 C2
0140 | 40 73 42 BF F8 C7 0C 1E 4F D2 F4 7D DB C2 86 6B
0150 | F6 F2 2D E9 E6 BF CB B5 02 D5 34 F7 56 02 C0 30
0160 | 5E B9 E2 6B A0 38 35 92 33 39 B1 59 D8 94 DC 36
0170 | D1 C3 F9 B6 86 3F C1 97 E5 63 2D 24 95 86 3A F7
0180 | 34 34 B3 0F 79 5F C4 49 34 EF F1 07</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>E4EF000090618966</code></td>
<td><code>A8BC0000E0678966</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>8A746CB5B5A8B209607AC23F42381C8D</code></td>
<td><code>245193B7F59B5BBC8CC56CB643182022</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>9E841464C6560CE59160C50C1FF47617</code></td>
<td><code>1238543A194267BC531482A7E3C2ED64</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE5001002CFB9E47A412980CD68FAC7C</code> <code>D010727A6F8FEAF131891FFC62462CA3</code> <code>BB17847C39F884DA945EA57DD94A55FE</code> <code>A50CE72D737121CC7DD269C1C0C5D756</code> <code>C3720800AFECB573E89618DA3C7A2854</code> <code>74F901D4F73755C0D811BBFBFEA82E9E</code> <code>6DEE71643743046E8FAFF01430F61CCA</code> <code>0CD63E235BFD8EB32D018C3ECEFFCF4A</code> <code>7ACA54A64527D5DB4129B2DD9D58F721</code> <code>24366F385214B59E3DE6CFFCB56D537D</code> <code>2748C23E60BE32C815FDF5DFFA0F042A</code> <code>27ADA968F38E3E3087350B9577B9AB3B</code> <code>6F41D799BC4D8DA8F74620469435A126</code> <code>31FD4CAA7C65713A44230D7B855E55AF</code> <code>2D6890B3947646C623D8875A24D6E271</code> <code>D824CCFECCE8AA24E4E036B4111015B4</code> <code>1F7F1CFD3A26982F537BE2BA6CFE8743</code> <code>4B612139B0C51A9AE588356264E8B799</code> <code>0C8D7D11E38EEECFC308484752AC91A0</code> <code>62BBFA0EBDF674A8A019485FA73B28ED</code> <code>5FAC1555E80BC33DCA107F17BE9DCE45</code><br> <code>3760C3C1</code></td>
<td><code>FE5001005E5CFE20CCB74AE7EB61E477</code> <code>571FF7A76D881352C1EB1B4FD8ED80B6</code> <code>4FDFC256B6DE061C89BB387BFECCD39D</code> <code>8BFEA22D8EED63984DF8980F9BF2BBF1</code> <code>BFDAE37F897C24BFBCCE51A8D6AD15D2</code> <code>7EF6FBA49041432A88408B0A9E4922F9</code> <code>B27262A4D231CE27CEFE86C6FA15A87F</code> <code>A48E53C4599D315E9B3B988F054E6D6A</code> <code>E76CA08CCDB9F3AD12646E05C4A42D8F</code> <code>6BF3ADDE0D5F0388C762EE8F7454A34B</code> <code>3CC9854843EEC9C090AE6D74A75FA397</code> <code>F20C6A451B1A90DB330E15474ADB94F1</code> <code>8AC80237E5C46B4CD9F3628BDA267948</code> <code>535103BEB5B8E22DF2A0C8DFC236DF0C</code> <code>800A36FA23FF3BB057BF33162DE271D7</code> <code>3795BDCE094DCC02F8840022D220F4FB</code> <code>D89DF86E561F75C2407342BFF8C70C1E</code> <code>4FD2F47DDBC2866BF6F22DE9E6BFCBB5</code> <code>02D534F75602C0305EB9E26BA0383592</code> <code>3339B159D894DC36D1C3F9B6863FC197</code> <code>E5632D2495863AF73434B30F795FC449</code><br> <code>34EFF107</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 = 5BB6C61CF73779D7E23070FB31BB7CFD6D17F016374B8E1CFC0695F5877D591B0685B5B582BF857D77D28A8BABE2D60B230F4286E5CF6B0DE9C237C25213A147C4E2302590FFBE2ECCFE2A15F5317069A5EAF098D218BADB268DACB05E2866356F94A0F1D473277C832F209367505C8088C3AD2DCBEA6880A90BA24D651A3C3B4B845E285AD427622F666FAE6B031A4FDA6FBEC76714026FB286351BE5DBF55C8DD3F6F105E1AB54478FFB4D1EC54DEA76651776D1CF14E899FF5F7847B23FBF7391CA746F4E07811DB2E77F4D46A2AE3A0003998C908A1CAF6F236D8FEC590F4BE5C170BDB7E4508BA6B385DECE62B3EB050DD62E6ED191272270E5AA5D2BE5</code></pre>
<pre><code>auth_key = B2C082716DA83CFB3B63671D483EB079F74DBE33917A58E9D8DC8E04B0D30BDAB6321024875EF8E9EC124947A91814469CEE3376C801EBF4E5E49D6AEAC827B08D992641035D7A2E31856D880A770ACFBD2278886DF12EA1F71FEB4C34A8AFC9DEAE2652550ADD221B5E5EB2ABA8E316C45D2875788BE138B71BC3B1FFD8428453E979864B9DCB806041EF6609A6A514C41FCC59F8EE69FD463B477CF39F76F15694F4535C07D67C9DA807ED13426CE2D96B51053864FCBF036A5F017AE5FDE4C8AE9BA8C23E6876EE168E0AE10143B153F093E450A15A1122BBA787A0ACD0F4DF12FC9EB49577C6C3FD5700FA4E136AF529215629B1777E178B4F0399F4862B</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 04 04 A8 90 61 89 66
0010 | 60 00 00 00 34 F7 CB 3B 8A 74 6C B5 B5 A8 B2 09
0020 | 60 7A C2 3F 42 38 1C 8D 9E 84 14 64 C6 56 0C E5
0030 | 91 60 C5 0C 1F F4 76 17 A6 7B B2 FB 91 0E 85 56
0040 | B3 39 BB 23 79 05 17 E0</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 8C E5 CF E0 67 89 66
0010 | B0 00 00 00 34 F7 CB 3B 24 51 93 B7 F5 9B 5B BC
0020 | 8C C5 6C B6 43 18 20 22 12 38 54 3A 19 42 67 BC
0030 | 53 14 82 A7 E3 C2 ED 64 11 D9 18 9A F2 62 02 34
0040 | 5F 84 29 79 BB A1 8A DA</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>010404A890618966</code></td>
<td><code>018CE5CFE0678966</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>60000000</code> (96 in decimal)</td>
<td><code>B0000000</code> (176 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>8A746CB5B5A8B209607AC23F42381C8D</code></td>
<td><code>245193B7F59B5BBC8CC56CB643182022</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>9E841464C6560CE59160C50C1FF47617</code></td>
<td><code>1238543A194267BC531482A7E3C2ED64</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>A67BB2FB910E8556B339BB23790517E0</code></td>
<td><code>11D9189AF26202345F842979BBA18ADA</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

@ -273,7 +273,7 @@
</tr>
<tr>
<td><a href="/constructor/messageActionBoostApply">messageActionBoostApply</a></td>
<td> </td>
<td>Some <a href="/api/boost">boosts »</a> were applied to the channel or supergroup.</td>
</tr>
<tr>
<td><a href="/constructor/messageActionRequestedPeerSentMe">messageActionRequestedPeerSentMe</a></td>

View file

@ -639,7 +639,7 @@
</tr>
<tr>
<td><a href="/constructor/updateUser">updateUser</a></td>
<td>User information was updated, it must be refetched using <a href="/method/users.getFullUser">users.getFullUser</a>.</td>
<td>User (<a href="/constructor/user">user</a> and/or <a href="/constructor/userFull">userFull</a>) information was updated, it must be refetched using <a href="/method/users.getFullUser">users.getFullUser</a>.</td>
</tr>
<tr>
<td><a href="/constructor/updateAutoSaveSettings">updateAutoSaveSettings</a></td>