From a871e49040f96541fc59a479c50ec9f2067f4be9 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 1 Dec 2023 22:08:11 +0000 Subject: [PATCH] Update content of files --- .../corefork.telegram.org/api/stories.html | 4 - .../constructor/channel.html | 10 +- .../constructor/channelFull.html | 8 +- .../constructor/messageActionBotAllowed.html | 4 +- .../constructor/stories.storyViewsList.html | 2 +- .../constructor/storyItem.html | 18 +- .../constructor/storyItemSkipped.html | 4 +- .../constructor/storyView.html | 6 +- .../constructor/storyViews.html | 2 +- .../constructor/user.html | 6 +- .../constructor/userFull.html | 10 +- .../constructor/webPageAttributeStory.html | 21 +- .../mtproto/samples-auth_key.html | 412 +++++++++--------- data/web/fragment.com/css/auction.css | 66 +-- data/web/fragment.com/js/auction.js | 10 - 15 files changed, 261 insertions(+), 322 deletions(-) diff --git a/data/web/corefork.telegram.org/api/stories.html b/data/web/corefork.telegram.org/api/stories.html index 9b9d0b8ac2..a31ccd2d49 100644 --- a/data/web/corefork.telegram.org/api/stories.html +++ b/data/web/corefork.telegram.org/api/stories.html @@ -63,10 +63,6 @@ stories.sendStory#bcb73644 flags:# pinned:flags.2?true noforwards:flags.4?true peer:InputPeer media:InputMedia media_areas:flags.5?Vector<MediaArea> caption:flags.0?string entities:flags.1?Vector<MessageEntity> privacy_rules:Vector<InputPrivacyRule> random_id:long period:flags.3?int = Updates; stories.editStory#b583ba46 flags:# peer:InputPeer id:int media:flags.0?InputMedia media_areas:flags.3?Vector<MediaArea> caption:flags.1?string entities:flags.1?Vector<MessageEntity> privacy_rules:flags.2?Vector<InputPrivacyRule> = Updates; -contacts.getBlocked#9a868f80 flags:# my_stories_from:flags.0?true offset:int limit:int = contacts.Blocked; -contacts.block#2e2e8734 flags:# my_stories_from:flags.0?true id:InputPeer = Bool; -contacts.unblock#b550d328 flags:# my_stories_from:flags.0?true id:InputPeer = Bool; - stories.getChatsToSend#a56a8b60 = messages.Chats;

Before posting a story, clients should invoke stories.canSendStory, to make sure they can send stories to the specified peer (which can be inputPeerSelf to send the story as a normal user and inputPeerChannel to send a story as a channel).

Use stories.getChatsToSend to obtain a list of channels where the user can post stories; stories.canSendStory must still be used before uploading a story to make sure no other limit was reached, as described in the main documentation ». diff --git a/data/web/corefork.telegram.org/constructor/channel.html b/data/web/corefork.telegram.org/constructor/channel.html index b4955ee459..455358f260 100644 --- a/data/web/corefork.telegram.org/constructor/channel.html +++ b/data/web/corefork.telegram.org/constructor/channel.html @@ -179,12 +179,12 @@ stories_hidden flags2.1?true -  +Whether we have hidden all stories posted by this channel ». stories_hidden_min flags2.2?true -  +If set, indicates that the stories_hidden flag was not populated, and its value must cannot be relied on; use the previously cached value, or re-fetch the constructor using channels.getChannels to obtain the latest value of the stories_hidden flag. stories_unavailable @@ -254,7 +254,7 @@ stories_max_id flags2.4?int -  +ID of the maximum read story. @@ -275,6 +275,10 @@

Set whether all users should request admin approval to join the group ».

Forums

Telegram allows creating forums with multiple distinct topics.

+

Stories

+

Telegram users and channels can easily post and view stories through the API.

+

channels.getChannels

+

Get info about channels/supergroups

Admin, banned, default rights

How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.

diff --git a/data/web/corefork.telegram.org/constructor/channelFull.html b/data/web/corefork.telegram.org/constructor/channelFull.html index c4e5eaa527..cbadeaae68 100644 --- a/data/web/corefork.telegram.org/constructor/channelFull.html +++ b/data/web/corefork.telegram.org/constructor/channelFull.html @@ -139,7 +139,7 @@ stories_pinned_available flags2.5?true -  +Whether this user has some pinned stories. view_forum_as_messages @@ -341,6 +341,8 @@

Admins of supergroups with a certain number of members can choose to unleash the full proactive power of Telegram's own antispam algorithms – turning on the new Aggressive mode for the automated spam filters.

Translation

Telegram allows translating chat messages: Telegram Premium users may even enable real-time chat translation.

+

Stories

+

Telegram users and channels can easily post and view stories through the API.

Admin, banned, default rights

How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.

Channels, supergroups, gigagroups and basic groups

@@ -358,9 +360,7 @@

Invites

Chats and channels may have a public username or a private invite link: private invite links may be further enhanced with per-user join requests.

Message reactions

-

Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.

-

Stories

-

Telegram users and channels can easily post and view stories through the API.

+

Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.

diff --git a/data/web/corefork.telegram.org/constructor/messageActionBotAllowed.html b/data/web/corefork.telegram.org/constructor/messageActionBotAllowed.html index 58a0948299..d8b2dbbffd 100644 --- a/data/web/corefork.telegram.org/constructor/messageActionBotAllowed.html +++ b/data/web/corefork.telegram.org/constructor/messageActionBotAllowed.html @@ -80,7 +80,7 @@ from_request flags.3?true -  +We have allowed the bot to send us messages using bots.allowSendMessage ». domain @@ -99,6 +99,8 @@

Related pages

Bot attachment menu and side menu entries

Bots can install attachment menu and side menu entries, offering conveniently accessible, versatile web apps.

+

bots.allowSendMessage

+

Allow the specified bot to send us messages

Telegram Login Widget

Mini Apps on Telegram

Bots can offer users interactive HTML5 web apps to completely replace any website.

diff --git a/data/web/corefork.telegram.org/constructor/stories.storyViewsList.html b/data/web/corefork.telegram.org/constructor/stories.storyViewsList.html index 5fe1c44a10..a03038d169 100644 --- a/data/web/corefork.telegram.org/constructor/stories.storyViewsList.html +++ b/data/web/corefork.telegram.org/constructor/stories.storyViewsList.html @@ -79,7 +79,7 @@ reactions_count int -  +Number of reactions that were added to the story views diff --git a/data/web/corefork.telegram.org/constructor/storyItem.html b/data/web/corefork.telegram.org/constructor/storyItem.html index 65d4114ac2..4aeabbfc59 100644 --- a/data/web/corefork.telegram.org/constructor/storyItem.html +++ b/data/web/corefork.telegram.org/constructor/storyItem.html @@ -79,17 +79,17 @@ public flags.7?true -Whether this story is public +Whether this story is public and can be viewed by everyone close_friends flags.8?true -  +Whether this story can only be viewed by our close friends, see here » for more info min flags.9?true -  +Full information about this story was omitted for space and performance reasons; use stories.getStoriesByID to fetch full info about this story when and if needed. noforwards @@ -104,12 +104,12 @@ contacts flags.12?true -  +Whether this story can only be viewed by our contacts selected_contacts flags.13?true -  +Whether this story can only be viewed by a select list of our contacts out @@ -171,12 +171,14 @@

Type

StoryItem

Related pages

+

Privacy

+

Telegram allows users to specify granular privacy settings, choosing which users can or can't interact with them in certain ways.

+

stories.getStoriesByID

+

Obtain full info about a set of stories by their IDs.

Styled text with message entities

How to create styled text with message entities

Stories

-

Telegram users and channels can easily post and view stories through the API.

