From 9ad0e5f1a10ec747021ec8d7a42945187b1fa411 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 1 Aug 2024 18:30:51 +0000 Subject: [PATCH] Update content of files --- .../web/corefork.telegram.org/api/layers.html | 122 +++++- data/web/corefork.telegram.org/api/links.html | 2 +- .../corefork.telegram.org/api/premium.html | 2 +- .../corefork.telegram.org/api/profile.html | 2 +- .../corefork.telegram.org/api/stickers.html | 2 +- .../mtproto/samples-auth_key.html | 412 +++++++++--------- 6 files changed, 317 insertions(+), 225 deletions(-) diff --git a/data/web/corefork.telegram.org/api/layers.html b/data/web/corefork.telegram.org/api/layers.html index c1363ed665..6d26b6dbaa 100644 --- a/data/web/corefork.telegram.org/api/layers.html +++ b/data/web/corefork.telegram.org/api/layers.html @@ -46,6 +46,34 @@

Below you will find information on schema changes. For more details on the use of layers, see Invoking API methods.

Layer 181

+

Start reading the changelog at layer 171 to view all changes since the last refresh of the documentation.

+

The following detailed articles about pre-existing features were added:

+ +

The following new features were added:

+ +

The following new client configuration keys » were added:

+ +

The following new suggestions » were added:

+

This layer introduces fact-checks », Telegram Stars and collapsible message quotes ».

Schema changes

New Methods
@@ -113,6 +141,10 @@ payments.refundStarsCharge#25ae8f4a user_id:InputUser charge_id:string = Updates;

Layer 180

This layer introduces animated message effects », global hashtag search in all public channels (including those we aren't a member of) », channel ad revenue transaction updates » and improvements to device integrity verification for official apps.

+

The following new Telegram Premium feature indentifiers » were added:

+

Schema changes

New Methods
+

The following new Telegram Premium feature indentifiers » were added:

+

Schema changes

New Methods

There is also a store-based subscription flow based on payments.assignAppStoreTransaction/payments.assignPlayMarketTransaction, but it's currently not available to third-party apps (unlike the flow described above, which can be used by all clients).

Gifting Telegram Premium

-

Note: to gift a Premium subscriptions to multiple friends, the alternative payment flow described here » (inputStorePaymentPremiumGiftCode without setting boost_peer) should be used, instead.

+

Note: to gift a Premium subscriptions to multiple friends, the alternative payment flow described here » (inputStorePaymentPremiumGiftCode without setting boost_peer) must be used, instead.

userFull#cc997720 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 contact_require_premium:flags.29?true read_dates_private:flags.30?true flags2:# sponsored_enabled:flags2.7?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 business_work_hours:flags2.0?BusinessWorkHours business_location:flags2.1?BusinessLocation business_greeting_message:flags2.2?BusinessGreetingMessage business_away_message:flags2.3?BusinessAwayMessage business_intro:flags2.4?BusinessIntro birthday:flags2.5?Birthday personal_channel_id:flags2.6?long personal_channel_message:flags2.6?int = UserFull;
 
 premiumGiftOption#74c34319 flags:# months:int currency:string amount:long bot_url:string store_product:flags.0?string = PremiumGiftOption;
diff --git a/data/web/corefork.telegram.org/api/profile.html b/data/web/corefork.telegram.org/api/profile.html
index e312a65942..8d3b4381f4 100644
--- a/data/web/corefork.telegram.org/api/profile.html
+++ b/data/web/corefork.telegram.org/api/profile.html
@@ -83,7 +83,7 @@
 messages.getStickers#d5a5d3a1 emoticon:string hash:long = messages.Stickers;

When the user opens a private chat with a user they don't have a history with, the UI should display a randomly chosen greeting sticker+invitation to send a message.

To fetch this special list of greeting stickers, invoke messages.getStickers with emoticon=👋⭐️.

-

Note that if a custom Telegram Business introduction » is enabled, the message+sticker specified in userFull.intro should be used, instead.

+

Note that if a custom Telegram Business introduction » is enabled, the message+sticker specified in userFull.intro must be used, instead.

Emoji status

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 contact_require_premium:flags2.10?true bot_business:flags2.11?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;
 
diff --git a/data/web/corefork.telegram.org/api/stickers.html b/data/web/corefork.telegram.org/api/stickers.html
index f58348c7f0..080ce5c067 100644
--- a/data/web/corefork.telegram.org/api/stickers.html
+++ b/data/web/corefork.telegram.org/api/stickers.html
@@ -403,7 +403,7 @@ The stickers_emoji_cache_time ap
 

Greeting stickers

When the user opens a private chat with a user they don't have a history with, the UI should display a randomly chosen greeting sticker+invitation to send a message.

To fetch this special list of greeting stickers, invoke messages.getStickers with emoticon=👋⭐️.

-

Note that if a custom Telegram Business introduction » is enabled, the message+sticker specified in userFull.intro should be used, instead.

+

Note that if a custom Telegram Business introduction » is enabled, the message+sticker specified in userFull.intro must be used, instead.

Attached stickers

inputMediaUploadedPhoto#1e287d04 flags:# spoiler:flags.2?true file:InputFile stickers:flags.0?Vector<InputDocument> ttl_seconds:flags.1?int = InputMedia;
 
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 be04d7cb47..c7edcbf67e 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 5C CB 0D 00 4C C4 AB 66
-0010 | 14 00 00 00 F1 8E 7E BE 58 C9 B5 64 FE 46 36 F6
-0020 | F8 CE B1 1D 46 31 51 10
+
0000 | 00 00 00 00 00 00 00 00 94 4C 0B 00 EF D1 AB 66
+0010 | 14 00 00 00 F1 8E 7E BE 7B BD B9 63 BC 64 29 17
+0020 | 87 F3 B0 F1 57 90 DF BE

Payload (de)serialization:

req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;
@@ -77,7 +77,7 @@ - + @@ -95,7 +95,7 @@ - + @@ -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 74 F4 65 4C C4 AB 66
-0010 | 6C 00 00 00 63 24 16 05 58 C9 B5 64 FE 46 36 F6
-0020 | F8 CE B1 1D 46 31 51 10 4C 0F DA E0 DE 9F D6 70
-0030 | 39 C0 6C 90 26 E6 97 42 08 18 20 0A 18 62 DC 69
-0040 | D7 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 64 83 40 EF D1 AB 66
+0010 | 70 00 00 00 63 24 16 05 7B BD B9 63 BC 64 29 17
+0020 | 87 F3 B0 F1 57 90 DF BE 81 22 DC 5E 6A 4C 66 E0
+0030 | 03 B4 CC 48 F1 5B 2A 28 08 26 F1 FD D5 CA ED 74
+0040 | 33 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 @@
- + - + @@ -150,19 +150,19 @@ - + - + - + @@ -208,22 +208,22 @@

Proof of work

3) Client decomposes pq into prime factors such that p < q.
-
pq = 1738400556019116503
-

Decompose into 2 prime cofactors p < q: 1738400556019116503 = 1125991333 * 1543884491

-
p = 1125991333
-q = 1543884491
+
pq = 2806303137502950451
+

Decompose into 2 prime cofactors p < q: 2806303137502950451 = 1581175027 * 1774821313

+
p = 1581175027
+q = 1774821313

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 18 20 0A 18 62 DC 69 D7 00 00 00
-0010 | 04 43 1D 43 A5 00 00 00 04 5C 05 CE CB 00 00 00
-0020 | 58 C9 B5 64 FE 46 36 F6 F8 CE B1 1D 46 31 51 10
-0030 | 4C 0F DA E0 DE 9F D6 70 39 C0 6C 90 26 E6 97 42
-0040 | 37 9E 6B BA F1 6B C5 0D D7 20 6C 66 53 D7 6C 1A
-0050 | B0 4D 68 4E FC 18 BD C9 A0 D3 EA D0 83 A5 B0 2A
+
0000 | 95 5F F5 A9 08 26 F1 FD D5 CA ED 74 33 00 00 00
+0010 | 04 5E 3E D0 F3 00 00 00 04 69 C9 9F C1 00 00 00
+0020 | 7B BD B9 63 BC 64 29 17 87 F3 B0 F1 57 90 DF BE
+0030 | 81 22 DC 5E 6A 4C 66 E0 03 B4 CC 48 F1 5B 2A 28
+0040 | 32 16 B1 CE 36 F1 CC 54 97 A1 43 88 58 58 F2 E6
+0050 | 8B 09 09 73 BD 61 83 DB 0B 14 29 38 8F E9 54 63
 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 = 1543884491
- + - + - + - + - + - + @@ -291,39 +291,39 @@ q = 1543884491

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 = 955FF5A90818200A1862DC69D700000004431D43A5000000045C05CECB00000058C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E69742379E6BBAF16BC50DD7206C6653D76C1AB04D684EFC18BDC9A0D3EAD083A5B02A02000000
-random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E652B3834C58B57BBBD152A48E84A5ADE1B1F51976DE081DF5ECD69D89EB57A8FEE8C618F6592F100C140B7A22CDD78DC328916E1613B43B14DC4BF5FAD721FBC
+
data = 955FF5A90826F1FDD5CAED7433000000045E3ED0F30000000469C99FC10000007BBDB963BC64291787F3B0F15790DFBE8122DC5E6A4C66E003B4CC48F15B2A283216B1CE36F1CC5497A143885858F2E68B090973BD6183DB0B1429388FE9546302000000
+random_padding_bytes = 5D8F01981ABE72DC63B27E6715AC8096092A5FB8497822BB29BE01EF3D9F0741E4E8ABFE5BC481D8A88F15F72A7D153873523D3C85AA6E9745079DE4D499268D44ED005518FD5ADB4C6E94DCAA2177307FF139C6992CAE3D07515AA6

