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.
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:
+section_separator_color
Mini Apps theme key »The following new client configuration keys » were added:
+ +The following new suggestions » were added:
+"PREMIUM_CHRISTMAS"
- Suggests the user to gift Telegram Premium subscription to friends for Christmas."PREMIUM_GRACE"
- Suggests the user to extend their expiring Telegram Premium subscriptionThis layer introduces fact-checks », Telegram Stars and collapsible message quotes ».
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:
+effects
This layer adds the following features:
Channel ad revenue »: Telegram channel owners can now receive 50% of the revenue from ads displayed in their channels, as well as view detailed revenue statistics.
+Telegram Business connected bots »: connected business bot action bar » and bot-side constructors.
+A refactored and improved channel/supergroup/group invitation flow »
+Users can now directly edit created stickersets », including custom emoji stickersets, without using the now deprecated @stickers bot.
Users and bots can now fetch all stickersets owned by the current account »; the new stickerSet.creator
flag can also be used to distinguish stickersets created by the current account.
-Also, a single stickerset can now contain a mix of static, animated and video stickers, removing the previously present distinction of static/animated/video stickersets (this distinction is still present in the deprecated @stickers bot, so please only use the in-app sticker editor from now on).
Improvements for keyboardButtonRequestPeer.
Now bots will also receive the selected peer's name, username, photo (if present and requested by the new bot-side inputKeyboardButtonRequestPeer button).
-Previously, just the peer's ID was sent, which could only be used to fetch the name/photo if the bot had already previously cached the peer's access hash ».
Mini Apps on Telegram » now support biometric authentication, using the following new incoming web events:
+And the following new outgoing web events:
+ +Non-Premium users can now receive FLOOD_PREMIUM_WAIT_%d
errors when uploading and downloading files, which should be handled as specified here » and here ».
The following new Telegram Premium feature indentifiers » were added:
+business
The following new Telegram Premium feature indentifiers » were added:
+last_seen
message_privacy
This layer introduces saved message tags » and adds support for the "Channels" tab in the global search view ».
+The following new Telegram Premium feature indentifiers » were added:
+saved_tags
help.getDeepLinkInfo({path: "need_update_for_some_feature"})
help.getDeepLinkInfo({path: "some_unsupported_feature"})
Note that this method should not be called for unrecognized t.me
links, the usual HTTP link handling logic should be used, instead.
Note that this method should not be called for unrecognized t.me
links, the usual HTTP link handling logic must be used, instead.
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).
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.
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 @@
message_id
8, 8
-5CCB0D004CC4AB66
+944C0B00EFD1AB66
Message ID generated as specified here » (unixtime() << 32) + (N*4)
@@ -95,7 +95,7 @@
nonce
24, 16
-58C9B564FE4636F6F8CEB11D46315110
+7BBDB963BC64291787F3B0F15790DFBE
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 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 @@
message_id
8, 8
-0174F4654CC4AB66
+01648340EFD1AB66
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-6C000000
(108 in decimal)
+70000000
(112 in decimal)
Message body length
@@ -150,19 +150,19 @@
nonce
24, 16
-58C9B564FE4636F6F8CEB11D46315110
+7BBDB963BC64291787F3B0F15790DFBE
Value generated by client in Step 1
server_nonce
40, 16
-4C0FDAE0DE9FD67039C06C9026E69742
+8122DC5E6A4C66E003B4CC48F15B2A28
Server-generated random number
pq
56, 12
-0818200A1862DC69D7000000
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
@@ -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
pq
4, 12
-0818200A1862DC69D7000000
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, 8
-04431D43A5000000
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, 8
-045C05CECB000000
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, 16
-58C9B564FE4636F6F8CEB11D46315110
+7BBDB963BC64291787F3B0F15790DFBE
Value generated by client in Step 1
server_nonce
48, 16
-4C0FDAE0DE9FD67039C06C9026E69742
+8122DC5E6A4C66E003B4CC48F15B2A28
Value received from server in Step 2
new_nonce
64, 32
-379E6BBAF16BC50DD7206C6653D76C1A
B04D684EFC18BDC9A0D3EAD083A5B02A
+3216B1CE36F1CC5497A143885858F2E6
8B090973BD6183DB0B1429388FE95463
Client-generated random number
@@ -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;
@@ -345,7 +345,7 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6
message_id
8, 8
-60CB0D004CC4AB66
+2CA80B00EFD1AB66
Message ID generated as specified here » (unixtime() << 32) + (N*4)
@@ -363,25 +363,25 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6
nonce
24, 16
-58C9B564FE4636F6F8CEB11D46315110
+7BBDB963BC64291787F3B0F15790DFBE
Value generated by client in Step 1
server_nonce
40, 16
-4C0FDAE0DE9FD67039C06C9026E69742
+8122DC5E6A4C66E003B4CC48F15B2A28
Value received from server in Step 2
p
56, 8
-04431D43A5000000
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, 8
-045C05CECB000000
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
@@ -393,7 +393,7 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6
encrypted_data
80, 260
-FE000100613F44EFA4629A4977FE780D
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
@@ -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;
@@ -464,13 +464,13 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6
message_id
8, 8
-01A019364DC4AB66
+012871FDEFD1AB66
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-C4020000
(708 in decimal)
+90020000
(656 in decimal)
Message body length
@@ -482,19 +482,19 @@ random_padding_bytes = 3C329DF4E700FA6324252A00782C54D902BE10981D198B1D638E087E6
nonce
24, 16
-58C9B564FE4636F6F8CEB11D46315110
+7BBDB963BC64291787F3B0F15790DFBE
Value generated by client in Step 1
server_nonce
40, 16
-4C0FDAE0DE9FD67039C06C9026E69742
+8122DC5E6A4C66E003B4CC48F15B2A28
Value received from server in Step 2
encrypted_answer
56, 596
-FE500200F31B3E37B983C842582485CA
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
@@ -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;
@@ -570,13 +570,13 @@ answer = BA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974
nonce
4, 16
-58C9B564FE4636F6F8CEB11D46315110
+7BBDB963BC64291787F3B0F15790DFBE
Value generated by client in Step 1
server_nonce
20, 16
-4C0FDAE0DE9FD67039C06C9026E69742
+8122DC5E6A4C66E003B4CC48F15B2A28
Value received from server in Step 2
@@ -594,13 +594,13 @@ answer = BA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974
g_a
300, 260
-FE0001006FC44EAF4853052C49F1EA4E
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, 4
-4DC4AB66
(1722532941 in decimal)
+EFD1AB66
(1722536431 in decimal)
Server time
@@ -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;
@@ -658,19 +658,19 @@ answer = BA0D89B558C9B564FE4636F6F8CEB11D463151104C0FDAE0DE9FD67039C06C9026E6974
nonce
4, 16
-58C9B564FE4636F6F8CEB11D46315110
+7BBDB963BC64291787F3B0F15790DFBE
Value generated by client in Step 1
server_nonce
20, 16
-4C0FDAE0DE9FD67039C06C9026E69742
+8122DC5E6A4C66E003B4CC48F15B2A28
Value received from server in Step 2
g_b
36, 260
-FE000100B1BEE9D5FF26ABF161D8D71E
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
@@ -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;
@@ -746,7 +746,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
message_id
8, 8
-A48B06004DC4AB66
+30A80B00EFD1AB66
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
-58C9B564FE4636F6F8CEB11D46315110
+7BBDB963BC64291787F3B0F15790DFBE
Value generated by client in Step 1
server_nonce
40, 16
-4C0FDAE0DE9FD67039C06C9026E69742
+8122DC5E6A4C66E003B4CC48F15B2A28
Value received from server in Step 2
encrypted_data
56, 340
-FE500100A5B9ABF2708B9F068EF2899C
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
@@ -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;
@@ -817,13 +817,13 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
message_id
8, 8
-01F4ACAC4DC4AB66
+01D0BD89F0D1AB66
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-8C000000
(140 in decimal)
+A4000000
(164 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
-58C9B564FE4636F6F8CEB11D46315110
+7BBDB963BC64291787F3B0F15790DFBE
Value generated by client in Step 1
server_nonce
40, 16
-4C0FDAE0DE9FD67039C06C9026E69742
+8122DC5E6A4C66E003B4CC48F15B2A28
Value received from server in Step 2
new_nonce_hash1
56, 16
-A6D68B51FCA00A4B48D175BDCD3EA0D8
+B79C1EDF479036EF0295F5CF99FC45F3
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.