-

Privacy

-

Telegram allows users to specify granular privacy settings, choosing which users can or can't interact with them in certain ways.

+

Telegram users and channels can easily post and view stories through the API.

diff --git a/data/web/corefork.telegram.org/constructor/storyItemSkipped.html b/data/web/corefork.telegram.org/constructor/storyItemSkipped.html index 0a6d0adf3a..4b3b841782 100644 --- a/data/web/corefork.telegram.org/constructor/storyItemSkipped.html +++ b/data/web/corefork.telegram.org/constructor/storyItemSkipped.html @@ -74,7 +74,7 @@ close_friends flags.8?true -  +Whether this story can only be viewed by our close friends, see here » for more info id @@ -96,6 +96,8 @@

Type

StoryItem

Related pages

+

Privacy

+

Telegram allows users to specify granular privacy settings, choosing which users can or can't interact with them in certain ways.

stories.getStoriesByID

Obtain full info about a set of stories by their IDs.

diff --git a/data/web/corefork.telegram.org/constructor/storyView.html b/data/web/corefork.telegram.org/constructor/storyView.html index 7cc9c1bf6c..6aaa2860f0 100644 --- a/data/web/corefork.telegram.org/constructor/storyView.html +++ b/data/web/corefork.telegram.org/constructor/storyView.html @@ -74,12 +74,12 @@ blocked flags.0?true -  +Whether we have completely blocked this user, including from viewing more of our stories. blocked_my_stories_from flags.1?true -  +Whether we have blocked this user from viewing more of our stories. user_id @@ -101,6 +101,8 @@

Type

StoryView

Related pages

+

Blocklist

+

Working with the blocklist.

Stories

Telegram users and channels can easily post and view stories through the API.

diff --git a/data/web/corefork.telegram.org/constructor/storyViews.html b/data/web/corefork.telegram.org/constructor/storyViews.html index 2e91ceb653..0e2dc4bc75 100644 --- a/data/web/corefork.telegram.org/constructor/storyViews.html +++ b/data/web/corefork.telegram.org/constructor/storyViews.html @@ -94,7 +94,7 @@ reactions_count flags.4?int -  +Number of reactions added to the story recent_viewers diff --git a/data/web/corefork.telegram.org/constructor/user.html b/data/web/corefork.telegram.org/constructor/user.html index dd20b62dfa..84c0564f90 100644 --- a/data/web/corefork.telegram.org/constructor/user.html +++ b/data/web/corefork.telegram.org/constructor/user.html @@ -174,7 +174,7 @@ close_friend flags2.2?true -  +Whether we marked this user as a close friend, see here » for more info stories_hidden @@ -259,7 +259,7 @@ stories_max_id flags2.5?int -  +ID of the maximum read story. @@ -270,6 +270,8 @@

In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set.

Bot attachment menu and side menu entries

Bots can install attachment menu and side menu entries, offering conveniently accessible, versatile web apps.

+

Privacy

+

Telegram allows users to specify granular privacy settings, choosing which users can or can't interact with them in certain ways.

Stories

Telegram users and channels can easily post and view stories through the API.

userFull

diff --git a/data/web/corefork.telegram.org/constructor/userFull.html b/data/web/corefork.telegram.org/constructor/userFull.html index 2ba56790bd..3770ef87b6 100644 --- a/data/web/corefork.telegram.org/constructor/userFull.html +++ b/data/web/corefork.telegram.org/constructor/userFull.html @@ -114,12 +114,12 @@ stories_pinned_available flags.26?true -  +Whether this user has some pinned stories. blocked_my_stories_from flags.27?true -  +Whether we've blocked this user, preventing them from seeing our stories ». id @@ -214,7 +214,7 @@ stories flags.25?PeerStories -  +Active stories » @@ -225,6 +225,10 @@

Telegram allows scheduling messages

Translation

Telegram allows translating chat messages: Telegram Premium users may even enable real-time chat translation.

+

Stories

+

Telegram users and channels can easily post and view stories through the API.

+

Blocklist

+

Working with the blocklist.

Pinned messages

Telegram allows pinning multiple messages on top of a specific chat.

Folders

diff --git a/data/web/corefork.telegram.org/constructor/webPageAttributeStory.html b/data/web/corefork.telegram.org/constructor/webPageAttributeStory.html index 76f76f2555..890ea664dc 100644 --- a/data/web/corefork.telegram.org/constructor/webPageAttributeStory.html +++ b/data/web/corefork.telegram.org/constructor/webPageAttributeStory.html @@ -13,12 +13,10 @@ flags Flags, see TL conditional fields peer Peer -  +Peer that posted the story id int -  -story -flags.0?StoryItem…"> +Story…"> +Story…"> @@ -101,12 +97,12 @@ flags.0?StoryItem…"> peer Peer -  +Peer that posted the story id int -  +Story ID story @@ -116,7 +112,10 @@ flags.0?StoryItem…">

Type

-

WebPageAttribute

+

WebPageAttribute

+

Related pages

+

Stories

+

Telegram users and channels can easily post and view stories through the API.

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 6fae787d65..db3fbc9d52 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 04 95 08 00 92 48 6A 65
-0010 | 14 00 00 00 F1 8E 7E BE E2 A2 03 78 80 7D D3 38
-0020 | 7B 46 CE C6 CC 91 8F 48
+
0000 | 00 00 00 00 00 00 00 00 6C 28 05 00 77 57 6A 65
+0010 | 14 00 00 00 F1 8E 7E BE 32 E0 57 DC 82 0E 13 67
+0020 | DA C9 FD EF B0 0D FA E3

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 7C E8 51 92 48 6A 65
-0010 | 88 00 00 00 63 24 16 05 E2 A2 03 78 80 7D D3 38
-0020 | 7B 46 CE C6 CC 91 8F 48 92 54 F3 93 E5 FB 43 86
-0030 | 98 FA 57 A7 44 1D 98 38 08 19 98 68 30 5A F3 05
-0040 | 9D 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 DC 7A C5 77 57 6A 65
+0010 | 84 00 00 00 63 24 16 05 32 E0 57 DC 82 0E 13 67
+0020 | DA C9 FD EF B0 0D FA E3 87 69 98 EC 69 F2 D2 8B
+0030 | 69 12 57 F3 D9 52 84 D8 08 2D 0D F2 8C 1F 09 F9
+0040 | 55 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 = 1844338604301813149
-

Decompose into 2 prime cofactors p < q: 1844338604301813149 = 1244688997 * 1481766617

-
p = 1244688997
-q = 1481766617
+
pq = 3246517590034086229
+

Decompose into 2 prime cofactors p < q: 3246517590034086229 = 1693217573 * 1917365873

+
p = 1693217573
+q = 1917365873

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 19 98 68 30 5A F3 05 9D 00 00 00
-0010 | 04 4A 30 72 65 00 00 00 04 58 51 F6 D9 00 00 00
-0020 | E2 A2 03 78 80 7D D3 38 7B 46 CE C6 CC 91 8F 48
-0030 | 92 54 F3 93 E5 FB 43 86 98 FA 57 A7 44 1D 98 38
-0040 | 84 80 1F 4C 0A E1 2B A4 10 94 7A 69 D0 B2 8B 44
-0050 | 02 9D 23 01 CA 74 1B 38 14 11 17 36 6E 28 94 E6
+
0000 | 95 5F F5 A9 08 2D 0D F2 8C 1F 09 F9 55 00 00 00
+0010 | 04 64 EC 73 25 00 00 00 04 72 48 AE 71 00 00 00
+0020 | 32 E0 57 DC 82 0E 13 67 DA C9 FD EF B0 0D FA E3
+0030 | 87 69 98 EC 69 F2 D2 8B 69 12 57 F3 D9 52 84 D8
+0040 | 60 53 53 97 02 E3 B3 45 95 1B 83 0A 11 ED B8 30
+0050 | 56 0D 5A 46 F8 15 0F 31 EF 75 92 CA A5 86 F1 F8
 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 = 1481766617