And this is the output:

-
encrypted_data = 613F44EFA4629A4977FE780D6BF7F0A2DE519E4D5938FBFA1010431E5C5034E18890739FE555E38971A07479FC0D946292EEC67483286D6A759018BE17381EB253E5AE73C694FA473EE2D569A552786799D4ECCAC85C896E28BDD1C8273727D96DC9FB60CDD9FE2F1D460C537898EFA2CF39827A2386994B39AB3304B32AD6822614380240BDFEAD80F8FCFFB063A51BD5F6E3383D9D397AA8194CD895824B7D754020234DB77D7C83340F413C2512F9A53060E868AE54BCE965079301D7972FA76766AB26D6E605A2226FB3330FEFC7DD62B2A7300F598F8698EB50B72B712ED1B781814FF0818D20BA5DBB4D663158CC6B64B4651E5D436B5328A8D37EB574
+
encrypted_data = 661851377A2EC0F9615A31BC4498BBD877412C54D6909B5021BA98494A3788697EA97408F2EA67CA699A41D83FDAD4720D82394522CD367C32549C6EF45A2BF47043290E56C55F8077CA4B3EF403CCD31AEDD12F66E6E13EE3A84078E4F41AD57746CC193E196668654044B7C4E2068D52DE33CCFBBE269AB7ED998B9C0A70C9820A0117307B08C77E27B0FEEAF088C6EAB1B03D65916F03DF589D39A807D282E7DFE02BCC60076FF41F50D30394BC1C607759A61FC08E83DC7511AE7BC2B2439B796C64BD2BBB6949E95197A73F128CCA7CF400F2ABE33D57B1FD2525802B4B3B711A36BD7002825779B3D544C524C4CB9D9DB04A0FBFC67FB32161AA2A09A6

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 60 CB 0D 00 4C C4 AB 66
-0010 | 40 01 00 00 BE E4 12 D7 58 C9 B5 64 FE 46 36 F6
-0020 | F8 CE B1 1D 46 31 51 10 4C 0F DA E0 DE 9F D6 70
-0030 | 39 C0 6C 90 26 E6 97 42 04 43 1D 43 A5 00 00 00
-0040 | 04 5C 05 CE CB 00 00 00 85 FD 64 DE 85 1D 9D D0
-0050 | FE 00 01 00 61 3F 44 EF A4 62 9A 49 77 FE 78 0D
-0060 | 6B F7 F0 A2 DE 51 9E 4D 59 38 FB FA 10 10 43 1E
-0070 | 5C 50 34 E1 88 90 73 9F E5 55 E3 89 71 A0 74 79
-0080 | FC 0D 94 62 92 EE C6 74 83 28 6D 6A 75 90 18 BE
-0090 | 17 38 1E B2 53 E5 AE 73 C6 94 FA 47 3E E2 D5 69
-00A0 | A5 52 78 67 99 D4 EC CA C8 5C 89 6E 28 BD D1 C8
-00B0 | 27 37 27 D9 6D C9 FB 60 CD D9 FE 2F 1D 46 0C 53
-00C0 | 78 98 EF A2 CF 39 82 7A 23 86 99 4B 39 AB 33 04
-00D0 | B3 2A D6 82 26 14 38 02 40 BD FE AD 80 F8 FC FF
-00E0 | B0 63 A5 1B D5 F6 E3 38 3D 9D 39 7A A8 19 4C D8
-00F0 | 95 82 4B 7D 75 40 20 23 4D B7 7D 7C 83 34 0F 41
-0100 | 3C 25 12 F9 A5 30 60 E8 68 AE 54 BC E9 65 07 93
-0110 | 01 D7 97 2F A7 67 66 AB 26 D6 E6 05 A2 22 6F B3
-0120 | 33 0F EF C7 DD 62 B2 A7 30 0F 59 8F 86 98 EB 50
-0130 | B7 2B 71 2E D1 B7 81 81 4F F0 81 8D 20 BA 5D BB
-0140 | 4D 66 31 58 CC 6B 64 B4 65 1E 5D 43 6B 53 28 A8
-0150 | D3 7E B5 74
+
0000 | 00 00 00 00 00 00 00 00 2C A8 0B 00 EF D1 AB 66
+0010 | 40 01 00 00 BE E4 12 D7 7B BD B9 63 BC 64 29 17
+0020 | 87 F3 B0 F1 57 90 DF BE 81 22 DC 5E 6A 4C 66 E0
+0030 | 03 B4 CC 48 F1 5B 2A 28 04 5E 3E D0 F3 00 00 00
+0040 | 04 69 C9 9F C1 00 00 00 85 FD 64 DE 85 1D 9D D0
+0050 | FE 00 01 00 66 18 51 37 7A 2E C0 F9 61 5A 31 BC
+0060 | 44 98 BB D8 77 41 2C 54 D6 90 9B 50 21 BA 98 49
+0070 | 4A 37 88 69 7E A9 74 08 F2 EA 67 CA 69 9A 41 D8
+0080 | 3F DA D4 72 0D 82 39 45 22 CD 36 7C 32 54 9C 6E
+0090 | F4 5A 2B F4 70 43 29 0E 56 C5 5F 80 77 CA 4B 3E
+00A0 | F4 03 CC D3 1A ED D1 2F 66 E6 E1 3E E3 A8 40 78
+00B0 | E4 F4 1A D5 77 46 CC 19 3E 19 66 68 65 40 44 B7
+00C0 | C4 E2 06 8D 52 DE 33 CC FB BE 26 9A B7 ED 99 8B
+00D0 | 9C 0A 70 C9 82 0A 01 17 30 7B 08 C7 7E 27 B0 FE
+00E0 | EA F0 88 C6 EA B1 B0 3D 65 91 6F 03 DF 58 9D 39
+00F0 | A8 07 D2 82 E7 DF E0 2B CC 60 07 6F F4 1F 50 D3
+0100 | 03 94 BC 1C 60 77 59 A6 1F C0 8E 83 DC 75 11 AE
+0110 | 7B C2 B2 43 9B 79 6C 64 BD 2B BB 69 49 E9 51 97
+0120 | A7 3F 12 8C CA 7C F4 00 F2 AB E3 3D 57 B1 FD 25
+0130 | 25 80 2B 4B 3B 71 1A 36 BD 70 02 82 57 79 B3 D5
+0140 | 44 C5 24 C4 CB 9D 9D B0 4A 0F BF C6 7F B3 21 61
+0150 | AA 2A 09 A6

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;
message_id 8, 85CCB0D004CC4AB66944C0B00EFD1AB66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1658C9B564FE4636F6F8CEB11D463151107BBDB963BC64291787F3B0F15790DFBE Random number
message_id 8, 80174F4654CC4AB6601648340EFD1AB66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 46C000000 (108 in decimal)70000000 (112 in decimal) Message body length
nonce 24, 1658C9B564FE4636F6F8CEB11D463151107BBDB963BC64291787F3B0F15790DFBE Value generated by client in Step 1
server_nonce 40, 164C0FDAE0DE9FD67039C06C9026E697428122DC5E6A4C66E003B4CC48F15B2A28 Server-generated random number
pq 56, 120818200A1862DC69D7000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1738400556019116503
0826F1FDD5CAED7433000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2806303137502950451
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
pq 4, 120818200A1862DC69D7000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1738400556019116503
0826F1FDD5CAED7433000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2806303137502950451
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p 16, 804431D43A5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1125991333
045E3ED0F3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1581175027
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 24, 8045C05CECB000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1543884491
0469C99FC1000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1774821313
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce 32, 1658C9B564FE4636F6F8CEB11D463151107BBDB963BC64291787F3B0F15790DFBE Value generated by client in Step 1
server_nonce 48, 164C0FDAE0DE9FD67039C06C9026E697428122DC5E6A4C66E003B4CC48F15B2A28 Value received from server in Step 2
new_nonce 64, 32379E6BBAF16BC50DD7206C6653D76C1A B04D684EFC18BDC9A0D3EAD083A5B02A3216B1CE36F1CC5497A143885858F2E6 8B090973BD6183DB0B1429388FE95463 Client-generated random number
@@ -345,7 +345,7 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6 - + @@ -363,25 +363,25 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6 - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6 - + @@ -402,47 +402,47 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6
6) Server responds with:

Received payload (excluding transport headers/trailers):

