diff --git a/data/web/corefork.telegram.org/api/business.html b/data/web/corefork.telegram.org/api/business.html index 44ddbb2b8e..2093cd1f56 100644 --- a/data/web/corefork.telegram.org/api/business.html +++ b/data/web/corefork.telegram.org/api/business.html @@ -421,7 +421,7 @@ Clicking on this button in the settings should open a Telegram Business modal.
business_bots
- Business users can connect business bots to their accountemoji_status
- Business users can set a custom emoji status. folder_tags
- Business users can enable folder tags. stories
- Business users have many additional story features.stories
- Business users can use stories to showcase products (i.e. no additional functionality neeeds to be implemented by clients, it's just another way to use stories).upload_premium_speedup_notify_period
The Premium modal shown when receiving FLOOD_WAIT_PREMIUM_X
errors during file uploads/downloads should be shown at most every upload_premium_speedup_notify_period
seconds. (integer)
stories_pinned_to_top_count_max
The maximum number of stories that can be pinned on top of the profile ».
+The maximum number of stories that can be pinned on top of the profile ». (integer)
+channel_revenue_withdrawal_enabled
If true, indicates that channel ad revenue withdrawal is enabled in the current region; otherwise, all ad revenue-related UI options should be hidden from the user. (boolean)
+stars_purchase_blocked
If false, indicates that Telegram Stars may be used in the current region; otherwise, all Star-related UI options should be hidden from the user. (boolean)
web_app_allowed_protocols
Specifies a list of allowed schemes for URLs received in web_app_open_link events. (array of strings)
Channel ad revenue statistics may be fetched by channel admins if the channelFull.can_view_revenue
flag is set.
Channel ad revenue statistics may be fetched by channel admins if the channelFull.can_view_revenue
flag is set and the channel_revenue_withdrawal_enabled field is equal to true
».
Use stats.getBroadcastRevenueStats to fetch statistics about the revenue earned from sponsored messages in a channel; the returned StatsGraph graphs can be rendered as described here ».
Specifically:
To withdraw funds from a channel's ad revenue balance, invoke stats.getBroadcastRevenueWithdrawalUrl, passing the current account's 2FA password as an InputCheckPasswordSRP constructor, generated as specified here ».
-Only the channel owner can invoke this method.
+Only the channel owner can invoke this method, and only if the channel_revenue_withdrawal_enabled field is equal to true
».
The method will return a unique URL to a Fragment page where the user will be able to specify and submit the address of the TON wallet where the funds will be sent.
channelFull#bbab348d flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_set_location:flags.16?true has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true flags2:# can_delete_channel:flags2.0?true antispam:flags2.1?true participants_hidden:flags2.2?true translations_disabled:flags2.3?true stories_pinned_available:flags2.5?true view_forum_as_messages:flags2.6?true restricted_sponsored:flags2.11?true can_view_revenue:flags2.12?true id:long about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:flags.23?ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?long migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?long location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int call:flags.21?InputGroupCall ttl_period:flags.24?int pending_suggestions:flags.25?Vector<string> groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string requests_pending:flags.28?int recent_requesters:flags.28?Vector<long> default_send_as:flags.29?Peer available_reactions:flags.30?ChatReactions reactions_limit:flags2.13?int stories:flags2.4?PeerStories wallpaper:flags2.7?WallPaper boosts_applied:flags2.8?int boosts_unrestrict:flags2.9?int emojiset:flags2.10?StickerSet = ChatFull;
diff --git a/data/web/corefork.telegram.org/api/stars.html b/data/web/corefork.telegram.org/api/stars.html
index 2f7150b064..6c879a9d33 100644
--- a/data/web/corefork.telegram.org/api/stars.html
+++ b/data/web/corefork.telegram.org/api/stars.html
@@ -46,6 +46,7 @@
Telegram Stars are an in-app currency that allows the user to pay for digital goods and services offered by Telegram bots or Telegram channels.
This page describes the methods used to buy and withdraw Telegram Stars, as well as view detailed revenue stats and make purchases using Telegram Stars.
+Clients should disable Telegram Stars support for the current user if the stars_purchase_blocked field is equal to true
» due to regional limitations.
Balance and transaction history
starsTransactionPeerAppStore#b457b375 = StarsTransactionPeer;
starsTransactionPeerPlayMarket#7b560a0b = StarsTransactionPeer;
diff --git a/data/web/corefork.telegram.org/method/account.getChannelDefaultEmojiStatuses.html b/data/web/corefork.telegram.org/method/account.getChannelDefaultEmojiStatuses.html
index ad53037e8c..4262e0cfa3 100644
--- a/data/web/corefork.telegram.org/method/account.getChannelDefaultEmojiStatuses.html
+++ b/data/web/corefork.telegram.org/method/account.getChannelDefaultEmojiStatuses.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the account.emojiStatuses.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-account.emojiStatuses
-A list of emoji statuses
Emoji status
Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.
diff --git a/data/web/corefork.telegram.org/method/account.getChannelRestrictedStatusEmojis.html b/data/web/corefork.telegram.org/method/account.getChannelRestrictedStatusEmojis.html
index bd50aa3812..15e2863998 100644
--- a/data/web/corefork.telegram.org/method/account.getChannelRestrictedStatusEmojis.html
+++ b/data/web/corefork.telegram.org/method/account.getChannelRestrictedStatusEmojis.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the emojiList.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-emojiList
-Represents a list of custom emojis.
Custom emojis
Telegram allows including animated and static custom emojis inside of messages.
Emoji status
diff --git a/data/web/corefork.telegram.org/method/account.getChatThemes.html b/data/web/corefork.telegram.org/method/account.getChatThemes.html
index 7205e9f1b4..eb19e2ae45 100644
--- a/data/web/corefork.telegram.org/method/account.getChatThemes.html
+++ b/data/web/corefork.telegram.org/method/account.getChatThemes.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the account.themes.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-account.themes
-Installed themes
Themes
Telegram apps support generating, sharing and synchronizing app themes.
diff --git a/data/web/corefork.telegram.org/method/account.getDefaultBackgroundEmojis.html b/data/web/corefork.telegram.org/method/account.getDefaultBackgroundEmojis.html
index f70f44cfd9..5fbc77a5ee 100644
--- a/data/web/corefork.telegram.org/method/account.getDefaultBackgroundEmojis.html
+++ b/data/web/corefork.telegram.org/method/account.getDefaultBackgroundEmojis.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the emojiList.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-emojiList
-Represents a list of custom emojis.
Custom emojis
Telegram allows including animated and static custom emojis inside of messages.
Accent colors
diff --git a/data/web/corefork.telegram.org/method/account.getDefaultEmojiStatuses.html b/data/web/corefork.telegram.org/method/account.getDefaultEmojiStatuses.html
index 4aa9857755..30bcd8df5a 100644
--- a/data/web/corefork.telegram.org/method/account.getDefaultEmojiStatuses.html
+++ b/data/web/corefork.telegram.org/method/account.getDefaultEmojiStatuses.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the account.emojiStatuses.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-account.emojiStatuses
-A list of emoji statuses
Emoji status
Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.
diff --git a/data/web/corefork.telegram.org/method/account.getDefaultGroupPhotoEmojis.html b/data/web/corefork.telegram.org/method/account.getDefaultGroupPhotoEmojis.html
index 9b50a9a630..8a6e06ff2f 100644
--- a/data/web/corefork.telegram.org/method/account.getDefaultGroupPhotoEmojis.html
+++ b/data/web/corefork.telegram.org/method/account.getDefaultGroupPhotoEmojis.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the emojiList.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-emojiList
-Represents a list of custom emojis.
Custom emojis
Telegram allows including animated and static custom emojis inside of messages.
Uploading and Downloading Files
diff --git a/data/web/corefork.telegram.org/method/account.getDefaultProfilePhotoEmojis.html b/data/web/corefork.telegram.org/method/account.getDefaultProfilePhotoEmojis.html
index 2d7b3e8e60..8d4f2182d4 100644
--- a/data/web/corefork.telegram.org/method/account.getDefaultProfilePhotoEmojis.html
+++ b/data/web/corefork.telegram.org/method/account.getDefaultProfilePhotoEmojis.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the emojiList.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-emojiList
-Represents a list of custom emojis.
Custom emojis
Telegram allows including animated and static custom emojis inside of messages.
Uploading and Downloading Files
diff --git a/data/web/corefork.telegram.org/method/account.getRecentEmojiStatuses.html b/data/web/corefork.telegram.org/method/account.getRecentEmojiStatuses.html
index 256e0de43c..1962afc87e 100644
--- a/data/web/corefork.telegram.org/method/account.getRecentEmojiStatuses.html
+++ b/data/web/corefork.telegram.org/method/account.getRecentEmojiStatuses.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the account.emojiStatuses.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-account.emojiStatuses
-A list of emoji statuses
Emoji status
Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.
diff --git a/data/web/corefork.telegram.org/method/account.getSavedRingtones.html b/data/web/corefork.telegram.org/method/account.getSavedRingtones.html
index 14e22b4ea1..bd7aa3e7f9 100644
--- a/data/web/corefork.telegram.org/method/account.getSavedRingtones.html
+++ b/data/web/corefork.telegram.org/method/account.getSavedRingtones.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the account.savedRingtones.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -80,9 +80,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-account.savedRingtones
-A list of saved notification sounds
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/account.getThemes.html b/data/web/corefork.telegram.org/method/account.getThemes.html
index 60087234e3..9fd56acb48 100644
--- a/data/web/corefork.telegram.org/method/account.getThemes.html
+++ b/data/web/corefork.telegram.org/method/account.getThemes.html
@@ -77,7 +77,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the account.themes.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -85,9 +85,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-account.themes
-Installed themes
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/account.getWallPapers.html b/data/web/corefork.telegram.org/method/account.getWallPapers.html
index 8cf840e8c0..1c3a2f9e93 100644
--- a/data/web/corefork.telegram.org/method/account.getWallPapers.html
+++ b/data/web/corefork.telegram.org/method/account.getWallPapers.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the account.wallPapers.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-account.wallPapers
-Installed wallpapers
Wallpapers
Telegram apps support generating, sharing and synchronizing chat backgrounds.
diff --git a/data/web/corefork.telegram.org/method/account.sendVerifyEmailCode.html b/data/web/corefork.telegram.org/method/account.sendVerifyEmailCode.html
index fc0c1498f3..e12d1e9bb7 100644
--- a/data/web/corefork.telegram.org/method/account.sendVerifyEmailCode.html
+++ b/data/web/corefork.telegram.org/method/account.sendVerifyEmailCode.html
@@ -99,6 +99,11 @@
400
+EMAIL_NOT_ALLOWED
+The specified email cannot be used to complete the operation.
+
+
+400
EMAIL_NOT_SETUP
In order to change the login email with emailVerifyPurposeLoginChange, an existing login email must already be set using emailVerifyPurposeLoginSetup.
diff --git a/data/web/corefork.telegram.org/method/account.verifyEmail.html b/data/web/corefork.telegram.org/method/account.verifyEmail.html
index cb8fd20b60..30b2d1e2eb 100644
--- a/data/web/corefork.telegram.org/method/account.verifyEmail.html
+++ b/data/web/corefork.telegram.org/method/account.verifyEmail.html
@@ -100,6 +100,11 @@
400
+EMAIL_NOT_ALLOWED
+The specified email cannot be used to complete the operation.
+
+
+400
EMAIL_VERIFY_EXPIRED
The verification email has expired.
diff --git a/data/web/corefork.telegram.org/method/channels.editAdmin.html b/data/web/corefork.telegram.org/method/channels.editAdmin.html
index cd091dd594..750b517cab 100644
--- a/data/web/corefork.telegram.org/method/channels.editAdmin.html
+++ b/data/web/corefork.telegram.org/method/channels.editAdmin.html
@@ -201,7 +201,7 @@
400
USER_CREATOR
-You can't leave this channel, because you're its creator.
+For channels.editAdmin: you've tried to edit the admin rights of the owner, but you're not the owner; for channels.leaveChannel: you can't leave this channel, because you're its creator.
400
diff --git a/data/web/corefork.telegram.org/method/channels.leaveChannel.html b/data/web/corefork.telegram.org/method/channels.leaveChannel.html
index 04cc021344..1a163ff508 100644
--- a/data/web/corefork.telegram.org/method/channels.leaveChannel.html
+++ b/data/web/corefork.telegram.org/method/channels.leaveChannel.html
@@ -126,7 +126,7 @@
400
USER_CREATOR
-You can't leave this channel, because you're its creator.
+For channels.editAdmin: you've tried to edit the admin rights of the owner, but you're not the owner; for channels.leaveChannel: you can't leave this channel, because you're its creator.
400
diff --git a/data/web/corefork.telegram.org/method/help.getAppConfig.html b/data/web/corefork.telegram.org/method/help.getAppConfig.html
index 69d64874fa..784d39dabe 100644
--- a/data/web/corefork.telegram.org/method/help.getAppConfig.html
+++ b/data/web/corefork.telegram.org/method/help.getAppConfig.html
@@ -72,7 +72,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the help.appConfig.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-help.appConfig
-Contains various client configuration parameters
Client configuration
The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.
diff --git a/data/web/corefork.telegram.org/method/help.getCountriesList.html b/data/web/corefork.telegram.org/method/help.getCountriesList.html
index b03ac1c20d..797cd2b32d 100644
--- a/data/web/corefork.telegram.org/method/help.getCountriesList.html
+++ b/data/web/corefork.telegram.org/method/help.getCountriesList.html
@@ -77,7 +77,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the help.countriesList.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -85,9 +85,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-help.countriesList
-Name, ISO code, localized name and phone codes/patterns of all available countries
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/help.getPassportConfig.html b/data/web/corefork.telegram.org/method/help.getPassportConfig.html
index 49102aca26..117a534b14 100644
--- a/data/web/corefork.telegram.org/method/help.getPassportConfig.html
+++ b/data/web/corefork.telegram.org/method/help.getPassportConfig.html
@@ -72,7 +72,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the help.passportConfig.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-help.passportConfig
-Telegram passport configuration
Telegram Passport Manual
diff --git a/data/web/corefork.telegram.org/method/help.getPeerColors.html b/data/web/corefork.telegram.org/method/help.getPeerColors.html
index d6731f1ad6..8c4c13d7ea 100644
--- a/data/web/corefork.telegram.org/method/help.getPeerColors.html
+++ b/data/web/corefork.telegram.org/method/help.getPeerColors.html
@@ -72,7 +72,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the help.peerColors.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-help.peerColors
-Contains info about multiple color palettes ».
Accent colors
Telegram users and channels can change the accent color and background pattern of their profile page and their messages!
diff --git a/data/web/corefork.telegram.org/method/help.getPeerProfileColors.html b/data/web/corefork.telegram.org/method/help.getPeerProfileColors.html
index 93f7a1429b..c08c332a68 100644
--- a/data/web/corefork.telegram.org/method/help.getPeerProfileColors.html
+++ b/data/web/corefork.telegram.org/method/help.getPeerProfileColors.html
@@ -72,7 +72,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the help.peerColors.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-help.peerColors
-Contains info about multiple color palettes ».
Accent colors
Telegram users and channels can change the accent color and background pattern of their profile page and their messages!
diff --git a/data/web/corefork.telegram.org/method/help.getTimezonesList.html b/data/web/corefork.telegram.org/method/help.getTimezonesList.html
index 852a84c458..1d44d5e1eb 100644
--- a/data/web/corefork.telegram.org/method/help.getTimezonesList.html
+++ b/data/web/corefork.telegram.org/method/help.getTimezonesList.html
@@ -72,7 +72,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the help.timezonesList.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-help.timezonesList
-Timezone information that may be used elsewhere in the API, such as to set Telegram Business opening hours ».
Business
Users can turn their Telegram account into a business account, gaining access to business features such as opening hours, location, quick replies, automated messages, custom start pages, chatbot support, and more.
diff --git a/data/web/corefork.telegram.org/method/messages.getAllStickers.html b/data/web/corefork.telegram.org/method/messages.getAllStickers.html
index 0f3a4d0f5e..cf9ad18a0b 100644
--- a/data/web/corefork.telegram.org/method/messages.getAllStickers.html
+++ b/data/web/corefork.telegram.org/method/messages.getAllStickers.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.allStickers.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -80,9 +80,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-messages.allStickers
-Info about all installed stickers
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/messages.getAttachMenuBots.html b/data/web/corefork.telegram.org/method/messages.getAttachMenuBots.html
index 091a18ec69..95d8068f4c 100644
--- a/data/web/corefork.telegram.org/method/messages.getAttachMenuBots.html
+++ b/data/web/corefork.telegram.org/method/messages.getAttachMenuBots.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the attachMenuBots.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-attachMenuBots
-Represents a list of bot mini apps that can be launched from the attachment menu »
Bot attachment menu and side menu entries
Bots can install attachment menu and side menu entries, offering conveniently accessible, versatile web apps.
diff --git a/data/web/corefork.telegram.org/method/messages.getAvailableEffects.html b/data/web/corefork.telegram.org/method/messages.getAvailableEffects.html
index 340d122be8..d99b0c4fb2 100644
--- a/data/web/corefork.telegram.org/method/messages.getAvailableEffects.html
+++ b/data/web/corefork.telegram.org/method/messages.getAvailableEffects.html
@@ -72,7 +72,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.availableEffects.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-messages.availableEffects
-The full list of usable animated message effects ».
Animated message effects
Telegram allows adding spectacular animated effects to messages you send.
diff --git a/data/web/corefork.telegram.org/method/messages.getAvailableReactions.html b/data/web/corefork.telegram.org/method/messages.getAvailableReactions.html
index ce4ba0dd8b..230b4a43cb 100644
--- a/data/web/corefork.telegram.org/method/messages.getAvailableReactions.html
+++ b/data/web/corefork.telegram.org/method/messages.getAvailableReactions.html
@@ -72,7 +72,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.availableReactions.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-messages.availableReactions
-Animations and metadata associated with message reactions »
Message reactions
Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.
diff --git a/data/web/corefork.telegram.org/method/messages.getDefaultTagReactions.html b/data/web/corefork.telegram.org/method/messages.getDefaultTagReactions.html
index c6eadc0718..4a4a372164 100644
--- a/data/web/corefork.telegram.org/method/messages.getDefaultTagReactions.html
+++ b/data/web/corefork.telegram.org/method/messages.getDefaultTagReactions.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.reactions.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-messages.reactions
-List of message reactions
Saved messages
The Saved Messages chat allows users to bookmark messages and media: it's a personal cloud storage for any messages or media you may want to send or forward there.
diff --git a/data/web/corefork.telegram.org/method/messages.getEmojiGroups.html b/data/web/corefork.telegram.org/method/messages.getEmojiGroups.html
index 7d424534ab..970bb22a64 100644
--- a/data/web/corefork.telegram.org/method/messages.getEmojiGroups.html
+++ b/data/web/corefork.telegram.org/method/messages.getEmojiGroups.html
@@ -72,7 +72,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.emojiGroups.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-messages.emojiGroups
-Represents a list of emoji categories.
Emoji categories
Sticker, custom emoji and GIF selection UIs should offer a list of categories to quickly filter results by a (list of) emojis, or by some other criteria.
diff --git a/data/web/corefork.telegram.org/method/messages.getEmojiProfilePhotoGroups.html b/data/web/corefork.telegram.org/method/messages.getEmojiProfilePhotoGroups.html
index 7deee0edd1..fedd899fa7 100644
--- a/data/web/corefork.telegram.org/method/messages.getEmojiProfilePhotoGroups.html
+++ b/data/web/corefork.telegram.org/method/messages.getEmojiProfilePhotoGroups.html
@@ -72,7 +72,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.emojiGroups.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-messages.emojiGroups
-Represents a list of emoji categories.
Emoji categories
Sticker, custom emoji and GIF selection UIs should offer a list of categories to quickly filter results by a (list of) emojis, or by some other criteria.
Uploading and Downloading Files
diff --git a/data/web/corefork.telegram.org/method/messages.getEmojiStatusGroups.html b/data/web/corefork.telegram.org/method/messages.getEmojiStatusGroups.html
index 547ffa71e8..5dd7f1ad23 100644
--- a/data/web/corefork.telegram.org/method/messages.getEmojiStatusGroups.html
+++ b/data/web/corefork.telegram.org/method/messages.getEmojiStatusGroups.html
@@ -72,7 +72,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.emojiGroups.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-messages.emojiGroups
-Represents a list of emoji categories.
Emoji categories
Sticker, custom emoji and GIF selection UIs should offer a list of categories to quickly filter results by a (list of) emojis, or by some other criteria.
Telegram APIs
diff --git a/data/web/corefork.telegram.org/method/messages.getEmojiStickerGroups.html b/data/web/corefork.telegram.org/method/messages.getEmojiStickerGroups.html
index 3b11150ddc..72e9319eea 100644
--- a/data/web/corefork.telegram.org/method/messages.getEmojiStickerGroups.html
+++ b/data/web/corefork.telegram.org/method/messages.getEmojiStickerGroups.html
@@ -72,7 +72,7 @@
hash
int
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.emojiGroups.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-messages.emojiGroups
-Represents a list of emoji categories.
Emoji categories
Sticker, custom emoji and GIF selection UIs should offer a list of categories to quickly filter results by a (list of) emojis, or by some other criteria.
diff --git a/data/web/corefork.telegram.org/method/messages.getEmojiStickers.html b/data/web/corefork.telegram.org/method/messages.getEmojiStickers.html
index 86f2bb5fdb..c5787da91e 100644
--- a/data/web/corefork.telegram.org/method/messages.getEmojiStickers.html
+++ b/data/web/corefork.telegram.org/method/messages.getEmojiStickers.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.allStickers.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -81,8 +81,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-messages.allStickers
-Info about all installed stickers
Custom emojis
Telegram allows including animated and static custom emojis inside of messages.
diff --git a/data/web/corefork.telegram.org/method/messages.getFavedStickers.html b/data/web/corefork.telegram.org/method/messages.getFavedStickers.html
index c367cab419..3cefd7823f 100644
--- a/data/web/corefork.telegram.org/method/messages.getFavedStickers.html
+++ b/data/web/corefork.telegram.org/method/messages.getFavedStickers.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.favedStickers.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -80,9 +80,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-messages.favedStickers
-Favorited stickers
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/messages.getFeaturedEmojiStickers.html b/data/web/corefork.telegram.org/method/messages.getFeaturedEmojiStickers.html
index 1c6b15d94e..80bb955b1b 100644
--- a/data/web/corefork.telegram.org/method/messages.getFeaturedEmojiStickers.html
+++ b/data/web/corefork.telegram.org/method/messages.getFeaturedEmojiStickers.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.featuredStickers.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -80,9 +80,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-messages.featuredStickers
-Featured stickersets
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/messages.getFeaturedStickers.html b/data/web/corefork.telegram.org/method/messages.getFeaturedStickers.html
index efdf1d926a..887b01d8d9 100644
--- a/data/web/corefork.telegram.org/method/messages.getFeaturedStickers.html
+++ b/data/web/corefork.telegram.org/method/messages.getFeaturedStickers.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.featuredStickers.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -80,9 +80,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-messages.featuredStickers
-Featured stickersets
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/messages.getMaskStickers.html b/data/web/corefork.telegram.org/method/messages.getMaskStickers.html
index 9ea0a259b6..e221ef5244 100644
--- a/data/web/corefork.telegram.org/method/messages.getMaskStickers.html
+++ b/data/web/corefork.telegram.org/method/messages.getMaskStickers.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.allStickers.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -80,9 +80,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-messages.allStickers
-Info about all installed stickers
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/messages.getOldFeaturedStickers.html b/data/web/corefork.telegram.org/method/messages.getOldFeaturedStickers.html
index c7468a9901..83cfb05679 100644
--- a/data/web/corefork.telegram.org/method/messages.getOldFeaturedStickers.html
+++ b/data/web/corefork.telegram.org/method/messages.getOldFeaturedStickers.html
@@ -82,7 +82,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.featuredStickers.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -90,9 +90,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-messages.featuredStickers
-Featured stickersets
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/messages.getRecentReactions.html b/data/web/corefork.telegram.org/method/messages.getRecentReactions.html
index e0d82062be..56758cdb37 100644
--- a/data/web/corefork.telegram.org/method/messages.getRecentReactions.html
+++ b/data/web/corefork.telegram.org/method/messages.getRecentReactions.html
@@ -77,7 +77,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.reactions.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -86,8 +86,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-messages.reactions
-List of message reactions
Message reactions
Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.
diff --git a/data/web/corefork.telegram.org/method/messages.getRecentStickers.html b/data/web/corefork.telegram.org/method/messages.getRecentStickers.html
index 6eb7a40420..c95751e1b1 100644
--- a/data/web/corefork.telegram.org/method/messages.getRecentStickers.html
+++ b/data/web/corefork.telegram.org/method/messages.getRecentStickers.html
@@ -82,7 +82,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.recentStickers.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -90,9 +90,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-messages.recentStickers
-Recently used stickers
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/messages.getSavedGifs.html b/data/web/corefork.telegram.org/method/messages.getSavedGifs.html
index 58cb32903e..7006f64f12 100644
--- a/data/web/corefork.telegram.org/method/messages.getSavedGifs.html
+++ b/data/web/corefork.telegram.org/method/messages.getSavedGifs.html
@@ -72,7 +72,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.savedGifs.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -80,9 +80,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-messages.savedGifs
-Saved gifs
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/messages.getSavedReactionTags.html b/data/web/corefork.telegram.org/method/messages.getSavedReactionTags.html
index cbbad19ec6..d6e3ea725e 100644
--- a/data/web/corefork.telegram.org/method/messages.getSavedReactionTags.html
+++ b/data/web/corefork.telegram.org/method/messages.getSavedReactionTags.html
@@ -82,7 +82,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.savedReactionTags.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -92,9 +92,7 @@
Saved messages
The Saved Messages chat allows users to bookmark messages and media: it's a personal cloud storage for any messages or media you may want to send or forward there.
Pagination in the API
-How to fetch results from large lists of objects.
-messages.savedReactionTags
-List of reaction tag » names assigned by the user.
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/messages.getStickers.html b/data/web/corefork.telegram.org/method/messages.getStickers.html
index 89b2c8bab8..5381394ef2 100644
--- a/data/web/corefork.telegram.org/method/messages.getStickers.html
+++ b/data/web/corefork.telegram.org/method/messages.getStickers.html
@@ -77,7 +77,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.stickers.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -102,9 +102,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-messages.stickers
-Found stickers
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/messages.getTopReactions.html b/data/web/corefork.telegram.org/method/messages.getTopReactions.html
index afcea1e641..ac3249a39d 100644
--- a/data/web/corefork.telegram.org/method/messages.getTopReactions.html
+++ b/data/web/corefork.telegram.org/method/messages.getTopReactions.html
@@ -77,7 +77,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.reactions.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -86,8 +86,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-messages.reactions
-List of message reactions
Message reactions
Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.
diff --git a/data/web/corefork.telegram.org/method/messages.searchCustomEmoji.html b/data/web/corefork.telegram.org/method/messages.searchCustomEmoji.html
index 79645143d3..1128ae186a 100644
--- a/data/web/corefork.telegram.org/method/messages.searchCustomEmoji.html
+++ b/data/web/corefork.telegram.org/method/messages.searchCustomEmoji.html
@@ -77,7 +77,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the emojiList.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -103,8 +103,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-emojiList
-Represents a list of custom emojis.
Custom emojis
Telegram allows including animated and static custom emojis inside of messages.
diff --git a/data/web/corefork.telegram.org/method/messages.searchEmojiStickerSets.html b/data/web/corefork.telegram.org/method/messages.searchEmojiStickerSets.html
index 76c746f745..e912ecaedb 100644
--- a/data/web/corefork.telegram.org/method/messages.searchEmojiStickerSets.html
+++ b/data/web/corefork.telegram.org/method/messages.searchEmojiStickerSets.html
@@ -87,7 +87,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.foundStickerSets.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -96,8 +96,6 @@
Related pages
Pagination in the API
How to fetch results from large lists of objects.
-messages.foundStickerSets
-Found stickersets
Custom emojis
Telegram allows including animated and static custom emojis inside of messages.
diff --git a/data/web/corefork.telegram.org/method/messages.searchStickerSets.html b/data/web/corefork.telegram.org/method/messages.searchStickerSets.html
index a88b043ed5..04470db378 100644
--- a/data/web/corefork.telegram.org/method/messages.searchStickerSets.html
+++ b/data/web/corefork.telegram.org/method/messages.searchStickerSets.html
@@ -87,7 +87,7 @@
hash
long
-Hash used for caching, for more info click here.
Note: the usual hash generation algorithm cannot be used in this case, please re-use the messages.foundStickerSets.hash
field returned by a previous call to the method, or pass 0 if this is the first call.
+Hash used for caching, for more info click here.
@@ -95,9 +95,7 @@
Related pages
Pagination in the API
-How to fetch results from large lists of objects.
-messages.foundStickerSets
-Found stickersets
+How to fetch results from large lists of objects.
diff --git a/data/web/corefork.telegram.org/method/messages.sendMultiMedia.html b/data/web/corefork.telegram.org/method/messages.sendMultiMedia.html
index 10a0478da7..e850d52fe0 100644
--- a/data/web/corefork.telegram.org/method/messages.sendMultiMedia.html
+++ b/data/web/corefork.telegram.org/method/messages.sendMultiMedia.html
@@ -206,7 +206,12 @@
400
FILE_REFERENCE_%d_EXPIRED
-
+File reference expired, it must be refetched as described in the documentation.
+
+
+400
+FILE_REFERENCE_%d_INVALID
+File reference invalid.
400
@@ -306,6 +311,8 @@
How to transfer large data batches correctly.
Styled text with message entities
How to create styled text with message entities
+File references
+How to handle file references.
Client configuration
The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.
diff --git a/data/web/corefork.telegram.org/method/phone.startScheduledGroupCall.html b/data/web/corefork.telegram.org/method/phone.startScheduledGroupCall.html
index 364ce489b1..4e2ee32c81 100644
--- a/data/web/corefork.telegram.org/method/phone.startScheduledGroupCall.html
+++ b/data/web/corefork.telegram.org/method/phone.startScheduledGroupCall.html
@@ -94,12 +94,20 @@
+403
+GROUPCALL_ALREADY_STARTED
+The groupcall has already started, you can join directly using phone.joinGroupCall.
+
+
400
GROUPCALL_INVALID
The specified group call is invalid.
-
+
+Related pages
+phone.joinGroupCall
+Join a group call
diff --git a/data/web/corefork.telegram.org/mtproto/samples-auth_key.html b/data/web/corefork.telegram.org/mtproto/samples-auth_key.html
index 8f288745c5..7a356a19a4 100644
--- a/data/web/corefork.telegram.org/mtproto/samples-auth_key.html
+++ b/data/web/corefork.telegram.org/mtproto/samples-auth_key.html
@@ -53,9 +53,9 @@
1) Client sends query to server
Sent payload (excluding transport headers/trailers):
-0000 | 00 00 00 00 00 00 00 00 38 8B 01 00 2B 91 A2 66
-0010 | 14 00 00 00 F1 8E 7E BE 0A 10 39 86 07 65 90 2D
-0020 | FB 0C AC B7 C5 6E 4D D1
+0000 | 00 00 00 00 00 00 00 00 94 1C 07 00 6F 1D A9 66
+0010 | 14 00 00 00 F1 8E 7E BE 1B 09 A0 0A D2 F0 2D 7E
+0020 | 1C 09 6E E6 37 8E 25 53
Payload (de)serialization:
req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;
@@ -77,7 +77,7 @@
message_id
8, 8
-388B01002B91A266
+941C07006F1DA966
Message ID generated as specified here » (unixtime() << 32) + (N*4)
@@ -95,7 +95,7 @@
nonce
24, 16
-0A1039860765902DFB0CACB7C56E4DD1
+1B09A00AD2F02D7E1C096EE6378E2553
Random number
@@ -104,11 +104,11 @@
2) Server sends response of the form
Received payload (excluding transport headers/trailers):
-0000 | 00 00 00 00 00 00 00 00 01 84 EC 20 2B 91 A2 66
-0010 | 60 00 00 00 63 24 16 05 0A 10 39 86 07 65 90 2D
-0020 | FB 0C AC B7 C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9
-0030 | ED B5 CC 2B 80 59 9F 26 08 2C 8C 80 64 FA 45 27
-0040 | BF 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
+0000 | 00 00 00 00 00 00 00 00 01 B4 AE 01 70 1D A9 66
+0010 | 74 00 00 00 63 24 16 05 1B 09 A0 0A D2 F0 2D 7E
+0020 | 1C 09 6E E6 37 8E 25 53 2B 28 6E 1E 25 E4 74 61
+0030 | D3 0B C4 2E C9 8D 1F C7 08 23 4D 85 4D FC 28 0C
+0040 | 41 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
0050 | 35 5F C3 0B 21 6B E8 6C 02 2B B4 C3 85 FD 64 DE
0060 | 85 1D 9D D0
Payload (de)serialization:
@@ -132,13 +132,13 @@
message_id
8, 8
-0184EC202B91A266
+01B4AE01701DA966
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-60000000
(96 in decimal)
+74000000
(116 in decimal)
Message body length
@@ -150,19 +150,19 @@
nonce
24, 16
-0A1039860765902DFB0CACB7C56E4DD1
+1B09A00AD2F02D7E1C096EE6378E2553
Value generated by client in Step 1
server_nonce
40, 16
-C9359CB9B3E5FDC9EDB5CC2B80599F26
+2B286E1E25E47461D30BC42EC98D1FC7
Server-generated random number
pq
56, 12
-082C8C8064FA4527BF000000
TL byte deserialization
=> bigendian conversion to decimal
=> 3210081805592242111
+08234D854DFC280C41000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2543835934523657281
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
@@ -208,22 +208,22 @@
Proof of work
3) Client decomposes pq into prime factors such that p < q.
-pq = 3210081805592242111
-Decompose into 2 prime cofactors p < q
: 3210081805592242111 = 1715908321 * 1870776991
-p = 1715908321
-q = 1870776991
+pq = 2543835934523657281
+Decompose into 2 prime cofactors p < q
: 2543835934523657281 = 1346951269 * 1888587949
+p = 1346951269
+q = 1888587949
Presenting proof of work; Server authentication
4) encrypted_data
payload generation
First of all, generate an encrypted_data
payload as follows:
Generated payload (excluding transport headers/trailers):
-0000 | 95 5F F5 A9 08 2C 8C 80 64 FA 45 27 BF 00 00 00
-0010 | 04 66 46 AE E1 00 00 00 04 6F 81 CA 9F 00 00 00
-0020 | 0A 10 39 86 07 65 90 2D FB 0C AC B7 C5 6E 4D D1
-0030 | C9 35 9C B9 B3 E5 FD C9 ED B5 CC 2B 80 59 9F 26
-0040 | 10 87 BD AD 57 39 94 4B 58 9D 6D D2 4C 7A B3 B0
-0050 | 3E AA 4A B1 DF AF B8 2E 87 09 B5 18 85 0E 5B 8D
+0000 | 95 5F F5 A9 08 23 4D 85 4D FC 28 0C 41 00 00 00
+0010 | 04 50 48 D8 65 00 00 00 04 70 91 90 AD 00 00 00
+0020 | 1B 09 A0 0A D2 F0 2D 7E 1C 09 6E E6 37 8E 25 53
+0030 | 2B 28 6E 1E 25 E4 74 61 D3 0B C4 2E C9 8D 1F C7
+0040 | 2D 36 E3 CA F0 41 D7 7A 54 F5 DD C1 10 EE 6B 0F
+0050 | 9F 57 93 52 B3 0B 84 CD 97 59 03 2F D5 24 1D 9F
0060 | 02 00 00 00
Payload (de)serialization:
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;
@@ -246,37 +246,37 @@ q = 1870776991
pq
4, 12
-082C8C8064FA4527BF000000
TL byte deserialization
=> bigendian conversion to decimal
=> 3210081805592242111
+08234D854DFC280C41000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2543835934523657281
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p
16, 8
-046646AEE1000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1715908321
+045048D865000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1346951269
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q
24, 8
-046F81CA9F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1870776991
+04709190AD000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1888587949
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce
32, 16
-0A1039860765902DFB0CACB7C56E4DD1
+1B09A00AD2F02D7E1C096EE6378E2553
Value generated by client in Step 1
server_nonce
48, 16
-C9359CB9B3E5FDC9EDB5CC2B80599F26
+2B286E1E25E47461D30BC42EC98D1FC7
Value received from server in Step 2
new_nonce
64, 32
-1087BDAD5739944B589D6DD24C7AB3B0
3EAA4AB1DFAFB82E8709B518850E5B8D
+2D36E3CAF041D77A54F5DDC110EE6B0F
9F579352B30B84CD9759032FD5241D9F
Client-generated random number
@@ -291,39 +291,39 @@ q = 1870776991
The serialization of P_Q_inner_data produces data, which is used to generate encrypted_data as specified in step 4.1.
These are the inputs to the algorithm specified in step 4.1:
-data = 955FF5A9082C8C8064FA4527BF000000046646AEE1000000046F81CA9F0000000A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F261087BDAD5739944B589D6DD24C7AB3B03EAA4AB1DFAFB82E8709B518850E5B8D02000000
-random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A844801765254D5FC4260376EC1536F738A1977AD0419E1C975C25C864EF4CCB49D100EAC8392B4A40B8C53C4C39B480243243212DCDD36A230D3F42D3C0751E8887D00DEF0
+data = 955FF5A908234D854DFC280C41000000045048D86500000004709190AD0000001B09A00AD2F02D7E1C096EE6378E25532B286E1E25E47461D30BC42EC98D1FC72D36E3CAF041D77A54F5DDC110EE6B0F9F579352B30B84CD9759032FD5241D9F02000000
+random_padding_bytes = 10F0A617F030366CC2EF71A81ED42B90190CA7832B8BEAFC416DFF5ACB4AC456E29E57798ED22A0D5740538DD13D7FB66D23FA451876C6B31621404AE1E2F2C6BACAFF48934B9152478E70E4FF3D2BD007D2F6FC3745FF2185A9961C
And this is the output:
-encrypted_data = 4936B5905D07C165BB5F70F454A400AE62F36EA466CD3789B1FE5D9F9D5A819637F6833F2A63DE96FC42118B654A71E8B97952400DDCD71D8C896A20DEDA04A13ED61991CC0F9EEDBC65F0CEF5B1009F76DCF1CEEBAEC4D9C72960E0850203189810402A33E317E5A959549C4242453B883D3BE0AAE7DBAE55665B74931ED0C0AA6FB21B143725B817FEC6C2556CBB49124311500FE348427433AE302E47184A994726CCA192A1EEB9244FAF5CEC041F8AAF67D5B9217160656B4031FFBA23127B94F12A3EC809C69A2EF99CDFC1E0AB2762EB794C6EE3A85DC27F0F00CC4FCC61F1CC9ED28F92F876F3E7B8FAA4E93891A7EE64B39A293730F8BC3D03F7AE93
+encrypted_data = 92B3AB879CD052FAF2C6C9A1E39B43258C187AD82F04408BE1B78FA906D9328AC69E06F6A7BCBAF24729630F303929841FDBBDB90DF2FDA55E6F33BB89D0F007436676A5328D97F6C7E1BC16447E54F9CC56B345F818B24216FD60829E5263EFF6E9E9F85A18E3CD26126ED3C1CBB82CFFBFDC002F17BF40E9D45FDA4252088A456FDE816CBD33DD76436BA014323F345FAFCA016A8925498727E63DDBA6ADC63DB5E5B0B1127C30C86870A70F4D4658EE30AECBB7DF1F62CABD42222E3B81BC8A729A29E0FA817B7D0DA40FBA702456BEF51198CFC60E0085B3BE7EBC62140484A37E859C601B484F06C54A9A65342A21A8F18FBB5345F56D3DAAB0D791D1F2
The length of the final string is 256 bytes.
5) Send req_DH_params query with generated encrypted_data
Sent payload (excluding transport headers/trailers):
-0000 | 00 00 00 00 00 00 00 00 AC 1B 03 00 2B 91 A2 66
-0010 | 40 01 00 00 BE E4 12 D7 0A 10 39 86 07 65 90 2D
-0020 | FB 0C AC B7 C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9
-0030 | ED B5 CC 2B 80 59 9F 26 04 66 46 AE E1 00 00 00
-0040 | 04 6F 81 CA 9F 00 00 00 85 FD 64 DE 85 1D 9D D0
-0050 | FE 00 01 00 49 36 B5 90 5D 07 C1 65 BB 5F 70 F4
-0060 | 54 A4 00 AE 62 F3 6E A4 66 CD 37 89 B1 FE 5D 9F
-0070 | 9D 5A 81 96 37 F6 83 3F 2A 63 DE 96 FC 42 11 8B
-0080 | 65 4A 71 E8 B9 79 52 40 0D DC D7 1D 8C 89 6A 20
-0090 | DE DA 04 A1 3E D6 19 91 CC 0F 9E ED BC 65 F0 CE
-00A0 | F5 B1 00 9F 76 DC F1 CE EB AE C4 D9 C7 29 60 E0
-00B0 | 85 02 03 18 98 10 40 2A 33 E3 17 E5 A9 59 54 9C
-00C0 | 42 42 45 3B 88 3D 3B E0 AA E7 DB AE 55 66 5B 74
-00D0 | 93 1E D0 C0 AA 6F B2 1B 14 37 25 B8 17 FE C6 C2
-00E0 | 55 6C BB 49 12 43 11 50 0F E3 48 42 74 33 AE 30
-00F0 | 2E 47 18 4A 99 47 26 CC A1 92 A1 EE B9 24 4F AF
-0100 | 5C EC 04 1F 8A AF 67 D5 B9 21 71 60 65 6B 40 31
-0110 | FF BA 23 12 7B 94 F1 2A 3E C8 09 C6 9A 2E F9 9C
-0120 | DF C1 E0 AB 27 62 EB 79 4C 6E E3 A8 5D C2 7F 0F
-0130 | 00 CC 4F CC 61 F1 CC 9E D2 8F 92 F8 76 F3 E7 B8
-0140 | FA A4 E9 38 91 A7 EE 64 B3 9A 29 37 30 F8 BC 3D
-0150 | 03 F7 AE 93
+0000 | 00 00 00 00 00 00 00 00 78 C0 07 00 70 1D A9 66
+0010 | 40 01 00 00 BE E4 12 D7 1B 09 A0 0A D2 F0 2D 7E
+0020 | 1C 09 6E E6 37 8E 25 53 2B 28 6E 1E 25 E4 74 61
+0030 | D3 0B C4 2E C9 8D 1F C7 04 50 48 D8 65 00 00 00
+0040 | 04 70 91 90 AD 00 00 00 85 FD 64 DE 85 1D 9D D0
+0050 | FE 00 01 00 92 B3 AB 87 9C D0 52 FA F2 C6 C9 A1
+0060 | E3 9B 43 25 8C 18 7A D8 2F 04 40 8B E1 B7 8F A9
+0070 | 06 D9 32 8A C6 9E 06 F6 A7 BC BA F2 47 29 63 0F
+0080 | 30 39 29 84 1F DB BD B9 0D F2 FD A5 5E 6F 33 BB
+0090 | 89 D0 F0 07 43 66 76 A5 32 8D 97 F6 C7 E1 BC 16
+00A0 | 44 7E 54 F9 CC 56 B3 45 F8 18 B2 42 16 FD 60 82
+00B0 | 9E 52 63 EF F6 E9 E9 F8 5A 18 E3 CD 26 12 6E D3
+00C0 | C1 CB B8 2C FF BF DC 00 2F 17 BF 40 E9 D4 5F DA
+00D0 | 42 52 08 8A 45 6F DE 81 6C BD 33 DD 76 43 6B A0
+00E0 | 14 32 3F 34 5F AF CA 01 6A 89 25 49 87 27 E6 3D
+00F0 | DB A6 AD C6 3D B5 E5 B0 B1 12 7C 30 C8 68 70 A7
+0100 | 0F 4D 46 58 EE 30 AE CB B7 DF 1F 62 CA BD 42 22
+0110 | 2E 3B 81 BC 8A 72 9A 29 E0 FA 81 7B 7D 0D A4 0F
+0120 | BA 70 24 56 BE F5 11 98 CF C6 0E 00 85 B3 BE 7E
+0130 | BC 62 14 04 84 A3 7E 85 9C 60 1B 48 4F 06 C5 4A
+0140 | 9A 65 34 2A 21 A8 F1 8F BB 53 45 F5 6D 3D AA B0
+0150 | D7 91 D1 F2
Payload (de)serialization:
req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params;
@@ -345,7 +345,7 @@ random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
message_id
8, 8
-AC1B03002B91A266
+78C00700701DA966
Message ID generated as specified here » (unixtime() << 32) + (N*4)
@@ -363,25 +363,25 @@ random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
nonce
24, 16
-0A1039860765902DFB0CACB7C56E4DD1
+1B09A00AD2F02D7E1C096EE6378E2553
Value generated by client in Step 1
server_nonce
40, 16
-C9359CB9B3E5FDC9EDB5CC2B80599F26
+2B286E1E25E47461D30BC42EC98D1FC7
Value received from server in Step 2
p
56, 8
-046646AEE1000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1715908321
+045048D865000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1346951269
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q
64, 8
-046F81CA9F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1870776991
+04709190AD000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1888587949
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
@@ -393,7 +393,7 @@ random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
encrypted_data
80, 260
-FE0001004936B5905D07C165BB5F70F4
54A400AE62F36EA466CD3789B1FE5D9F
9D5A819637F6833F2A63DE96FC42118B
654A71E8B97952400DDCD71D8C896A20
DEDA04A13ED61991CC0F9EEDBC65F0CE
F5B1009F76DCF1CEEBAEC4D9C72960E0
850203189810402A33E317E5A959549C
4242453B883D3BE0AAE7DBAE55665B74
931ED0C0AA6FB21B143725B817FEC6C2
556CBB49124311500FE348427433AE30
2E47184A994726CCA192A1EEB9244FAF
5CEC041F8AAF67D5B9217160656B4031
FFBA23127B94F12A3EC809C69A2EF99C
DFC1E0AB2762EB794C6EE3A85DC27F0F
00CC4FCC61F1CC9ED28F92F876F3E7B8
FAA4E93891A7EE64B39A293730F8BC3D
03F7AE93
+FE00010092B3AB879CD052FAF2C6C9A1
E39B43258C187AD82F04408BE1B78FA9
06D9328AC69E06F6A7BCBAF24729630F
303929841FDBBDB90DF2FDA55E6F33BB
89D0F007436676A5328D97F6C7E1BC16
447E54F9CC56B345F818B24216FD6082
9E5263EFF6E9E9F85A18E3CD26126ED3
C1CBB82CFFBFDC002F17BF40E9D45FDA
4252088A456FDE816CBD33DD76436BA0
14323F345FAFCA016A8925498727E63D
DBA6ADC63DB5E5B0B1127C30C86870A7
0F4D4658EE30AECBB7DF1F62CABD4222
2E3B81BC8A729A29E0FA817B7D0DA40F
BA702456BEF51198CFC60E0085B3BE7E
BC62140484A37E859C601B484F06C54A
9A65342A21A8F18FBB5345F56D3DAAB0
D791D1F2
Value generated above
@@ -402,47 +402,47 @@ random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
6) Server responds with:
Received payload (excluding transport headers/trailers):
-0000 | 00 00 00 00 00 00 00 00 01 C8 BA F5 2B 91 A2 66
-0010 | 88 02 00 00 5C 07 E8 D0 0A 10 39 86 07 65 90 2D
-0020 | FB 0C AC B7 C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9
-0030 | ED B5 CC 2B 80 59 9F 26 FE 50 02 00 50 79 4F F6
-0040 | F5 15 C8 15 AE B8 2B 19 BB FD B1 40 17 BD 59 29
-0050 | FC 83 EA A9 41 65 E2 21 F6 13 2F 04 E9 A1 D2 69
-0060 | 07 7A 43 4C 3D 44 9F E8 ED 47 BA 5B 88 C8 62 E8
-0070 | A7 22 1E 05 AF D6 31 22 C9 EB 5B 3A 80 08 2F 44
-0080 | 1E F0 BE 61 17 E9 AF F9 FE 72 D6 DF EC B5 9F 4D
-0090 | 78 50 70 60 E0 11 42 B0 F4 53 42 4E 26 C0 A7 7E
-00A0 | 7A C8 14 11 D8 86 5F 01 3F F2 BE 0A F8 03 A3 AA
-00B0 | 80 6F 2A 86 14 23 F2 83 4E D5 AF 67 69 8D B6 5D
-00C0 | F8 25 5C 2A 1C BD 02 EA D0 B9 AB 07 64 47 50 FB
-00D0 | 0E DB EF 41 ED CE E4 41 DD D9 94 70 A7 59 F5 53
-00E0 | 0F B6 5E E0 ED 80 6F 00 06 FF 1F 65 E7 5F 13 F4
-00F0 | 2E 0B 37 A5 6D 92 A3 CA CB 02 E8 BB 97 8B EB 33
-0100 | D8 50 3F 46 D2 10 AC 2B 9A 13 24 6A E4 3A 0B BD
-0110 | 38 C3 E9 8C 5D 00 48 97 FE 50 FA 9A D6 CA 19 E0
-0120 | 76 BF 59 AF D2 C7 65 93 81 C3 42 D8 36 A9 E7 EA
-0130 | A4 25 7E 42 12 60 23 3A 3A 2F 5C 08 A7 B6 91 E9
-0140 | B0 C7 4A 7E 15 5A 47 3A 9E E1 F7 AA 24 DA 0B A1
-0150 | ED 68 D3 F0 A9 E1 0B 87 9D 64 FC 37 49 E1 97 30
-0160 | 2C 34 B7 BD 25 BD 83 40 8E 9E 49 63 AA D2 3C 7F
-0170 | A9 ED A1 9E EE 5B AB 9D B3 EC 9E FB 40 97 12 60
-0180 | 94 CA 2A 81 15 83 23 4F 79 AC AC 6D FD 71 3C 18
-0190 | F6 90 5E A4 20 78 DA 22 7E 34 0F 34 3E 7C B3 3E
-01A0 | 2D 12 6E B3 32 7B 13 81 36 78 51 17 8A 7A 1F 6D
-01B0 | 34 B0 39 59 94 AE 50 9D BF AA BB AF B1 C8 CF 6A
-01C0 | 44 31 BE C6 C0 C5 7C AC 6C 87 48 3F 49 1C 3D F8
-01D0 | C7 50 24 68 7E 67 0F 11 FD B8 08 8E 71 CC CB 88
-01E0 | 91 48 28 A4 EE 1B A3 12 8E 58 C1 32 B3 7F 2F B6
-01F0 | EE 2D 30 51 CC FC 76 F1 95 BF 5D DC 0C EF DB B3
-0200 | 93 AE 5A 23 40 54 52 19 1E F6 B7 3B 44 A2 4A D0
-0210 | 45 08 10 18 AC 05 97 6D 6C 15 45 78 20 B7 45 0A
-0220 | 65 6E 88 30 BB 5A 82 A5 29 51 1D F4 D9 2D C4 02
-0230 | 95 C5 5B AD 0C 5F 97 FD 36 DB 04 1E FD 0A E0 B3
-0240 | 20 D3 50 4D 00 72 3E 81 8D 8B B5 EC 76 B8 59 71
-0250 | FC D9 B8 C3 A2 34 DE 92 5E 15 08 6A DE 56 4E 85
-0260 | A9 1D 2E EA D7 30 52 E2 99 48 20 EE 60 D4 B8 5C
-0270 | 21 25 20 94 CD BC 19 68 FE CE AD 84 DB 66 51 ED
-0280 | FA 0B FB F9 EA BB CA 7E AC 80 16 B5
+0000 | 00 00 00 00 00 00 00 00 01 84 B7 9C 70 1D A9 66
+0010 | F4 02 00 00 5C 07 E8 D0 1B 09 A0 0A D2 F0 2D 7E
+0020 | 1C 09 6E E6 37 8E 25 53 2B 28 6E 1E 25 E4 74 61
+0030 | D3 0B C4 2E C9 8D 1F C7 FE 50 02 00 DF F2 AB 83
+0040 | F3 18 F2 D9 9F 8D BC B3 CB 16 C6 51 43 08 C8 D9
+0050 | B2 F5 BE BD B0 3B 9D 3D 0B 6C D0 C6 B6 5A 01 DD
+0060 | B4 C4 27 D2 01 CE 8A FC 4F AE 07 37 EB B1 46 26
+0070 | 2F 12 09 AA 86 6E BB FF A7 C3 80 22 76 A4 1C D5
+0080 | 66 54 2D 5D 61 CE 19 AE 3D C2 76 C6 3F 9D 48 24
+0090 | 71 20 0B A0 F8 4D DA F9 D5 85 61 7F 22 81 5F 36
+00A0 | 09 CE CA 39 7F 09 3D 73 D2 29 10 19 D9 9A 8E DD
+00B0 | BE 68 E3 27 B9 8F A9 2C E9 42 F3 B7 5F 4D 03 4E
+00C0 | D3 29 0B 56 B2 D6 E8 BA 8F 1D BD 40 11 92 BE 0E
+00D0 | 3A 41 03 F5 37 CB CB F9 30 F6 9E 6A C2 9D 84 96
+00E0 | FD 5C F5 A7 61 9D 6E 02 49 8F 42 9B A2 D2 64 1F
+00F0 | 31 A8 4B 8F CF 31 F9 FA B3 F4 28 84 29 66 58 A0
+0100 | 52 0C CB 42 46 DD A8 D2 D1 0D 55 DC CA 6D A7 B3
+0110 | 81 17 09 FE 42 60 47 88 7D A3 0A F9 0C B3 E4 79
+0120 | FC F2 CB 3F 38 E5 58 6E E3 33 A8 3D D4 D5 E2 5F
+0130 | 57 D9 A0 62 B5 9B 8A DB 77 06 CF 3C AB E6 2C F5
+0140 | EA 10 28 57 D4 3A 28 87 79 64 6B 5E CA C9 21 59
+0150 | 23 FD 2B 09 34 04 94 31 6D F0 E0 D9 7B A3 66 D8
+0160 | 3D 22 70 79 E4 8B 7C 02 19 AC 63 FD 50 6F 18 96
+0170 | 79 00 DE C5 F1 5A 14 D7 D4 A0 3E 98 02 A6 4A 3B
+0180 | EF E4 FD 95 7C 69 B6 D0 23 73 FD AD AB AF 63 0D
+0190 | A5 47 84 E1 AC 50 C1 AA C3 88 E2 D5 13 B9 BD 10
+01A0 | 64 7A F4 D9 32 33 5B 57 F2 D8 C4 E6 C3 55 FA 02
+01B0 | 6C 8C 8F CE E2 08 77 C9 60 A4 2A 29 01 B8 BE AD
+01C0 | 9A 3A CB 9B A5 D3 88 F2 82 D9 29 2F D3 7B A4 89
+01D0 | 2D A6 9D 35 92 D2 C2 45 01 51 95 52 45 EB 89 6A
+01E0 | 29 8D 85 2B 37 82 EC EF 9D 7D A5 FB 2A 08 15 F8
+01F0 | 1D 72 FD 53 29 05 42 AE 57 77 50 5F B0 53 2C 0A
+0200 | 8E 0A 1D D5 DB E3 B7 90 82 5A 1A 8B 31 90 0A 6A
+0210 | 00 4A 79 05 75 7B 66 4B 69 AF 22 FD 73 88 C6 39
+0220 | 87 5D BE 35 17 E0 3A 05 9F A6 64 C4 B3 B6 A6 51
+0230 | D6 DD DC F8 EC 17 0B C1 D1 7B 78 78 4A 07 0B ED
+0240 | 40 DE 5C F9 A9 4E 75 2A 93 00 EF CD 49 EF 68 F7
+0250 | B0 CD E0 FE 80 43 16 5D E5 9E D4 6D 2A EA 0A 37
+0260 | FA 78 9C 98 13 B0 71 4A 96 51 7F 63 60 06 97 AE
+0270 | 85 A7 A0 A0 15 F9 7F 8B 33 57 62 06 E7 52 70 E6
+0280 | AF 35 94 10 33 ED F1 3F 8B E1 F0 68
Payload (de)serialization:
server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
@@ -464,13 +464,13 @@ random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
message_id
8, 8
-01C8BAF52B91A266
+0184B79C701DA966
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-88020000
(648 in decimal)
+F4020000
(756 in decimal)
Message body length
@@ -482,19 +482,19 @@ random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
nonce
24, 16
-0A1039860765902DFB0CACB7C56E4DD1
+1B09A00AD2F02D7E1C096EE6378E2553
Value generated by client in Step 1
server_nonce
40, 16
-C9359CB9B3E5FDC9EDB5CC2B80599F26
+2B286E1E25E47461D30BC42EC98D1FC7
Value received from server in Step 2
encrypted_answer
56, 596
-FE50020050794FF6F515C815AEB82B19
BBFDB14017BD5929FC83EAA94165E221
F6132F04E9A1D269077A434C3D449FE8
ED47BA5B88C862E8A7221E05AFD63122
C9EB5B3A80082F441EF0BE6117E9AFF9
FE72D6DFECB59F4D78507060E01142B0
F453424E26C0A77E7AC81411D8865F01
3FF2BE0AF803A3AA806F2A861423F283
4ED5AF67698DB65DF8255C2A1CBD02EA
D0B9AB07644750FB0EDBEF41EDCEE441
DDD99470A759F5530FB65EE0ED806F00
06FF1F65E75F13F42E0B37A56D92A3CA
CB02E8BB978BEB33D8503F46D210AC2B
9A13246AE43A0BBD38C3E98C5D004897
FE50FA9AD6CA19E076BF59AFD2C76593
81C342D836A9E7EAA4257E421260233A
3A2F5C08A7B691E9B0C74A7E155A473A
9EE1F7AA24DA0BA1ED68D3F0A9E10B87
9D64FC3749E197302C34B7BD25BD8340
8E9E4963AAD23C7FA9EDA19EEE5BAB9D
B3EC9EFB4097126094CA2A811583234F
79ACAC6DFD713C18F6905EA42078DA22
7E340F343E7CB33E2D126EB3327B1381
367851178A7A1F6D34B0395994AE509D
BFAABBAFB1C8CF6A4431BEC6C0C57CAC
6C87483F491C3DF8C75024687E670F11
FDB8088E71CCCB88914828A4EE1BA312
8E58C132B37F2FB6EE2D3051CCFC76F1
95BF5DDC0CEFDBB393AE5A2340545219
1EF6B73B44A24AD045081018AC05976D
6C15457820B7450A656E8830BB5A82A5
29511DF4D92DC40295C55BAD0C5F97FD
36DB041EFD0AE0B320D3504D00723E81
8D8BB5EC76B85971FCD9B8C3A234DE92
5E15086ADE564E85A91D2EEAD73052E2
994820EE60D4B85C21252094CDBC1968
FECEAD84DB6651EDFA0BFBF9EABBCA7E
AC8016B5
+FE500200DFF2AB83F318F2D99F8DBCB3
CB16C6514308C8D9B2F5BEBDB03B9D3D
0B6CD0C6B65A01DDB4C427D201CE8AFC
4FAE0737EBB146262F1209AA866EBBFF
A7C3802276A41CD566542D5D61CE19AE
3DC276C63F9D482471200BA0F84DDAF9
D585617F22815F3609CECA397F093D73
D2291019D99A8EDDBE68E327B98FA92C
E942F3B75F4D034ED3290B56B2D6E8BA
8F1DBD401192BE0E3A4103F537CBCBF9
30F69E6AC29D8496FD5CF5A7619D6E02
498F429BA2D2641F31A84B8FCF31F9FA
B3F42884296658A0520CCB4246DDA8D2
D10D55DCCA6DA7B3811709FE42604788
7DA30AF90CB3E479FCF2CB3F38E5586E
E333A83DD4D5E25F57D9A062B59B8ADB
7706CF3CABE62CF5EA102857D43A2887
79646B5ECAC9215923FD2B0934049431
6DF0E0D97BA366D83D227079E48B7C02
19AC63FD506F18967900DEC5F15A14D7
D4A03E9802A64A3BEFE4FD957C69B6D0
2373FDADABAF630DA54784E1AC50C1AA
C388E2D513B9BD10647AF4D932335B57
F2D8C4E6C355FA026C8C8FCEE20877C9
60A42A2901B8BEAD9A3ACB9BA5D388F2
82D9292FD37BA4892DA69D3592D2C245
0151955245EB896A298D852B3782ECEF
9D7DA5FB2A0815F81D72FD53290542AE
5777505FB0532C0A8E0A1DD5DBE3B790
825A1A8B31900A6A004A7905757B664B
69AF22FD7388C639875DBE3517E03A05
9FA664C4B3B6A651D6DDDCF8EC170BC1
D17B78784A070BED40DE5CF9A94E752A
9300EFCD49EF68F7B0CDE0FE8043165D
E59ED46D2AEA0A37FA789C9813B0714A
96517F63600697AE85A7A0A015F97F8B
33576206E75270E6AF35941033EDF13F
8BE1F068
See below
@@ -502,20 +502,20 @@ random_padding_bytes = 5560F9B1379CF97E08C10982636784F8F4CD7009FE7E0A84480176525
Decrypt encrypted_answer
using the reverse of the process specified in step 6:
-encrypted_answer = 50794FF6F515C815AEB82B19BBFDB14017BD5929FC83EAA94165E221F6132F04E9A1D269077A434C3D449FE8ED47BA5B88C862E8A7221E05AFD63122C9EB5B3A80082F441EF0BE6117E9AFF9FE72D6DFECB59F4D78507060E01142B0F453424E26C0A77E7AC81411D8865F013FF2BE0AF803A3AA806F2A861423F2834ED5AF67698DB65DF8255C2A1CBD02EAD0B9AB07644750FB0EDBEF41EDCEE441DDD99470A759F5530FB65EE0ED806F0006FF1F65E75F13F42E0B37A56D92A3CACB02E8BB978BEB33D8503F46D210AC2B9A13246AE43A0BBD38C3E98C5D004897FE50FA9AD6CA19E076BF59AFD2C7659381C342D836A9E7EAA4257E421260233A3A2F5C08A7B691E9B0C74A7E155A473A9EE1F7AA24DA0BA1ED68D3F0A9E10B879D64FC3749E197302C34B7BD25BD83408E9E4963AAD23C7FA9EDA19EEE5BAB9DB3EC9EFB4097126094CA2A811583234F79ACAC6DFD713C18F6905EA42078DA227E340F343E7CB33E2D126EB3327B1381367851178A7A1F6D34B0395994AE509DBFAABBAFB1C8CF6A4431BEC6C0C57CAC6C87483F491C3DF8C75024687E670F11FDB8088E71CCCB88914828A4EE1BA3128E58C132B37F2FB6EE2D3051CCFC76F195BF5DDC0CEFDBB393AE5A23405452191EF6B73B44A24AD045081018AC05976D6C15457820B7450A656E8830BB5A82A529511DF4D92DC40295C55BAD0C5F97FD36DB041EFD0AE0B320D3504D00723E818D8BB5EC76B85971FCD9B8C3A234DE925E15086ADE564E85A91D2EEAD73052E2994820EE60D4B85C21252094CDBC1968FECEAD84DB6651EDFA0BFBF9EABBCA7EAC8016B5
-tmp_aes_key = CF42CE543CA64B8450A2858436C60B94FF825A523F7C2B217DEBFEDD120851B6
-tmp_aes_iv = 672B46D3963F476DFB337FE5A0F2947764124A707F0F751671B2EF291087BDAD
+encrypted_answer = DFF2AB83F318F2D99F8DBCB3CB16C6514308C8D9B2F5BEBDB03B9D3D0B6CD0C6B65A01DDB4C427D201CE8AFC4FAE0737EBB146262F1209AA866EBBFFA7C3802276A41CD566542D5D61CE19AE3DC276C63F9D482471200BA0F84DDAF9D585617F22815F3609CECA397F093D73D2291019D99A8EDDBE68E327B98FA92CE942F3B75F4D034ED3290B56B2D6E8BA8F1DBD401192BE0E3A4103F537CBCBF930F69E6AC29D8496FD5CF5A7619D6E02498F429BA2D2641F31A84B8FCF31F9FAB3F42884296658A0520CCB4246DDA8D2D10D55DCCA6DA7B3811709FE426047887DA30AF90CB3E479FCF2CB3F38E5586EE333A83DD4D5E25F57D9A062B59B8ADB7706CF3CABE62CF5EA102857D43A288779646B5ECAC9215923FD2B09340494316DF0E0D97BA366D83D227079E48B7C0219AC63FD506F18967900DEC5F15A14D7D4A03E9802A64A3BEFE4FD957C69B6D02373FDADABAF630DA54784E1AC50C1AAC388E2D513B9BD10647AF4D932335B57F2D8C4E6C355FA026C8C8FCEE20877C960A42A2901B8BEAD9A3ACB9BA5D388F282D9292FD37BA4892DA69D3592D2C2450151955245EB896A298D852B3782ECEF9D7DA5FB2A0815F81D72FD53290542AE5777505FB0532C0A8E0A1DD5DBE3B790825A1A8B31900A6A004A7905757B664B69AF22FD7388C639875DBE3517E03A059FA664C4B3B6A651D6DDDCF8EC170BC1D17B78784A070BED40DE5CF9A94E752A9300EFCD49EF68F7B0CDE0FE8043165DE59ED46D2AEA0A37FA789C9813B0714A96517F63600697AE85A7A0A015F97F8B33576206E75270E6AF35941033EDF13F8BE1F068
+tmp_aes_key = BF8FF67F42007055B61FAE3671FBA3AF607DF251913CF366DE0BA460421C070B
+tmp_aes_iv = 2D68123E7ACC27D87F65F78C0E79A4322ADE8167C038837EE3CF90242D36E3CA
Yielding:
-answer_with_hash = 56D52B1FE4961315681D5CCC0AF1CE7F6099165EBA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010073A185573E261B72086F130E6CF8BD8F6628575E840FABD8E422B65EF77AA31E7DC312263D43852BC5BD169FB181A6F79AED9A7D777D199D8F5998E2767680CBB4B038687EF52D6221688A39476F5167175211D52E3C774161C2E64448DC92ECFC123058AB29EC8F481FA99F779DCD48FB83942AB1F72FDAAFC3009629FF47BEE6C9DBEEB915CDEA6FB825E64BA3EA32E7C1D4BA7569A6D7C8F4BC9FB2DF84759412B6E78F219274833071BCF440437D6042A5C51DFE8217E0C15EDF03F9A9D181C922DDB8DD139E538860AA83B35799984E6680658DC0173E53B5746E03714312FA93D0ED398C7158093442CD650134C3C6DF5C98CB8E4494FBA2DEE763F36B2B91A266E701676115091A16
-answer = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010073A185573E261B72086F130E6CF8BD8F6628575E840FABD8E422B65EF77AA31E7DC312263D43852BC5BD169FB181A6F79AED9A7D777D199D8F5998E2767680CBB4B038687EF52D6221688A39476F5167175211D52E3C774161C2E64448DC92ECFC123058AB29EC8F481FA99F779DCD48FB83942AB1F72FDAAFC3009629FF47BEE6C9DBEEB915CDEA6FB825E64BA3EA32E7C1D4BA7569A6D7C8F4BC9FB2DF84759412B6E78F219274833071BCF440437D6042A5C51DFE8217E0C15EDF03F9A9D181C922DDB8DD139E538860AA83B35799984E6680658DC0173E53B5746E03714312FA93D0ED398C7158093442CD650134C3C6DF5C98CB8E4494FBA2DEE763F36B2B91A266E701676115091A16
+answer_with_hash = 238E6CEA29AFA41F508619EC043179DB59372EEEBA0D89B51B09A00AD2F02D7E1C096EE6378E25532B286E1E25E47461D30BC42EC98D1FC703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100353086B5320D6D2ADFBBCF3E38188758836182EFF9E322C4ECCDA84589EB39E6AF37FCA53C050EACA31778DA6753B12507D57597073C5150895F0A181D25071D1B0B7D1C7DCDE99DF8069B1E795FA281082E4E16C0D3078C2867D58D8DE4E57122A960366DA5C4CA552FA22F413E8F958F91A7D4AE75D1957D9F5526E592C79EC052ADD1D6FBC2301EB7D3AB7A47C5643B0ACAAB09755AC14878EB0244F01F41A35302AC03619D62FB65E434E8390891C0517B7D3C77FF8016836B9D291BD10F269016F284FDED3A295B5753EFC3A6A79326314425973FD6FBDC464CC310A210AB138E69A987F90425A92C5D5C7BED21DA71ECEF6760656C244815F5455FC95B701DA9660A5EE20EAF966551
+answer = BA0D89B51B09A00AD2F02D7E1C096EE6378E25532B286E1E25E47461D30BC42EC98D1FC703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100353086B5320D6D2ADFBBCF3E38188758836182EFF9E322C4ECCDA84589EB39E6AF37FCA53C050EACA31778DA6753B12507D57597073C5150895F0A181D25071D1B0B7D1C7DCDE99DF8069B1E795FA281082E4E16C0D3078C2867D58D8DE4E57122A960366DA5C4CA552FA22F413E8F958F91A7D4AE75D1957D9F5526E592C79EC052ADD1D6FBC2301EB7D3AB7A47C5643B0ACAAB09755AC14878EB0244F01F41A35302AC03619D62FB65E434E8390891C0517B7D3C77FF8016836B9D291BD10F269016F284FDED3A295B5753EFC3A6A79326314425973FD6FBDC464CC310A210AB138E69A987F90425A92C5D5C7BED21DA71ECEF6760656C244815F5455FC95B701DA9660A5EE20EAF966551
Generated payload (excluding transport headers/trailers):
-0000 | BA 0D 89 B5 0A 10 39 86 07 65 90 2D FB 0C AC B7
-0010 | C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9 ED B5 CC 2B
-0020 | 80 59 9F 26 03 00 00 00 FE 00 01 00 C7 1C AE B9
+0000 | BA 0D 89 B5 1B 09 A0 0A D2 F0 2D 7E 1C 09 6E E6
+0010 | 37 8E 25 53 2B 28 6E 1E 25 E4 74 61 D3 0B C4 2E
+0020 | C9 8D 1F C7 03 00 00 00 FE 00 01 00 C7 1C AE B9
0030 | C6 B1 C9 04 8E 6C 52 2F 70 F1 3F 73 98 0D 40 23
0040 | 8E 3E 21 C1 49 34 D0 37 56 3D 93 0F 48 19 8A 0A
0050 | A7 C1 40 58 22 94 93 D2 25 30 F4 DB FA 33 6F 6E
@@ -532,23 +532,23 @@ answer = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
0100 | F4 7B F9 59 D9 56 85 0C E9 29 85 1F 0D 81 15 F6
0110 | 35 B1 05 EE 2E 4E 15 D0 4B 24 54 BF 6F 4F AD F0
0120 | 34 B1 04 03 11 9C D8 E3 B9 2F CC 5B FE 00 01 00
-0130 | 73 A1 85 57 3E 26 1B 72 08 6F 13 0E 6C F8 BD 8F
-0140 | 66 28 57 5E 84 0F AB D8 E4 22 B6 5E F7 7A A3 1E
-0150 | 7D C3 12 26 3D 43 85 2B C5 BD 16 9F B1 81 A6 F7
-0160 | 9A ED 9A 7D 77 7D 19 9D 8F 59 98 E2 76 76 80 CB
-0170 | B4 B0 38 68 7E F5 2D 62 21 68 8A 39 47 6F 51 67
-0180 | 17 52 11 D5 2E 3C 77 41 61 C2 E6 44 48 DC 92 EC
-0190 | FC 12 30 58 AB 29 EC 8F 48 1F A9 9F 77 9D CD 48
-01A0 | FB 83 94 2A B1 F7 2F DA AF C3 00 96 29 FF 47 BE
-01B0 | E6 C9 DB EE B9 15 CD EA 6F B8 25 E6 4B A3 EA 32
-01C0 | E7 C1 D4 BA 75 69 A6 D7 C8 F4 BC 9F B2 DF 84 75
-01D0 | 94 12 B6 E7 8F 21 92 74 83 30 71 BC F4 40 43 7D
-01E0 | 60 42 A5 C5 1D FE 82 17 E0 C1 5E DF 03 F9 A9 D1
-01F0 | 81 C9 22 DD B8 DD 13 9E 53 88 60 AA 83 B3 57 99
-0200 | 98 4E 66 80 65 8D C0 17 3E 53 B5 74 6E 03 71 43
-0210 | 12 FA 93 D0 ED 39 8C 71 58 09 34 42 CD 65 01 34
-0220 | C3 C6 DF 5C 98 CB 8E 44 94 FB A2 DE E7 63 F3 6B
-0230 | 2B 91 A2 66
+0130 | 35 30 86 B5 32 0D 6D 2A DF BB CF 3E 38 18 87 58
+0140 | 83 61 82 EF F9 E3 22 C4 EC CD A8 45 89 EB 39 E6
+0150 | AF 37 FC A5 3C 05 0E AC A3 17 78 DA 67 53 B1 25
+0160 | 07 D5 75 97 07 3C 51 50 89 5F 0A 18 1D 25 07 1D
+0170 | 1B 0B 7D 1C 7D CD E9 9D F8 06 9B 1E 79 5F A2 81
+0180 | 08 2E 4E 16 C0 D3 07 8C 28 67 D5 8D 8D E4 E5 71
+0190 | 22 A9 60 36 6D A5 C4 CA 55 2F A2 2F 41 3E 8F 95
+01A0 | 8F 91 A7 D4 AE 75 D1 95 7D 9F 55 26 E5 92 C7 9E
+01B0 | C0 52 AD D1 D6 FB C2 30 1E B7 D3 AB 7A 47 C5 64
+01C0 | 3B 0A CA AB 09 75 5A C1 48 78 EB 02 44 F0 1F 41
+01D0 | A3 53 02 AC 03 61 9D 62 FB 65 E4 34 E8 39 08 91
+01E0 | C0 51 7B 7D 3C 77 FF 80 16 83 6B 9D 29 1B D1 0F
+01F0 | 26 90 16 F2 84 FD ED 3A 29 5B 57 53 EF C3 A6 A7
+0200 | 93 26 31 44 25 97 3F D6 FB DC 46 4C C3 10 A2 10
+0210 | AB 13 8E 69 A9 87 F9 04 25 A9 2C 5D 5C 7B ED 21
+0220 | DA 71 EC EF 67 60 65 6C 24 48 15 F5 45 5F C9 5B
+0230 | 70 1D A9 66
Payload (de)serialization:
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;
@@ -570,13 +570,13 @@ answer = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
nonce
4, 16
-0A1039860765902DFB0CACB7C56E4DD1
+1B09A00AD2F02D7E1C096EE6378E2553
Value generated by client in Step 1
server_nonce
20, 16
-C9359CB9B3E5FDC9EDB5CC2B80599F26
+2B286E1E25E47461D30BC42EC98D1FC7
Value received from server in Step 2
@@ -594,13 +594,13 @@ answer = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
g_a
300, 260
-FE00010073A185573E261B72086F130E
6CF8BD8F6628575E840FABD8E422B65E
F77AA31E7DC312263D43852BC5BD169F
B181A6F79AED9A7D777D199D8F5998E2
767680CBB4B038687EF52D6221688A39
476F5167175211D52E3C774161C2E644
48DC92ECFC123058AB29EC8F481FA99F
779DCD48FB83942AB1F72FDAAFC30096
29FF47BEE6C9DBEEB915CDEA6FB825E6
4BA3EA32E7C1D4BA7569A6D7C8F4BC9F
B2DF84759412B6E78F219274833071BC
F440437D6042A5C51DFE8217E0C15EDF
03F9A9D181C922DDB8DD139E538860AA
83B35799984E6680658DC0173E53B574
6E03714312FA93D0ED398C7158093442
CD650134C3C6DF5C98CB8E4494FBA2DE
E763F36B
+FE000100353086B5320D6D2ADFBBCF3E
38188758836182EFF9E322C4ECCDA845
89EB39E6AF37FCA53C050EACA31778DA
6753B12507D57597073C5150895F0A18
1D25071D1B0B7D1C7DCDE99DF8069B1E
795FA281082E4E16C0D3078C2867D58D
8DE4E57122A960366DA5C4CA552FA22F
413E8F958F91A7D4AE75D1957D9F5526
E592C79EC052ADD1D6FBC2301EB7D3AB
7A47C5643B0ACAAB09755AC14878EB02
44F01F41A35302AC03619D62FB65E434
E8390891C0517B7D3C77FF8016836B9D
291BD10F269016F284FDED3A295B5753
EFC3A6A79326314425973FD6FBDC464C
C310A210AB138E69A987F90425A92C5D
5C7BED21DA71ECEF6760656C244815F5
455FC95B
g_a
diffie-hellman parameter
server_time
560, 4
-2B91A266
(1721930027 in decimal)
+701DA966
(1722359152 in decimal)
Server time
@@ -609,34 +609,34 @@ answer = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
7) Client computes random 2048-bit number b (using a sufficient amount of entropy) and sends the server a message
First, generate a secure random 2048-bit number b:
-b = E5AFB9BD1A8109B130D03FEA6DFD0FD35F43F5274812B439FD03FFD5C9F1198FA69356AB11FD14CBACE9D880706648EC6FC4C30A9B64E2715493F41A5878E46953CA3ABDDEFC785ED9520025F46589EA3F510DF9CBBC00C68E5662496B20A6AE65FFDBA3129F181EEC911239E56A0072390465C8E23D81FB8A7B8C97E3551E27FDCBB2ADA5ACD6BB85D83567F7CAC988292050BE57CA777BA270DBBD261425C2FE46B4B13E21E58DACB8669DDA31BD4E60A7D89C4B564C7AF7CD6E02E2277D01C7F5CFBB85CDB44F085738DEE5C28EDD1FE30921CD8AE5341AA44CFE3B20EB158D06BA71ACF535A9E365D3CDBB87B38CDDA60600B6FCFA20526A286663C10A69
+b = C50B014B940357684175E3F98827022D9D690611C4B50ACEB30167B0BD71C1D0D93B1FB077B0033298D55D269D26BDDA90D21FDAAD2C71387FB9E8E10883147BBDB4BCF1F7218DFFA0FC619578460A108343A174D73DF72294DBCFAB78B657B29B13F503A51D48BBCEEC273B13DA839C8556471D883DC9991931A5CBA9E77A1D2BD493DC097BE3E98E8D634E26E684EFF957D4093E01F8EA80A37FDF9657ECE73C41C9F0D9F47935D22F21C5F3B869A38A4322C2B57CAA4E8564A8DE38A41DAFEAC81DC8B47115EF1CBAA3E32DD36A93FF5D1994B9A060E0A1E2A84766EC1FA266AF4E7F4AE27B8C6D2556D57346CB7D5AB960975EF6EA6BE0DB2BF3095150E9
Then compute g_b = pow(g, b) mod dh_prime
-g_b = 86E93E1DF1F8460AE26C7A848264DBFF888F6126739A56EA5DD6C0788CC7F52A594F58ECED2C2E2005E5D2BF14503970BC4D9833CDCEB97A57E2E3EDDF3A7684C2A11AF274DD99760D4EFEDACF5B04F55BB215FA2A3F672D57CC3A3D9A13657FA6C33B81646A4B7353D5A9310EA25BB850932969E98B244B80C98E33BD3B9F884B03FB4751FB6B12E14B17362A89508F6E2044396AE62A08F24015FB583C7B7151807D88966CF4D6113D22A8CB2020B8765F9F8F244D4E38FDD66B806347FBC1C3FC8D3FA0B645611237104A469B8160A7817A36B87AB641C9540D5C6823A6E390D9A8C247DD89B8F4653F26800174BF6FE88CF7B61E4F653422FA19188FE3D4
+g_b = 5BB8E71133D532E21ECEC093F121C606EA2703CF4544B34DBFA5ED57D94186BCCBFA1E1E1A0F4681518D21568CBA2A4D5B0650525D662B8D0631D10B697C0BFE71E35E798B925904EDD66EEF684927DDB490CC98CC6ADCC76A75ACCC698EFBDA1BD415D4E9E14B4A570E56DB3964B1C1D86601A3EBBF6F55FC92D7313FD8F9F17EC84386D9D7E2BFA47A318ACC094B4E75D38AAB017423EC8EA025B23FE03B3F4793AFAECB810A35077996BA424368DE5F24CCE33BA8958E86BB56A5F49E0412C02E46F7A39E2C50442CC2A0E46A0F736D04F56175CF52570C8CC661FEEDA2F4EAC223D71B10C7E78C2C7D86B28252F72B29649A488A29E9B0D3ABA238AA2EF7
7.1) generation of encrypted_data
Generated payload (excluding transport headers/trailers):
-0000 | 54 B6 43 66 0A 10 39 86 07 65 90 2D FB 0C AC B7
-0010 | C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9 ED B5 CC 2B
-0020 | 80 59 9F 26 00 00 00 00 00 00 00 00 FE 00 01 00
-0030 | 86 E9 3E 1D F1 F8 46 0A E2 6C 7A 84 82 64 DB FF
-0040 | 88 8F 61 26 73 9A 56 EA 5D D6 C0 78 8C C7 F5 2A
-0050 | 59 4F 58 EC ED 2C 2E 20 05 E5 D2 BF 14 50 39 70
-0060 | BC 4D 98 33 CD CE B9 7A 57 E2 E3 ED DF 3A 76 84
-0070 | C2 A1 1A F2 74 DD 99 76 0D 4E FE DA CF 5B 04 F5
-0080 | 5B B2 15 FA 2A 3F 67 2D 57 CC 3A 3D 9A 13 65 7F
-0090 | A6 C3 3B 81 64 6A 4B 73 53 D5 A9 31 0E A2 5B B8
-00A0 | 50 93 29 69 E9 8B 24 4B 80 C9 8E 33 BD 3B 9F 88
-00B0 | 4B 03 FB 47 51 FB 6B 12 E1 4B 17 36 2A 89 50 8F
-00C0 | 6E 20 44 39 6A E6 2A 08 F2 40 15 FB 58 3C 7B 71
-00D0 | 51 80 7D 88 96 6C F4 D6 11 3D 22 A8 CB 20 20 B8
-00E0 | 76 5F 9F 8F 24 4D 4E 38 FD D6 6B 80 63 47 FB C1
-00F0 | C3 FC 8D 3F A0 B6 45 61 12 37 10 4A 46 9B 81 60
-0100 | A7 81 7A 36 B8 7A B6 41 C9 54 0D 5C 68 23 A6 E3
-0110 | 90 D9 A8 C2 47 DD 89 B8 F4 65 3F 26 80 01 74 BF
-0120 | 6F E8 8C F7 B6 1E 4F 65 34 22 FA 19 18 8F E3 D4
+0000 | 54 B6 43 66 1B 09 A0 0A D2 F0 2D 7E 1C 09 6E E6
+0010 | 37 8E 25 53 2B 28 6E 1E 25 E4 74 61 D3 0B C4 2E
+0020 | C9 8D 1F C7 00 00 00 00 00 00 00 00 FE 00 01 00
+0030 | 5B B8 E7 11 33 D5 32 E2 1E CE C0 93 F1 21 C6 06
+0040 | EA 27 03 CF 45 44 B3 4D BF A5 ED 57 D9 41 86 BC
+0050 | CB FA 1E 1E 1A 0F 46 81 51 8D 21 56 8C BA 2A 4D
+0060 | 5B 06 50 52 5D 66 2B 8D 06 31 D1 0B 69 7C 0B FE
+0070 | 71 E3 5E 79 8B 92 59 04 ED D6 6E EF 68 49 27 DD
+0080 | B4 90 CC 98 CC 6A DC C7 6A 75 AC CC 69 8E FB DA
+0090 | 1B D4 15 D4 E9 E1 4B 4A 57 0E 56 DB 39 64 B1 C1
+00A0 | D8 66 01 A3 EB BF 6F 55 FC 92 D7 31 3F D8 F9 F1
+00B0 | 7E C8 43 86 D9 D7 E2 BF A4 7A 31 8A CC 09 4B 4E
+00C0 | 75 D3 8A AB 01 74 23 EC 8E A0 25 B2 3F E0 3B 3F
+00D0 | 47 93 AF AE CB 81 0A 35 07 79 96 BA 42 43 68 DE
+00E0 | 5F 24 CC E3 3B A8 95 8E 86 BB 56 A5 F4 9E 04 12
+00F0 | C0 2E 46 F7 A3 9E 2C 50 44 2C C2 A0 E4 6A 0F 73
+0100 | 6D 04 F5 61 75 CF 52 57 0C 8C C6 61 FE ED A2 F4
+0110 | EA C2 23 D7 1B 10 C7 E7 8C 2C 7D 86 B2 82 52 F7
+0120 | 2B 29 64 9A 48 8A 29 E9 B0 D3 AB A2 38 AA 2E F7
Payload (de)serialization:
client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data;
@@ -658,19 +658,19 @@ answer = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
nonce
4, 16
-0A1039860765902DFB0CACB7C56E4DD1
+1B09A00AD2F02D7E1C096EE6378E2553
Value generated by client in Step 1
server_nonce
20, 16
-C9359CB9B3E5FDC9EDB5CC2B80599F26
+2B286E1E25E47461D30BC42EC98D1FC7
Value received from server in Step 2
g_b
36, 260
-FE00010086E93E1DF1F8460AE26C7A84
8264DBFF888F6126739A56EA5DD6C078
8CC7F52A594F58ECED2C2E2005E5D2BF
14503970BC4D9833CDCEB97A57E2E3ED
DF3A7684C2A11AF274DD99760D4EFEDA
CF5B04F55BB215FA2A3F672D57CC3A3D
9A13657FA6C33B81646A4B7353D5A931
0EA25BB850932969E98B244B80C98E33
BD3B9F884B03FB4751FB6B12E14B1736
2A89508F6E2044396AE62A08F24015FB
583C7B7151807D88966CF4D6113D22A8
CB2020B8765F9F8F244D4E38FDD66B80
6347FBC1C3FC8D3FA0B645611237104A
469B8160A7817A36B87AB641C9540D5C
6823A6E390D9A8C247DD89B8F4653F26
800174BF6FE88CF7B61E4F653422FA19
188FE3D4
+FE0001005BB8E71133D532E21ECEC093
F121C606EA2703CF4544B34DBFA5ED57
D94186BCCBFA1E1E1A0F4681518D2156
8CBA2A4D5B0650525D662B8D0631D10B
697C0BFE71E35E798B925904EDD66EEF
684927DDB490CC98CC6ADCC76A75ACCC
698EFBDA1BD415D4E9E14B4A570E56DB
3964B1C1D86601A3EBBF6F55FC92D731
3FD8F9F17EC84386D9D7E2BFA47A318A
CC094B4E75D38AAB017423EC8EA025B2
3FE03B3F4793AFAECB810A35077996BA
424368DE5F24CCE33BA8958E86BB56A5
F49E0412C02E46F7A39E2C50442CC2A0
E46A0F736D04F56175CF52570C8CC661
FEEDA2F4EAC223D71B10C7E78C2C7D86
B28252F72B29649A488A29E9B0D3ABA2
38AA2EF7
Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding
@@ -684,47 +684,47 @@ answer = BA0D89B50A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F2
The serialization of Client_DH_Inner_Data produces a string data. This is used to generate encrypted_data as specified in step 6, using the following inputs:
-data = 54B643660A1039860765902DFB0CACB7C56E4DD1C9359CB9B3E5FDC9EDB5CC2B80599F260000000000000000FE00010086E93E1DF1F8460AE26C7A848264DBFF888F6126739A56EA5DD6C0788CC7F52A594F58ECED2C2E2005E5D2BF14503970BC4D9833CDCEB97A57E2E3EDDF3A7684C2A11AF274DD99760D4EFEDACF5B04F55BB215FA2A3F672D57CC3A3D9A13657FA6C33B81646A4B7353D5A9310EA25BB850932969E98B244B80C98E33BD3B9F884B03FB4751FB6B12E14B17362A89508F6E2044396AE62A08F24015FB583C7B7151807D88966CF4D6113D22A8CB2020B8765F9F8F244D4E38FDD66B806347FBC1C3FC8D3FA0B645611237104A469B8160A7817A36B87AB641C9540D5C6823A6E390D9A8C247DD89B8F4653F26800174BF6FE88CF7B61E4F653422FA19188FE3D4
-padding = 46AE79AED34A2D759CB0EB9F
-tmp_aes_key = CF42CE543CA64B8450A2858436C60B94FF825A523F7C2B217DEBFEDD120851B6
-tmp_aes_iv = 672B46D3963F476DFB337FE5A0F2947764124A707F0F751671B2EF291087BDAD
+data = 54B643661B09A00AD2F02D7E1C096EE6378E25532B286E1E25E47461D30BC42EC98D1FC70000000000000000FE0001005BB8E71133D532E21ECEC093F121C606EA2703CF4544B34DBFA5ED57D94186BCCBFA1E1E1A0F4681518D21568CBA2A4D5B0650525D662B8D0631D10B697C0BFE71E35E798B925904EDD66EEF684927DDB490CC98CC6ADCC76A75ACCC698EFBDA1BD415D4E9E14B4A570E56DB3964B1C1D86601A3EBBF6F55FC92D7313FD8F9F17EC84386D9D7E2BFA47A318ACC094B4E75D38AAB017423EC8EA025B23FE03B3F4793AFAECB810A35077996BA424368DE5F24CCE33BA8958E86BB56A5F49E0412C02E46F7A39E2C50442CC2A0E46A0F736D04F56175CF52570C8CC661FEEDA2F4EAC223D71B10C7E78C2C7D86B28252F72B29649A488A29E9B0D3ABA238AA2EF7
+padding = C114FC8E454401EBFCD3AADA
+tmp_aes_key = BF8FF67F42007055B61FAE3671FBA3AF607DF251913CF366DE0BA460421C070B
+tmp_aes_iv = 2D68123E7ACC27D87F65F78C0E79A4322ADE8167C038837EE3CF90242D36E3CA
Process:
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);
Output:
-encrypted_data = 7406AD67E426A062396063968F85D25F714A3396284EDBDFB8F8E9770DCA96A9CCC3C9A3EF2C3701CC59F6C9B1BE398AA3DCEA461ED5B7DA12A4001BC1F4E863869CF873F8A7839273F2779C301412E07B468D6AA574EBB8072FD09C1FE371448ACA7EDD7E7FBC57FD7721C1CCEDD095948A4DD79C80322190808EE622DC1E7DBEE9E9FB3AB76644F486C772ACF8822DCB16C61B205807D3ABA6CF46B4EF34DF8F00EF953D910ABE4CEA362D454B8788814FB0C1BAB3E2E1EDF5355111013E0C1CFB12075AF3F060BDBECE57EC654D1A235F4890C94F4B7D3422F58BF4A627A9357FC87A50F5205A39B1C783A45CF7E30CDAD60FAB5CC5019AE31DF7C5A632BC1010BF988C2E927690DA854CB12295CC97A9FDCA968CC0EA2B69FB1F2BEE68A44156BE6889DFEA563FC1E7F0923DCEF99F58256D20C633BDEBD050C24551E1539F3450867F3EBACAE4EE128493855C00
+encrypted_data = A2F0334D96B6EB07B0D1A07AEFD51165EC2EBE8FDA475F17046A2105C68645E86371887BEA1C18BFE96A55866876A70591E66279724CF9CE6FDE5CC7CD01699067D9876055A147517D0CC9B06CC44540D888A978D9264074BC0A5BE53B04516A997851EBFEB6B5ECD5B0E2D1CCB0335E676D55BD41BA7F9FE32C4CE61379132AB8F947815B5C55DEF0EECB24C9A1B0A6D18F0D908FF785EDB3E3FF45C29EA0D5F5CFD4EE13A0B313B7EA578384CD61E09B188B90E126713753693D350E6CA457C346B245B2A255002D8B2C15F910E9BCB914404CB465751E04D24D13B37BA881949F91EC0FE5CB4CC4E5FF47F7ECE36CB31C02414A9392BA4CBC80BEC449CC279DE6F0FBC72E1B3B2F79D607C08F33808401EFC300B75EBAFB004343B15ABA06D3A95740E217C6707EE6F17749970A86803C310A2A6BB2F793FDDC972783351E94FC061F9FBD357C5D55BEAEDFCD236F
The length of the final string is 336 bytes.
7.2) set_client_DH_params query
Sent payload (excluding transport headers/trailers):
-0000 | 00 00 00 00 00 00 00 00 54 8F 07 00 2C 91 A2 66
-0010 | 78 01 00 00 1F 5F 04 F5 0A 10 39 86 07 65 90 2D
-0020 | FB 0C AC B7 C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9
-0030 | ED B5 CC 2B 80 59 9F 26 FE 50 01 00 74 06 AD 67
-0040 | E4 26 A0 62 39 60 63 96 8F 85 D2 5F 71 4A 33 96
-0050 | 28 4E DB DF B8 F8 E9 77 0D CA 96 A9 CC C3 C9 A3
-0060 | EF 2C 37 01 CC 59 F6 C9 B1 BE 39 8A A3 DC EA 46
-0070 | 1E D5 B7 DA 12 A4 00 1B C1 F4 E8 63 86 9C F8 73
-0080 | F8 A7 83 92 73 F2 77 9C 30 14 12 E0 7B 46 8D 6A
-0090 | A5 74 EB B8 07 2F D0 9C 1F E3 71 44 8A CA 7E DD
-00A0 | 7E 7F BC 57 FD 77 21 C1 CC ED D0 95 94 8A 4D D7
-00B0 | 9C 80 32 21 90 80 8E E6 22 DC 1E 7D BE E9 E9 FB
-00C0 | 3A B7 66 44 F4 86 C7 72 AC F8 82 2D CB 16 C6 1B
-00D0 | 20 58 07 D3 AB A6 CF 46 B4 EF 34 DF 8F 00 EF 95
-00E0 | 3D 91 0A BE 4C EA 36 2D 45 4B 87 88 81 4F B0 C1
-00F0 | BA B3 E2 E1 ED F5 35 51 11 01 3E 0C 1C FB 12 07
-0100 | 5A F3 F0 60 BD BE CE 57 EC 65 4D 1A 23 5F 48 90
-0110 | C9 4F 4B 7D 34 22 F5 8B F4 A6 27 A9 35 7F C8 7A
-0120 | 50 F5 20 5A 39 B1 C7 83 A4 5C F7 E3 0C DA D6 0F
-0130 | AB 5C C5 01 9A E3 1D F7 C5 A6 32 BC 10 10 BF 98
-0140 | 8C 2E 92 76 90 DA 85 4C B1 22 95 CC 97 A9 FD CA
-0150 | 96 8C C0 EA 2B 69 FB 1F 2B EE 68 A4 41 56 BE 68
-0160 | 89 DF EA 56 3F C1 E7 F0 92 3D CE F9 9F 58 25 6D
-0170 | 20 C6 33 BD EB D0 50 C2 45 51 E1 53 9F 34 50 86
-0180 | 7F 3E BA CA E4 EE 12 84 93 85 5C 00
+0000 | 00 00 00 00 00 00 00 00 88 C6 0D 00 70 1D A9 66
+0010 | 78 01 00 00 1F 5F 04 F5 1B 09 A0 0A D2 F0 2D 7E
+0020 | 1C 09 6E E6 37 8E 25 53 2B 28 6E 1E 25 E4 74 61
+0030 | D3 0B C4 2E C9 8D 1F C7 FE 50 01 00 A2 F0 33 4D
+0040 | 96 B6 EB 07 B0 D1 A0 7A EF D5 11 65 EC 2E BE 8F
+0050 | DA 47 5F 17 04 6A 21 05 C6 86 45 E8 63 71 88 7B
+0060 | EA 1C 18 BF E9 6A 55 86 68 76 A7 05 91 E6 62 79
+0070 | 72 4C F9 CE 6F DE 5C C7 CD 01 69 90 67 D9 87 60
+0080 | 55 A1 47 51 7D 0C C9 B0 6C C4 45 40 D8 88 A9 78
+0090 | D9 26 40 74 BC 0A 5B E5 3B 04 51 6A 99 78 51 EB
+00A0 | FE B6 B5 EC D5 B0 E2 D1 CC B0 33 5E 67 6D 55 BD
+00B0 | 41 BA 7F 9F E3 2C 4C E6 13 79 13 2A B8 F9 47 81
+00C0 | 5B 5C 55 DE F0 EE CB 24 C9 A1 B0 A6 D1 8F 0D 90
+00D0 | 8F F7 85 ED B3 E3 FF 45 C2 9E A0 D5 F5 CF D4 EE
+00E0 | 13 A0 B3 13 B7 EA 57 83 84 CD 61 E0 9B 18 8B 90
+00F0 | E1 26 71 37 53 69 3D 35 0E 6C A4 57 C3 46 B2 45
+0100 | B2 A2 55 00 2D 8B 2C 15 F9 10 E9 BC B9 14 40 4C
+0110 | B4 65 75 1E 04 D2 4D 13 B3 7B A8 81 94 9F 91 EC
+0120 | 0F E5 CB 4C C4 E5 FF 47 F7 EC E3 6C B3 1C 02 41
+0130 | 4A 93 92 BA 4C BC 80 BE C4 49 CC 27 9D E6 F0 FB
+0140 | C7 2E 1B 3B 2F 79 D6 07 C0 8F 33 80 84 01 EF C3
+0150 | 00 B7 5E BA FB 00 43 43 B1 5A BA 06 D3 A9 57 40
+0160 | E2 17 C6 70 7E E6 F1 77 49 97 0A 86 80 3C 31 0A
+0170 | 2A 6B B2 F7 93 FD DC 97 27 83 35 1E 94 FC 06 1F
+0180 | 9F BD 35 7C 5D 55 BE AE DF CD 23 6F
Payload (de)serialization:
set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
@@ -746,7 +746,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
message_id
8, 8
-548F07002C91A266
+88C60D00701DA966
Message ID generated as specified here » (unixtime() << 32) + (N*4)
@@ -764,19 +764,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
nonce
24, 16
-0A1039860765902DFB0CACB7C56E4DD1
+1B09A00AD2F02D7E1C096EE6378E2553
Value generated by client in Step 1
server_nonce
40, 16
-C9359CB9B3E5FDC9EDB5CC2B80599F26
+2B286E1E25E47461D30BC42EC98D1FC7
Value received from server in Step 2
encrypted_data
56, 340
-FE5001007406AD67E426A06239606396
8F85D25F714A3396284EDBDFB8F8E977
0DCA96A9CCC3C9A3EF2C3701CC59F6C9
B1BE398AA3DCEA461ED5B7DA12A4001B
C1F4E863869CF873F8A7839273F2779C
301412E07B468D6AA574EBB8072FD09C
1FE371448ACA7EDD7E7FBC57FD7721C1
CCEDD095948A4DD79C80322190808EE6
22DC1E7DBEE9E9FB3AB76644F486C772
ACF8822DCB16C61B205807D3ABA6CF46
B4EF34DF8F00EF953D910ABE4CEA362D
454B8788814FB0C1BAB3E2E1EDF53551
11013E0C1CFB12075AF3F060BDBECE57
EC654D1A235F4890C94F4B7D3422F58B
F4A627A9357FC87A50F5205A39B1C783
A45CF7E30CDAD60FAB5CC5019AE31DF7
C5A632BC1010BF988C2E927690DA854C
B12295CC97A9FDCA968CC0EA2B69FB1F
2BEE68A44156BE6889DFEA563FC1E7F0
923DCEF99F58256D20C633BDEBD050C2
4551E1539F3450867F3EBACAE4EE1284
93855C00
+FE500100A2F0334D96B6EB07B0D1A07A
EFD51165EC2EBE8FDA475F17046A2105
C68645E86371887BEA1C18BFE96A5586
6876A70591E66279724CF9CE6FDE5CC7
CD01699067D9876055A147517D0CC9B0
6CC44540D888A978D9264074BC0A5BE5
3B04516A997851EBFEB6B5ECD5B0E2D1
CCB0335E676D55BD41BA7F9FE32C4CE6
1379132AB8F947815B5C55DEF0EECB24
C9A1B0A6D18F0D908FF785EDB3E3FF45
C29EA0D5F5CFD4EE13A0B313B7EA5783
84CD61E09B188B90E126713753693D35
0E6CA457C346B245B2A255002D8B2C15
F910E9BCB914404CB465751E04D24D13
B37BA881949F91EC0FE5CB4CC4E5FF47
F7ECE36CB31C02414A9392BA4CBC80BE
C449CC279DE6F0FBC72E1B3B2F79D607
C08F33808401EFC300B75EBAFB004343
B15ABA06D3A95740E217C6707EE6F177
49970A86803C310A2A6BB2F793FDDC97
2783351E94FC061F9FBD357C5D55BEAE
DFCD236F
Encrypted client_DH_inner_data generated previously, serialized as a TL byte string
@@ -785,17 +785,17 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
8) Auth key generation
The client computes the auth_key using formula g_a^b mod dh_prime
:
-auth_key = 32012E3302ECA4E5BCFDDE193C70510CACBDCE18BF28537B007E398059E77135529A83E5D034060E1890709B8C26D00BEDBCE93EBA47F5CD0CF2B79E280A5005C908AE62D58B1CA6294E33FA8C2B007D1B5E0A70506BDD9BF513271C9B21FA2B3F6CCE88125B340D44DBF7FC80D4176B678290A067D4DA03D1DA690B5339D585D718023020F279AED47BFF0F329614B4B76BFE0A2A825AE81747DE9CF6A09611A1C219503A43C5050929B2D053055897D62330100C7764E487AB998FF4D0A2F1C3DACAB1EBC4663A607DE8293EFE2892C1301AE431494F5B7E65EA8A59FC3E68DB3F14204245F98ECA9F935F0B7B9D82F1FFCA423F64FD5136AC7CD6A9705F47
+auth_key = 16E17B2AA4A9AAB6B77E454D361E99A2DC0AC6DFFBD620DA1997D8D651F7C18297701846F1FD26601E99F62E5A4ED9996FA00BDBDB5D6EB39DDBBEA44F234B9A00D019775DEDB3782CF5D1A89E5543DAC0F7777AD1D5BD63ADA28D664BF4CECA35A671A9856FEC06D1641A3F9A0BA8B0D40B6644A5E9C9168D91DE902AE52D035EA3732BF25154B7E5BB08F658C96A0593A52CCEBB80C10CD2981E2303F1B29A9600688BB7D12E0BCAE3E1641CD6760DB5D3285FF5B4324A9E52854409A68E7841156A2410E951431D24C52F4D38F51ABF9BAF58A739AAB1657846AB859584C528A5349B103D35B99AC21550DC4A78AAAE071EEFEF77559A0867053905DF040D
9) Final server reply
The server verifies and confirms that auth_key_hash is unique: since it's unique, it replies with the following:
Received payload (excluding transport headers/trailers):
-0000 | 00 00 00 00 00 00 00 00 01 10 7D 0D 2D 91 A2 66
-0010 | 88 00 00 00 34 F7 CB 3B 0A 10 39 86 07 65 90 2D
-0020 | FB 0C AC B7 C5 6E 4D D1 C9 35 9C B9 B3 E5 FD C9
-0030 | ED B5 CC 2B 80 59 9F 26 11 19 7A DF EC BB D4 B3
-0040 | 7D 11 CE 01 32 46 94 A2
+0000 | 00 00 00 00 00 00 00 00 01 3C DB 7D 71 1D A9 66
+0010 | 58 00 00 00 34 F7 CB 3B 1B 09 A0 0A D2 F0 2D 7E
+0020 | 1C 09 6E E6 37 8E 25 53 2B 28 6E 1E 25 E4 74 61
+0030 | D3 0B C4 2E C9 8D 1F C7 C2 D0 77 13 D0 60 18 08
+0040 | 8E DA 4B 41 66 B7 1C 8C
Payload (de)serialization:
dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
@@ -817,13 +817,13 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
message_id
8, 8
-01107D0D2D91A266
+013CDB7D711DA966
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-88000000
(136 in decimal)
+58000000
(88 in decimal)
Message body length
@@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
nonce
24, 16
-0A1039860765902DFB0CACB7C56E4DD1
+1B09A00AD2F02D7E1C096EE6378E2553
Value generated by client in Step 1
server_nonce
40, 16
-C9359CB9B3E5FDC9EDB5CC2B80599F26
+2B286E1E25E47461D30BC42EC98D1FC7
Value received from server in Step 2
new_nonce_hash1
56, 16
-11197ADFECBBD4B37D11CE01324694A2
+C2D07713D06018088EDA4B4166B71C8C
The 128 lower-order bits of SHA1 of the byte string derived from the new_nonce
string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with auth_key_aux_hash
. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.