- + - + - + - + - + - + @@ -291,39 +291,39 @@ q = 1481766617

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 = 955FF5A908199868305AF3059D000000044A307265000000045851F6D9000000E2A20378807DD3387B46CEC6CC918F489254F393E5FB438698FA57A7441D983884801F4C0AE12BA410947A69D0B28B44029D2301CA741B38141117366E2894E602000000
-random_padding_bytes = 7B5BC33A172357E71025980827959970B32388764D3215F03A0185A2B5C4671B54D0FFB91701C8811C154A0CCD9F77E7DDEA868958A9D2320EDA2A41838913929881BF04F8EB602255206115B9117648FDE7938E0351CC499C8F8A0A
+
data = 955FF5A9082D0DF28C1F09F9550000000464EC7325000000047248AE7100000032E057DC820E1367DAC9FDEFB00DFAE3876998EC69F2D28B691257F3D95284D86053539702E3B345951B830A11EDB830560D5A46F8150F31EF7592CAA586F1F802000000
+random_padding_bytes = 952ED4932915DBDB298617BE299380F501C64BF57F488A9D3B7A2CEBD4EC17E4E8DAB5B69F934BC7D7A838D08DB60D41E2F9872B9C73F48280462D2BF9181C6B36878897BA33B386EC6AA2A3401978600202E153D39FC24E917D09DF

And this is the output:

-
encrypted_data = 4DDA98052432E52B903D07CD37A79CAC04EACCDBEEB6B425F5DDD036995F0E17360208AFAFF1EF35F4B6E37BA720CA10CCC9C910301DE511920A2133B4EECAEF096F7B84691E83E92E26A3F997789AF6855582FB83B99FF14F98F921159A2484AE836BB3D1601A861D77539AE0CC5826E40491A1B7CED6781C87D5CA7C5D5C29C80F688860D99421E3EBF133B26008EBE78DD19F05CF34221EAD235BA75AD0C1FECEF133BAA77E5D98334F7E58DB88951AFA0B763CD6EAD3815FCC509A24CA0D16026B349CAD85994281D2C2BA996D9DECFB1EF4738E06ED5678600DA11CF93A1683517CD9332321A87691B190B1FDEEAEA570881F564B2D5A129E162A7F6D65
+
encrypted_data = 8EDF03011B64DF2831577B8DBF0E739E04398A81A3249573DC873FF2F823D4ABE628438C59F1DF2D579DC845C5DB1037AA133836F8F41928BB41FD9709BDB288D52324C21FC89672E46302DF5AC6459A9ABEAB5C7EE29784935F2B396D54CB2580891E378B32DA6811B095C4F109BA10203F379DD98CE3D93DD34052BF70F77ED04D8E75538D33F7B86033D5CB9D1F4A8FA437D30C0D352EC6D52E382B8C105AD2478ACAC2B344B7D6804D30434FF8640FA0A9E34C15B46F89A54B8D875E34A0DF9F723F2F6751FDE78FCC7679A59A12D15AFAF408C1462858D0274895B481D9356C27830E2AB78B3DA7B31CD940F636AF29DB9ED38C841ED600BBBB825C4D93

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

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, 80495080092486A656C28050077576A65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16E2A20378807DD3387B46CEC6CC918F4832E057DC820E1367DAC9FDEFB00DFAE3 Random number
message_id 8, 8017CE85192486A6501DC7AC577576A65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 488000000 (136 in decimal)84000000 (132 in decimal) Message body length
nonce 24, 16E2A20378807DD3387B46CEC6CC918F4832E057DC820E1367DAC9FDEFB00DFAE3 Value generated by client in Step 1
server_nonce 40, 169254F393E5FB438698FA57A7441D9838876998EC69F2D28B691257F3D95284D8 Server-generated random number
pq 56, 1208199868305AF3059D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1844338604301813149
082D0DF28C1F09F955000000
TL byte deserialization
=> bigendian conversion to decimal
=> 3246517590034086229
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
pq 4, 1208199868305AF3059D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1844338604301813149
082D0DF28C1F09F955000000
TL byte deserialization
=> bigendian conversion to decimal
=> 3246517590034086229
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p 16, 8044A307265000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1244688997
0464EC7325000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1693217573
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 24, 8045851F6D9000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1481766617
047248AE71000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1917365873
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce 32, 16E2A20378807DD3387B46CEC6CC918F4832E057DC820E1367DAC9FDEFB00DFAE3 Value generated by client in Step 1
server_nonce 48, 169254F393E5FB438698FA57A7441D9838876998EC69F2D28B691257F3D95284D8 Value received from server in Step 2
new_nonce 64, 3284801F4C0AE12BA410947A69D0B28B44 029D2301CA741B38141117366E2894E66053539702E3B345951B830A11EDB830 560D5A46F8150F31EF7592CAA586F1F8 Client-generated random number
@@ -345,7 +345,7 @@ random_padding_bytes = 7B5BC33A172357E71025980827959970B32388764D3215F03A0185A2B - + @@ -363,25 +363,25 @@ random_padding_bytes = 7B5BC33A172357E71025980827959970B32388764D3215F03A0185A2B - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = 7B5BC33A172357E71025980827959970B32388764D3215F03A0185A2B - + @@ -402,47 +402,47 @@ random_padding_bytes = 7B5BC33A172357E71025980827959970B32388764D3215F03A0185A2B
6) Server responds with:

Received payload (excluding transport headers/trailers):

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

Payload (de)serialization:

server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
message_id 8, 8DC910B0092486A655838090077576A65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16E2A20378807DD3387B46CEC6CC918F4832E057DC820E1367DAC9FDEFB00DFAE3 Value generated by client in Step 1
server_nonce 40, 169254F393E5FB438698FA57A7441D9838876998EC69F2D28B691257F3D95284D8 Value received from server in Step 2
p 56, 8044A307265000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1244688997
0464EC7325000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1693217573
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 64, 8045851F6D9000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1481766617
047248AE71000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1917365873
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
encrypted_data 80, 260FE0001004DDA98052432E52B903D07CD 37A79CAC04EACCDBEEB6B425F5DDD036 995F0E17360208AFAFF1EF35F4B6E37B A720CA10CCC9C910301DE511920A2133 B4EECAEF096F7B84691E83E92E26A3F9 97789AF6855582FB83B99FF14F98F921 159A2484AE836BB3D1601A861D77539A E0CC5826E40491A1B7CED6781C87D5CA 7C5D5C29C80F688860D99421E3EBF133 B26008EBE78DD19F05CF34221EAD235B A75AD0C1FECEF133BAA77E5D98334F7E 58DB88951AFA0B763CD6EAD3815FCC50 9A24CA0D16026B349CAD85994281D2C2 BA996D9DECFB1EF4738E06ED5678600D A11CF93A1683517CD9332321A87691B1 90B1FDEEAEA570881F564B2D5A129E16
2A7F6D65
FE0001008EDF03011B64DF2831577B8D BF0E739E04398A81A3249573DC873FF2 F823D4ABE628438C59F1DF2D579DC845 C5DB1037AA133836F8F41928BB41FD97 09BDB288D52324C21FC89672E46302DF 5AC6459A9ABEAB5C7EE29784935F2B39 6D54CB2580891E378B32DA6811B095C4 F109BA10203F379DD98CE3D93DD34052 BF70F77ED04D8E75538D33F7B86033D5 CB9D1F4A8FA437D30C0D352EC6D52E38 2B8C105AD2478ACAC2B344B7D6804D30 434FF8640FA0A9E34C15B46F89A54B8D 875E34A0DF9F723F2F6751FDE78FCC76 79A59A12D15AFAF408C1462858D02748 95B481D9356C27830E2AB78B3DA7B31C D940F636AF29DB9ED38C841ED600BBBB
825C4D93
Value generated above
@@ -464,13 +464,13 @@ random_padding_bytes = 7B5BC33A172357E71025980827959970B32388764D3215F03A0185A2B - + - + @@ -482,19 +482,19 @@ random_padding_bytes = 7B5BC33A172357E71025980827959970B32388764D3215F03A0185A2B - + - + - + @@ -502,20 +502,20 @@ random_padding_bytes = 7B5BC33A172357E71025980827959970B32388764D3215F03A0185A2B

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