-
0000 | 00 00 00 00 00 00 00 00 01 A0 19 36 4D C4 AB 66
-0010 | C4 02 00 00 5C 07 E8 D0 58 C9 B5 64 FE 46 36 F6
-0020 | F8 CE B1 1D 46 31 51 10 4C 0F DA E0 DE 9F D6 70
-0030 | 39 C0 6C 90 26 E6 97 42 FE 50 02 00 F3 1B 3E 37
-0040 | B9 83 C8 42 58 24 85 CA CF 5E FC 94 8F E0 DD 02
-0050 | 15 F3 EC 08 B6 4A CB 6D 55 B1 F8 D3 39 87 31 24
-0060 | 74 02 F5 33 8A AB 36 EB 14 86 8D A1 C7 0A 76 99
-0070 | AF 60 87 30 2A 6B 85 64 FA 13 38 27 A5 F7 48 7D
-0080 | 9D 80 24 C9 03 AE 59 BC 42 E2 23 1F 45 17 DF 75
-0090 | DF 41 DC F4 75 22 7F 46 E4 DF AF FB 4D 3C 77 A9
-00A0 | CB 5E B1 69 82 8B 8E 15 B1 7C 26 F8 F8 A1 24 9A
-00B0 | A0 AB D7 24 AD 38 78 16 6F 90 60 F7 F1 BF A1 04
-00C0 | E6 34 DB 11 13 70 A4 FE 76 D7 E5 F5 C8 9E EF 93
-00D0 | 5A 95 92 AC 3D B1 22 FD 02 C7 79 E2 53 E8 26 29
-00E0 | 6C A9 18 58 45 DD 02 5A D0 38 8E B8 28 B2 80 68
-00F0 | 43 64 03 F1 F7 7B 7D D0 20 C1 2C 37 13 05 38 78
-0100 | E6 35 CF E8 77 F1 4B F8 C9 EF 84 EE 6B F4 70 F0
-0110 | B9 24 71 11 C8 6A F1 C2 1B 8D F6 56 0F 9A 15 74
-0120 | BC 06 D2 C9 E5 AE 45 A2 51 E8 CF 4C 16 6F 36 2E
-0130 | 24 BC 78 C1 5A 5D AB 3D DB B3 FA F6 8E BB 44 0D
-0140 | FD 63 A4 BD F3 A5 B9 20 29 17 BA B1 80 79 FC 29
-0150 | 3E 7D 2D AA 69 54 90 BD EE F6 6A 6F 90 CC DC DD
-0160 | 03 AC 26 05 ED 90 5B 75 3F D7 02 B5 67 6D 32 5C
-0170 | 33 A3 88 22 2E 12 C3 D8 36 8B 3D 59 07 55 B9 D0
-0180 | 47 66 32 58 D0 B1 5A 5C 52 CB C6 75 9A 35 CF FF
-0190 | 9C 99 B7 3D 5A 21 67 C8 AE B9 DF 05 8F EF 19 81
-01A0 | 29 8A 9D 6D 85 6D 68 46 A5 A3 A6 26 46 C3 2C FD
-01B0 | 24 C8 63 E1 61 D7 DC B9 6C 08 6E 78 66 91 42 AE
-01C0 | 51 90 77 71 1D 1C 3F 53 A1 A3 05 05 70 1B 54 36
-01D0 | 73 9E 80 F8 F2 F3 8F 9C 30 44 4C 2C 7C 56 49 F3
-01E0 | 8E 3E 4D 6B A5 09 84 8A 49 E0 3E 53 FC A0 93 52
-01F0 | 6B 71 61 F2 B3 50 E2 5E 46 A7 2C 4B 36 C6 CC F1
-0200 | 40 92 2E 10 BA 88 F1 FD A7 15 A5 C4 2A 80 D4 F1
-0210 | CE F9 27 81 BA 2E 99 FB C1 05 CD 9B 49 3E 3B DB
-0220 | C7 78 EC 25 C2 F2 25 D8 AB 08 E7 F1 2D EE FD 3C
-0230 | 69 8B 9F 45 BE 52 AD DE 4B 9F 0E 43 23 2D DF E8
-0240 | D4 EB EB 39 96 D7 77 EF 60 78 A9 54 46 1D 9A 03
-0250 | 6D 2C BD 39 93 D3 B5 4F D7 3E 92 E9 EE 6F A7 E0
-0260 | 1A 0C 26 4E D1 A0 24 3C 43 16 1C 39 7D A0 9B 07
-0270 | 56 55 73 1C 86 9B 80 8E CD BD D0 8E 2C B4 A6 7B
-0280 | AB E9 1C 69 06 96 8F 0F E1 1E 7C 49
+
0000 | 00 00 00 00 00 00 00 00 01 28 71 FD EF D1 AB 66
+0010 | 90 02 00 00 5C 07 E8 D0 7B BD B9 63 BC 64 29 17
+0020 | 87 F3 B0 F1 57 90 DF BE 81 22 DC 5E 6A 4C 66 E0
+0030 | 03 B4 CC 48 F1 5B 2A 28 FE 50 02 00 4E 98 D4 E2
+0040 | 9F E3 B9 55 3A 84 0F 08 5B 15 32 84 F8 8D 65 50
+0050 | F6 8C 40 AF 33 3F C0 09 D4 C8 D7 9D 72 9A A8 B6
+0060 | 9B 37 0D 9C E1 19 BF 1B 21 BB A1 2B 23 C9 F1 68
+0070 | 1A 9C 9B B5 78 7F EA FB C6 AA 47 03 5B A0 AD C6
+0080 | EA F8 A4 1B D2 49 09 B1 BC A7 BB 42 AE 3A 60 CA
+0090 | CE 8C F6 69 E1 41 29 DD BD 23 EB 33 39 27 45 EA
+00A0 | E5 61 32 6A 1C 7E 27 EB DB B6 09 DA 11 15 BE 2B
+00B0 | 5F AC 1C D3 4F D2 CF ED 60 7E 1B E8 24 39 FB 70
+00C0 | 90 27 7E DC 22 CF C7 10 0F 7E E1 33 33 3F 43 BC
+00D0 | 80 3D 4C 86 92 80 DA 9F 5D BF 38 CF 90 10 58 8B
+00E0 | 14 BE 0D 26 1D 43 CA DD DB 0D 00 65 AA 08 81 95
+00F0 | E6 90 6A D3 84 4E AE 24 1C 13 99 F4 E4 7C 68 9C
+0100 | 66 81 E4 7A BE 9C F0 15 06 53 A6 67 6B AD 57 66
+0110 | CC 41 CB 22 2D 5F 60 58 DD A2 F0 6E AD B4 5A D6
+0120 | E8 70 11 9D 1B F8 91 FF 19 AD CB FC D4 C0 AC 18
+0130 | FF 42 66 B2 F4 CB 82 A7 B1 44 87 15 3C 2F 57 06
+0140 | 86 08 91 B0 C0 D8 E8 BC 7D 88 A8 F5 7F E9 CA 06
+0150 | 0F 10 76 4D 22 77 9D BB 5A F4 B7 35 26 D6 62 B3
+0160 | C1 16 2E D5 59 DA 59 20 87 11 0A 09 45 4D E2 C0
+0170 | 36 00 4F B4 4D 05 D2 57 00 E3 32 E1 5B 2E A9 82
+0180 | A1 C9 24 21 22 24 06 25 54 5B BC 5F 4D D6 B5 24
+0190 | DA 0C 59 0E DE A1 B2 62 C4 8B 7A 35 47 C3 BA F6
+01A0 | 04 F8 12 83 96 5B 87 C3 1A 84 B5 F0 B5 59 B2 10
+01B0 | B9 6A 41 01 15 B0 60 FE AF 48 94 25 3E 27 6A 60
+01C0 | D5 C5 1C 77 C1 20 02 22 B6 6E 75 B9 EB 87 18 AC
+01D0 | 4E A0 D3 D6 F4 EC 26 15 D5 6B 24 B1 0C 40 93 16
+01E0 | AE 93 09 F7 95 2F 95 18 3A 1D D0 B7 2E D2 F9 6A
+01F0 | 12 87 40 7B A5 D6 9B 6A 72 64 37 DA 35 D2 AF 05
+0200 | 8A 40 4F DB 4A E2 D4 63 76 E8 B8 47 8D 9C 92 CB
+0210 | 9C F9 7B E6 68 F6 9D 74 03 6F 1C F8 06 B7 4F 29
+0220 | AA DD 1D D9 B7 EE 48 44 A3 14 CB EF 50 B3 D5 B6
+0230 | BC BE 14 3F 7A C3 FD 1C C1 B8 DA A8 22 3D AF 45
+0240 | BC F5 CC 84 A7 0F 30 44 5D 9E 03 30 56 01 BF 87
+0250 | 0D 32 C8 51 98 0E D4 F6 FF 10 22 B0 29 AC E7 13
+0260 | 78 7F 01 60 07 EC 42 85 AC 51 BA F5 B1 3A 28 1B
+0270 | 3D 4A 89 7E A1 04 0D 98 B8 4D E2 0F 93 8F 1C 36
+0280 | 1D 19 A6 CF 38 67 60 65 B5 A3 C5 A8

Payload (de)serialization:

server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
message_id 8, 860CB0D004CC4AB662CA80B00EFD1AB66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1658C9B564FE4636F6F8CEB11D463151107BBDB963BC64291787F3B0F15790DFBE Value generated by client in Step 1
server_nonce 40, 164C0FDAE0DE9FD67039C06C9026E697428122DC5E6A4C66E003B4CC48F15B2A28 Value received from server in Step 2
p 56, 804431D43A5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1125991333
045E3ED0F3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1581175027
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 64, 8045C05CECB000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1543884491
0469C99FC1000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1774821313
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
encrypted_data 80, 260FE000100613F44EFA4629A4977FE780D 6BF7F0A2DE519E4D5938FBFA1010431E 5C5034E18890739FE555E38971A07479 FC0D946292EEC67483286D6A759018BE 17381EB253E5AE73C694FA473EE2D569 A552786799D4ECCAC85C896E28BDD1C8 273727D96DC9FB60CDD9FE2F1D460C53 7898EFA2CF39827A2386994B39AB3304 B32AD6822614380240BDFEAD80F8FCFF B063A51BD5F6E3383D9D397AA8194CD8 95824B7D754020234DB77D7C83340F41 3C2512F9A53060E868AE54BCE9650793 01D7972FA76766AB26D6E605A2226FB3 330FEFC7DD62B2A7300F598F8698EB50 B72B712ED1B781814FF0818D20BA5DBB 4D663158CC6B64B4651E5D436B5328A8
D37EB574
FE000100661851377A2EC0F9615A31BC 4498BBD877412C54D6909B5021BA9849 4A3788697EA97408F2EA67CA699A41D8 3FDAD4720D82394522CD367C32549C6E F45A2BF47043290E56C55F8077CA4B3E F403CCD31AEDD12F66E6E13EE3A84078 E4F41AD57746CC193E196668654044B7 C4E2068D52DE33CCFBBE269AB7ED998B 9C0A70C9820A0117307B08C77E27B0FE EAF088C6EAB1B03D65916F03DF589D39 A807D282E7DFE02BCC60076FF41F50D3 0394BC1C607759A61FC08E83DC7511AE 7BC2B2439B796C64BD2BBB6949E95197 A73F128CCA7CF400F2ABE33D57B1FD25 25802B4B3B711A36BD7002825779B3D5 44C524C4CB9D9DB04A0FBFC67FB32161
AA2A09A6
Value generated above
@@ -464,13 +464,13 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6 - + - + @@ -482,19 +482,19 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6 - + - + - + @@ -502,20 +502,20 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6

