diff --git a/data/web/corefork.telegram.org/api/colors.html b/data/web/corefork.telegram.org/api/colors.html index 534b24527f..efb4ab1f4d 100644 --- a/data/web/corefork.telegram.org/api/colors.html +++ b/data/web/corefork.telegram.org/api/colors.html @@ -2,12 +2,12 @@
-Telegram users and channels can change the accent color and background pattern of their profile page and their messages!
+Schema:
+peerColor#b54b5acf flags:# color:flags.0?int background_emoji_id:flags.1?long = PeerColor;
+
+help.peerColorSet#26219a58 colors:Vector<int> = help.PeerColorSet;
+help.peerColorProfileSet#767d61eb palette_colors:Vector<int> bg_colors:Vector<int> story_colors:Vector<int> = help.PeerColorSet;
+
+help.peerColorOption#135bd42f flags:# hidden:flags.0?true color_id:int colors:flags.1?help.PeerColorSet dark_colors:flags.2?help.PeerColorSet = help.PeerColorOption;
+
+help.peerColorsNotModified#2ba1f5ce = help.PeerColors;
+help.peerColors#00f8ed08 hash:int colors:Vector<help.PeerColorOption> = help.PeerColors;
+
+stickerSet#2dd14edc flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true animated:flags.5?true videos:flags.6?true emojis:flags.7?true text_color:flags.9?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumbs:flags.4?Vector<PhotoSize> thumb_dc_id:flags.4?int thumb_version:flags.4?int thumb_document_id:flags.8?long count:int hash:int = StickerSet;
+
+user#215c4438 flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector<Username> stories_max_id:flags2.5?int color:flags2.8?PeerColor profile_color:flags2.9?PeerColor = User;
+
+channel#8e87ccd8 flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true join_to_send:flags.28?true join_request:flags.29?true forum:flags.30?true flags2:# stories_hidden:flags2.1?true stories_hidden_min:flags2.2?true stories_unavailable:flags2.3?true id:long access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int restriction_reason:flags.9?Vector<RestrictionReason> admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int usernames:flags2.0?Vector<Username> stories_max_id:flags2.4?int color:flags2.7?PeerColor = Chat;
+
+---functions---
+
+help.getPeerColors#da80f42f hash:int = help.PeerColors;
+help.getPeerProfileColors#abcfa9fd hash:int = help.PeerColors;
+
+account.getDefaultBackgroundEmojis#a60ab9ce hash:long = EmojiList;
+
+account.updateColor#7cefa15d flags:# for_profile:flags.1?true color:flags.2?int background_emoji_id:flags.0?long = Bool;
+
+channels.updateColor#621a201f flags:# channel:InputChannel color:int background_emoji_id:flags.0?long = Updates;
+A peerColor constructor contains a color palette ID (id
) and a custom emoji sticker » (background_emoji
) to be re-colored using the colors in the palette and spread out throughout the palette, generating a background that can be used in the profile page of a user, and in other places throughout the UI, namely in in webpage preview message frames and message accent colors when quoting or replying to messages sent by a channel or user that enabled a custom message accents.
The color palettes is identified by an id
(not by an RGB24 color); use help.getPeerProfileColors to obtain all color palettes (represented by help.peerColorOption constructors) that can be used in the background of a profile page, and use help.getPeerColors to obtain all color palettes that can be used in message accents.
A color palette is represented by a help.peerColorOption constructor: the palette ID is contained in color_id
; the palette for light mode is contained in the colors
field, the palette for dark mode is contained in the dark_colors
field.
+If the hidden
flag is set it should not be displayed as an option to the user when choosing a palette to use in the profile page or in message accents.
The actual colors that should be used are contained either in a help.peerColorSet or in a help.peerColorProfileSet, see the relative constructor pages for more info.
+Use account.getDefaultBackgroundEmojis to obtain a list of IDs of custom emojis that can be used in a palette background.
+All custom emojis in custom emoji stickersets » with text_color
flag set can also be used for the same purpose.
Use account.updateColor to update the color palette of the current account's message accents and/or profile page; note that the current account must be subscribed to Telegram Premium in order to call the method.
+Use channels.updateColor to update the color palette of a channel's message accents; note that channels have to be boosted » at least to level channel_color_level_min » in order to use this method.
The chosen message accent palette will be visible to other users in the channel.color
and user.color
fields.
User profile palettes will be visible in the user.profile_color
field.
{1} pinned a giveaway
{1} reacted {2} to your giveaway
{1} is calling you!
to posted a story
in CHAT_REACT_GIFuserFull#b9b12c6c flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true can_pin_message:flags.7?true has_scheduled:flags.12?true video_calls_available:flags.13?true voice_messages_forbidden:flags.20?true translations_disabled:flags.23?true stories_pinned_available:flags.26?true blocked_my_stories_from:flags.27?true wallpaper_overridden:flags.28?true id:long about:flags.1?string settings:PeerSettings personal_photo:flags.21?Photo profile_photo:flags.2?Photo fallback_photo:flags.22?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int common_chats_count:int folder_id:flags.11?int ttl_period:flags.14?int theme_emoticon:flags.15?string private_forward_name:flags.16?string bot_group_admin_rights:flags.17?ChatAdminRights bot_broadcast_admin_rights:flags.18?ChatAdminRights premium_gifts:flags.19?Vector<PremiumGiftOption> wallpaper:flags.24?WallPaper stories:flags.25?PeerStories = UserFull;
user#215c4438 flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector<Username> stories_max_id:flags2.5?int color:flags2.8?PeerColor profile_color:flags2.9?PeerColor = User;
@@ -484,7 +480,7 @@
Changed template from {1}: {3} to your game in {2}
to {3} to your game in {2}
in CHAT_REACT_GAME
Changed template from {1}: {3} to your map in {2}
to {3} to your map in {2}
in CHAT_REACT_GEO
Changed template from {1}: {3} to your live location in {2}
to {3} to your live location in {2}
in CHAT_REACT_GEOLIVE
-Changed template from {1}: {3} to your GIF in {2}
to {1} is calling you!
in CHAT_REACT_GIF
+Changed template from {1}: {3} to your GIF in {2}
to {3} to your GIF in {2}
in CHAT_REACT_GIF
Changed template from {1}: {3} to your invoice in {2}
to {3} to your invoice in {2}
in CHAT_REACT_INVOICE
Changed template from {1}: {3} to your message in {2}
to {3} to your message in {2}
in CHAT_REACT_NOTEXT
Changed template from {1}: {3} to your photo in {2}
to {3} to your photo in {2}
in CHAT_REACT_PHOTO
diff --git a/data/web/corefork.telegram.org/api/push-updates.html b/data/web/corefork.telegram.org/api/push-updates.html
index c5394d6799..04ad710c75 100644
--- a/data/web/corefork.telegram.org/api/push-updates.html
+++ b/data/web/corefork.telegram.org/api/push-updates.html
@@ -511,8 +511,8 @@ Simple push works by sending a simple PUT request with a version=number
CHAT_REACT_GIF
-posted a story
-
+{3} to your GIF in {2}
+2. Group name
3. Reaction
CHAT_REACT_GIVEAWAY
diff --git a/data/web/corefork.telegram.org/bots/features.html b/data/web/corefork.telegram.org/bots/features.html
index 1b82676936..72d51aebc1 100644
--- a/data/web/corefork.telegram.org/bots/features.html
+++ b/data/web/corefork.telegram.org/bots/features.html
@@ -391,7 +391,6 @@ width=44% />
Telegram also offers a dedicated test environment suitable for more advanced testing. Bots and users in this environment generally have more flexible restrictions – for example:
- When working with the test environment, you may use HTTP links without TLS to test your Web Apps or Web Login.
-- You can test topics without needing 200 users in your group.
Flood limits are not raised in the test environment, and may at times be stricter. To minimize how this impacts your bot, you should make sure that it handles errors with retry policies and does not depend on hardcoded limit values.
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 438913aa4c..d1fed0ee35 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 C0 B8 08 00 D5 CF 74 65
-0010 | 14 00 00 00 F1 8E 7E BE 8A 1A 2C 01 1E 54 29 F6
-0020 | 92 F6 46 62 87 3D EE AB
+0000 | 00 00 00 00 00 00 00 00 D4 4F 0D 00 E1 5A 77 65
+0010 | 14 00 00 00 F1 8E 7E BE 83 FE 4F A7 D6 AD 1B 8A
+0020 | C7 63 8A 36 AD AB 7A 9A
Payload (de)serialization:
req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;
@@ -77,7 +77,7 @@
message_id
8, 8
-C0B80800D5CF7465
+D44F0D00E15A7765
Message ID generated as specified here » (unixtime() << 32) + (N*4)
@@ -95,7 +95,7 @@
nonce
24, 16
-8A1A2C011E5429F692F64662873DEEAB
+83FE4FA7D6AD1B8AC7638A36ADAB7A9A
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 E8 EB 0F D6 CF 74 65
-0010 | 74 00 00 00 63 24 16 05 8A 1A 2C 01 1E 54 29 F6
-0020 | 92 F6 46 62 87 3D EE AB 6A C0 DB C7 98 A5 05 E5
-0030 | 94 81 5E 49 FA E5 76 47 08 21 26 B9 EF E9 DB D1
-0040 | 91 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 48 2B A5 E1 5A 77 65
+0010 | 50 00 00 00 63 24 16 05 83 FE 4F A7 D6 AD 1B 8A
+0020 | C7 63 8A 36 AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A
+0030 | 23 E8 D1 8C 4D 3B 8A B7 08 20 CF 44 AD 25 51 F1
+0040 | A5 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
-01E8EB0FD6CF7465
+01482BA5E15A7765
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-74000000
(116 in decimal)
+50000000
(80 in decimal)
Message body length
@@ -150,19 +150,19 @@
nonce
24, 16
-8A1A2C011E5429F692F64662873DEEAB
+83FE4FA7D6AD1B8AC7638A36ADAB7A9A
Value generated by client in Step 1
server_nonce
40, 16
-6AC0DBC798A505E594815E49FAE57647
+65D66D4E1CC2165A23E8D18C4D3B8AB7
Server-generated random number
pq
56, 12
-082126B9EFE9DBD191000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2388801092438446481
+0820CF44AD2551F1A5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2364183839838957989
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 = 2388801092438446481
-Decompose into 2 prime cofactors p < q
: 2388801092438446481 = 1343244269 * 1778381749
-p = 1343244269
-q = 1778381749
+pq = 2364183839838957989
+Decompose into 2 prime cofactors p < q
: 2364183839838957989 = 1537378891 * 1537801679
+p = 1537378891
+q = 1537801679
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 21 26 B9 EF E9 DB D1 91 00 00 00
-0010 | 04 50 10 47 ED 00 00 00 04 69 FF F3 B5 00 00 00
-0020 | 8A 1A 2C 01 1E 54 29 F6 92 F6 46 62 87 3D EE AB
-0030 | 6A C0 DB C7 98 A5 05 E5 94 81 5E 49 FA E5 76 47
-0040 | 4A DF 3F 67 BB 21 90 71 31 4F 16 E9 FB B4 A2 93
-0050 | 5E C0 DC DD 27 4E 2D B5 32 05 1B 40 A0 CB F3 DE
+0000 | 95 5F F5 A9 08 20 CF 44 AD 25 51 F1 A5 00 00 00
+0010 | 04 5B A2 8A 4B 00 00 00 04 5B A8 FD CF 00 00 00
+0020 | 83 FE 4F A7 D6 AD 1B 8A C7 63 8A 36 AD AB 7A 9A
+0030 | 65 D6 6D 4E 1C C2 16 5A 23 E8 D1 8C 4D 3B 8A B7
+0040 | 31 44 7E EA FB 1F D5 B6 FF 81 2A 79 EA 09 64 82
+0050 | C4 D8 2B 69 5B 78 4E 95 AE 15 F1 FD 4D 3B 3B 27
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 = 1778381749
pq
4, 12
-082126B9EFE9DBD191000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2388801092438446481
+0820CF44AD2551F1A5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2364183839838957989
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p
16, 8
-04501047ED000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1343244269
+045BA28A4B000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1537378891
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q
24, 8
-0469FFF3B5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1778381749
+045BA8FDCF000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1537801679
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce
32, 16
-8A1A2C011E5429F692F64662873DEEAB
+83FE4FA7D6AD1B8AC7638A36ADAB7A9A
Value generated by client in Step 1
server_nonce
48, 16
-6AC0DBC798A505E594815E49FAE57647
+65D66D4E1CC2165A23E8D18C4D3B8AB7
Value received from server in Step 2
new_nonce
64, 32
-4ADF3F67BB219071314F16E9FBB4A293
5EC0DCDD274E2DB532051B40A0CBF3DE
+31447EEAFB1FD5B6FF812A79EA096482
C4D82B695B784E95AE15F1FD4D3B3B27
Client-generated random number
@@ -291,39 +291,39 @@ q = 1778381749
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 = 955FF5A9082126B9EFE9DBD19100000004501047ED0000000469FFF3B50000008A1A2C011E5429F692F64662873DEEAB6AC0DBC798A505E594815E49FAE576474ADF3F67BB219071314F16E9FBB4A2935EC0DCDD274E2DB532051B40A0CBF3DE02000000
-random_padding_bytes = 7D4A606F265527494A39B92866DD6F044805CCB671235F4686E6737ADD18B798BC9BB488EE3B04226C50040177FDF7EB7B6AC9C0C35BD41B6A34C063039FE2E04DF12BED8CA0513879BFA1D6D2D3D054CFD3C828B866F5582AE97B69
+data = 955FF5A90820CF44AD2551F1A5000000045BA28A4B000000045BA8FDCF00000083FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB731447EEAFB1FD5B6FF812A79EA096482C4D82B695B784E95AE15F1FD4D3B3B2702000000
+random_padding_bytes = 5C1FC0512F2CBE5890F34A0389768EC59F8D369EA3FB98795CF7624BBF2ADC6CF0758829E4F76B167D4EAEF4495D095CE9E3819F7ACB4E02326B1CD2FE68A23F853CD6B5464497B80CEC4373ABBA570278A4D86EA92C49BC65975D55
And this is the output:
-encrypted_data = 0322414A15A43AE2003E8477D3912F949D301B60D75A636D048EFF3C9A6EC5BE49B27CA4589CF503A4687AA4424348756AC550B3A8E41F2E52484E75A86D83733D313334A3DA3957F707D06CEA5C56ED0F85BD3790F983250CA3A5D5523695AF64261B7118AFAD7D6DB61482A379D4F59A85BFEE88EDB376C1FF65D481B7C8819E4EC1665E29DB44446E8E2128CF0F4A43D5C98375BE4CCB9B4E8B6CC93CECDF480AA9D94D88EF7B7054934D99CDB3A359E1002BEA64A3D0BD48009F25648362F4611610CB04E27AC7DF11451C342EEC533212D48B7CE11AE8D6ED1D1F255A14445000AAF6D10ACA942BD4729E38DFE7E9DC40417D3C1F9C8788663DA39E55D0
+encrypted_data = 45EF3882B8D866441F9099FDC19285855319042329013E110DCF0C325DE077A434D7D49F0CE10453D313CD034D26E7B1531DBE1B266578B1EB39993C9F4F4A41120C2FC41C78961AD6D35315F51E1FAC62836E08B3422D8CC5179DF4947B6E66F9F6F6836A985CE87D2C27FEEF33B4101281BEB2E9E45EBC026F4EFF3A47EC2EE2AF310D63579575C85D24A0CBE8B95D1AA03DA954C319B8A369FA8D4C057875C87317C016D43A4F6F4B631B15900D6AE7A8138712B4234694C18B8F4CA381D6E123262DBE51793B81771F70B74983F1FEDD5A57296EA575C78B08026E116CC32B5F1A7E3F6C44E03F342689682386B6E61D2A9DEAA5BC5E8C074EE3450D8847
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 00 13 07 00 D6 CF 74 65
-0010 | 40 01 00 00 BE E4 12 D7 8A 1A 2C 01 1E 54 29 F6
-0020 | 92 F6 46 62 87 3D EE AB 6A C0 DB C7 98 A5 05 E5
-0030 | 94 81 5E 49 FA E5 76 47 04 50 10 47 ED 00 00 00
-0040 | 04 69 FF F3 B5 00 00 00 85 FD 64 DE 85 1D 9D D0
-0050 | FE 00 01 00 03 22 41 4A 15 A4 3A E2 00 3E 84 77
-0060 | D3 91 2F 94 9D 30 1B 60 D7 5A 63 6D 04 8E FF 3C
-0070 | 9A 6E C5 BE 49 B2 7C A4 58 9C F5 03 A4 68 7A A4
-0080 | 42 43 48 75 6A C5 50 B3 A8 E4 1F 2E 52 48 4E 75
-0090 | A8 6D 83 73 3D 31 33 34 A3 DA 39 57 F7 07 D0 6C
-00A0 | EA 5C 56 ED 0F 85 BD 37 90 F9 83 25 0C A3 A5 D5
-00B0 | 52 36 95 AF 64 26 1B 71 18 AF AD 7D 6D B6 14 82
-00C0 | A3 79 D4 F5 9A 85 BF EE 88 ED B3 76 C1 FF 65 D4
-00D0 | 81 B7 C8 81 9E 4E C1 66 5E 29 DB 44 44 6E 8E 21
-00E0 | 28 CF 0F 4A 43 D5 C9 83 75 BE 4C CB 9B 4E 8B 6C
-00F0 | C9 3C EC DF 48 0A A9 D9 4D 88 EF 7B 70 54 93 4D
-0100 | 99 CD B3 A3 59 E1 00 2B EA 64 A3 D0 BD 48 00 9F
-0110 | 25 64 83 62 F4 61 16 10 CB 04 E2 7A C7 DF 11 45
-0120 | 1C 34 2E EC 53 32 12 D4 8B 7C E1 1A E8 D6 ED 1D
-0130 | 1F 25 5A 14 44 50 00 AA F6 D1 0A CA 94 2B D4 72
-0140 | 9E 38 DF E7 E9 DC 40 41 7D 3C 1F 9C 87 88 66 3D
-0150 | A3 9E 55 D0
+0000 | 00 00 00 00 00 00 00 00 D8 4F 0D 00 E1 5A 77 65
+0010 | 40 01 00 00 BE E4 12 D7 83 FE 4F A7 D6 AD 1B 8A
+0020 | C7 63 8A 36 AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A
+0030 | 23 E8 D1 8C 4D 3B 8A B7 04 5B A2 8A 4B 00 00 00
+0040 | 04 5B A8 FD CF 00 00 00 85 FD 64 DE 85 1D 9D D0
+0050 | FE 00 01 00 45 EF 38 82 B8 D8 66 44 1F 90 99 FD
+0060 | C1 92 85 85 53 19 04 23 29 01 3E 11 0D CF 0C 32
+0070 | 5D E0 77 A4 34 D7 D4 9F 0C E1 04 53 D3 13 CD 03
+0080 | 4D 26 E7 B1 53 1D BE 1B 26 65 78 B1 EB 39 99 3C
+0090 | 9F 4F 4A 41 12 0C 2F C4 1C 78 96 1A D6 D3 53 15
+00A0 | F5 1E 1F AC 62 83 6E 08 B3 42 2D 8C C5 17 9D F4
+00B0 | 94 7B 6E 66 F9 F6 F6 83 6A 98 5C E8 7D 2C 27 FE
+00C0 | EF 33 B4 10 12 81 BE B2 E9 E4 5E BC 02 6F 4E FF
+00D0 | 3A 47 EC 2E E2 AF 31 0D 63 57 95 75 C8 5D 24 A0
+00E0 | CB E8 B9 5D 1A A0 3D A9 54 C3 19 B8 A3 69 FA 8D
+00F0 | 4C 05 78 75 C8 73 17 C0 16 D4 3A 4F 6F 4B 63 1B
+0100 | 15 90 0D 6A E7 A8 13 87 12 B4 23 46 94 C1 8B 8F
+0110 | 4C A3 81 D6 E1 23 26 2D BE 51 79 3B 81 77 1F 70
+0120 | B7 49 83 F1 FE DD 5A 57 29 6E A5 75 C7 8B 08 02
+0130 | 6E 11 6C C3 2B 5F 1A 7E 3F 6C 44 E0 3F 34 26 89
+0140 | 68 23 86 B6 E6 1D 2A 9D EA A5 BC 5E 8C 07 4E E3
+0150 | 45 0D 88 47
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 = 7D4A606F265527494A39B92866DD6F044805CCB671235F4686E6737AD
message_id
8, 8
-00130700D6CF7465
+D84F0D00E15A7765
Message ID generated as specified here » (unixtime() << 32) + (N*4)
@@ -363,25 +363,25 @@ random_padding_bytes = 7D4A606F265527494A39B92866DD6F044805CCB671235F4686E6737AD
nonce
24, 16
-8A1A2C011E5429F692F64662873DEEAB
+83FE4FA7D6AD1B8AC7638A36ADAB7A9A
Value generated by client in Step 1
server_nonce
40, 16
-6AC0DBC798A505E594815E49FAE57647
+65D66D4E1CC2165A23E8D18C4D3B8AB7
Value received from server in Step 2
p
56, 8
-04501047ED000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1343244269
+045BA28A4B000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1537378891
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q
64, 8
-0469FFF3B5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1778381749
+045BA8FDCF000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1537801679
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
@@ -393,7 +393,7 @@ random_padding_bytes = 7D4A606F265527494A39B92866DD6F044805CCB671235F4686E6737AD
encrypted_data
80, 260
-FE0001000322414A15A43AE2003E8477
D3912F949D301B60D75A636D048EFF3C
9A6EC5BE49B27CA4589CF503A4687AA4
424348756AC550B3A8E41F2E52484E75
A86D83733D313334A3DA3957F707D06C
EA5C56ED0F85BD3790F983250CA3A5D5
523695AF64261B7118AFAD7D6DB61482
A379D4F59A85BFEE88EDB376C1FF65D4
81B7C8819E4EC1665E29DB44446E8E21
28CF0F4A43D5C98375BE4CCB9B4E8B6C
C93CECDF480AA9D94D88EF7B7054934D
99CDB3A359E1002BEA64A3D0BD48009F
25648362F4611610CB04E27AC7DF1145
1C342EEC533212D48B7CE11AE8D6ED1D
1F255A14445000AAF6D10ACA942BD472
9E38DFE7E9DC40417D3C1F9C8788663D
A39E55D0
+FE00010045EF3882B8D866441F9099FD
C19285855319042329013E110DCF0C32
5DE077A434D7D49F0CE10453D313CD03
4D26E7B1531DBE1B266578B1EB39993C
9F4F4A41120C2FC41C78961AD6D35315
F51E1FAC62836E08B3422D8CC5179DF4
947B6E66F9F6F6836A985CE87D2C27FE
EF33B4101281BEB2E9E45EBC026F4EFF
3A47EC2EE2AF310D63579575C85D24A0
CBE8B95D1AA03DA954C319B8A369FA8D
4C057875C87317C016D43A4F6F4B631B
15900D6AE7A8138712B4234694C18B8F
4CA381D6E123262DBE51793B81771F70
B74983F1FEDD5A57296EA575C78B0802
6E116CC32B5F1A7E3F6C44E03F342689
682386B6E61D2A9DEAA5BC5E8C074EE3
450D8847
Value generated above
@@ -402,47 +402,47 @@ random_padding_bytes = 7D4A606F265527494A39B92866DD6F044805CCB671235F4686E6737AD
6) Server responds with:
Received payload (excluding transport headers/trailers):
-0000 | 00 00 00 00 00 00 00 00 01 48 0E C8 D6 CF 74 65
-0010 | D8 02 00 00 5C 07 E8 D0 8A 1A 2C 01 1E 54 29 F6
-0020 | 92 F6 46 62 87 3D EE AB 6A C0 DB C7 98 A5 05 E5
-0030 | 94 81 5E 49 FA E5 76 47 FE 50 02 00 B0 2D 72 B5
-0040 | 18 76 E0 99 A2 D4 B1 7B F6 F7 D3 6D F4 64 C3 20
-0050 | 96 E7 81 98 AE CA A6 82 83 C1 82 4D 72 FB C5 44
-0060 | C1 F1 61 8A 56 C0 6C B7 B5 A1 92 F3 15 6A F1 5E
-0070 | 21 2F 1A FF 12 C8 76 D7 9E 93 79 7B 27 8A 34 59
-0080 | 32 41 7F 21 F6 76 FB B6 C7 BC FE FE C9 CC 06 FC
-0090 | 91 2D 8D D5 D4 33 F9 83 0D 4B 83 86 6F 23 6D BF
-00A0 | 48 04 BC B5 93 70 45 9C B5 11 D1 65 E7 0C 69 97
-00B0 | 77 41 7D 7D 53 2F E2 01 B2 5E 6F 97 2F 79 0F C6
-00C0 | E3 E3 6C 51 18 3C 1D 66 F9 1C 56 14 1A E7 3C B2
-00D0 | 3C 87 5A FB 48 65 5C 65 AF 63 32 F6 BB 8E A2 2A
-00E0 | 49 19 02 9E 9B 63 AB AA 51 A6 C0 20 ED EE 8C C8
-00F0 | 24 EF 53 58 01 29 16 66 78 77 D6 D9 21 D7 3F C2
-0100 | 56 8C AC D5 32 DD 7E 31 B0 43 81 30 62 B7 F5 98
-0110 | 42 59 A4 BB EC 4D B0 28 C5 6D 1E 75 0E 85 0E 4B
-0120 | E9 44 0F AA A8 24 A8 9B F8 F7 DC E0 D4 A9 01 41
-0130 | 90 B1 7D 21 48 92 70 19 67 9D 5A 69 F9 06 17 3F
-0140 | A7 52 A4 16 18 65 2F D2 62 DE B1 B9 32 A6 F1 4F
-0150 | 98 55 96 31 F6 16 1A A8 44 AA 25 F9 AF 8D 41 F2
-0160 | EC 4F AE 9D C7 EF 5E D6 87 91 DA D8 3D C2 4D 88
-0170 | D2 4B CE 8E 70 FA 9D 56 49 FB 8C 29 01 D0 63 A3
-0180 | 92 17 FE E8 04 13 DB 14 23 F1 07 BC BE 68 E8 3E
-0190 | 63 50 DC A8 01 76 5B 72 89 1C 80 D1 EC 7D EC 4B
-01A0 | 41 93 39 98 70 CA 8B F0 85 05 D6 5D C3 2B FA F2
-01B0 | 05 C3 96 8D E9 AF 1D EF B5 6C 72 4D E3 96 63 D2
-01C0 | EA 86 09 95 0A A5 61 53 21 70 A9 40 70 EA 92 D0
-01D0 | 35 CB CF F5 16 DA 6E DB BE 78 6B B3 B2 45 70 3C
-01E0 | D8 43 45 E0 7C 25 D5 4B 9A 05 0D 09 59 A6 DF 68
-01F0 | 39 56 62 BE FA A6 A4 4F 0C 7D 85 64 73 81 9A B0
-0200 | 62 E1 34 43 22 99 DA 17 55 57 92 F6 2B 7E A6 7E
-0210 | CD 2A 26 A2 96 9A BD EB 87 C1 02 EA 23 26 5F 26
-0220 | 69 F6 ED 50 1E B1 CC 50 8B 73 08 7D 3F FE B1 29
-0230 | 46 71 74 CC 7F FE 17 BE 82 E7 18 09 5B E8 90 80
-0240 | 73 46 53 DA 2A DE 40 8E 0F 37 3A 89 E8 AD 5E 3C
-0250 | E1 06 6C 49 14 2E C3 EB 5F E4 2B E7 8B F5 5C F5
-0260 | F9 76 5B 52 94 99 CE F2 2B E7 31 C3 1B DB 03 A9
-0270 | 6F 63 37 19 C2 AB 26 46 7F 11 DF F1 E3 79 30 F7
-0280 | 47 A7 03 D7 D0 98 94 67 51 19 C4 F2
+0000 | 00 00 00 00 00 00 00 00 01 08 20 3C E2 5A 77 65
+0010 | 7C 02 00 00 5C 07 E8 D0 83 FE 4F A7 D6 AD 1B 8A
+0020 | C7 63 8A 36 AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A
+0030 | 23 E8 D1 8C 4D 3B 8A B7 FE 50 02 00 1B 41 8E 98
+0040 | EC D0 FD 3F D2 EF 59 07 95 5A 6B A0 9F EE BE BD
+0050 | 4D 57 93 DB 90 D1 81 71 0B FD 5A 3A E1 22 7C D4
+0060 | 68 DF 74 2E C1 C8 52 57 B5 6F 50 36 4F FE E2 EF
+0070 | F1 50 F7 8A EE 2B 71 FC AD 2F CB 68 4A 8C D3 88
+0080 | 71 44 A1 E4 26 D8 86 A0 31 42 D2 88 69 FA 5B 5E
+0090 | 01 C8 98 49 43 75 AB 2B 68 55 71 A7 5D 98 81 AA
+00A0 | 39 5B C9 89 E7 CF 09 AF FE E9 B5 EA E4 2A 9C C1
+00B0 | DF 8C 15 FD C3 70 85 9E FA CF 1D 86 3A EA DD A1
+00C0 | A0 F8 3A C2 94 2B EB 91 57 A4 9A 70 69 2B 28 4E
+00D0 | 4B 45 B8 BF 7B 3B B4 09 58 88 C6 A1 7A 11 04 B7
+00E0 | 72 43 91 10 A0 FB B5 5F 89 47 A6 6A 1A B2 30 E8
+00F0 | F2 52 51 41 62 0F E3 5D AC 0A 4F 21 16 F0 0B 11
+0100 | CF 1F DF 9D 2A C1 74 3F E6 BF 55 66 F9 0B 7D C4
+0110 | 86 95 BE EF 87 60 C4 E6 9E 4B AD D2 F6 B9 FA ED
+0120 | 26 51 92 F2 92 56 BB BA 9B D2 AA 52 72 1C 76 0D
+0130 | BA 91 7B C1 DC 33 BF 7C FD 2B C0 EE 0B 9E 78 9B
+0140 | DB 96 DA 36 62 00 D7 27 96 80 7A FF CE 87 09 12
+0150 | 1E A4 60 AD 44 CD 21 20 2A 84 34 7B B8 F9 D5 81
+0160 | DA 1D A0 03 1B AB 51 23 8B 17 3A 66 0D DF 1A 25
+0170 | DB 4C D5 1C 6F 77 2E 59 8D E6 B6 27 EB FE 69 32
+0180 | 1C B8 BC 00 09 B4 87 A0 6C 0C 18 0B 5C 82 32 B9
+0190 | 16 B5 17 AA 63 6A 1F 14 53 14 E4 F8 39 84 47 08
+01A0 | E6 11 43 62 BD FC 4B D3 22 6F 21 B5 9C AA 01 AC
+01B0 | FE 2D 76 03 71 96 BC F5 E2 94 DC D6 4E 80 90 A1
+01C0 | 2D D6 8F 6E 23 A1 04 79 0D F8 0D EA 65 31 3A 15
+01D0 | 6F 45 C3 18 49 0F 5F EF 40 74 B8 E0 4B 0B C3 C5
+01E0 | F9 FB FF 6A 0B F4 BC 6E 7C 81 86 EF C3 E3 31 AB
+01F0 | 3C 3F 29 4D F2 6D 91 A4 00 57 74 A5 E2 DB E4 49
+0200 | 75 A2 7F 9E 23 F1 24 71 FE DF DF A5 75 89 3C B4
+0210 | 26 31 71 F6 B3 DE 8E 6D C7 C8 BE 0D 93 6B 2E 21
+0220 | 2E 79 EA 90 8A EC 26 B6 B9 88 12 5B 47 63 07 DE
+0230 | 4C B5 50 19 24 11 2E 49 B0 42 35 F3 87 34 CD FF
+0240 | B5 11 D3 D8 B0 C7 CA 21 A7 89 BC 86 D4 37 77 BF
+0250 | 20 5E B8 82 95 1C 4E 5C 82 20 E6 62 1F CA 6E 1A
+0260 | BF 02 7B B9 C3 DF 35 6A 78 50 16 E4 A9 F4 C9 C5
+0270 | 42 2E 08 81 EF F3 DC F6 16 78 5E EE E5 E8 F3 6E
+0280 | 8A C8 3A D6 1A 51 35 22 9F C0 66 A7
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 = 7D4A606F265527494A39B92866DD6F044805CCB671235F4686E6737AD
message_id
8, 8
-01480EC8D6CF7465
+0108203CE25A7765
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-D8020000
(728 in decimal)
+7C020000
(636 in decimal)
Message body length
@@ -482,19 +482,19 @@ random_padding_bytes = 7D4A606F265527494A39B92866DD6F044805CCB671235F4686E6737AD
nonce
24, 16
-8A1A2C011E5429F692F64662873DEEAB
+83FE4FA7D6AD1B8AC7638A36ADAB7A9A
Value generated by client in Step 1
server_nonce
40, 16
-6AC0DBC798A505E594815E49FAE57647
+65D66D4E1CC2165A23E8D18C4D3B8AB7
Value received from server in Step 2
encrypted_answer
56, 596
-FE500200B02D72B51876E099A2D4B17B
F6F7D36DF464C32096E78198AECAA682
83C1824D72FBC544C1F1618A56C06CB7
B5A192F3156AF15E212F1AFF12C876D7
9E93797B278A345932417F21F676FBB6
C7BCFEFEC9CC06FC912D8DD5D433F983
0D4B83866F236DBF4804BCB59370459C
B511D165E70C699777417D7D532FE201
B25E6F972F790FC6E3E36C51183C1D66
F91C56141AE73CB23C875AFB48655C65
AF6332F6BB8EA22A4919029E9B63ABAA
51A6C020EDEE8CC824EF535801291666
7877D6D921D73FC2568CACD532DD7E31
B043813062B7F5984259A4BBEC4DB028
C56D1E750E850E4BE9440FAAA824A89B
F8F7DCE0D4A9014190B17D2148927019
679D5A69F906173FA752A41618652FD2
62DEB1B932A6F14F98559631F6161AA8
44AA25F9AF8D41F2EC4FAE9DC7EF5ED6
8791DAD83DC24D88D24BCE8E70FA9D56
49FB8C2901D063A39217FEE80413DB14
23F107BCBE68E83E6350DCA801765B72
891C80D1EC7DEC4B4193399870CA8BF0
8505D65DC32BFAF205C3968DE9AF1DEF
B56C724DE39663D2EA8609950AA56153
2170A94070EA92D035CBCFF516DA6EDB
BE786BB3B245703CD84345E07C25D54B
9A050D0959A6DF68395662BEFAA6A44F
0C7D856473819AB062E134432299DA17
555792F62B7EA67ECD2A26A2969ABDEB
87C102EA23265F2669F6ED501EB1CC50
8B73087D3FFEB129467174CC7FFE17BE
82E718095BE89080734653DA2ADE408E
0F373A89E8AD5E3CE1066C49142EC3EB
5FE42BE78BF55CF5F9765B529499CEF2
2BE731C31BDB03A96F633719C2AB2646
7F11DFF1E37930F747A703D7D0989467
5119C4F2
+FE5002001B418E98ECD0FD3FD2EF5907
955A6BA09FEEBEBD4D5793DB90D18171
0BFD5A3AE1227CD468DF742EC1C85257
B56F50364FFEE2EFF150F78AEE2B71FC
AD2FCB684A8CD3887144A1E426D886A0
3142D28869FA5B5E01C898494375AB2B
685571A75D9881AA395BC989E7CF09AF
FEE9B5EAE42A9CC1DF8C15FDC370859E
FACF1D863AEADDA1A0F83AC2942BEB91
57A49A70692B284E4B45B8BF7B3BB409
5888C6A17A1104B772439110A0FBB55F
8947A66A1AB230E8F2525141620FE35D
AC0A4F2116F00B11CF1FDF9D2AC1743F
E6BF5566F90B7DC48695BEEF8760C4E6
9E4BADD2F6B9FAED265192F29256BBBA
9BD2AA52721C760DBA917BC1DC33BF7C
FD2BC0EE0B9E789BDB96DA366200D727
96807AFFCE8709121EA460AD44CD2120
2A84347BB8F9D581DA1DA0031BAB5123
8B173A660DDF1A25DB4CD51C6F772E59
8DE6B627EBFE69321CB8BC0009B487A0
6C0C180B5C8232B916B517AA636A1F14
5314E4F839844708E6114362BDFC4BD3
226F21B59CAA01ACFE2D76037196BCF5
E294DCD64E8090A12DD68F6E23A10479
0DF80DEA65313A156F45C318490F5FEF
4074B8E04B0BC3C5F9FBFF6A0BF4BC6E
7C8186EFC3E331AB3C3F294DF26D91A4
005774A5E2DBE44975A27F9E23F12471
FEDFDFA575893CB4263171F6B3DE8E6D
C7C8BE0D936B2E212E79EA908AEC26B6
B988125B476307DE4CB5501924112E49
B04235F38734CDFFB511D3D8B0C7CA21
A789BC86D43777BF205EB882951C4E5C
8220E6621FCA6E1ABF027BB9C3DF356A
785016E4A9F4C9C5422E0881EFF3DCF6
16785EEEE5E8F36E8AC83AD61A513522
9FC066A7
See below
@@ -502,20 +502,20 @@ random_padding_bytes = 7D4A606F265527494A39B92866DD6F044805CCB671235F4686E6737AD
Decrypt encrypted_answer
using the reverse of the process specified in step 6:
-encrypted_answer = B02D72B51876E099A2D4B17BF6F7D36DF464C32096E78198AECAA68283C1824D72FBC544C1F1618A56C06CB7B5A192F3156AF15E212F1AFF12C876D79E93797B278A345932417F21F676FBB6C7BCFEFEC9CC06FC912D8DD5D433F9830D4B83866F236DBF4804BCB59370459CB511D165E70C699777417D7D532FE201B25E6F972F790FC6E3E36C51183C1D66F91C56141AE73CB23C875AFB48655C65AF6332F6BB8EA22A4919029E9B63ABAA51A6C020EDEE8CC824EF5358012916667877D6D921D73FC2568CACD532DD7E31B043813062B7F5984259A4BBEC4DB028C56D1E750E850E4BE9440FAAA824A89BF8F7DCE0D4A9014190B17D2148927019679D5A69F906173FA752A41618652FD262DEB1B932A6F14F98559631F6161AA844AA25F9AF8D41F2EC4FAE9DC7EF5ED68791DAD83DC24D88D24BCE8E70FA9D5649FB8C2901D063A39217FEE80413DB1423F107BCBE68E83E6350DCA801765B72891C80D1EC7DEC4B4193399870CA8BF08505D65DC32BFAF205C3968DE9AF1DEFB56C724DE39663D2EA8609950AA561532170A94070EA92D035CBCFF516DA6EDBBE786BB3B245703CD84345E07C25D54B9A050D0959A6DF68395662BEFAA6A44F0C7D856473819AB062E134432299DA17555792F62B7EA67ECD2A26A2969ABDEB87C102EA23265F2669F6ED501EB1CC508B73087D3FFEB129467174CC7FFE17BE82E718095BE89080734653DA2ADE408E0F373A89E8AD5E3CE1066C49142EC3EB5FE42BE78BF55CF5F9765B529499CEF22BE731C31BDB03A96F633719C2AB26467F11DFF1E37930F747A703D7D09894675119C4F2
-tmp_aes_key = 78576E1A30E6B0940A9D9738D8A08F0902EE0C9B9DF2F4CA62703CDE732E4D9A
-tmp_aes_iv = 7D469F9CC0DFA9F67BCC38FE9DD1E77B0EC6D30C040208B306BDB7684ADF3F67
+encrypted_answer = 1B418E98ECD0FD3FD2EF5907955A6BA09FEEBEBD4D5793DB90D181710BFD5A3AE1227CD468DF742EC1C85257B56F50364FFEE2EFF150F78AEE2B71FCAD2FCB684A8CD3887144A1E426D886A03142D28869FA5B5E01C898494375AB2B685571A75D9881AA395BC989E7CF09AFFEE9B5EAE42A9CC1DF8C15FDC370859EFACF1D863AEADDA1A0F83AC2942BEB9157A49A70692B284E4B45B8BF7B3BB4095888C6A17A1104B772439110A0FBB55F8947A66A1AB230E8F2525141620FE35DAC0A4F2116F00B11CF1FDF9D2AC1743FE6BF5566F90B7DC48695BEEF8760C4E69E4BADD2F6B9FAED265192F29256BBBA9BD2AA52721C760DBA917BC1DC33BF7CFD2BC0EE0B9E789BDB96DA366200D72796807AFFCE8709121EA460AD44CD21202A84347BB8F9D581DA1DA0031BAB51238B173A660DDF1A25DB4CD51C6F772E598DE6B627EBFE69321CB8BC0009B487A06C0C180B5C8232B916B517AA636A1F145314E4F839844708E6114362BDFC4BD3226F21B59CAA01ACFE2D76037196BCF5E294DCD64E8090A12DD68F6E23A104790DF80DEA65313A156F45C318490F5FEF4074B8E04B0BC3C5F9FBFF6A0BF4BC6E7C8186EFC3E331AB3C3F294DF26D91A4005774A5E2DBE44975A27F9E23F12471FEDFDFA575893CB4263171F6B3DE8E6DC7C8BE0D936B2E212E79EA908AEC26B6B988125B476307DE4CB5501924112E49B04235F38734CDFFB511D3D8B0C7CA21A789BC86D43777BF205EB882951C4E5C8220E6621FCA6E1ABF027BB9C3DF356A785016E4A9F4C9C5422E0881EFF3DCF616785EEEE5E8F36E8AC83AD61A5135229FC066A7
+tmp_aes_key = 77956CAD707C98DD3C0873D0AF3F3388D352E8EF9E3A478719F1F8FD0A1946A3
+tmp_aes_iv = 37D0003B77E9B64CC8CB4DF0E64D69CB4A3520877049D1AE1843149831447EEA
Yielding:
-answer_with_hash = 12271379349EDC31E311D0B9BC0B42E3EFB80C46BA0D89B58A1A2C011E5429F692F64662873DEEAB6AC0DBC798A505E594815E49FAE5764703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100C5ED610DA5C0EFD8EC3E79DEA7EACFC9ACF3E18028737BE4E5D17A49C887A6430D9B369E166A20F84F326163AEF6C89189FB051359158455EF4746E528090406312C95871E92CADFF28F9054D5B3AF183FB7227CB68309110A68D3A57C57C067E5B3BAF41FF51D6E777713F67EC7481EEE76842DDBC830E1A2383A0C94A7DE6218337378EFA5D961E483FD36F4B5614B50CC8691D5B9E644DDF3F756EDB24099A3E0607F561E0FDBDEB41606D18EA643F2C50CC33BA4A4E8D57D940AFB474DE732B5746681E52592968C679FEF109EA8ABFB1167BAA904D705D09CAA6966FC2E7B40EB4109EF58020B7451FB43851B5DC28F5AF7FB9AF5723C383C115A7D85C5D6CF746585C7531A5463B73A
-answer = BA0D89B58A1A2C011E5429F692F64662873DEEAB6AC0DBC798A505E594815E49FAE5764703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100C5ED610DA5C0EFD8EC3E79DEA7EACFC9ACF3E18028737BE4E5D17A49C887A6430D9B369E166A20F84F326163AEF6C89189FB051359158455EF4746E528090406312C95871E92CADFF28F9054D5B3AF183FB7227CB68309110A68D3A57C57C067E5B3BAF41FF51D6E777713F67EC7481EEE76842DDBC830E1A2383A0C94A7DE6218337378EFA5D961E483FD36F4B5614B50CC8691D5B9E644DDF3F756EDB24099A3E0607F561E0FDBDEB41606D18EA643F2C50CC33BA4A4E8D57D940AFB474DE732B5746681E52592968C679FEF109EA8ABFB1167BAA904D705D09CAA6966FC2E7B40EB4109EF58020B7451FB43851B5DC28F5AF7FB9AF5723C383C115A7D85C5D6CF746585C7531A5463B73A
+answer_with_hash = 6AE107D87B0AC6EF18785CB308A21F0D961516CBBA0D89B583FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100BC15179B7B777707A4BC1DD6EFEB86AE7266F68F792CEB76DE1F052FB95BC4C3C8FC438496ED2AAE99DE6E31D49027448A5C7FF6695600E2F368B3E4437EAC9CFA9E21E7AEBCFCAE28A506D6B30A187163A01905EDE179B80DF01BBBC224FBEBB6CF0BE21C4057A71FB57D9664E3458893ED3F88C4A980FC0C0A225E52F7AF4791E91AE862279B9A998A462A759630C5F15DCDC4E1DA9473326E86AD62441805D14C0E8AF75AC36B41418AB0C42BEE3DA18530F891509AA43B9AE8915EFAA45BC2D27B8A69FC1061E1AE2573891B3ADB21E306594347BB09407D41760D8E3DEA1948909A4D8CAE0EA61B4C32FE4E0D11F48D8ED82C1D3BEA6FD5B42EA962251CE25A7765495A203E6B0661AC
+answer = BA0D89B583FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100BC15179B7B777707A4BC1DD6EFEB86AE7266F68F792CEB76DE1F052FB95BC4C3C8FC438496ED2AAE99DE6E31D49027448A5C7FF6695600E2F368B3E4437EAC9CFA9E21E7AEBCFCAE28A506D6B30A187163A01905EDE179B80DF01BBBC224FBEBB6CF0BE21C4057A71FB57D9664E3458893ED3F88C4A980FC0C0A225E52F7AF4791E91AE862279B9A998A462A759630C5F15DCDC4E1DA9473326E86AD62441805D14C0E8AF75AC36B41418AB0C42BEE3DA18530F891509AA43B9AE8915EFAA45BC2D27B8A69FC1061E1AE2573891B3ADB21E306594347BB09407D41760D8E3DEA1948909A4D8CAE0EA61B4C32FE4E0D11F48D8ED82C1D3BEA6FD5B42EA962251CE25A7765495A203E6B0661AC
Generated payload (excluding transport headers/trailers):
-0000 | BA 0D 89 B5 8A 1A 2C 01 1E 54 29 F6 92 F6 46 62
-0010 | 87 3D EE AB 6A C0 DB C7 98 A5 05 E5 94 81 5E 49
-0020 | FA E5 76 47 03 00 00 00 FE 00 01 00 C7 1C AE B9
+0000 | BA 0D 89 B5 83 FE 4F A7 D6 AD 1B 8A C7 63 8A 36
+0010 | AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A 23 E8 D1 8C
+0020 | 4D 3B 8A B7 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 = BA0D89B58A1A2C011E5429F692F64662873DEEAB6AC0DBC798A505E594815E49FAE5764
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 | C5 ED 61 0D A5 C0 EF D8 EC 3E 79 DE A7 EA CF C9
-0140 | AC F3 E1 80 28 73 7B E4 E5 D1 7A 49 C8 87 A6 43
-0150 | 0D 9B 36 9E 16 6A 20 F8 4F 32 61 63 AE F6 C8 91
-0160 | 89 FB 05 13 59 15 84 55 EF 47 46 E5 28 09 04 06
-0170 | 31 2C 95 87 1E 92 CA DF F2 8F 90 54 D5 B3 AF 18
-0180 | 3F B7 22 7C B6 83 09 11 0A 68 D3 A5 7C 57 C0 67
-0190 | E5 B3 BA F4 1F F5 1D 6E 77 77 13 F6 7E C7 48 1E
-01A0 | EE 76 84 2D DB C8 30 E1 A2 38 3A 0C 94 A7 DE 62
-01B0 | 18 33 73 78 EF A5 D9 61 E4 83 FD 36 F4 B5 61 4B
-01C0 | 50 CC 86 91 D5 B9 E6 44 DD F3 F7 56 ED B2 40 99
-01D0 | A3 E0 60 7F 56 1E 0F DB DE B4 16 06 D1 8E A6 43
-01E0 | F2 C5 0C C3 3B A4 A4 E8 D5 7D 94 0A FB 47 4D E7
-01F0 | 32 B5 74 66 81 E5 25 92 96 8C 67 9F EF 10 9E A8
-0200 | AB FB 11 67 BA A9 04 D7 05 D0 9C AA 69 66 FC 2E
-0210 | 7B 40 EB 41 09 EF 58 02 0B 74 51 FB 43 85 1B 5D
-0220 | C2 8F 5A F7 FB 9A F5 72 3C 38 3C 11 5A 7D 85 C5
-0230 | D6 CF 74 65
+0130 | BC 15 17 9B 7B 77 77 07 A4 BC 1D D6 EF EB 86 AE
+0140 | 72 66 F6 8F 79 2C EB 76 DE 1F 05 2F B9 5B C4 C3
+0150 | C8 FC 43 84 96 ED 2A AE 99 DE 6E 31 D4 90 27 44
+0160 | 8A 5C 7F F6 69 56 00 E2 F3 68 B3 E4 43 7E AC 9C
+0170 | FA 9E 21 E7 AE BC FC AE 28 A5 06 D6 B3 0A 18 71
+0180 | 63 A0 19 05 ED E1 79 B8 0D F0 1B BB C2 24 FB EB
+0190 | B6 CF 0B E2 1C 40 57 A7 1F B5 7D 96 64 E3 45 88
+01A0 | 93 ED 3F 88 C4 A9 80 FC 0C 0A 22 5E 52 F7 AF 47
+01B0 | 91 E9 1A E8 62 27 9B 9A 99 8A 46 2A 75 96 30 C5
+01C0 | F1 5D CD C4 E1 DA 94 73 32 6E 86 AD 62 44 18 05
+01D0 | D1 4C 0E 8A F7 5A C3 6B 41 41 8A B0 C4 2B EE 3D
+01E0 | A1 85 30 F8 91 50 9A A4 3B 9A E8 91 5E FA A4 5B
+01F0 | C2 D2 7B 8A 69 FC 10 61 E1 AE 25 73 89 1B 3A DB
+0200 | 21 E3 06 59 43 47 BB 09 40 7D 41 76 0D 8E 3D EA
+0210 | 19 48 90 9A 4D 8C AE 0E A6 1B 4C 32 FE 4E 0D 11
+0220 | F4 8D 8E D8 2C 1D 3B EA 6F D5 B4 2E A9 62 25 1C
+0230 | E2 5A 77 65
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 = BA0D89B58A1A2C011E5429F692F64662873DEEAB6AC0DBC798A505E594815E49FAE5764
nonce
4, 16
-8A1A2C011E5429F692F64662873DEEAB
+83FE4FA7D6AD1B8AC7638A36ADAB7A9A
Value generated by client in Step 1
server_nonce
20, 16
-6AC0DBC798A505E594815E49FAE57647
+65D66D4E1CC2165A23E8D18C4D3B8AB7
Value received from server in Step 2
@@ -594,13 +594,13 @@ answer = BA0D89B58A1A2C011E5429F692F64662873DEEAB6AC0DBC798A505E594815E49FAE5764
g_a
300, 260
-FE000100C5ED610DA5C0EFD8EC3E79DE
A7EACFC9ACF3E18028737BE4E5D17A49
C887A6430D9B369E166A20F84F326163
AEF6C89189FB051359158455EF4746E5
28090406312C95871E92CADFF28F9054
D5B3AF183FB7227CB68309110A68D3A5
7C57C067E5B3BAF41FF51D6E777713F6
7EC7481EEE76842DDBC830E1A2383A0C
94A7DE6218337378EFA5D961E483FD36
F4B5614B50CC8691D5B9E644DDF3F756
EDB24099A3E0607F561E0FDBDEB41606
D18EA643F2C50CC33BA4A4E8D57D940A
FB474DE732B5746681E52592968C679F
EF109EA8ABFB1167BAA904D705D09CAA
6966FC2E7B40EB4109EF58020B7451FB
43851B5DC28F5AF7FB9AF5723C383C11
5A7D85C5
+FE000100BC15179B7B777707A4BC1DD6
EFEB86AE7266F68F792CEB76DE1F052F
B95BC4C3C8FC438496ED2AAE99DE6E31
D49027448A5C7FF6695600E2F368B3E4
437EAC9CFA9E21E7AEBCFCAE28A506D6
B30A187163A01905EDE179B80DF01BBB
C224FBEBB6CF0BE21C4057A71FB57D96
64E3458893ED3F88C4A980FC0C0A225E
52F7AF4791E91AE862279B9A998A462A
759630C5F15DCDC4E1DA9473326E86AD
62441805D14C0E8AF75AC36B41418AB0
C42BEE3DA18530F891509AA43B9AE891
5EFAA45BC2D27B8A69FC1061E1AE2573
891B3ADB21E306594347BB09407D4176
0D8E3DEA1948909A4D8CAE0EA61B4C32
FE4E0D11F48D8ED82C1D3BEA6FD5B42E
A962251C
g_a
diffie-hellman parameter
server_time
560, 4
-D6CF7465
(1702154198 in decimal)
+E25A7765
(1702320866 in decimal)
Server time
@@ -609,34 +609,34 @@ answer = BA0D89B58A1A2C011E5429F692F64662873DEEAB6AC0DBC798A505E594815E49FAE5764
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 = 5DC51D8C155FDDE99C5E4D472A278409BAAF528266CD33AF0259FFAF68D4E7AA558EAE663ED8D29A9FE68E8DA7519163446FFB3CE549A75ED66AD37BE580F66C1306BA4EFE9A14CACA87A900A79968F50E57288B06DD6AEBA49C803C3F50D9BBE53E2074EBD49E145BB84B3DC6D502C03E2D58E7BC271CC3EF93A04433846F126D4951BF6E405870EF9BE01812FB44F10A9EC3C95B266AA0D843436F167178A49F9750A7F0FDCF287D57656A804C191C14BE9D719F9ECF9412EF17AC0AD4501876E19F640239EC75EC6F3567CB7B9FE48DA3C671980891F18D17B89622FDF265FC70EDC226A500981987D296073E693E1EC51A39C166CA5E464E1297E5AD368E
+b = D03EB9F7EAE9C226883F2EDF3E567C95B46E967B896EE5B3B4809F553AE78643827F179D03F886CD10A5953B855CCE619227A18BEB308E85312A3CD092213A9B6FE79FE1F6C3E69A76AC0B42A27C14F71277ED22895E5B46ED82DD91D1A0823A65E1C2911EC15674448137A3AC724E47B4C75A8FC4700AC2A87A23DC5D018C9CB3C4E8AC6A4B88C2D4A534858F906287823A847CDE105C5071704675648D26539E457B0D2918B431736962A437EA25B1693DD8309A622FD2B4A69E8E8A7BA8AD258ABCCE4257A32161A0C81EFC90A41B504462D7272E25E611509C211A6E1B3E27E61691E050662F3EEA9BB93844FA41CBC9850BA93AFAD3AB71F6118BA27631
Then compute g_b = pow(g, b) mod dh_prime
-g_b = 9E8684FCBA2B2D5015BE8FCB61DD37975DD1FF1C8DEC0D50F802B55DCD0EC328F0116C23ACE6E839D5B0BC278823D6D790F3ED28D52E0790D32AAB7A37EB3622021D28878CA2FFA7F8AC3683DBD5AA47C2D716CADD9EE216055095798F253174E445CC594B1D953B1AA5305B1463C96A85307F1B0184CEF0792515B7A85BFA5C4647C452AC4BD7CC8E710F5B590659A86E6230473026273F71549A684069DC3E369D7D8D8CE13F734557C2AB042D9C36718B012C38AE64DF7F006B71BF3FA1C273ED08B30207C41172A6B8D46F829E2C9E47EACA8200A3FFC5F37B9D53CC421153E51BA9136474689358CA50D72AAA457632596E966F15962C0DC49971C8F2C8
+g_b = 7FC2C58B9603B3D75A35AFA493AE2D14DCAA0B5E5D8BF64521ABC28CB1FA7E0850C01F3D50A91722E39655632710D583822751C84AF1629B0E47C6DC5394A0AA1D51392C22CBCF87BD5A5C333438CE292AE3B1CCF58339A436CE0EAD46CDD80C7AF9CA32F52DA53693741C79EE2A209150194C04B407291B81A897D8817CAD435594C2BA944A4D326C8CB91EF417182922D7B5F0DF85F8DD8FCCC84834E6BFFF6C4A36BD6C7C316A7A0729F22ED3FFD2EA3AEF2071BA8D7BBEC13DC2BE08F1A36F203DB03130E04CE226188CABE6AC90F9D1038DE6A7D99A4400E8669F8910D22849C6B00A2B10A1E6AA7B7B2BFF59279574EE2286E4EE45E64152AFE9990899
7.1) generation of encrypted_data
Generated payload (excluding transport headers/trailers):
-0000 | 54 B6 43 66 8A 1A 2C 01 1E 54 29 F6 92 F6 46 62
-0010 | 87 3D EE AB 6A C0 DB C7 98 A5 05 E5 94 81 5E 49
-0020 | FA E5 76 47 00 00 00 00 00 00 00 00 FE 00 01 00
-0030 | 9E 86 84 FC BA 2B 2D 50 15 BE 8F CB 61 DD 37 97
-0040 | 5D D1 FF 1C 8D EC 0D 50 F8 02 B5 5D CD 0E C3 28
-0050 | F0 11 6C 23 AC E6 E8 39 D5 B0 BC 27 88 23 D6 D7
-0060 | 90 F3 ED 28 D5 2E 07 90 D3 2A AB 7A 37 EB 36 22
-0070 | 02 1D 28 87 8C A2 FF A7 F8 AC 36 83 DB D5 AA 47
-0080 | C2 D7 16 CA DD 9E E2 16 05 50 95 79 8F 25 31 74
-0090 | E4 45 CC 59 4B 1D 95 3B 1A A5 30 5B 14 63 C9 6A
-00A0 | 85 30 7F 1B 01 84 CE F0 79 25 15 B7 A8 5B FA 5C
-00B0 | 46 47 C4 52 AC 4B D7 CC 8E 71 0F 5B 59 06 59 A8
-00C0 | 6E 62 30 47 30 26 27 3F 71 54 9A 68 40 69 DC 3E
-00D0 | 36 9D 7D 8D 8C E1 3F 73 45 57 C2 AB 04 2D 9C 36
-00E0 | 71 8B 01 2C 38 AE 64 DF 7F 00 6B 71 BF 3F A1 C2
-00F0 | 73 ED 08 B3 02 07 C4 11 72 A6 B8 D4 6F 82 9E 2C
-0100 | 9E 47 EA CA 82 00 A3 FF C5 F3 7B 9D 53 CC 42 11
-0110 | 53 E5 1B A9 13 64 74 68 93 58 CA 50 D7 2A AA 45
-0120 | 76 32 59 6E 96 6F 15 96 2C 0D C4 99 71 C8 F2 C8
+0000 | 54 B6 43 66 83 FE 4F A7 D6 AD 1B 8A C7 63 8A 36
+0010 | AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A 23 E8 D1 8C
+0020 | 4D 3B 8A B7 00 00 00 00 00 00 00 00 FE 00 01 00
+0030 | 7F C2 C5 8B 96 03 B3 D7 5A 35 AF A4 93 AE 2D 14
+0040 | DC AA 0B 5E 5D 8B F6 45 21 AB C2 8C B1 FA 7E 08
+0050 | 50 C0 1F 3D 50 A9 17 22 E3 96 55 63 27 10 D5 83
+0060 | 82 27 51 C8 4A F1 62 9B 0E 47 C6 DC 53 94 A0 AA
+0070 | 1D 51 39 2C 22 CB CF 87 BD 5A 5C 33 34 38 CE 29
+0080 | 2A E3 B1 CC F5 83 39 A4 36 CE 0E AD 46 CD D8 0C
+0090 | 7A F9 CA 32 F5 2D A5 36 93 74 1C 79 EE 2A 20 91
+00A0 | 50 19 4C 04 B4 07 29 1B 81 A8 97 D8 81 7C AD 43
+00B0 | 55 94 C2 BA 94 4A 4D 32 6C 8C B9 1E F4 17 18 29
+00C0 | 22 D7 B5 F0 DF 85 F8 DD 8F CC C8 48 34 E6 BF FF
+00D0 | 6C 4A 36 BD 6C 7C 31 6A 7A 07 29 F2 2E D3 FF D2
+00E0 | EA 3A EF 20 71 BA 8D 7B BE C1 3D C2 BE 08 F1 A3
+00F0 | 6F 20 3D B0 31 30 E0 4C E2 26 18 8C AB E6 AC 90
+0100 | F9 D1 03 8D E6 A7 D9 9A 44 00 E8 66 9F 89 10 D2
+0110 | 28 49 C6 B0 0A 2B 10 A1 E6 AA 7B 7B 2B FF 59 27
+0120 | 95 74 EE 22 86 E4 EE 45 E6 41 52 AF E9 99 08 99
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 = BA0D89B58A1A2C011E5429F692F64662873DEEAB6AC0DBC798A505E594815E49FAE5764
nonce
4, 16
-8A1A2C011E5429F692F64662873DEEAB
+83FE4FA7D6AD1B8AC7638A36ADAB7A9A
Value generated by client in Step 1
server_nonce
20, 16
-6AC0DBC798A505E594815E49FAE57647
+65D66D4E1CC2165A23E8D18C4D3B8AB7
Value received from server in Step 2
g_b
36, 260
-FE0001009E8684FCBA2B2D5015BE8FCB
61DD37975DD1FF1C8DEC0D50F802B55D
CD0EC328F0116C23ACE6E839D5B0BC27
8823D6D790F3ED28D52E0790D32AAB7A
37EB3622021D28878CA2FFA7F8AC3683
DBD5AA47C2D716CADD9EE21605509579
8F253174E445CC594B1D953B1AA5305B
1463C96A85307F1B0184CEF0792515B7
A85BFA5C4647C452AC4BD7CC8E710F5B
590659A86E6230473026273F71549A68
4069DC3E369D7D8D8CE13F734557C2AB
042D9C36718B012C38AE64DF7F006B71
BF3FA1C273ED08B30207C41172A6B8D4
6F829E2C9E47EACA8200A3FFC5F37B9D
53CC421153E51BA9136474689358CA50
D72AAA457632596E966F15962C0DC499
71C8F2C8
+FE0001007FC2C58B9603B3D75A35AFA4
93AE2D14DCAA0B5E5D8BF64521ABC28C
B1FA7E0850C01F3D50A91722E3965563
2710D583822751C84AF1629B0E47C6DC
5394A0AA1D51392C22CBCF87BD5A5C33
3438CE292AE3B1CCF58339A436CE0EAD
46CDD80C7AF9CA32F52DA53693741C79
EE2A209150194C04B407291B81A897D8
817CAD435594C2BA944A4D326C8CB91E
F417182922D7B5F0DF85F8DD8FCCC848
34E6BFFF6C4A36BD6C7C316A7A0729F2
2ED3FFD2EA3AEF2071BA8D7BBEC13DC2
BE08F1A36F203DB03130E04CE226188C
ABE6AC90F9D1038DE6A7D99A4400E866
9F8910D22849C6B00A2B10A1E6AA7B7B
2BFF59279574EE2286E4EE45E64152AF
E9990899
Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding
@@ -684,47 +684,47 @@ answer = BA0D89B58A1A2C011E5429F692F64662873DEEAB6AC0DBC798A505E594815E49FAE5764
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 = 54B643668A1A2C011E5429F692F64662873DEEAB6AC0DBC798A505E594815E49FAE576470000000000000000FE0001009E8684FCBA2B2D5015BE8FCB61DD37975DD1FF1C8DEC0D50F802B55DCD0EC328F0116C23ACE6E839D5B0BC278823D6D790F3ED28D52E0790D32AAB7A37EB3622021D28878CA2FFA7F8AC3683DBD5AA47C2D716CADD9EE216055095798F253174E445CC594B1D953B1AA5305B1463C96A85307F1B0184CEF0792515B7A85BFA5C4647C452AC4BD7CC8E710F5B590659A86E6230473026273F71549A684069DC3E369D7D8D8CE13F734557C2AB042D9C36718B012C38AE64DF7F006B71BF3FA1C273ED08B30207C41172A6B8D46F829E2C9E47EACA8200A3FFC5F37B9D53CC421153E51BA9136474689358CA50D72AAA457632596E966F15962C0DC49971C8F2C8
-padding = 468F095460FF0C3DAB7F600C
-tmp_aes_key = 78576E1A30E6B0940A9D9738D8A08F0902EE0C9B9DF2F4CA62703CDE732E4D9A
-tmp_aes_iv = 7D469F9CC0DFA9F67BCC38FE9DD1E77B0EC6D30C040208B306BDB7684ADF3F67
+data = 54B6436683FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB70000000000000000FE0001007FC2C58B9603B3D75A35AFA493AE2D14DCAA0B5E5D8BF64521ABC28CB1FA7E0850C01F3D50A91722E39655632710D583822751C84AF1629B0E47C6DC5394A0AA1D51392C22CBCF87BD5A5C333438CE292AE3B1CCF58339A436CE0EAD46CDD80C7AF9CA32F52DA53693741C79EE2A209150194C04B407291B81A897D8817CAD435594C2BA944A4D326C8CB91EF417182922D7B5F0DF85F8DD8FCCC84834E6BFFF6C4A36BD6C7C316A7A0729F22ED3FFD2EA3AEF2071BA8D7BBEC13DC2BE08F1A36F203DB03130E04CE226188CABE6AC90F9D1038DE6A7D99A4400E8669F8910D22849C6B00A2B10A1E6AA7B7B2BFF59279574EE2286E4EE45E64152AFE9990899
+padding = 0BA27B8C75CCDFCFB67AAB25
+tmp_aes_key = 77956CAD707C98DD3C0873D0AF3F3388D352E8EF9E3A478719F1F8FD0A1946A3
+tmp_aes_iv = 37D0003B77E9B64CC8CB4DF0E64D69CB4A3520877049D1AE1843149831447EEA
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 = 43F7500A87615A4615C7A2F4C6C7C3AE2ADF91ECFD33FD9962D381E8E71D9FA33B78B2A176343890A4295B101CCAFF29801CCDEA284222064388DC4B3EAC94F4FD60A73F930B42EEC19A31138E42CCF9C84BEDD9BF3CADEAB539C904916D1EAAB70112F7546CE2C4E40B053C10322BAC88920F3E4626B10DFD6E14C0C849FC7E5F222839DC5D43C8E73D4E09B2700B389AB6C2736A6F59DC2FCEA44457C6EF668C78D9E7882421A11EF86E23E034AF28D6F52AFF562AAADF26762894286A83F4065887AC666BB79C24E8C1255AE02A26B3996CEF685D680C76C9672C5D61DF4F3F79BF5460A8E74538E39D32A5BFAF0F385323952C0D97FEA2947F5E3CEE2BD2F9F1038A9C875C6858B8761E2BC80F39BA5ECC87A4CD0BC0494556BC695B505500B1CFD96BBDAC0CA9D3483C752B5381AC82767BA272C755F954412816504C60BC04E90E4A07984172113ADC915B7C0A
+encrypted_data = 3E0AB10AD2B21A9DF4A4FE1D48F23232F6154DFAEDBFC85DD7D7DEF84DACCD7214E21C8E48BE56BEBBBCD8E892A5F0FA02C512708285F45D5A9B8CAE8AA28D800BC4468FA801B95F7A1E5695ABA9B5D5E87D72EA3A27B91CE1AB09DE038249C2E49A12B85C4772701C71468643C5F88DCB5CFFC95662C94F927DB65B3027CCEA8C98D46CE8E8944A520CC148AB5C1A705960BBA9855E040AA88C933103518883398C9AFDAF782DBB6394337A5ED0A2E6D68A04D02CFDC53DE5D93238908C8735C0BD1AC6406D8327D71D1E81E51EAD160CB29AFF53D381100096EE29900C194B3395DF8C89EF566BF2EFF4E9E2FE2E56640580437037E4309965D11C2291BB95CF9E8DDE4B5F172553FB61AD43EDB40BCC44CF76D4245F88E03C0C2699576301F6B1A8164F67EBA98ED2E87D9D15364747C8CA7EA6C6FC55873C5DD0C41E5014165253359DCFDB2BB955C3AD3CA97D4C
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 04 13 07 00 D6 CF 74 65
-0010 | 78 01 00 00 1F 5F 04 F5 8A 1A 2C 01 1E 54 29 F6
-0020 | 92 F6 46 62 87 3D EE AB 6A C0 DB C7 98 A5 05 E5
-0030 | 94 81 5E 49 FA E5 76 47 FE 50 01 00 43 F7 50 0A
-0040 | 87 61 5A 46 15 C7 A2 F4 C6 C7 C3 AE 2A DF 91 EC
-0050 | FD 33 FD 99 62 D3 81 E8 E7 1D 9F A3 3B 78 B2 A1
-0060 | 76 34 38 90 A4 29 5B 10 1C CA FF 29 80 1C CD EA
-0070 | 28 42 22 06 43 88 DC 4B 3E AC 94 F4 FD 60 A7 3F
-0080 | 93 0B 42 EE C1 9A 31 13 8E 42 CC F9 C8 4B ED D9
-0090 | BF 3C AD EA B5 39 C9 04 91 6D 1E AA B7 01 12 F7
-00A0 | 54 6C E2 C4 E4 0B 05 3C 10 32 2B AC 88 92 0F 3E
-00B0 | 46 26 B1 0D FD 6E 14 C0 C8 49 FC 7E 5F 22 28 39
-00C0 | DC 5D 43 C8 E7 3D 4E 09 B2 70 0B 38 9A B6 C2 73
-00D0 | 6A 6F 59 DC 2F CE A4 44 57 C6 EF 66 8C 78 D9 E7
-00E0 | 88 24 21 A1 1E F8 6E 23 E0 34 AF 28 D6 F5 2A FF
-00F0 | 56 2A AA DF 26 76 28 94 28 6A 83 F4 06 58 87 AC
-0100 | 66 6B B7 9C 24 E8 C1 25 5A E0 2A 26 B3 99 6C EF
-0110 | 68 5D 68 0C 76 C9 67 2C 5D 61 DF 4F 3F 79 BF 54
-0120 | 60 A8 E7 45 38 E3 9D 32 A5 BF AF 0F 38 53 23 95
-0130 | 2C 0D 97 FE A2 94 7F 5E 3C EE 2B D2 F9 F1 03 8A
-0140 | 9C 87 5C 68 58 B8 76 1E 2B C8 0F 39 BA 5E CC 87
-0150 | A4 CD 0B C0 49 45 56 BC 69 5B 50 55 00 B1 CF D9
-0160 | 6B BD AC 0C A9 D3 48 3C 75 2B 53 81 AC 82 76 7B
-0170 | A2 72 C7 55 F9 54 41 28 16 50 4C 60 BC 04 E9 0E
-0180 | 4A 07 98 41 72 11 3A DC 91 5B 7C 0A
+0000 | 00 00 00 00 00 00 00 00 AC 24 0D 00 E2 5A 77 65
+0010 | 78 01 00 00 1F 5F 04 F5 83 FE 4F A7 D6 AD 1B 8A
+0020 | C7 63 8A 36 AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A
+0030 | 23 E8 D1 8C 4D 3B 8A B7 FE 50 01 00 3E 0A B1 0A
+0040 | D2 B2 1A 9D F4 A4 FE 1D 48 F2 32 32 F6 15 4D FA
+0050 | ED BF C8 5D D7 D7 DE F8 4D AC CD 72 14 E2 1C 8E
+0060 | 48 BE 56 BE BB BC D8 E8 92 A5 F0 FA 02 C5 12 70
+0070 | 82 85 F4 5D 5A 9B 8C AE 8A A2 8D 80 0B C4 46 8F
+0080 | A8 01 B9 5F 7A 1E 56 95 AB A9 B5 D5 E8 7D 72 EA
+0090 | 3A 27 B9 1C E1 AB 09 DE 03 82 49 C2 E4 9A 12 B8
+00A0 | 5C 47 72 70 1C 71 46 86 43 C5 F8 8D CB 5C FF C9
+00B0 | 56 62 C9 4F 92 7D B6 5B 30 27 CC EA 8C 98 D4 6C
+00C0 | E8 E8 94 4A 52 0C C1 48 AB 5C 1A 70 59 60 BB A9
+00D0 | 85 5E 04 0A A8 8C 93 31 03 51 88 83 39 8C 9A FD
+00E0 | AF 78 2D BB 63 94 33 7A 5E D0 A2 E6 D6 8A 04 D0
+00F0 | 2C FD C5 3D E5 D9 32 38 90 8C 87 35 C0 BD 1A C6
+0100 | 40 6D 83 27 D7 1D 1E 81 E5 1E AD 16 0C B2 9A FF
+0110 | 53 D3 81 10 00 96 EE 29 90 0C 19 4B 33 95 DF 8C
+0120 | 89 EF 56 6B F2 EF F4 E9 E2 FE 2E 56 64 05 80 43
+0130 | 70 37 E4 30 99 65 D1 1C 22 91 BB 95 CF 9E 8D DE
+0140 | 4B 5F 17 25 53 FB 61 AD 43 ED B4 0B CC 44 CF 76
+0150 | D4 24 5F 88 E0 3C 0C 26 99 57 63 01 F6 B1 A8 16
+0160 | 4F 67 EB A9 8E D2 E8 7D 9D 15 36 47 47 C8 CA 7E
+0170 | A6 C6 FC 55 87 3C 5D D0 C4 1E 50 14 16 52 53 35
+0180 | 9D CF DB 2B B9 55 C3 AD 3C A9 7D 4C
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
-04130700D6CF7465
+AC240D00E25A7765
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
-8A1A2C011E5429F692F64662873DEEAB
+83FE4FA7D6AD1B8AC7638A36ADAB7A9A
Value generated by client in Step 1
server_nonce
40, 16
-6AC0DBC798A505E594815E49FAE57647
+65D66D4E1CC2165A23E8D18C4D3B8AB7
Value received from server in Step 2
encrypted_data
56, 340
-FE50010043F7500A87615A4615C7A2F4
C6C7C3AE2ADF91ECFD33FD9962D381E8
E71D9FA33B78B2A176343890A4295B10
1CCAFF29801CCDEA284222064388DC4B
3EAC94F4FD60A73F930B42EEC19A3113
8E42CCF9C84BEDD9BF3CADEAB539C904
916D1EAAB70112F7546CE2C4E40B053C
10322BAC88920F3E4626B10DFD6E14C0
C849FC7E5F222839DC5D43C8E73D4E09
B2700B389AB6C2736A6F59DC2FCEA444
57C6EF668C78D9E7882421A11EF86E23
E034AF28D6F52AFF562AAADF26762894
286A83F4065887AC666BB79C24E8C125
5AE02A26B3996CEF685D680C76C9672C
5D61DF4F3F79BF5460A8E74538E39D32
A5BFAF0F385323952C0D97FEA2947F5E
3CEE2BD2F9F1038A9C875C6858B8761E
2BC80F39BA5ECC87A4CD0BC0494556BC
695B505500B1CFD96BBDAC0CA9D3483C
752B5381AC82767BA272C755F9544128
16504C60BC04E90E4A07984172113ADC
915B7C0A
+FE5001003E0AB10AD2B21A9DF4A4FE1D
48F23232F6154DFAEDBFC85DD7D7DEF8
4DACCD7214E21C8E48BE56BEBBBCD8E8
92A5F0FA02C512708285F45D5A9B8CAE
8AA28D800BC4468FA801B95F7A1E5695
ABA9B5D5E87D72EA3A27B91CE1AB09DE
038249C2E49A12B85C4772701C714686
43C5F88DCB5CFFC95662C94F927DB65B
3027CCEA8C98D46CE8E8944A520CC148
AB5C1A705960BBA9855E040AA88C9331
03518883398C9AFDAF782DBB6394337A
5ED0A2E6D68A04D02CFDC53DE5D93238
908C8735C0BD1AC6406D8327D71D1E81
E51EAD160CB29AFF53D381100096EE29
900C194B3395DF8C89EF566BF2EFF4E9
E2FE2E56640580437037E4309965D11C
2291BB95CF9E8DDE4B5F172553FB61AD
43EDB40BCC44CF76D4245F88E03C0C26
99576301F6B1A8164F67EBA98ED2E87D
9D15364747C8CA7EA6C6FC55873C5DD0
C41E5014165253359DCFDB2BB955C3AD
3CA97D4C
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 = 1B60A767BDFA34AA71F26A012F2EE980B2AD0F0E1FD2266D8AA1D048A6C751DD8074B8CA6E0BE46AB8CE544223D0F288FB4B2F6B85920A0A0BE9F4162E833A8A7A362FBA3EB0E6CF99DD0D603386D28DDE90BE6FB9B197C5E6B9EF616D32797EE025564E0765E5A155FA6E006A1FF2D557418ADE516D1DFC7B76762A75BC32780070DC4508BEF40D593E7BDA46F76521474B0CBF510F9F728490EA691C09E0F05D43798C703B6E9655619359EAC828B28B98B16C51B7B264D09A66226C725043BF182C0A06C5E59DB1D13CAA2D3416E9FB259DDA37B8DCDA021CCC3F3604C6E3F37C164754579A11909C524E2EFEEC5792AA89BAFD9B700B14B950252B283605
+auth_key = 5A4BCAAF3EAEFA5842187B2DA426AF63241C8E476F50D8AA9AF636F9E36324830AC9E2ACEA926D9FB31B74A0AB107A2A2FF2B555F389A0084C44DE425A45D8F335513DD84E0442E7264A1CDB67FE324D325892FA3869087B2D452CE4386A8C11651E5356FA4E68F06B9D2DE5D49E561EBF9778AE4AA591B00EA4EB305A6FB3F2A8CCC3BC84F0E72F5342DA05D4614B669DD88145D61B6B7515719F3120E06C3BFCE06293428C762166CC0AF8E474BF4E5DBCDF1FEB0CA75FAF63571F131A30A15B81B70B71D5365DA5A711A4F890E4A0305D5D0152E916D66D6E9FC0D207B526B0939D2225D6CF851EA402C67D4A1F90D4D975A81C0D7D0E3AF4D3218C96D60E
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 18 C9 11 D7 CF 74 65
-0010 | A8 00 00 00 34 F7 CB 3B 8A 1A 2C 01 1E 54 29 F6
-0020 | 92 F6 46 62 87 3D EE AB 6A C0 DB C7 98 A5 05 E5
-0030 | 94 81 5E 49 FA E5 76 47 EC E7 ED D1 82 82 44 6F
-0040 | AB A0 88 3A 32 51 71 1D
+0000 | 00 00 00 00 00 00 00 00 01 24 A2 00 E3 5A 77 65
+0010 | 98 00 00 00 34 F7 CB 3B 83 FE 4F A7 D6 AD 1B 8A
+0020 | C7 63 8A 36 AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A
+0030 | 23 E8 D1 8C 4D 3B 8A B7 ED C5 AF E1 45 3C E4 5A
+0040 | 47 37 F5 F4 C7 01 2B A9
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
-0118C911D7CF7465
+0124A200E35A7765
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-A8000000
(168 in decimal)
+98000000
(152 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
-8A1A2C011E5429F692F64662873DEEAB
+83FE4FA7D6AD1B8AC7638A36ADAB7A9A
Value generated by client in Step 1
server_nonce
40, 16
-6AC0DBC798A505E594815E49FAE57647
+65D66D4E1CC2165A23E8D18C4D3B8AB7
Value received from server in Step 2
new_nonce_hash1
56, 16
-ECE7EDD18282446FABA0883A3251711D
+EDC5AFE1453CE45A4737F5F4C7012BA9
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.