-
encrypted_answer = A119B0C4D95062A7D7266967D1750515E81BA5B66B4F924773B82064EC7ED7B7D66BDD9FD027BF71D0657F8EF4CFC602BD747132428C4BC210F9CA942DE29F434A4323628041A7AE6000CD430C8095315D2CFBB0E9A2D6244AA50AB30F78F92AA06D21C4FC47B0BB63CCA3D88227316A8F8E8A554B34CA21CF35277B2554CDB99C81DBA6A4E1DD4C2C76AA7A61DCCBE19287548975A1B0827D434BB5866649157333110F77A77B2A8D6C249CA609C0D76E6D87BDBBA4059F7F55DD12B9EEC28F52E386C681F0183B82EC494B2F92F0B9C38FBF2E3FE0E48F675A257E13776CAD99C5FBAC7322D7ED447131C797DEFDD1245866EDCA8553C6E06DC01078B0AAAA1A7A314276EF31DC3C652C472EC7F8F1CEC0335CA2E026C879E6E911E659BEEA10D474C9EA3CA98CA782BB3A9C2BDA5CF82657A0B9046A6A9094765F7B153FA93B84B723FAFCBE49493DA230A4DFC9FA5AA8E943F0F534FF8DC22C62DE6DFBFFC8E0EDB7BBE58D50F533CD2B5879CB3CD08FA64E7A426229B960B951838BB4D038437B25E4631E5C1B1C3CAB5E928C45867B81DFF5B35ACB8B0800AA5CEACBC648C39A45CB0F77DDF87A112855271F37EADE7AB6AB935CD920C665738556CC3BE591224E198818BD4CC257C836BFEA6405764774DEDB1A69F3F03B2F1ED6D37F407F591EF8AC3307C26D4F4EAE966D3E0EEFADD94231F748FFD94F43B1216E7949DD5FFA1CFDA5CA5E20D0B57C2FBB44068B00A074D50311CD507A36138B7B87C8ABFD8B799A530CC79A540ABCCF72B8F9B175A6FCFCFB9B1603FD3CEF49935139CA789C9945CA49DC0370C2834BDF08
-tmp_aes_key = E8934AA8785EB376BF5AF1DC8E6CCF115E85119979BF221D614927806C1C180E
-tmp_aes_iv = 283FE0D00A698688BCFBEB86198DF96B2613AFEB015932561E9D7CA284801F4C
+
encrypted_answer = C17DE39BD4AA784BC84B8916CFA008DEC140880AA6A1DDB0D1AFDAE9D840662E41703A97006C94F77B13732178A45FB93A20D2D0D9B8C3F5734B38FEBE91695530C2D5CFC1A73045380D5D11B1D72E8821E643877833E81B64DC76F81F2030F78A107A8C7F08EF6CFDDD8471F08D1715C1961B98316A544BD9B10A86E3F55F75781396146BE668B31E4BA7DD5432CA04F127B805CAC587149EEDC2177F4BC363E970EB2FD33031B8AE04658BE96408B95FCF6FAF7913AC2B15E95273B75842B2E8FDC6C9CFB111A42BEBDB713B34FB946B7C3DF58EE2997C6C99CC3CE85EEF80525CBDC4B679E0565986675A5622DA675DEA4716F145A525518EFE3BA22501580BCF189D91F130C3AB18F3D117084E14AE3166568C264D1CA5F26A49023CE2CD9E3FC18EB10FEEF87112D5F92F72B4164B36A84812B040530E534DEEDE975F9ACE07B91ECEA9383E91C1A859C0C609BB758EA42111DF600F798AC57E26A7ABE379EFC2D1FBB0D4434BE64DAC6935DC056F31B7F7889815AE7DD75F1BF965E62B54E897D5DECD2A457982CEC68172DA40786D425D2832E5E158A791B4787678FD7597745FA714353539C964BA9E53C81F1D1603DC206F9A6DBBA49DD19A0E62A7042DF6497FCB56E3F3450EFD98A6CA39862AB24E4FF1B9D75B3DF88152ECF0AA9E6240E39C0B1877FA6490E2E5A7B1C1334D73C8AEE6CCF78132CE6427D878E87CE15A460D230B507D453A02ACA135CF81B455EE1F7DDF8FEFD92F1D9429608A7D883A07AC7996ADBEFFD2A09209FD1F4AD1151532BF12EDB02E49A11A6E7E494987FD786BA8836893E8EF6019D009B7
+tmp_aes_key = 1FA0C6C36D28340F63C36679A188F02CBC03D6791638C1933344638328FA854A
+tmp_aes_iv = 220ECFDF406702AC5470D1E4CB02A9E4978FD532FF34E56D05742C3B60535397

Yielding:

-
answer_with_hash = 6589FB2BE1C907C660B97611E0A07C02D67D961ABA0D89B5E2A20378807DD3387B46CEC6CC918F489254F393E5FB438698FA57A7441D983803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001008C0E47ACCCE07622B99F900EF624AE698AA069C0435B4B13E975E834ABE075AD01811CA9D7E3CAB6634E01024E43CC52CF983695BD7D6A31E1070159809EFF8FC91D92C83EBC3979EA49E24157EE36AE4B165358C9A3EB9C0065ECBBA6F6B7A8A5B8E390DDD7F5B1B12B49DAEAC52532035F695944792A0801F4E34490AB5B06027AFCE3D419E3B73B5B375D369852EF8EC7382FB6E1ECA75CB2282AF2D7AD60787188309E7A79ECF02DAE48FD516CF649D94088E4FE41D1439AF85D4888BDFCBA5C5147CC28FE56A35C89EB59242DE38701CEE3170F5AE545A05BCC824B2C1E12C381600CACA85451FDA2DF2F7A9C37D37BB3BB2F8CF2293DC185BD8FEBBC8593486A65047EF7BB0E81704B
-answer = BA0D89B5E2A20378807DD3387B46CEC6CC918F489254F393E5FB438698FA57A7441D983803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001008C0E47ACCCE07622B99F900EF624AE698AA069C0435B4B13E975E834ABE075AD01811CA9D7E3CAB6634E01024E43CC52CF983695BD7D6A31E1070159809EFF8FC91D92C83EBC3979EA49E24157EE36AE4B165358C9A3EB9C0065ECBBA6F6B7A8A5B8E390DDD7F5B1B12B49DAEAC52532035F695944792A0801F4E34490AB5B06027AFCE3D419E3B73B5B375D369852EF8EC7382FB6E1ECA75CB2282AF2D7AD60787188309E7A79ECF02DAE48FD516CF649D94088E4FE41D1439AF85D4888BDFCBA5C5147CC28FE56A35C89EB59242DE38701CEE3170F5AE545A05BCC824B2C1E12C381600CACA85451FDA2DF2F7A9C37D37BB3BB2F8CF2293DC185BD8FEBBC8593486A65047EF7BB0E81704B
+
answer_with_hash = F732413E871A433AECFB6FAC249466CEB1560585BA0D89B532E057DC820E1367DAC9FDEFB00DFAE3876998EC69F2D28B691257F3D95284D803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010036818F1E00E7591F6A206F579064D243E9F0064137DBBFD1A690484E5AAFB7B9EF7BB2A8955E92E37A7271736944E35E7C10015D24A9863931E9ACA5EFDE76A01339FBBC0334908CBBBB08304FD7D8D15DF0A211ADE4AA2FE558CFBF223063C6CD0F00673A5E5DA0C49D450923F9CEE7FAC37E7F79DB1307C35C6D3AAF26C41A2B7E44EA360AD75B9994B90C43FD2B344D3AC5ED7FBD69CC04E74C3FAFB27027AE55D600E1F74D24984A735551100256A579029DD39739D85BACF4C16279FA6728CA5B187FD5CF585C9C4039E6EB43E7F52F5A12956A465B057757AD0282DB99A67D2C7060E942E5587FB6B99FD43CE0BF6D06CB5089ABECFAD8C5CEA3C52DA078576A6597337D3B9DC224B6
+answer = BA0D89B532E057DC820E1367DAC9FDEFB00DFAE3876998EC69F2D28B691257F3D95284D803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010036818F1E00E7591F6A206F579064D243E9F0064137DBBFD1A690484E5AAFB7B9EF7BB2A8955E92E37A7271736944E35E7C10015D24A9863931E9ACA5EFDE76A01339FBBC0334908CBBBB08304FD7D8D15DF0A211ADE4AA2FE558CFBF223063C6CD0F00673A5E5DA0C49D450923F9CEE7FAC37E7F79DB1307C35C6D3AAF26C41A2B7E44EA360AD75B9994B90C43FD2B344D3AC5ED7FBD69CC04E74C3FAFB27027AE55D600E1F74D24984A735551100256A579029DD39739D85BACF4C16279FA6728CA5B187FD5CF585C9C4039E6EB43E7F52F5A12956A465B057757AD0282DB99A67D2C7060E942E5587FB6B99FD43CE0BF6D06CB5089ABECFAD8C5CEA3C52DA078576A6597337D3B9DC224B6

Generated payload (excluding transport headers/trailers):

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

Payload (de)serialization:

server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;
message_id 8, 801D8220B93486A650128706378576A65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4E4020000 (740 in decimal)8C020000 (652 in decimal) Message body length
nonce 24, 16E2A20378807DD3387B46CEC6CC918F4832E057DC820E1367DAC9FDEFB00DFAE3 Value generated by client in Step 1
server_nonce 40, 169254F393E5FB438698FA57A7441D9838876998EC69F2D28B691257F3D95284D8 Value received from server in Step 2
encrypted_answer 56, 596FE500200A119B0C4D95062A7D7266967 D1750515E81BA5B66B4F924773B82064 EC7ED7B7D66BDD9FD027BF71D0657F8E F4CFC602BD747132428C4BC210F9CA94 2DE29F434A4323628041A7AE6000CD43 0C8095315D2CFBB0E9A2D6244AA50AB3 0F78F92AA06D21C4FC47B0BB63CCA3D8 8227316A8F8E8A554B34CA21CF35277B 2554CDB99C81DBA6A4E1DD4C2C76AA7A 61DCCBE19287548975A1B0827D434BB5 866649157333110F77A77B2A8D6C249C A609C0D76E6D87BDBBA4059F7F55DD12 B9EEC28F52E386C681F0183B82EC494B 2F92F0B9C38FBF2E3FE0E48F675A257E 13776CAD99C5FBAC7322D7ED447131C7 97DEFDD1245866EDCA8553C6E06DC010 78B0AAAA1A7A314276EF31DC3C652C47 2EC7F8F1CEC0335CA2E026C879E6E911 E659BEEA10D474C9EA3CA98CA782BB3A 9C2BDA5CF82657A0B9046A6A9094765F 7B153FA93B84B723FAFCBE49493DA230 A4DFC9FA5AA8E943F0F534FF8DC22C62 DE6DFBFFC8E0EDB7BBE58D50F533CD2B 5879CB3CD08FA64E7A426229B960B951 838BB4D038437B25E4631E5C1B1C3CAB 5E928C45867B81DFF5B35ACB8B0800AA 5CEACBC648C39A45CB0F77DDF87A1128 55271F37EADE7AB6AB935CD920C66573 8556CC3BE591224E198818BD4CC257C8 36BFEA6405764774DEDB1A69F3F03B2F 1ED6D37F407F591EF8AC3307C26D4F4E AE966D3E0EEFADD94231F748FFD94F43 B1216E7949DD5FFA1CFDA5CA5E20D0B5 7C2FBB44068B00A074D50311CD507A36 138B7B87C8ABFD8B799A530CC79A540A BCCF72B8F9B175A6FCFCFB9B1603FD3C EF49935139CA789C9945CA49DC0370C2
834BDF08
FE500200C17DE39BD4AA784BC84B8916 CFA008DEC140880AA6A1DDB0D1AFDAE9 D840662E41703A97006C94F77B137321 78A45FB93A20D2D0D9B8C3F5734B38FE BE91695530C2D5CFC1A73045380D5D11 B1D72E8821E643877833E81B64DC76F8 1F2030F78A107A8C7F08EF6CFDDD8471 F08D1715C1961B98316A544BD9B10A86 E3F55F75781396146BE668B31E4BA7DD 5432CA04F127B805CAC587149EEDC217 7F4BC363E970EB2FD33031B8AE04658B E96408B95FCF6FAF7913AC2B15E95273 B75842B2E8FDC6C9CFB111A42BEBDB71 3B34FB946B7C3DF58EE2997C6C99CC3C E85EEF80525CBDC4B679E0565986675A 5622DA675DEA4716F145A525518EFE3B A22501580BCF189D91F130C3AB18F3D1 17084E14AE3166568C264D1CA5F26A49 023CE2CD9E3FC18EB10FEEF87112D5F9 2F72B4164B36A84812B040530E534DEE DE975F9ACE07B91ECEA9383E91C1A859 C0C609BB758EA42111DF600F798AC57E 26A7ABE379EFC2D1FBB0D4434BE64DAC 6935DC056F31B7F7889815AE7DD75F1B F965E62B54E897D5DECD2A457982CEC6 8172DA40786D425D2832E5E158A791B4 787678FD7597745FA714353539C964BA 9E53C81F1D1603DC206F9A6DBBA49DD1 9A0E62A7042DF6497FCB56E3F3450EFD 98A6CA39862AB24E4FF1B9D75B3DF881 52ECF0AA9E6240E39C0B1877FA6490E2 E5A7B1C1334D73C8AEE6CCF78132CE64 27D878E87CE15A460D230B507D453A02 ACA135CF81B455EE1F7DDF8FEFD92F1D 9429608A7D883A07AC7996ADBEFFD2A0 9209FD1F4AD1151532BF12EDB02E49A1 1A6E7E494987FD786BA8836893E8EF60
19D009B7
See below
@@ -570,13 +570,13 @@ answer = BA0D89B5E2A20378807DD3387B46CEC6CC918F489254F393E5FB438698FA57A7441D983 - + - + @@ -594,13 +594,13 @@ answer = BA0D89B5E2A20378807DD3387B46CEC6CC918F489254F393E5FB438698FA57A7441D983 - + - + @@ -609,34 +609,34 @@ answer = BA0D89B5E2A20378807DD3387B46CEC6CC918F489254F393E5FB438698FA57A7441D983
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 = 1161AEBD1183084F82308B0947C4B22D81CBFB34FDF1FF5C1A4E37F9CEF5EDB8AC656D7AC7EBFC065695369DC0E720CA447743A6D4586BC0533D27FE85EE088AA66BFB09CB3C2553AACAC48AB4E0212BDCDBB0B0C1C6A1043DCA9DA98109DD141337748CE3C226073CF61CB5C42AA2F53381962F9F3B52981A3DDE4CC875E969FC5B42A378C8C02FC9389B18BBD9C82199425F27A6DBB0BE8001B49845118BDCB6661CD71699A2C6220F441E0D8CA34FA62A143E85CA025F659AAD3633ED670F856C4CD0EC8F575CBAB029BBCFD59898CD46925D2DD4B9E0C7EB54588E81661634FED8D484981A0151A7468928F742EDEBA25B3C2402253A2C161A496E7500B5
+
b = FA223F79DB839C4032A866C22627E8A2BEDC7D7DD97750EC78C16A1DD1EEB5A7A524B278E3CBF338F6B4534FA2E1D02F54AFE9DE6D2A0EF202AC120EF371EB46EA441593A97B55D3D6C1D953D745D61184F55E62FEB477C9EFDAB7DA2F140F3120E6EDE8BEAEAE832CB044C5D21B72736BC218852C83E79D273906AAE118C3A7A1869B231D07957ED3CEFDBC9288FCFB7D67124ECB741DA87F2F09DE5C9446EF701AAB6C669387281AA33C3DA36FD729FF262BBF882A571DABC0B536CF61901DEECC74FB50EAACA96853C36EAF9CE9618A8D0D1631670018306CA8259487D5F5AB8284D66E788B839BAE3E86A84361ED6E1932F1BE136974300965F624A9874F

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