Decrypt encrypted_answer using the reverse of the process specified in step 6:

-
encrypted_answer = F31B3E37B983C842582485CACF5EFC948FE0DD0215F3EC08B64ACB6D55B1F8D3398731247402F5338AAB36EB14868DA1C70A7699AF6087302A6B8564FA133827A5F7487D9D8024C903AE59BC42E2231F4517DF75DF41DCF475227F46E4DFAFFB4D3C77A9CB5EB169828B8E15B17C26F8F8A1249AA0ABD724AD3878166F9060F7F1BFA104E634DB111370A4FE76D7E5F5C89EEF935A9592AC3DB122FD02C779E253E826296CA9185845DD025AD0388EB828B28068436403F1F77B7DD020C12C3713053878E635CFE877F14BF8C9EF84EE6BF470F0B9247111C86AF1C21B8DF6560F9A1574BC06D2C9E5AE45A251E8CF4C166F362E24BC78C15A5DAB3DDBB3FAF68EBB440DFD63A4BDF3A5B9202917BAB18079FC293E7D2DAA695490BDEEF66A6F90CCDCDD03AC2605ED905B753FD702B5676D325C33A388222E12C3D8368B3D590755B9D047663258D0B15A5C52CBC6759A35CFFF9C99B73D5A2167C8AEB9DF058FEF1981298A9D6D856D6846A5A3A62646C32CFD24C863E161D7DCB96C086E78669142AE519077711D1C3F53A1A30505701B5436739E80F8F2F38F9C30444C2C7C5649F38E3E4D6BA509848A49E03E53FCA093526B7161F2B350E25E46A72C4B36C6CCF140922E10BA88F1FDA715A5C42A80D4F1CEF92781BA2E99FBC105CD9B493E3BDBC778EC25C2F225D8AB08E7F12DEEFD3C698B9F45BE52ADDE4B9F0E43232DDFE8D4EBEB3996D777EF6078A954461D9A036D2CBD3993D3B54FD73E92E9EE6FA7E01A0C264ED1A0243C43161C397DA09B075655731C869B808ECDBDD08E2CB4A67BABE91C6906968F0FE11E7C49
-tmp_aes_key = F3703B4E69009BC24510144B929AE5883CA088B12CF5A5E7354327A7701325D9
-tmp_aes_iv = 8ABE130C3F744CD23D434583B7C96C2E7CBE25DB058A0776C6BCFC77379E6BBA
+
encrypted_answer = 4E98D4E29FE3B9553A840F085B153284F88D6550F68C40AF333FC009D4C8D79D729AA8B69B370D9CE119BF1B21BBA12B23C9F1681A9C9BB5787FEAFBC6AA47035BA0ADC6EAF8A41BD24909B1BCA7BB42AE3A60CACE8CF669E14129DDBD23EB33392745EAE561326A1C7E27EBDBB609DA1115BE2B5FAC1CD34FD2CFED607E1BE82439FB7090277EDC22CFC7100F7EE133333F43BC803D4C869280DA9F5DBF38CF9010588B14BE0D261D43CADDDB0D0065AA088195E6906AD3844EAE241C1399F4E47C689C6681E47ABE9CF0150653A6676BAD5766CC41CB222D5F6058DDA2F06EADB45AD6E870119D1BF891FF19ADCBFCD4C0AC18FF4266B2F4CB82A7B14487153C2F5706860891B0C0D8E8BC7D88A8F57FE9CA060F10764D22779DBB5AF4B73526D662B3C1162ED559DA592087110A09454DE2C036004FB44D05D25700E332E15B2EA982A1C9242122240625545BBC5F4DD6B524DA0C590EDEA1B262C48B7A3547C3BAF604F81283965B87C31A84B5F0B559B210B96A410115B060FEAF4894253E276A60D5C51C77C1200222B66E75B9EB8718AC4EA0D3D6F4EC2615D56B24B10C409316AE9309F7952F95183A1DD0B72ED2F96A1287407BA5D69B6A726437DA35D2AF058A404FDB4AE2D46376E8B8478D9C92CB9CF97BE668F69D74036F1CF806B74F29AADD1DD9B7EE4844A314CBEF50B3D5B6BCBE143F7AC3FD1CC1B8DAA8223DAF45BCF5CC84A70F30445D9E03305601BF870D32C851980ED4F6FF1022B029ACE713787F016007EC4285AC51BAF5B13A281B3D4A897EA1040D98B84DE20F938F1C361D19A6CF38676065B5A3C5A8
+tmp_aes_key = BC92457F9E912DECD5B954A07A9DD04A42A4307A27197EF5F71FC63B3FC76AF3
+tmp_aes_iv = 1F7F8549D862AD8EE1FDB95D320AF75C01C8F5BE794F8940628DF95C3216B1CE

Yielding:

-
answer_with_hash = 5B825ED18701953E4AA704731A71AF592B1E2DBEBA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001006FC44EAF4853052C49F1EA4E92339561A2559EC65E93A4FFF173E13C8456B60A3799345FD3B10DB7233DADECF31C8FCB891E8DE1DF8454B228ACE02A126F47A7599D5FE50831D971C9115F98DE04C8EC7110CB463135E046255FBA4D12E4B3F817578C2A51389ADA046B8CDB9A357AD0B2CE57CFBDFE816466DCB2CB2B29A4E96C2A3DD03A9DA93DAC17140DC8212308810B32BB6534DC8026638B17BE5089D8242C7D69F9502D16EC3F48CFD6161B617D31629D96FF4165D72F8FE5B242A7D39BF35E53FA13FD8C69ABFEFDF2FA87D0B432FC55E93B1C67E4574496D03B97CF12E6533E416102B541E9D2FE1BC4EA1A770EEFD871983E999BDDDDECEF7DDFC74DC4AB668C661ABD3A8E421E
-answer = BA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001006FC44EAF4853052C49F1EA4E92339561A2559EC65E93A4FFF173E13C8456B60A3799345FD3B10DB7233DADECF31C8FCB891E8DE1DF8454B228ACE02A126F47A7599D5FE50831D971C9115F98DE04C8EC7110CB463135E046255FBA4D12E4B3F817578C2A51389ADA046B8CDB9A357AD0B2CE57CFBDFE816466DCB2CB2B29A4E96C2A3DD03A9DA93DAC17140DC8212308810B32BB6534DC8026638B17BE5089D8242C7D69F9502D16EC3F48CFD6161B617D31629D96FF4165D72F8FE5B242A7D39BF35E53FA13FD8C69ABFEFDF2FA87D0B432FC55E93B1C67E4574496D03B97CF12E6533E416102B541E9D2FE1BC4EA1A770EEFD871983E999BDDDDECEF7DDFC74DC4AB668C661ABD3A8E421E
+
answer_with_hash = B5D908327D5A5E2BE18AEB0544CDC65AE3EF6A18BA0D89B57BBDB963BC64291787F3B0F15790DFBE8122DC5E6A4C66E003B4CC48F15B2A2803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100A927C1044AF0DB635BF0FA645663B192B1E11A19E5D9C341A59411E56F9A5F944820CA7F3BEA5CA3EAA0932DB6E78472B6DBCEB33C008775499D73C356B876AF2F7A47951119F207AE17B393BF7C93EB9B4E47826843AAB6A1B337C5FCB4F4C5957ED67177FA6F2197D4C7F2159B42233586FC03086D25BCF453AC0049F5DF57D0C69C08894A450F241AA4A4A9AFEFA7ED818C7703A088743D161F1763D36D477ED5169FEEC8D27C962B7EDBEDD401B9A2DAA8EBF15F6BC38F9309DEDE834FBE83CCB98CA4DAD057955EF70087D116867947F18F3D29C506767E3CF69FBE93F046DC1E74DAFACCB1107CF513D5743691304186E02F78E5D1ECD706DB73B47D47EFD1AB66A179D51D7C3A76A3
+answer = BA0D89B57BBDB963BC64291787F3B0F15790DFBE8122DC5E6A4C66E003B4CC48F15B2A2803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100A927C1044AF0DB635BF0FA645663B192B1E11A19E5D9C341A59411E56F9A5F944820CA7F3BEA5CA3EAA0932DB6E78472B6DBCEB33C008775499D73C356B876AF2F7A47951119F207AE17B393BF7C93EB9B4E47826843AAB6A1B337C5FCB4F4C5957ED67177FA6F2197D4C7F2159B42233586FC03086D25BCF453AC0049F5DF57D0C69C08894A450F241AA4A4A9AFEFA7ED818C7703A088743D161F1763D36D477ED5169FEEC8D27C962B7EDBEDD401B9A2DAA8EBF15F6BC38F9309DEDE834FBE83CCB98CA4DAD057955EF70087D116867947F18F3D29C506767E3CF69FBE93F046DC1E74DAFACCB1107CF513D5743691304186E02F78E5D1ECD706DB73B47D47EFD1AB66A179D51D7C3A76A3

Generated payload (excluding transport headers/trailers):