-
g_b = 1EA6C38815262DC3A66343D108CECEF30EE4AC999AF46F9FECD0FF02CA2F6C6FF7FAFF1F24F74A2ABEE6A68040F8EAB08647E0BC7FD99D55F8AEC85CB349503F9083DD54B46E18CB0C2AE45EC11DC8854C35C12BF01BFE646F1990CA313F0E1EBF4BF2775DAF05ABD242BDA037F41FD1084819D9DA701929BD9874D3184A8217D75DECC302F82D48B22139385CE607C98196CB24C19C79720042DFBCEC639642E7C4BEF901B59A631E768AAD4650BE3F18CDCC14F1011D63D6B29DE5224EFAC7F7AC1FCD0131630BCB4805C39E2F50B00C5A99F51A9525AADF3A0A567DB8933ED079E6F0256BCB9CDE084D9F920ECD5E7819F5ACEAB1F21C4625A8B599702300
+
g_b = 4794207B47FFE9402E417C311BBB1E5AB2208C86C54618B57ADFE9F3F76E4BC1A2C1F9A673633995763B7D841ED27560274F053C655A9E449CF202C1694D66E1FE8908456D575CFA9FB95EF93FA70A83E25065759D532B696358DAC071BEC0190E277CB1498E73CE014C9CBA14BF8B0760A52EBC54BDE6F9F82E97B20A734EE02DB16E086B5CBC896E750F61EC581D4B24F0A2FA6D4E4D0E93A20B3FCD59DDA25AD614F71A2C3A321A4203D27C711B8092ED126CA3D2A2D41D19A6E412B6AA1D8CFF391250E594B688F103DDBF0BB2FEDCE1C803F72C784E894C85A41E7CD8C922F53C84C7B0D0C518E9F1478F89681430A96674B0203CCDD6FD5D3F5E0EEA79
7.1) generation of encrypted_data

Generated payload (excluding transport headers/trailers):

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

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, 16E2A20378807DD3387B46CEC6CC918F4832E057DC820E1367DAC9FDEFB00DFAE3 Value generated by client in Step 1
server_nonce 20, 169254F393E5FB438698FA57A7441D9838876998EC69F2D28B691257F3D95284D8 Value received from server in Step 2
g_a 300, 260FE0001008C0E47ACCCE07622B99F900E F624AE698AA069C0435B4B13E975E834 ABE075AD01811CA9D7E3CAB6634E0102 4E43CC52CF983695BD7D6A31E1070159 809EFF8FC91D92C83EBC3979EA49E241 57EE36AE4B165358C9A3EB9C0065ECBB A6F6B7A8A5B8E390DDD7F5B1B12B49DA EAC52532035F695944792A0801F4E344 90AB5B06027AFCE3D419E3B73B5B375D 369852EF8EC7382FB6E1ECA75CB2282A F2D7AD60787188309E7A79ECF02DAE48 FD516CF649D94088E4FE41D1439AF85D 4888BDFCBA5C5147CC28FE56A35C89EB 59242DE38701CEE3170F5AE545A05BCC 824B2C1E12C381600CACA85451FDA2DF 2F7A9C37D37BB3BB2F8CF2293DC185BD
8FEBBC85
FE00010036818F1E00E7591F6A206F57 9064D243E9F0064137DBBFD1A690484E 5AAFB7B9EF7BB2A8955E92E37A727173 6944E35E7C10015D24A9863931E9ACA5 EFDE76A01339FBBC0334908CBBBB0830 4FD7D8D15DF0A211ADE4AA2FE558CFBF 223063C6CD0F00673A5E5DA0C49D4509 23F9CEE7FAC37E7F79DB1307C35C6D3A AF26C41A2B7E44EA360AD75B9994B90C 43FD2B344D3AC5ED7FBD69CC04E74C3F AFB27027AE55D600E1F74D24984A7355 51100256A579029DD39739D85BACF4C1 6279FA6728CA5B187FD5CF585C9C4039 E6EB43E7F52F5A12956A465B057757AD 0282DB99A67D2C7060E942E5587FB6B9 9FD43CE0BF6D06CB5089ABECFAD8C5CE
A3C52DA0
g_a diffie-hellman parameter
server_time 560, 493486A65 (1701464211 in decimal)78576A65 (1701468024 in decimal) Server time
@@ -658,19 +658,19 @@ answer = BA0D89B5E2A20378807DD3387B46CEC6CC918F489254F393E5FB438698FA57A7441D983 - + - + - + @@ -684,47 +684,47 @@ answer = BA0D89B5E2A20378807DD3387B46CEC6CC918F489254F393E5FB438698FA57A7441D983

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 = 54B64366E2A20378807DD3387B46CEC6CC918F489254F393E5FB438698FA57A7441D98380000000000000000FE0001001EA6C38815262DC3A66343D108CECEF30EE4AC999AF46F9FECD0FF02CA2F6C6FF7FAFF1F24F74A2ABEE6A68040F8EAB08647E0BC7FD99D55F8AEC85CB349503F9083DD54B46E18CB0C2AE45EC11DC8854C35C12BF01BFE646F1990CA313F0E1EBF4BF2775DAF05ABD242BDA037F41FD1084819D9DA701929BD9874D3184A8217D75DECC302F82D48B22139385CE607C98196CB24C19C79720042DFBCEC639642E7C4BEF901B59A631E768AAD4650BE3F18CDCC14F1011D63D6B29DE5224EFAC7F7AC1FCD0131630BCB4805C39E2F50B00C5A99F51A9525AADF3A0A567DB8933ED079E6F0256BCB9CDE084D9F920ECD5E7819F5ACEAB1F21C4625A8B599702300
-padding = A5BB328025F4BFBC2231E6EC
-tmp_aes_key = E8934AA8785EB376BF5AF1DC8E6CCF115E85119979BF221D614927806C1C180E
-tmp_aes_iv = 283FE0D00A698688BCFBEB86198DF96B2613AFEB015932561E9D7CA284801F4C
+
data = 54B6436632E057DC820E1367DAC9FDEFB00DFAE3876998EC69F2D28B691257F3D95284D80000000000000000FE0001004794207B47FFE9402E417C311BBB1E5AB2208C86C54618B57ADFE9F3F76E4BC1A2C1F9A673633995763B7D841ED27560274F053C655A9E449CF202C1694D66E1FE8908456D575CFA9FB95EF93FA70A83E25065759D532B696358DAC071BEC0190E277CB1498E73CE014C9CBA14BF8B0760A52EBC54BDE6F9F82E97B20A734EE02DB16E086B5CBC896E750F61EC581D4B24F0A2FA6D4E4D0E93A20B3FCD59DDA25AD614F71A2C3A321A4203D27C711B8092ED126CA3D2A2D41D19A6E412B6AA1D8CFF391250E594B688F103DDBF0BB2FEDCE1C803F72C784E894C85A41E7CD8C922F53C84C7B0D0C518E9F1478F89681430A96674B0203CCDD6FD5D3F5E0EEA79
+padding = 3D0E887B866287F60AB02427
+tmp_aes_key = 1FA0C6C36D28340F63C36679A188F02CBC03D6791638C1933344638328FA854A
+tmp_aes_iv = 220ECFDF406702AC5470D1E4CB02A9E4978FD532FF34E56D05742C3B60535397

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 = 3E2942908CE41FC5B98721FC56302799B98E338A4D750D91126B4C3304E0E9B110E9C060389A241E5D96D047802D042DCDEDB07F53D34AC61EAFD03D293F70527E7CABCE16820922614F9A1BA94931CE5959F0B9900C692F585B84B061532AF9CFDC18818157DCF079D53687DDE7414466CCD941812EEB0E159BB3D72D96E7B66700F234FAA773A5992FF590E082C2266EB4D1884DE996D796450DBB0D72A12F35056BF0B126B22F1539347D23719A9EA99B3CC4EC50B82BC6C6794EAFA382C799DD74EF44AB5B038770E6561C80C81F422743BF6C08F266733DC758DBDF49B9E465BD29C8981DC16F576A4B5C02241DCC5038E118AE14BDDE48B00D350CD44082092314D7C9A8DDBC3A674ED3A3C3EABBC80B96EB048284EED13D788B1E30E865B607EB3C990EF82B2875D0BBC781540E1CB9422AE8D3A014C77BCEF4CA73762D7DF02542C61EC29F1AEF3043EFC0F4
+
encrypted_data = 66B0AD9E25FC2135F701BE15BD718C2532491B2AE8C015AACAD46D729A821DFAC4B6452FA1EC816CA2D703B138B4D20C713EB126B98B5B12EE3ED9624C876965C9432395F529CE5D21D85254343D213ED6FE54AFECE50C08183BE192F40C7405571C29322F4F3BBE01D5D71D928D9D559A47C73C6B72C48345AF3F92176B4B63F8BE8E9836378BA2FD2739D26A3ED48892A11A9E8FD02654B0CCB39CA9BB55F91DF7FF56CFCAFF11A592AEFAEC4D65D444F12BC2453DCF0AAFF7CCCF3FE9CDA1F6E372402DC37A397F2F0AEB75DE66B74DADBDBCD7969BF0AB870668A3D2E6B36ED9167855CF134E432A164CA000362A077DBD1646F3BA4E47E51764F9AEF0D0D4F89EEE2C2CC36B1E085E8133289DE510AC2696745330FC4FD49103995CC2556519D5CB27A924EAFAE46E6C8C7CB728FA99569541F2E2E188A18673EAF8C3E54CA0DB7C484F083F9F4165DD9EC603E3

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

Payload (de)serialization:

set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
nonce 4, 16E2A20378807DD3387B46CEC6CC918F4832E057DC820E1367DAC9FDEFB00DFAE3 Value generated by client in Step 1
server_nonce 20, 169254F393E5FB438698FA57A7441D9838876998EC69F2D28B691257F3D95284D8 Value received from server in Step 2
g_b 36, 260FE0001001EA6C38815262DC3A66343D1 08CECEF30EE4AC999AF46F9FECD0FF02 CA2F6C6FF7FAFF1F24F74A2ABEE6A680 40F8EAB08647E0BC7FD99D55F8AEC85C B349503F9083DD54B46E18CB0C2AE45E C11DC8854C35C12BF01BFE646F1990CA 313F0E1EBF4BF2775DAF05ABD242BDA0 37F41FD1084819D9DA701929BD9874D3 184A8217D75DECC302F82D48B2213938 5CE607C98196CB24C19C79720042DFBC EC639642E7C4BEF901B59A631E768AAD 4650BE3F18CDCC14F1011D63D6B29DE5 224EFAC7F7AC1FCD0131630BCB4805C3 9E2F50B00C5A99F51A9525AADF3A0A56 7DB8933ED079E6F0256BCB9CDE084D9F 920ECD5E7819F5ACEAB1F21C4625A8B5
99702300
FE0001004794207B47FFE9402E417C31 1BBB1E5AB2208C86C54618B57ADFE9F3 F76E4BC1A2C1F9A673633995763B7D84 1ED27560274F053C655A9E449CF202C1 694D66E1FE8908456D575CFA9FB95EF9 3FA70A83E25065759D532B696358DAC0 71BEC0190E277CB1498E73CE014C9CBA 14BF8B0760A52EBC54BDE6F9F82E97B2 0A734EE02DB16E086B5CBC896E750F61 EC581D4B24F0A2FA6D4E4D0E93A20B3F CD59DDA25AD614F71A2C3A321A4203D2 7C711B8092ED126CA3D2A2D41D19A6E4 12B6AA1D8CFF391250E594B688F103DD BF0BB2FEDCE1C803F72C784E894C85A4 1E7CD8C922F53C84C7B0D0C518E9F147 8F89681430A96674B0203CCDD6FD5D3F
5E0EEA79
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 = A397DCB4877B00433A19CE2043C635DBD1E3DFDBA282B6E470EDAAA0E68F9D78451A2011576D8608A2EA458A2DD762D049AF77E956982AE64C5A62D508F06A0AB774C448CE4D527278676D2D4B756FE68CC6DA0441DF853F08BD976F80FA4E80EBD3044C1A8FA829D9D20EECFD30337A67726F5347ECCBB4C6C13278A45031622ADE66D8A5C30D28E85C1B3A0C47A06842C04DA186086D3720BD2C76B6E7D16BB294BA5620B781B8998767D31F63AA65CBF5B2A61F4DF07BBAE4A4B1125D95E1ABE7737DF6A2F23A078161A470EE68545CC13D3C1ABC4D1668F4B8581842337E9001DF095D40FC10AF2D466B5E33CEA0377283806AF15A29DA00B063A65E337C
+
auth_key = A0983834503C26760938BC9F8089449624E25079568DF30B8E2DEB29275D6A37AC7A9C649B233DC4BFF38D6F26D38E458C836BA1617AF6DB987808714336AFCFB35E2E4ADC0002E087EC8BB873B0B834EDAF1734505BC30C17BE65839B7478533BE5275F752DD4025B229B5717E344578F207D6D8E14C0DE3444A1EC54200513A2E9C2343DBFC27972B9E4E54FCBA0EFE8EE76FD4E40628B984DFB7F5C11C7336E5B1830E40575C4CDB8B30B37A6ED28EF64CFF2987DE7EB6260C9393503CE3639E54EF3B1F69C2517B26F33879D98680878D398342DF0E696795E886F5139A3C096C7AB3DA69B0655829C0C72EE94AB5519A56C85DA4258B430025E734AC1AE
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 B0 65 93 48 6A 65
-0010 | 68 00 00 00 34 F7 CB 3B E2 A2 03 78 80 7D D3 38
-0020 | 7B 46 CE C6 CC 91 8F 48 92 54 F3 93 E5 FB 43 86
-0030 | 98 FA 57 A7 44 1D 98 38 5A B3 92 16 0B C1 00 96
-0040 | 20 B6 CD C0 42 80 DC 92
+
0000 | 00 00 00 00 00 00 00 00 01 1C 51 2F 79 57 6A 65
+0010 | 6C 00 00 00 34 F7 CB 3B 32 E0 57 DC 82 0E 13 67
+0020 | DA C9 FD EF B0 0D FA E3 87 69 98 EC 69 F2 D2 8B
+0030 | 69 12 57 F3 D9 52 84 D8 39 05 5F 23 70 02 4E 46
+0040 | 87 B3 CC A3 BD 03 31 D4