-
0000 | BA 0D 89 B5 58 C9 B5 64 FE 46 36 F6 F8 CE B1 1D
-0010 | 46 31 51 10 4C 0F DA E0 DE 9F D6 70 39 C0 6C 90
-0020 | 26 E6 97 42 03 00 00 00 FE 00 01 00 C7 1C AE B9
+
0000 | BA 0D 89 B5 7B BD B9 63 BC 64 29 17 87 F3 B0 F1
+0010 | 57 90 DF BE 81 22 DC 5E 6A 4C 66 E0 03 B4 CC 48
+0020 | F1 5B 2A 28 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 = BA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974
 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 | 6F C4 4E AF 48 53 05 2C 49 F1 EA 4E 92 33 95 61
-0140 | A2 55 9E C6 5E 93 A4 FF F1 73 E1 3C 84 56 B6 0A
-0150 | 37 99 34 5F D3 B1 0D B7 23 3D AD EC F3 1C 8F CB
-0160 | 89 1E 8D E1 DF 84 54 B2 28 AC E0 2A 12 6F 47 A7
-0170 | 59 9D 5F E5 08 31 D9 71 C9 11 5F 98 DE 04 C8 EC
-0180 | 71 10 CB 46 31 35 E0 46 25 5F BA 4D 12 E4 B3 F8
-0190 | 17 57 8C 2A 51 38 9A DA 04 6B 8C DB 9A 35 7A D0
-01A0 | B2 CE 57 CF BD FE 81 64 66 DC B2 CB 2B 29 A4 E9
-01B0 | 6C 2A 3D D0 3A 9D A9 3D AC 17 14 0D C8 21 23 08
-01C0 | 81 0B 32 BB 65 34 DC 80 26 63 8B 17 BE 50 89 D8
-01D0 | 24 2C 7D 69 F9 50 2D 16 EC 3F 48 CF D6 16 1B 61
-01E0 | 7D 31 62 9D 96 FF 41 65 D7 2F 8F E5 B2 42 A7 D3
-01F0 | 9B F3 5E 53 FA 13 FD 8C 69 AB FE FD F2 FA 87 D0
-0200 | B4 32 FC 55 E9 3B 1C 67 E4 57 44 96 D0 3B 97 CF
-0210 | 12 E6 53 3E 41 61 02 B5 41 E9 D2 FE 1B C4 EA 1A
-0220 | 77 0E EF D8 71 98 3E 99 9B DD DD EC EF 7D DF C7
-0230 | 4D C4 AB 66
+0130 | A9 27 C1 04 4A F0 DB 63 5B F0 FA 64 56 63 B1 92 +0140 | B1 E1 1A 19 E5 D9 C3 41 A5 94 11 E5 6F 9A 5F 94 +0150 | 48 20 CA 7F 3B EA 5C A3 EA A0 93 2D B6 E7 84 72 +0160 | B6 DB CE B3 3C 00 87 75 49 9D 73 C3 56 B8 76 AF +0170 | 2F 7A 47 95 11 19 F2 07 AE 17 B3 93 BF 7C 93 EB +0180 | 9B 4E 47 82 68 43 AA B6 A1 B3 37 C5 FC B4 F4 C5 +0190 | 95 7E D6 71 77 FA 6F 21 97 D4 C7 F2 15 9B 42 23 +01A0 | 35 86 FC 03 08 6D 25 BC F4 53 AC 00 49 F5 DF 57 +01B0 | D0 C6 9C 08 89 4A 45 0F 24 1A A4 A4 A9 AF EF A7 +01C0 | ED 81 8C 77 03 A0 88 74 3D 16 1F 17 63 D3 6D 47 +01D0 | 7E D5 16 9F EE C8 D2 7C 96 2B 7E DB ED D4 01 B9 +01E0 | A2 DA A8 EB F1 5F 6B C3 8F 93 09 DE DE 83 4F BE +01F0 | 83 CC B9 8C A4 DA D0 57 95 5E F7 00 87 D1 16 86 +0200 | 79 47 F1 8F 3D 29 C5 06 76 7E 3C F6 9F BE 93 F0 +0210 | 46 DC 1E 74 DA FA CC B1 10 7C F5 13 D5 74 36 91 +0220 | 30 41 86 E0 2F 78 E5 D1 EC D7 06 DB 73 B4 7D 47 +0230 | EF D1 AB 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;
message_id 8, 801A019364DC4AB66012871FDEFD1AB66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4C4020000 (708 in decimal)90020000 (656 in decimal) Message body length
nonce 24, 1658C9B564FE4636F6F8CEB11D463151107BBDB963BC64291787F3B0F15790DFBE Value generated by client in Step 1
server_nonce 40, 164C0FDAE0DE9FD67039C06C9026E697428122DC5E6A4C66E003B4CC48F15B2A28 Value received from server in Step 2
encrypted_answer 56, 596FE500200F31B3E37B983C842582485CA CF5EFC948FE0DD0215F3EC08B64ACB6D 55B1F8D3398731247402F5338AAB36EB 14868DA1C70A7699AF6087302A6B8564 FA133827A5F7487D9D8024C903AE59BC 42E2231F4517DF75DF41DCF475227F46 E4DFAFFB4D3C77A9CB5EB169828B8E15 B17C26F8F8A1249AA0ABD724AD387816 6F9060F7F1BFA104E634DB111370A4FE 76D7E5F5C89EEF935A9592AC3DB122FD 02C779E253E826296CA9185845DD025A D0388EB828B28068436403F1F77B7DD0 20C12C3713053878E635CFE877F14BF8 C9EF84EE6BF470F0B9247111C86AF1C2 1B8DF6560F9A1574BC06D2C9E5AE45A2 51E8CF4C166F362E24BC78C15A5DAB3D DBB3FAF68EBB440DFD63A4BDF3A5B920 2917BAB18079FC293E7D2DAA695490BD EEF66A6F90CCDCDD03AC2605ED905B75 3FD702B5676D325C33A388222E12C3D8 368B3D590755B9D047663258D0B15A5C 52CBC6759A35CFFF9C99B73D5A2167C8 AEB9DF058FEF1981298A9D6D856D6846 A5A3A62646C32CFD24C863E161D7DCB9 6C086E78669142AE519077711D1C3F53 A1A30505701B5436739E80F8F2F38F9C 30444C2C7C5649F38E3E4D6BA509848A 49E03E53FCA093526B7161F2B350E25E 46A72C4B36C6CCF140922E10BA88F1FD A715A5C42A80D4F1CEF92781BA2E99FB C105CD9B493E3BDBC778EC25C2F225D8 AB08E7F12DEEFD3C698B9F45BE52ADDE 4B9F0E43232DDFE8D4EBEB3996D777EF 6078A954461D9A036D2CBD3993D3B54F D73E92E9EE6FA7E01A0C264ED1A0243C 43161C397DA09B075655731C869B808E CDBDD08E2CB4A67BABE91C6906968F0F
E11E7C49
FE5002004E98D4E29FE3B9553A840F08 5B153284F88D6550F68C40AF333FC009 D4C8D79D729AA8B69B370D9CE119BF1B 21BBA12B23C9F1681A9C9BB5787FEAFB C6AA47035BA0ADC6EAF8A41BD24909B1 BCA7BB42AE3A60CACE8CF669E14129DD BD23EB33392745EAE561326A1C7E27EB DBB609DA1115BE2B5FAC1CD34FD2CFED 607E1BE82439FB7090277EDC22CFC710 0F7EE133333F43BC803D4C869280DA9F 5DBF38CF9010588B14BE0D261D43CADD DB0D0065AA088195E6906AD3844EAE24 1C1399F4E47C689C6681E47ABE9CF015 0653A6676BAD5766CC41CB222D5F6058 DDA2F06EADB45AD6E870119D1BF891FF 19ADCBFCD4C0AC18FF4266B2F4CB82A7 B14487153C2F5706860891B0C0D8E8BC 7D88A8F57FE9CA060F10764D22779DBB 5AF4B73526D662B3C1162ED559DA5920 87110A09454DE2C036004FB44D05D257 00E332E15B2EA982A1C9242122240625 545BBC5F4DD6B524DA0C590EDEA1B262 C48B7A3547C3BAF604F81283965B87C3 1A84B5F0B559B210B96A410115B060FE AF4894253E276A60D5C51C77C1200222 B66E75B9EB8718AC4EA0D3D6F4EC2615 D56B24B10C409316AE9309F7952F9518 3A1DD0B72ED2F96A1287407BA5D69B6A 726437DA35D2AF058A404FDB4AE2D463 76E8B8478D9C92CB9CF97BE668F69D74 036F1CF806B74F29AADD1DD9B7EE4844 A314CBEF50B3D5B6BCBE143F7AC3FD1C C1B8DAA8223DAF45BCF5CC84A70F3044 5D9E03305601BF870D32C851980ED4F6 FF1022B029ACE713787F016007EC4285 AC51BAF5B13A281B3D4A897EA1040D98 B84DE20F938F1C361D19A6CF38676065
B5A3C5A8
See below
@@ -570,13 +570,13 @@ answer = BA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974 - + - + @@ -594,13 +594,13 @@ answer = BA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974 - + - + @@ -609,34 +609,34 @@ answer = BA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974
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 = 1B0468E9DBFD20FA417DC3EED2530442F422AA4D0FC9D52301E2612107704BE66AB33DA9B750ECD9F33013F1415EF785DABFEC1E629C29743FBBEB3A4A07890F9678F0A8EAF058676F9BF4F92AA794D20AF995E467349C65A620E8C2C128098F6946A057F25318C086F5337AC87A1653C10B590C15027F512184308C15EB02631FC93087CDE647A213E155D832E6D5CF8EB6F2A4655CADA89553358951F13141050AC29707F0827DA0160B22815DE89FBD72E3514E5E47DF092C5DA3820DC1E5B48EFA92BBB2FFE983354B07C6CA2DC0CE8973BBF248995161C72F042C62A69F43939EDCDFDBCE0AB7EC3D7BDF5F615971883A07820DA27B60D1BFD8EFDBC5B0
+
b = 808F0FDDC44293310A8EFD86865897444125D8B6816BF67EF341D6A3E8ACBFD8A0FD7662420693A302DB9ECCF5E4BB58B3932D17F96205DDF6EA156A4A4B34A8BC0006CD1D74246D98737D4C56943E4C39A913428B77C36A83E60D066B5DF210898E3BEC2BC61F589F8EE3DEA4D78F946AF82CD31EC2BD30C93A4CC2BB1692973C457E1B6CD8FD88A5520EBA3F824A95F2BB8306D04E68EA6367F9B5B8C79668AC6D4DACEA1A72E547DF82AF3A56DBF909DD39F2DFEB8C35E5548E36CF6F2AA2CF06D8FE3CAECC116F88CED3CC579D36933F0929868773C9F65069F2A7CA572ECA235AEB85718F85B3932601C000DA34BB368CAB19FF037D6CA5C04A192F0803