Payload (de)serialization:

dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
message_id 8, 8D492080093486A65C844050078576A65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16E2A20378807DD3387B46CEC6CC918F4832E057DC820E1367DAC9FDEFB00DFAE3 Value generated by client in Step 1
server_nonce 40, 169254F393E5FB438698FA57A7441D9838876998EC69F2D28B691257F3D95284D8 Value received from server in Step 2
encrypted_data 56, 340FE5001003E2942908CE41FC5B98721FC 56302799B98E338A4D750D91126B4C33 04E0E9B110E9C060389A241E5D96D047 802D042DCDEDB07F53D34AC61EAFD03D 293F70527E7CABCE16820922614F9A1B A94931CE5959F0B9900C692F585B84B0 61532AF9CFDC18818157DCF079D53687 DDE7414466CCD941812EEB0E159BB3D7 2D96E7B66700F234FAA773A5992FF590 E082C2266EB4D1884DE996D796450DBB 0D72A12F35056BF0B126B22F1539347D 23719A9EA99B3CC4EC50B82BC6C6794E AFA382C799DD74EF44AB5B038770E656 1C80C81F422743BF6C08F266733DC758 DBDF49B9E465BD29C8981DC16F576A4B 5C02241DCC5038E118AE14BDDE48B00D 350CD44082092314D7C9A8DDBC3A674E D3A3C3EABBC80B96EB048284EED13D78 8B1E30E865B607EB3C990EF82B2875D0 BBC781540E1CB9422AE8D3A014C77BCE F4CA73762D7DF02542C61EC29F1AEF30
43EFC0F4
FE50010066B0AD9E25FC2135F701BE15 BD718C2532491B2AE8C015AACAD46D72 9A821DFAC4B6452FA1EC816CA2D703B1 38B4D20C713EB126B98B5B12EE3ED962 4C876965C9432395F529CE5D21D85254 343D213ED6FE54AFECE50C08183BE192 F40C7405571C29322F4F3BBE01D5D71D 928D9D559A47C73C6B72C48345AF3F92 176B4B63F8BE8E9836378BA2FD2739D2 6A3ED48892A11A9E8FD02654B0CCB39C A9BB55F91DF7FF56CFCAFF11A592AEFA EC4D65D444F12BC2453DCF0AAFF7CCCF 3FE9CDA1F6E372402DC37A397F2F0AEB 75DE66B74DADBDBCD7969BF0AB870668 A3D2E6B36ED9167855CF134E432A164C A000362A077DBD1646F3BA4E47E51764 F9AEF0D0D4F89EEE2C2CC36B1E085E81 33289DE510AC2696745330FC4FD49103 995CC2556519D5CB27A924EAFAE46E6C 8C7CB728FA99569541F2E2E188A18673 EAF8C3E54CA0DB7C484F083F9F4165DD
9EC603E3
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);< - + - + - + diff --git a/data/web/fragment.com/css/auction.css b/data/web/fragment.com/css/auction.css index 3b64657955..7b1f8dc44d 100644 --- a/data/web/fragment.com/css/auction.css +++ b/data/web/fragment.com/css/auction.css @@ -2463,7 +2463,7 @@ a.tm-table-action-link:hover { line-height: 42px; font-weight: bold; padding: 12px 20px; - background-color: var(--field-bg-color); + background-color: var(--table-header-bg-color); border-radius: var(--def-border-radius); color: var(--field-color); text-align: center; @@ -2548,70 +2548,6 @@ a.tm-table-action-link:hover { filter: blur(7px); } -.tm-field-hint { - margin: 8px 14px; -} - -.tm-number-form-group { - margin: 36px 0 0; -} -.tm-checkbox-toggle { - position: relative; - font-weight: normal; - font-size: 14px; - line-height: 20px; - padding: 11px 14px; - cursor: pointer; - -webkit-user-select: none; - user-select: none; -} -.tm-checkbox-toggle .checkbox { - position: absolute; - top: 0; - bottom: 0; - right: 0; - margin: auto 24px; -} -.tm-checkbox-toggle .checkbox ~ .tm-checkbox-label:before, -.tm-checkbox-toggle .checkbox ~ .tm-checkbox-label:after { - position: absolute; - right: 0; - top: 0; - content: ''; -} -.tm-checkbox-toggle .checkbox ~ .tm-checkbox-label:before { - margin: 11px 13px; - width: 36px; - height: 20px; - border-radius: 10px; - background-color: #64717f; - transition: var(--def-transition) background-color; -} -.tm-checkbox-toggle .checkbox:checked ~ .tm-checkbox-label:before { - background-color: #149efa; -} -.tm-checkbox-toggle .checkbox ~ .tm-checkbox-label:after { - width: 16px; - height: 16px; - margin: 13px; - border-radius: 8px; - background-color: #fff; - right: 18px; - transform: translateX(0); - transition: var(--def-transition) transform; -} -.tm-checkbox-toggle .checkbox:checked ~ .tm-checkbox-label:after { - background-color: #fff; - transform: translateX(16px); -} -.cant-receive, -.codes-disabled .can-receive { - display: none; -} -.codes-disabled .cant-receive { - display: block; -} - diff --git a/data/web/fragment.com/js/auction.js b/data/web/fragment.com/js/auction.js index a5cb43cd86..a0ed386e46 100644 --- a/data/web/fragment.com/js/auction.js +++ b/data/web/fragment.com/js/auction.js @@ -1302,13 +1302,11 @@ var Random = { var LoginCodes = { init: function() { Aj.onLoad(function(state) { - $('.js-toggle-receive').on('change', LoginCodes.eToggleReceive); state.needUpdate = true; state.updLastReq = +Date.now(); state.updStateTo = setTimeout(LoginCodes.updateState, Main.UPDATE_PERIOD); }); Aj.onUnload(function(state) { - $('.js-toggle-receive').off('change', LoginCodes.eToggleReceive); clearTimeout(state.updStateTo); state.needUpdate = false; }); @@ -1339,14 +1337,6 @@ var LoginCodes = { } } - }, - eToggleReceive: function() { - var can_receive = $(this).prop('checked'); - $('.js-codes-main').toggleClass('codes-disabled', !can_receive); - Aj.apiRequest('toggleLoginCodes', { - number: Aj.state.number, - can_receive: can_receive ? 1 : 0 - }); } };
message_id 8, 801F4B06593486A65011C512F79576A65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 468000000 (104 in decimal)6C000000 (108 in decimal) Message body length
nonce 24, 16E2A20378807DD3387B46CEC6CC918F4832E057DC820E1367DAC9FDEFB00DFAE3 Value generated by client in Step 1
server_nonce 40, 169254F393E5FB438698FA57A7441D9838876998EC69F2D28B691257F3D95284D8 Value received from server in Step 2
new_nonce_hash1 56, 165AB392160BC1009620B6CDC04280DC9239055F2370024E4687B3CCA3BD0331D4 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.