Then compute g_b = pow(g, b) mod dh_prime

-
g_b = B1BEE9D5FF26ABF161D8D71E018AE01DAA8E1C2CEBB7CEE55ECFDD5E07E4137D228A838D10205EF295903B0E4D3066D5DFA19AC83E218BAD49B7573428FD2D835E83203B55D94CCC018B69BD82F1F897D88CBBD71C8B74BF081B3533BB175BBFC2EAFA02BF3555ACCADCFD2D62F35118666FD76A13AEBCD6DB5DF0115C2AF7E630527A861A5C0EFA32D7F72128EA338EA335B1DF2D0CC44B4CD7C098BD855CC53F16FAD1E6C45647B80F0743EA9265C7823698D17AB18AF4C0B49B26F2AE96EB24F48181358222D2C0CD9895CB5E935DC643574F2297234309901E30AE3677C455AB540D9C10961118F89B30DBD2FB1D1A0BF833136A14C8BD902855344AF7FA
+
g_b = B982A4EE5651A3D9A89206A26D28E08A07F7529477807FAA173FA522AC48038C4C3C4249B2ECDE0FE5131B3CDDBBE463231F2DDC11F70163D26F6F0250755D8EA379E891461E0F46FC972953C5CD1FE1B9EF537DB4F20D45A3DB97D7AAC28769CAE1E870738B3826EF15B79582B9E65D99C83D63015A415DDC0D4666BD60A09345E4EB44427BCFBB5C5AD16373261C9777F7283728EFA9D34710ADB6F84E12AF4AA5D2294639ECFF9185F5F20CC3BB9B8D986C846B0AE35A165D380A09710793675C93442889CF9D80B0BCC8B935014314508582DC919A901F7773BACE2958832657733DE1E52B2D583D45B88D0B18DA501FF07449BA89C89D3BF1F1B714FB92
7.1) generation of encrypted_data

Generated payload (excluding transport headers/trailers):

-
0000 | 54 B6 43 66 58 C9 B5 64 FE 46 36 F6 F8 CE B1 1D
-0010 | 46 31 51 10 4C 0F DA E0 DE 9F D6 70 39 C0 6C 90
-0020 | 26 E6 97 42 00 00 00 00 00 00 00 00 FE 00 01 00
-0030 | B1 BE E9 D5 FF 26 AB F1 61 D8 D7 1E 01 8A E0 1D
-0040 | AA 8E 1C 2C EB B7 CE E5 5E CF DD 5E 07 E4 13 7D
-0050 | 22 8A 83 8D 10 20 5E F2 95 90 3B 0E 4D 30 66 D5
-0060 | DF A1 9A C8 3E 21 8B AD 49 B7 57 34 28 FD 2D 83
-0070 | 5E 83 20 3B 55 D9 4C CC 01 8B 69 BD 82 F1 F8 97
-0080 | D8 8C BB D7 1C 8B 74 BF 08 1B 35 33 BB 17 5B BF
-0090 | C2 EA FA 02 BF 35 55 AC CA DC FD 2D 62 F3 51 18
-00A0 | 66 6F D7 6A 13 AE BC D6 DB 5D F0 11 5C 2A F7 E6
-00B0 | 30 52 7A 86 1A 5C 0E FA 32 D7 F7 21 28 EA 33 8E
-00C0 | A3 35 B1 DF 2D 0C C4 4B 4C D7 C0 98 BD 85 5C C5
-00D0 | 3F 16 FA D1 E6 C4 56 47 B8 0F 07 43 EA 92 65 C7
-00E0 | 82 36 98 D1 7A B1 8A F4 C0 B4 9B 26 F2 AE 96 EB
-00F0 | 24 F4 81 81 35 82 22 D2 C0 CD 98 95 CB 5E 93 5D
-0100 | C6 43 57 4F 22 97 23 43 09 90 1E 30 AE 36 77 C4
-0110 | 55 AB 54 0D 9C 10 96 11 18 F8 9B 30 DB D2 FB 1D
-0120 | 1A 0B F8 33 13 6A 14 C8 BD 90 28 55 34 4A F7 FA
+
0000 | 54 B6 43 66 7B BD B9 63 BC 64 29 17 87 F3 B0 F1
+0010 | 57 90 DF BE 81 22 DC 5E 6A 4C 66 E0 03 B4 CC 48
+0020 | F1 5B 2A 28 00 00 00 00 00 00 00 00 FE 00 01 00
+0030 | B9 82 A4 EE 56 51 A3 D9 A8 92 06 A2 6D 28 E0 8A
+0040 | 07 F7 52 94 77 80 7F AA 17 3F A5 22 AC 48 03 8C
+0050 | 4C 3C 42 49 B2 EC DE 0F E5 13 1B 3C DD BB E4 63
+0060 | 23 1F 2D DC 11 F7 01 63 D2 6F 6F 02 50 75 5D 8E
+0070 | A3 79 E8 91 46 1E 0F 46 FC 97 29 53 C5 CD 1F E1
+0080 | B9 EF 53 7D B4 F2 0D 45 A3 DB 97 D7 AA C2 87 69
+0090 | CA E1 E8 70 73 8B 38 26 EF 15 B7 95 82 B9 E6 5D
+00A0 | 99 C8 3D 63 01 5A 41 5D DC 0D 46 66 BD 60 A0 93
+00B0 | 45 E4 EB 44 42 7B CF BB 5C 5A D1 63 73 26 1C 97
+00C0 | 77 F7 28 37 28 EF A9 D3 47 10 AD B6 F8 4E 12 AF
+00D0 | 4A A5 D2 29 46 39 EC FF 91 85 F5 F2 0C C3 BB 9B
+00E0 | 8D 98 6C 84 6B 0A E3 5A 16 5D 38 0A 09 71 07 93
+00F0 | 67 5C 93 44 28 89 CF 9D 80 B0 BC C8 B9 35 01 43
+0100 | 14 50 85 82 DC 91 9A 90 1F 77 73 BA CE 29 58 83
+0110 | 26 57 73 3D E1 E5 2B 2D 58 3D 45 B8 8D 0B 18 DA
+0120 | 50 1F F0 74 49 BA 89 C8 9D 3B F1 F1 B7 14 FB 92

Payload (de)serialization:

client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data;
nonce 4, 1658C9B564FE4636F6F8CEB11D463151107BBDB963BC64291787F3B0F15790DFBE Value generated by client in Step 1
server_nonce 20, 164C0FDAE0DE9FD67039C06C9026E697428122DC5E6A4C66E003B4CC48F15B2A28 Value received from server in Step 2
g_a 300, 260FE0001006FC44EAF4853052C49F1EA4E 92339561A2559EC65E93A4FFF173E13C 8456B60A3799345FD3B10DB7233DADEC F31C8FCB891E8DE1DF8454B228ACE02A 126F47A7599D5FE50831D971C9115F98 DE04C8EC7110CB463135E046255FBA4D 12E4B3F817578C2A51389ADA046B8CDB 9A357AD0B2CE57CFBDFE816466DCB2CB 2B29A4E96C2A3DD03A9DA93DAC17140D C8212308810B32BB6534DC8026638B17 BE5089D8242C7D69F9502D16EC3F48CF D6161B617D31629D96FF4165D72F8FE5 B242A7D39BF35E53FA13FD8C69ABFEFD F2FA87D0B432FC55E93B1C67E4574496 D03B97CF12E6533E416102B541E9D2FE 1BC4EA1A770EEFD871983E999BDDDDEC
EF7DDFC7
FE000100A927C1044AF0DB635BF0FA64 5663B192B1E11A19E5D9C341A59411E5 6F9A5F944820CA7F3BEA5CA3EAA0932D B6E78472B6DBCEB33C008775499D73C3 56B876AF2F7A47951119F207AE17B393 BF7C93EB9B4E47826843AAB6A1B337C5 FCB4F4C5957ED67177FA6F2197D4C7F2 159B42233586FC03086D25BCF453AC00 49F5DF57D0C69C08894A450F241AA4A4 A9AFEFA7ED818C7703A088743D161F17 63D36D477ED5169FEEC8D27C962B7EDB EDD401B9A2DAA8EBF15F6BC38F9309DE DE834FBE83CCB98CA4DAD057955EF700 87D116867947F18F3D29C506767E3CF6 9FBE93F046DC1E74DAFACCB1107CF513 D5743691304186E02F78E5D1ECD706DB
73B47D47
g_a diffie-hellman parameter
server_time 560, 44DC4AB66 (1722532941 in decimal)EFD1AB66 (1722536431 in decimal) Server time
@@ -658,19 +658,19 @@ answer = BA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974 - + - + - + @@ -684,47 +684,47 @@ answer = BA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974

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 = 54B6436658C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E697420000000000000000FE000100B1BEE9D5FF26ABF161D8D71E018AE01DAA8E1C2CEBB7CEE55ECFDD5E07E4137D228A838D10205EF295903B0E4D3066D5DFA19AC83E218BAD49B7573428FD2D835E83203B55D94CCC018B69BD82F1F897D88CBBD71C8B74BF081B3533BB175BBFC2EAFA02BF3555ACCADCFD2D62F35118666FD76A13AEBCD6DB5DF0115C2AF7E630527A861A5C0EFA32D7F72128EA338EA335B1DF2D0CC44B4CD7C098BD855CC53F16FAD1E6C45647B80F0743EA9265C7823698D17AB18AF4C0B49B26F2AE96EB24F48181358222D2C0CD9895CB5E935DC643574F2297234309901E30AE3677C455AB540D9C10961118F89B30DBD2FB1D1A0BF833136A14C8BD902855344AF7FA
-padding = A76B7CAA8F1952F7D2B6E3AB
-tmp_aes_key = F3703B4E69009BC24510144B929AE5883CA088B12CF5A5E7354327A7701325D9
-tmp_aes_iv = 8ABE130C3F744CD23D434583B7C96C2E7CBE25DB058A0776C6BCFC77379E6BBA
+
data = 54B643667BBDB963BC64291787F3B0F15790DFBE8122DC5E6A4C66E003B4CC48F15B2A280000000000000000FE000100B982A4EE5651A3D9A89206A26D28E08A07F7529477807FAA173FA522AC48038C4C3C4249B2ECDE0FE5131B3CDDBBE463231F2DDC11F70163D26F6F0250755D8EA379E891461E0F46FC972953C5CD1FE1B9EF537DB4F20D45A3DB97D7AAC28769CAE1E870738B3826EF15B79582B9E65D99C83D63015A415DDC0D4666BD60A09345E4EB44427BCFBB5C5AD16373261C9777F7283728EFA9D34710ADB6F84E12AF4AA5D2294639ECFF9185F5F20CC3BB9B8D986C846B0AE35A165D380A09710793675C93442889CF9D80B0BCC8B935014314508582DC919A901F7773BACE2958832657733DE1E52B2D583D45B88D0B18DA501FF07449BA89C89D3BF1F1B714FB92
+padding = 01339CF33DF07B0415CA0AF0
+tmp_aes_key = BC92457F9E912DECD5B954A07A9DD04A42A4307A27197EF5F71FC63B3FC76AF3
+tmp_aes_iv = 1F7F8549D862AD8EE1FDB95D320AF75C01C8F5BE794F8940628DF95C3216B1CE

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 = A5B9ABF2708B9F068EF2899C106568C401C8C45BF8F9E11E0FB85487290BB30F30AE17C9401C41A7A200C786622F76F18D822F649589C4CDC72104F64C9CBA88FD023A1E378AB7EECD41197724DF0DD42A03CB6B0AFF387C6A5E14091A2DD7AE68A8E82118E9F1B58610263EA72C8DA791C63447FA2BB18CE516B9C38D346F59AF5603B970313FCBD958D90475685B315F6736FD4816455A137A966F5FA59B1EAAFB9063CBA46371D3FCD69F43E3D8A7C759C1D0317FA38DE9C321A7F8AF97354FDB9AAE0D4E86F5814E7451CFAB057C92749D3DDEDCFC7C0B317C2BFFF52ACCB48BBD82FD1AB61903286004F8143B0520967E209D211B7AE070E7CBCC78BF250F5E477476AAAB282F1366C6E3B5B8AC58B3FC514D89EA41296F2D9E5B9C879D5C3FD1B2E2BFB9A518BC5514D36104AAA8E8B609E63F48F92242ECE9286ED5F1F37A77527490671612949BBF3C3A117C
+
encrypted_data = 691DA68B16068B04243E3058B9068C958CE7519E984739BCBD42C56DA9C698D8388FB786067BCF7D48C169E9CAAD8C55E5D6CEBB616B60994B2AD08E5089E554BB85B3490EE56733907D12116969EA3703B0F430A9B5779421E55066E3B7C1485A1D1EDF4261743091855B88E6914FE7612F668EB8B4B81EF7A483E266856824F1C4E97BB9D2779A70AA9BC554F37C6E7FBBA0B2CAEF8DDB3D8CC876E076A245C35B1FCE10E939E7595A86AAB6D7A2B321892374A98C050D5B38BEB526713BA12638549DE65BFFF205E15171BA6F0671598A0BCE281A6632143F36CCE082BC132E147100B8C5D9804E5834F66B8CDDB8810D29322F5531D0C3B52E9B3B1F4FD359772B0FFA245D9558A695FBB1845ED4ACF4D3466F1AE380FAC3EEB840B5C9B19A8A5F23A47BF4814BEBF35CAA6ED22F589255237DD372A01268460E00A43F8722F0ED02A4EF00E4F0C7D90A4B66AB67

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 A4 8B 06 00 4D C4 AB 66
-0010 | 78 01 00 00 1F 5F 04 F5 58 C9 B5 64 FE 46 36 F6
-0020 | F8 CE B1 1D 46 31 51 10 4C 0F DA E0 DE 9F D6 70
-0030 | 39 C0 6C 90 26 E6 97 42 FE 50 01 00 A5 B9 AB F2
-0040 | 70 8B 9F 06 8E F2 89 9C 10 65 68 C4 01 C8 C4 5B
-0050 | F8 F9 E1 1E 0F B8 54 87 29 0B B3 0F 30 AE 17 C9
-0060 | 40 1C 41 A7 A2 00 C7 86 62 2F 76 F1 8D 82 2F 64
-0070 | 95 89 C4 CD C7 21 04 F6 4C 9C BA 88 FD 02 3A 1E
-0080 | 37 8A B7 EE CD 41 19 77 24 DF 0D D4 2A 03 CB 6B
-0090 | 0A FF 38 7C 6A 5E 14 09 1A 2D D7 AE 68 A8 E8 21
-00A0 | 18 E9 F1 B5 86 10 26 3E A7 2C 8D A7 91 C6 34 47
-00B0 | FA 2B B1 8C E5 16 B9 C3 8D 34 6F 59 AF 56 03 B9
-00C0 | 70 31 3F CB D9 58 D9 04 75 68 5B 31 5F 67 36 FD
-00D0 | 48 16 45 5A 13 7A 96 6F 5F A5 9B 1E AA FB 90 63
-00E0 | CB A4 63 71 D3 FC D6 9F 43 E3 D8 A7 C7 59 C1 D0
-00F0 | 31 7F A3 8D E9 C3 21 A7 F8 AF 97 35 4F DB 9A AE
-0100 | 0D 4E 86 F5 81 4E 74 51 CF AB 05 7C 92 74 9D 3D
-0110 | DE DC FC 7C 0B 31 7C 2B FF F5 2A CC B4 8B BD 82
-0120 | FD 1A B6 19 03 28 60 04 F8 14 3B 05 20 96 7E 20
-0130 | 9D 21 1B 7A E0 70 E7 CB CC 78 BF 25 0F 5E 47 74
-0140 | 76 AA AB 28 2F 13 66 C6 E3 B5 B8 AC 58 B3 FC 51
-0150 | 4D 89 EA 41 29 6F 2D 9E 5B 9C 87 9D 5C 3F D1 B2
-0160 | E2 BF B9 A5 18 BC 55 14 D3 61 04 AA A8 E8 B6 09
-0170 | E6 3F 48 F9 22 42 EC E9 28 6E D5 F1 F3 7A 77 52
-0180 | 74 90 67 16 12 94 9B BF 3C 3A 11 7C
+
0000 | 00 00 00 00 00 00 00 00 30 A8 0B 00 EF D1 AB 66
+0010 | 78 01 00 00 1F 5F 04 F5 7B BD B9 63 BC 64 29 17
+0020 | 87 F3 B0 F1 57 90 DF BE 81 22 DC 5E 6A 4C 66 E0
+0030 | 03 B4 CC 48 F1 5B 2A 28 FE 50 01 00 69 1D A6 8B
+0040 | 16 06 8B 04 24 3E 30 58 B9 06 8C 95 8C E7 51 9E
+0050 | 98 47 39 BC BD 42 C5 6D A9 C6 98 D8 38 8F B7 86
+0060 | 06 7B CF 7D 48 C1 69 E9 CA AD 8C 55 E5 D6 CE BB
+0070 | 61 6B 60 99 4B 2A D0 8E 50 89 E5 54 BB 85 B3 49
+0080 | 0E E5 67 33 90 7D 12 11 69 69 EA 37 03 B0 F4 30
+0090 | A9 B5 77 94 21 E5 50 66 E3 B7 C1 48 5A 1D 1E DF
+00A0 | 42 61 74 30 91 85 5B 88 E6 91 4F E7 61 2F 66 8E
+00B0 | B8 B4 B8 1E F7 A4 83 E2 66 85 68 24 F1 C4 E9 7B
+00C0 | B9 D2 77 9A 70 AA 9B C5 54 F3 7C 6E 7F BB A0 B2
+00D0 | CA EF 8D DB 3D 8C C8 76 E0 76 A2 45 C3 5B 1F CE
+00E0 | 10 E9 39 E7 59 5A 86 AA B6 D7 A2 B3 21 89 23 74
+00F0 | A9 8C 05 0D 5B 38 BE B5 26 71 3B A1 26 38 54 9D
+0100 | E6 5B FF F2 05 E1 51 71 BA 6F 06 71 59 8A 0B CE
+0110 | 28 1A 66 32 14 3F 36 CC E0 82 BC 13 2E 14 71 00
+0120 | B8 C5 D9 80 4E 58 34 F6 6B 8C DD B8 81 0D 29 32
+0130 | 2F 55 31 D0 C3 B5 2E 9B 3B 1F 4F D3 59 77 2B 0F
+0140 | FA 24 5D 95 58 A6 95 FB B1 84 5E D4 AC F4 D3 46
+0150 | 6F 1A E3 80 FA C3 EE B8 40 B5 C9 B1 9A 8A 5F 23
+0160 | A4 7B F4 81 4B EB F3 5C AA 6E D2 2F 58 92 55 23
+0170 | 7D D3 72 A0 12 68 46 0E 00 A4 3F 87 22 F0 ED 02
+0180 | A4 EF 00 E4 F0 C7 D9 0A 4B 66 AB 67

Payload (de)serialization:

set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
nonce 4, 1658C9B564FE4636F6F8CEB11D463151107BBDB963BC64291787F3B0F15790DFBE Value generated by client in Step 1
server_nonce 20, 164C0FDAE0DE9FD67039C06C9026E697428122DC5E6A4C66E003B4CC48F15B2A28 Value received from server in Step 2
g_b 36, 260FE000100B1BEE9D5FF26ABF161D8D71E 018AE01DAA8E1C2CEBB7CEE55ECFDD5E 07E4137D228A838D10205EF295903B0E 4D3066D5DFA19AC83E218BAD49B75734 28FD2D835E83203B55D94CCC018B69BD 82F1F897D88CBBD71C8B74BF081B3533 BB175BBFC2EAFA02BF3555ACCADCFD2D 62F35118666FD76A13AEBCD6DB5DF011 5C2AF7E630527A861A5C0EFA32D7F721 28EA338EA335B1DF2D0CC44B4CD7C098 BD855CC53F16FAD1E6C45647B80F0743 EA9265C7823698D17AB18AF4C0B49B26 F2AE96EB24F48181358222D2C0CD9895 CB5E935DC643574F2297234309901E30 AE3677C455AB540D9C10961118F89B30 DBD2FB1D1A0BF833136A14C8BD902855
344AF7FA
FE000100B982A4EE5651A3D9A89206A2 6D28E08A07F7529477807FAA173FA522 AC48038C4C3C4249B2ECDE0FE5131B3C DDBBE463231F2DDC11F70163D26F6F02 50755D8EA379E891461E0F46FC972953 C5CD1FE1B9EF537DB4F20D45A3DB97D7 AAC28769CAE1E870738B3826EF15B795 82B9E65D99C83D63015A415DDC0D4666 BD60A09345E4EB44427BCFBB5C5AD163 73261C9777F7283728EFA9D34710ADB6 F84E12AF4AA5D2294639ECFF9185F5F2 0CC3BB9B8D986C846B0AE35A165D380A 09710793675C93442889CF9D80B0BCC8 B935014314508582DC919A901F7773BA CE2958832657733DE1E52B2D583D45B8 8D0B18DA501FF07449BA89C89D3BF1F1
B714FB92
Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding
@@ -746,7 +746,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + @@ -764,19 +764,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + - + @@ -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 = 9D630863AF022C4751DABDA2ACC4E69778BCC54C6BD4CA7FED1D7FF12FC07C10794132D22BA40B5DB885309956F49F1A73CB566C37B8796FB267E693B033114CF40ADDB2D0C07677ABBEFA69DF5FFC2EBF8831E109C8A1C8BF842A00AA478E8AAE0AE215C65FEBAEAFF2F61AE4E47902E9E8BF01783E2487F51EDC97596733A8A8F6DB232B852B431432B47B46B004F77D5020EF7C856E5FED1A8BF123C89E192E7DA0C7FDC9BD83B9CB66E701B63A1F2606C8ACE025080B5E3EBF87CD1B686E2C7621C11E56A9CE6D05A4A24C5DDB0E8B5EA1D6422AB9F7FBD6C3669A0B6C800423C8960235DCC055670F13B018EC15B9901040ED2F1BF8A2313EB752640F6B
+
auth_key = 8E66A556449F787E1094A7BB8EDD4033D7A768E2AC4F703A7ACB979A11DEC3A1E7659097A725C390382063508757F68B0B53F7D63C3F67FDDC0CD44EC5FF54A972E91012C0A3A67E1614B9257EA726F9B180371F5A5FCF8BB7D8E9362DA7BF3E5FFE97E2888C9481C48A0298B0B56667AE4541E13743C7B204A5C1A4FFF525D8020EAC7E10854699219789C5B6190575D8E8AAB17D46D89C33BD155F63D0401080BB40F7142A1FB43C8B72194B86F2647429C6ED252740E5864C2881A9EEE6CCEEF59E8187055D368544FA337FD286245634AE5793B18BB6BD110B713E16466725D2D30D6B276BD56F5204D553FAE183FD9913ECB2692B43AF8185AA4BAFAD79
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 F4 AC AC 4D C4 AB 66
-0010 | 8C 00 00 00 34 F7 CB 3B 58 C9 B5 64 FE 46 36 F6
-0020 | F8 CE B1 1D 46 31 51 10 4C 0F DA E0 DE 9F D6 70
-0030 | 39 C0 6C 90 26 E6 97 42 A6 D6 8B 51 FC A0 0A 4B
-0040 | 48 D1 75 BD CD 3E A0 D8
+
0000 | 00 00 00 00 00 00 00 00 01 D0 BD 89 F0 D1 AB 66
+0010 | A4 00 00 00 34 F7 CB 3B 7B BD B9 63 BC 64 29 17
+0020 | 87 F3 B0 F1 57 90 DF BE 81 22 DC 5E 6A 4C 66 E0
+0030 | 03 B4 CC 48 F1 5B 2A 28 B7 9C 1E DF 47 90 36 EF
+0040 | 02 95 F5 CF 99 FC 45 F3

Payload (de)serialization:

dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
message_id 8, 8A48B06004DC4AB6630A80B00EFD1AB66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1658C9B564FE4636F6F8CEB11D463151107BBDB963BC64291787F3B0F15790DFBE Value generated by client in Step 1
server_nonce 40, 164C0FDAE0DE9FD67039C06C9026E697428122DC5E6A4C66E003B4CC48F15B2A28 Value received from server in Step 2
encrypted_data 56, 340FE500100A5B9ABF2708B9F068EF2899C 106568C401C8C45BF8F9E11E0FB85487 290BB30F30AE17C9401C41A7A200C786 622F76F18D822F649589C4CDC72104F6 4C9CBA88FD023A1E378AB7EECD411977 24DF0DD42A03CB6B0AFF387C6A5E1409 1A2DD7AE68A8E82118E9F1B58610263E A72C8DA791C63447FA2BB18CE516B9C3 8D346F59AF5603B970313FCBD958D904 75685B315F6736FD4816455A137A966F 5FA59B1EAAFB9063CBA46371D3FCD69F 43E3D8A7C759C1D0317FA38DE9C321A7 F8AF97354FDB9AAE0D4E86F5814E7451 CFAB057C92749D3DDEDCFC7C0B317C2B FFF52ACCB48BBD82FD1AB61903286004 F8143B0520967E209D211B7AE070E7CB CC78BF250F5E477476AAAB282F1366C6 E3B5B8AC58B3FC514D89EA41296F2D9E 5B9C879D5C3FD1B2E2BFB9A518BC5514 D36104AAA8E8B609E63F48F92242ECE9 286ED5F1F37A77527490671612949BBF
3C3A117C
FE500100691DA68B16068B04243E3058 B9068C958CE7519E984739BCBD42C56D A9C698D8388FB786067BCF7D48C169E9 CAAD8C55E5D6CEBB616B60994B2AD08E 5089E554BB85B3490EE56733907D1211 6969EA3703B0F430A9B5779421E55066 E3B7C1485A1D1EDF4261743091855B88 E6914FE7612F668EB8B4B81EF7A483E2 66856824F1C4E97BB9D2779A70AA9BC5 54F37C6E7FBBA0B2CAEF8DDB3D8CC876 E076A245C35B1FCE10E939E7595A86AA B6D7A2B321892374A98C050D5B38BEB5 26713BA12638549DE65BFFF205E15171 BA6F0671598A0BCE281A6632143F36CC E082BC132E147100B8C5D9804E5834F6 6B8CDDB8810D29322F5531D0C3B52E9B 3B1F4FD359772B0FFA245D9558A695FB B1845ED4ACF4D3466F1AE380FAC3EEB8 40B5C9B19A8A5F23A47BF4814BEBF35C AA6ED22F589255237DD372A01268460E 00A43F8722F0ED02A4EF00E4F0C7D90A
4B66AB67
Encrypted client_DH_inner_data generated previously, serialized as a TL byte string
@@ -817,13 +817,13 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + @@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + - +
message_id 8, 801F4ACAC4DC4AB6601D0BD89F0D1AB66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 48C000000 (140 in decimal)A4000000 (164 in decimal) Message body length
nonce 24, 1658C9B564FE4636F6F8CEB11D463151107BBDB963BC64291787F3B0F15790DFBE Value generated by client in Step 1
server_nonce 40, 164C0FDAE0DE9FD67039C06C9026E697428122DC5E6A4C66E003B4CC48F15B2A28 Value received from server in Step 2
new_nonce_hash1 56, 16A6D68B51FCA00A4B48D175BDCD3EA0D8B79C1EDF479036EF0295F5CF99FC45F3 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.