From 42a2129ab029f27747e208d51d38cd066305c27b Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 17 Jan 2024 21:24:39 +0000 Subject: [PATCH] Update content of files --- .../web/corefork.telegram.org/api/config.html | 2 - .../corefork.telegram.org/api/giveaways.html | 1 + .../web/corefork.telegram.org/api/layers.html | 2 +- .../corefork.telegram.org/api/stories.html | 2 +- .../inputStorePaymentPremiumGiveaway.html | 4 +- .../constructor/messageMediaGiveaway.html | 4 +- .../messageMediaGiveawayResults.html | 54 +-- .../constructor/stickerSet.html | 2 + .../constructor/stories.storyViewsList.html | 2 +- .../mtproto/samples-auth_key.html | 412 +++++++++--------- .../type/MessageMedia.html | 2 +- 11 files changed, 239 insertions(+), 248 deletions(-) diff --git a/data/web/corefork.telegram.org/api/config.html b/data/web/corefork.telegram.org/api/config.html index 0fd7426173..a06477c20b 100644 --- a/data/web/corefork.telegram.org/api/config.html +++ b/data/web/corefork.telegram.org/api/config.html @@ -301,9 +301,7 @@ While help.getConfig returns MTProto-specif "stories_sent_monthly_limit_default": 30, "stories_sent_monthly_limit_premium": 3000, "stories_venue_search_username": "foursquare", - "stories_all_hidden": false, "stories_entities": "premium", - "stories_export_nopublic_link": true, "stories_changelog_user_id": 777000, "authorization_autoconfirm_period": 604800, "stories_suggested_reactions_limit_default": 1, diff --git a/data/web/corefork.telegram.org/api/giveaways.html b/data/web/corefork.telegram.org/api/giveaways.html index 9c2fb4d5e9..d5894dcbcd 100644 --- a/data/web/corefork.telegram.org/api/giveaways.html +++ b/data/web/corefork.telegram.org/api/giveaways.html @@ -118,6 +118,7 @@ Clients should display this message, along with a sticker from the messageActionGiftCode.slug should be used to generate a giftcode link, that the user can use to redeem the subscription, or re-gift it to someone else.

+

If winners_are_visible flag is set while starting a giveaway, giveaway winners are public and will be listed in a messageMediaGiveawayResults message that will be automatically sent to the channel once the giveaway ends.

Any user can invoke payments.checkGiftCode with the link's slug to obtain info about the giveaway, such as the channel that gifted the subscription (from_id), and the user that originally received the gift (to_id).
This can also be useful to channel administrators to precisely determine the winners of a giveaway, for example if the giveaway also included some extra gifts apart from Premium subscriptions (like Teslas): the winners can simply send their link as undisputable proof that they won the giveaway, because the user that received the gift can be viewed in the to_id field returned by Telegram when invoking payments.checkGiftCode on the slug.
Another way for admins to check who received the gifts is to simply use premium.getBoostsList while the boosts received by the gifts are still active.

diff --git a/data/web/corefork.telegram.org/api/layers.html b/data/web/corefork.telegram.org/api/layers.html index 9edc3879e8..a3340497b9 100644 --- a/data/web/corefork.telegram.org/api/layers.html +++ b/data/web/corefork.telegram.org/api/layers.html @@ -136,7 +136,7 @@
New Constructors
-

Clients may also re-use an existing mediaAreaVenue from a previously uploaded story.

+

Clients may only re-use existing mediaAreaVenues when repositioning a pre-existing location tag when editing a story; use inputMediaAreaVenue when posting a new story or adding a new location tag to an existing story.

Reactions

Schema:

reactionEmoji#1b2286b8 emoticon:string = Reaction;
diff --git a/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiveaway.html b/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiveaway.html
index 14ef2592b0..d96eee3927 100644
--- a/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiveaway.html
+++ b/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiveaway.html
@@ -79,7 +79,7 @@
 
 winners_are_visible
 flags.3?true
- 
+If set, giveaway winners are public and will be listed in a messageMediaGiveawayResults message that will be automatically sent to the channel once the giveaway ends.
 
 
 boost_peer
@@ -126,6 +126,8 @@
 

Type

InputStorePaymentPurpose

Related pages

+

messageMediaGiveawayResults

+

A giveaway with public winners has finished, this constructor contains info about the winners.

Channel boosts

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

Giveaways

diff --git a/data/web/corefork.telegram.org/constructor/messageMediaGiveaway.html b/data/web/corefork.telegram.org/constructor/messageMediaGiveaway.html index 0fc15c0b41..91ed153216 100644 --- a/data/web/corefork.telegram.org/constructor/messageMediaGiveaway.html +++ b/data/web/corefork.telegram.org/constructor/messageMediaGiveaway.html @@ -79,7 +79,7 @@ winners_are_visible flags.2?true -  +If set, giveaway winners are public and will be listed in a messageMediaGiveawayResults message that will be automatically sent to the channel once the giveaway ends. channels @@ -116,6 +116,8 @@

Type

MessageMedia

Related pages

+

messageMediaGiveawayResults

+

A giveaway with public winners has finished, this constructor contains info about the winners.

Telegram Premium

Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.

Giveaways

diff --git a/data/web/corefork.telegram.org/constructor/messageMediaGiveawayResults.html b/data/web/corefork.telegram.org/constructor/messageMediaGiveawayResults.html index 7c056592a3..36dab71595 100644 --- a/data/web/corefork.telegram.org/constructor/messageMediaGiveawayResults.html +++ b/data/web/corefork.telegram.org/constructor/messageMediaGiveawayResults.html @@ -4,30 +4,10 @@ messageMediaGiveawayResults - + - + @@ -62,7 +42,8 @@ refunded…">

messageMediaGiveawayResults

-

+

A giveaway with public winners has finished, this constructor contains info about the winners.

+

+

MessageMedia

+

Related pages

+

Channel boosts

+

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Telegram Premium

+

Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.

diff --git a/data/web/corefork.telegram.org/constructor/stickerSet.html b/data/web/corefork.telegram.org/constructor/stickerSet.html index 58cdbab975..f2849254db 100644 --- a/data/web/corefork.telegram.org/constructor/stickerSet.html +++ b/data/web/corefork.telegram.org/constructor/stickerSet.html @@ -171,6 +171,8 @@

Type

StickerSet

Related pages

+

Emoji status

+

Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.

Deep links

Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.

messages.getCustomEmojiDocuments

diff --git a/data/web/corefork.telegram.org/constructor/stories.storyViewsList.html b/data/web/corefork.telegram.org/constructor/stories.storyViewsList.html index 4782070a91..0860f4e38a 100644 --- a/data/web/corefork.telegram.org/constructor/stories.storyViewsList.html +++ b/data/web/corefork.telegram.org/constructor/stories.storyViewsList.html @@ -99,7 +99,7 @@ chats Vector<Chat> -  +Mentioned chats users 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 b89f6f905c..aa8e142a14 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 80 4D 04 00 5A 3E A8 65
-0010 | 14 00 00 00 F1 8E 7E BE D2 AC 74 53 3A 31 3A 58
-0020 | 87 0E 49 D5 3B A6 8A 05
+
0000 | 00 00 00 00 00 00 00 00 38 82 0A 00 39 41 A8 65
+0010 | 14 00 00 00 F1 8E 7E BE 50 C9 33 C4 AD E5 B6 C3
+0020 | B5 B5 5C 41 15 81 CB 21

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 40 72 63 5A 3E A8 65
-0010 | 64 00 00 00 63 24 16 05 D2 AC 74 53 3A 31 3A 58
-0020 | 87 0E 49 D5 3B A6 8A 05 00 09 D4 B0 4B A7 57 78
-0030 | C5 60 95 8C 4F 18 A6 BA 08 18 55 3B 47 CA 48 33
-0040 | B3 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 50 FA E1 39 41 A8 65
+0010 | 5C 00 00 00 63 24 16 05 50 C9 33 C4 AD E5 B6 C3
+0020 | B5 B5 5C 41 15 81 CB 21 FE CE EF E9 4A DA F6 67
+0030 | EE 9B 81 67 AC 97 61 C8 08 19 98 AE D4 EB D1 8E
+0040 | 23 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 = 1753372809453122483
-

Decompose into 2 prime cofactors p < q: 1753372809453122483 = 1027255513 * 1706851691

-
p = 1027255513
-q = 1706851691
+
pq = 1844416276920897059
+

Decompose into 2 prime cofactors p < q: 1844416276920897059 = 1173828283 * 1571282873

+
p = 1173828283
+q = 1571282873

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 55 3B 47 CA 48 33 B3 00 00 00
-0010 | 04 3D 3A AC D9 00 00 00 04 65 BC 7D 6B 00 00 00
-0020 | D2 AC 74 53 3A 31 3A 58 87 0E 49 D5 3B A6 8A 05
-0030 | 00 09 D4 B0 4B A7 57 78 C5 60 95 8C 4F 18 A6 BA
-0040 | 14 82 ED 11 D3 91 DA 9A 4B A3 AC 53 A5 CC 82 4D
-0050 | 1E 11 6D 38 49 FB F1 E1 3A FF 05 C0 48 5B FC 45
+
0000 | 95 5F F5 A9 08 19 98 AE D4 EB D1 8E 23 00 00 00
+0010 | 04 45 F7 32 BB 00 00 00 04 5D A7 DF B9 00 00 00
+0020 | 50 C9 33 C4 AD E5 B6 C3 B5 B5 5C 41 15 81 CB 21
+0030 | FE CE EF E9 4A DA F6 67 EE 9B 81 67 AC 97 61 C8
+0040 | 81 3B 52 FD DC 32 6E D3 8C F0 23 8F 4E 61 F8 CD
+0050 | 6A D5 42 4B 2A A6 C5 4F 86 77 88 7D 60 E2 B1 CA
 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 = 1706851691
- + - + - + - + - + - + @@ -291,39 +291,39 @@ q = 1706851691

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 = 955FF5A90818553B47CA4833B3000000043D3AACD90000000465BC7D6B000000D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA1482ED11D391DA9A4BA3AC53A5CC824D1E116D3849FBF1E13AFF05C0485BFC4502000000
-random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77DD4F33846520BEB3EAEF5A0423BFD70C0D2D0629D7A6A3C07954CBBD347E91BC3B3E25A7165553BF722647FDFE358ED7A5C6857F884CBB258DCE9E02F7C0C323
+
data = 955FF5A9081998AED4EBD18E230000000445F732BB000000045DA7DFB900000050C933C4ADE5B6C3B5B55C411581CB21FECEEFE94ADAF667EE9B8167AC9761C8813B52FDDC326ED38CF0238F4E61F8CD6AD5424B2AA6C54F8677887D60E2B1CA02000000
+random_padding_bytes = D41C27B55AC6C90986F05AA29498119E4924CB7AB29542F9CD5138F4B2F73F223852D71E9838F5ECDA53FE8955E97A4B8A53E6ED37EDCE837E68C48B8666C67D8B3E91A30E2F107D4792EF61B7CC792E5297FDA7B7C49F83C1DBA897

And this is the output:

-
encrypted_data = 43FFEB0FFD274E0C28BCB989DF1979D84C12B8500A1EB5E0A74A85F17CFC77D525C25B87C7B600B64DD3FC3065CB58C58C157FA3EA35A57780DD1E68A7B5AD97EBE7F756DC7BEE3516F38B5024288705214D11E625DC478F61DC9D86AD18964134D07BBDF2D5FA5980E1D74CC93BCC24BF9735DD09950A09B9D203C57288534E3CEDC3394EEC8560FD388A6B27843166B625A412C7542F907A1A0341C142EBF6FEE41DDE739FE7D3AB0BF5B0290286D7F9AEF9EDDEB36B8E08633480DAC476A887597FD9C48BFFCFAFC8BD8F899DCF675D858E2728F443FB5D80006F56AFD5B82A85DFF3EF59F57F15F83C81A52BA9F30B27FF796DB00DAF6FF9A8263F024005
+
encrypted_data = 08089F6165330532285E349EC82A8C56B6B6B16FB17FA9EA72B5DDFC96F6E7C4B7DF7FB7F197DB819228CAB957D49AA5E7DAA4CAB4D0DDB1584958BA4C584269C24B752ED796CE59E9A496D1FA5D1756820468DD1430DFFD80CD86780F39A1DDBADD0685C221380B5CF56D4ED57F8DC868259FE5EC75F0204636DDA1F721875BF4788B9843200888C5536AF8954C18C6D6F54E34584A5AD152CA7C3C8A6BDF9E346C5546C7B1AE323BF8D598D8912EB776435F3E604D9511FA19EF75C33A509A328076AA98239510D00061FAC782C41577C330B303E4736A1B1D3E59F58A74EA3FEE697F02EFBFA7DA520A6FAC91F68883351C555F02A4744F5274982CDB9F29

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

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, 8804D04005A3EA86538820A003941A865 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16D2AC74533A313A58870E49D53BA68A0550C933C4ADE5B6C3B5B55C411581CB21 Random number
message_id 8, 8014072635A3EA8650150FAE13941A865 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 464000000 (100 in decimal)5C000000 (92 in decimal) Message body length
nonce 24, 16D2AC74533A313A58870E49D53BA68A0550C933C4ADE5B6C3B5B55C411581CB21 Value generated by client in Step 1
server_nonce 40, 160009D4B04BA75778C560958C4F18A6BAFECEEFE94ADAF667EE9B8167AC9761C8 Server-generated random number
pq 56, 120818553B47CA4833B3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1753372809453122483
081998AED4EBD18E23000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1844416276920897059
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
pq 4, 120818553B47CA4833B3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1753372809453122483
081998AED4EBD18E23000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1844416276920897059
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p 16, 8043D3AACD9000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1027255513
0445F732BB000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1173828283
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 24, 80465BC7D6B000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1706851691
045DA7DFB9000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1571282873
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce 32, 16D2AC74533A313A58870E49D53BA68A0550C933C4ADE5B6C3B5B55C411581CB21 Value generated by client in Step 1
server_nonce 48, 160009D4B04BA75778C560958C4F18A6BAFECEEFE94ADAF667EE9B8167AC9761C8 Value received from server in Step 2
new_nonce 64, 321482ED11D391DA9A4BA3AC53A5CC824D 1E116D3849FBF1E13AFF05C0485BFC45813B52FDDC326ED38CF0238F4E61F8CD 6AD5424B2AA6C54F8677887D60E2B1CA Client-generated random number
@@ -345,7 +345,7 @@ random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D - + @@ -363,25 +363,25 @@ random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D - + @@ -402,47 +402,47 @@ random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D
6) Server responds with:

Received payload (excluding transport headers/trailers):

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

Payload (de)serialization:

server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
message_id 8, 8844D04005A3EA865EC5303003A41A865 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16D2AC74533A313A58870E49D53BA68A0550C933C4ADE5B6C3B5B55C411581CB21 Value generated by client in Step 1
server_nonce 40, 160009D4B04BA75778C560958C4F18A6BAFECEEFE94ADAF667EE9B8167AC9761C8 Value received from server in Step 2
p 56, 8043D3AACD9000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1027255513
0445F732BB000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1173828283
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 64, 80465BC7D6B000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1706851691
045DA7DFB9000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1571282873
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
encrypted_data 80, 260FE00010043FFEB0FFD274E0C28BCB989 DF1979D84C12B8500A1EB5E0A74A85F1 7CFC77D525C25B87C7B600B64DD3FC30 65CB58C58C157FA3EA35A57780DD1E68 A7B5AD97EBE7F756DC7BEE3516F38B50 24288705214D11E625DC478F61DC9D86 AD18964134D07BBDF2D5FA5980E1D74C C93BCC24BF9735DD09950A09B9D203C5 7288534E3CEDC3394EEC8560FD388A6B 27843166B625A412C7542F907A1A0341 C142EBF6FEE41DDE739FE7D3AB0BF5B0 290286D7F9AEF9EDDEB36B8E08633480 DAC476A887597FD9C48BFFCFAFC8BD8F 899DCF675D858E2728F443FB5D80006F 56AFD5B82A85DFF3EF59F57F15F83C81 A52BA9F30B27FF796DB00DAF6FF9A826
3F024005
FE00010008089F6165330532285E349E C82A8C56B6B6B16FB17FA9EA72B5DDFC 96F6E7C4B7DF7FB7F197DB819228CAB9 57D49AA5E7DAA4CAB4D0DDB1584958BA 4C584269C24B752ED796CE59E9A496D1 FA5D1756820468DD1430DFFD80CD8678 0F39A1DDBADD0685C221380B5CF56D4E D57F8DC868259FE5EC75F0204636DDA1 F721875BF4788B9843200888C5536AF8 954C18C6D6F54E34584A5AD152CA7C3C 8A6BDF9E346C5546C7B1AE323BF8D598 D8912EB776435F3E604D9511FA19EF75 C33A509A328076AA98239510D00061FA C782C41577C330B303E4736A1B1D3E59 F58A74EA3FEE697F02EFBFA7DA520A6F AC91F68883351C555F02A4744F527498
2CDB9F29
Value generated above
@@ -464,13 +464,13 @@ random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D - + - + @@ -482,19 +482,19 @@ random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D - + - + - + @@ -502,20 +502,20 @@ random_padding_bytes = 6F83999D06B85DA352DC43E640B936B648475E792D68453264677B77D

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

-
encrypted_answer = A1608F7BB072F2F2ABB7BCD52D5F0D2CD326FA020ED43DD200A1E9D329D7584E67C32EA5C0A3A09B9BCCDBBC1609B0565C443E9C5B460FD5B15247C193AAE9782B651DEA5D5B4F5E35F6BCADD55F0BE28DF5AEF4FB2AAE88579DA42CD9E53A5283405E9BF96391C09359D461643FBFBC957855E6902B681B975B058E8A8983EAC17B5CA92BAF731E9D300AECE7F071F012B70EAE2F6BA6B01F958709296BBC78E9D55D470ADAFF09FAABE7249F61DE6B3CD43E0F77F251F42C0BBD22E918213AE11341BBCAA1AEBAD843A4FB0054B5F90966970CD8458CC372722E1C473E82A00E4F53800AF1338AEC5C73DDBF91F34B0AA94BE4B68D3EAFB3D5267E3DD1F68B1B5AB4A1018055F58D3CE58CA1A2F602B12E494BCADE7E0121E1C31162162BC807F8859E4AF2636C490FEFA04B83260FA54C940FAF0B71DA0EDB93BE758391B2BFC4499778D8D6492E5867F830AB4576F56CFA5567C03A9E6A55B6B787323983E649940F45B504A07A4418381B9BAAED24447DD73F7E7041FFD775433DFFF480EDA43E974EE657CF49C7E5A9F73EF7F959CB54B5DEE3F10AA7578A0A0CFB88072378D38120C92EB6DD358D6774DDF4AB05B206AD6F78A2460A291F90052509C8D6B7957661B87D5AA38A302CF442FE51E6D410B566E628D2C3B7E4AB06F69B67A093ABDD7AA3853BAF6BC9BBC3A0E355E263AC42FE38B2B60F41AED25E9F2548141061B9550F3F845C50E6D78F3954383B689EBBEFD689A1A48B3EC854ABE73C9040537FA5B0FE7983E70C31D33F4DAAA32CADB00971206BB18F65725025AB8801C3C6266E6F9E79A03F43579604F4AE
-tmp_aes_key = F805C7E689A4E7AAD5C85A75FDE99DE29A982EA60DBFF1B8774E7971F940E98A
-tmp_aes_iv = 88B8594FE2F8E89F875D1C6AF5E31C22C985AB4A7E4CB009D93DF6DD1482ED11
+
encrypted_answer = 5F2737D54E1DE0517FFB5046D71FEE25B4D79F55F8811CA4B678170EA7FA33309F163BC8B5820C50430A95E24964EA9466F3918C63BA124285A49EF5FB3CCC8CB384423122F74154D535C829693FF9C05FD7119BBCC57E05AB388823D0259B2A68CB9806EB28F151F38E1F230E4B7819EA0F6508E935BD29168EFC8EFB01A0359918C25114925AC20BD8FB9CCEA91BD41137970C64957CFA57412C7463B4232648086BC7D8ACBE369C70F427997645D39DF559F8669BFC4D33FBA67B93047BBB26C4DFF6089DAEA96EC476A83DFC767179FD43194EC573BE1035076382AAA5F0DD34969E52314DE751358B079E548EBD5781171890A7933EAA1B11EEC126770C04FC69EA5D18186F43ACC56B94BCE3D7FD759248FAD12E4315A2EEAF8CFF12714A3890E87E40D77592A87FD205597D069B7AAE9013CC6E0E0E0B04FA3A80F2C40C898C1F5BE71A19B8252D70988C585195CA7E41F98066C0EB36CFACB84325826907008BAC0E678E2E2B1A99FCEC47D1FCE60CD43F977D5A98B269CA70D4D1C7B956FBDDA2A6B716F628260BC2AFB1A176603C66A1F110FC914F34A00553E86C796783E6105DA6E5DEFEEE1ED556DBA9751B58E611E73DC82F8F7830CE08F1434062FC376E7BD45D0F218EBAD7F50900FDF7554145809400F8481A019FDBF74CB172EFBC79A3A4B0A8167423F252052352BB00DA1ED99575B19BA18C1A80450DB34C9DE536E03522F6BDCA4B9F899E87BE02622585DE27ED825D4E255BECDAEF9F8F109320293083338BA237AB86E4F09D03DD45B8F31F0FE66BAD9236E60059B0BF8C388913E9A8FAD30B78CB974343
+tmp_aes_key = FCE0B35A21F44D030F77356DEDAB99EE7DFF47AC34ADB6424364127BEF70E0AA
+tmp_aes_iv = 18017C774362086FD3D8059DE21E1F254713F049F8E13DA800D025FA813B52FD

Yielding:

-
answer_with_hash = 965A59B5192F82F8493AEA537A3E45B46B234B6BBA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000191D9C9A43ADD5EEB346D1EB018C5532304F4595FDD9CD3811EBF53E9C9ACE4D8D4119FAFAEA24DB7F18285F5BD922CF4193AEC05C0BB1C8CF0D7D1339EF7CA0BA3EB358CB6C25B4BDF9EFAE82C04DAA5000CB48B6B98857F6FF1A87493A3EDA1FEBA2280F760BC1B0244C9D2D66782EF2B1BC8A94B8E3C919DDCA1114C589444B4444C6235131A7FA3448EAFA96969385159160C86891B7B54CF739F319A906DC99E6370FF6AF96C5B80C1217619143551B165F205F4060B82F4D8C6A49171DDDF09C920BCCE8B46576EDCDF66F26C5BC2A678B7C82A69771A9E6CE4B8905C2EB90A68376F8870E87C1F4F472A4E6E47055420DAFAC80CE39379FCEE1C045C5B3EA86519470D5116BA80A2
-answer = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000191D9C9A43ADD5EEB346D1EB018C5532304F4595FDD9CD3811EBF53E9C9ACE4D8D4119FAFAEA24DB7F18285F5BD922CF4193AEC05C0BB1C8CF0D7D1339EF7CA0BA3EB358CB6C25B4BDF9EFAE82C04DAA5000CB48B6B98857F6FF1A87493A3EDA1FEBA2280F760BC1B0244C9D2D66782EF2B1BC8A94B8E3C919DDCA1114C589444B4444C6235131A7FA3448EAFA96969385159160C86891B7B54CF739F319A906DC99E6370FF6AF96C5B80C1217619143551B165F205F4060B82F4D8C6A49171DDDF09C920BCCE8B46576EDCDF66F26C5BC2A678B7C82A69771A9E6CE4B8905C2EB90A68376F8870E87C1F4F472A4E6E47055420DAFAC80CE39379FCEE1C045C5B3EA86519470D5116BA80A2
+
answer_with_hash = 1F7C8A30D9E7041717B31FBAAC973CA6CD154752BA0D89B550C933C4ADE5B6C3B5B55C411581CB21FECEEFE94ADAF667EE9B8167AC9761C803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009D7238956877A7B51C24895CB1BE674FCFCA14DD0F4DA09D6CF890BB5715D05949074C0B8611FE9A6C1A01D8FDF45215F783DD56B6D54F5020D8ECD08CE49055D21D47F6413D847243872661CF4CEB0A9E49F6DD15838F97227B7AE3F4D9552229BBB31893BF4A773E634EAB5D261E1CD04974B194F3700ECC41DA3A0C6C5955AB5D3E19DBA0AE358BFAE65BF01FF6FCB10C57919058A56B1E182D202C6CD7C0ED33542084B3E56DBCA32D1A0DA9830414D44DB9FDD66624C68C0E61FF1A3711498118918319F10EBD83B4AD518130643CA702EAF02E56BBA57427D00C339A3DCE30CCB4776AD01EF1448FD5ED36A5C212C88B03EC6276EA7DBBEE26C6C87BAA3A41A8655010F8139B52E4AE
+answer = BA0D89B550C933C4ADE5B6C3B5B55C411581CB21FECEEFE94ADAF667EE9B8167AC9761C803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009D7238956877A7B51C24895CB1BE674FCFCA14DD0F4DA09D6CF890BB5715D05949074C0B8611FE9A6C1A01D8FDF45215F783DD56B6D54F5020D8ECD08CE49055D21D47F6413D847243872661CF4CEB0A9E49F6DD15838F97227B7AE3F4D9552229BBB31893BF4A773E634EAB5D261E1CD04974B194F3700ECC41DA3A0C6C5955AB5D3E19DBA0AE358BFAE65BF01FF6FCB10C57919058A56B1E182D202C6CD7C0ED33542084B3E56DBCA32D1A0DA9830414D44DB9FDD66624C68C0E61FF1A3711498118918319F10EBD83B4AD518130643CA702EAF02E56BBA57427D00C339A3DCE30CCB4776AD01EF1448FD5ED36A5C212C88B03EC6276EA7DBBEE26C6C87BAA3A41A8655010F8139B52E4AE

Generated payload (excluding transport headers/trailers):

-
0000 | BA 0D 89 B5 D2 AC 74 53 3A 31 3A 58 87 0E 49 D5
-0010 | 3B A6 8A 05 00 09 D4 B0 4B A7 57 78 C5 60 95 8C
-0020 | 4F 18 A6 BA 03 00 00 00 FE 00 01 00 C7 1C AE B9
+
0000 | BA 0D 89 B5 50 C9 33 C4 AD E5 B6 C3 B5 B5 5C 41
+0010 | 15 81 CB 21 FE CE EF E9 4A DA F6 67 EE 9B 81 67
+0020 | AC 97 61 C8 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 = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B
 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 | 01 91 D9 C9 A4 3A DD 5E EB 34 6D 1E B0 18 C5 53
-0140 | 23 04 F4 59 5F DD 9C D3 81 1E BF 53 E9 C9 AC E4
-0150 | D8 D4 11 9F AF AE A2 4D B7 F1 82 85 F5 BD 92 2C
-0160 | F4 19 3A EC 05 C0 BB 1C 8C F0 D7 D1 33 9E F7 CA
-0170 | 0B A3 EB 35 8C B6 C2 5B 4B DF 9E FA E8 2C 04 DA
-0180 | A5 00 0C B4 8B 6B 98 85 7F 6F F1 A8 74 93 A3 ED
-0190 | A1 FE BA 22 80 F7 60 BC 1B 02 44 C9 D2 D6 67 82
-01A0 | EF 2B 1B C8 A9 4B 8E 3C 91 9D DC A1 11 4C 58 94
-01B0 | 44 B4 44 4C 62 35 13 1A 7F A3 44 8E AF A9 69 69
-01C0 | 38 51 59 16 0C 86 89 1B 7B 54 CF 73 9F 31 9A 90
-01D0 | 6D C9 9E 63 70 FF 6A F9 6C 5B 80 C1 21 76 19 14
-01E0 | 35 51 B1 65 F2 05 F4 06 0B 82 F4 D8 C6 A4 91 71
-01F0 | DD DF 09 C9 20 BC CE 8B 46 57 6E DC DF 66 F2 6C
-0200 | 5B C2 A6 78 B7 C8 2A 69 77 1A 9E 6C E4 B8 90 5C
-0210 | 2E B9 0A 68 37 6F 88 70 E8 7C 1F 4F 47 2A 4E 6E
-0220 | 47 05 54 20 DA FA C8 0C E3 93 79 FC EE 1C 04 5C
-0230 | 5B 3E A8 65
+0130 | 9D 72 38 95 68 77 A7 B5 1C 24 89 5C B1 BE 67 4F +0140 | CF CA 14 DD 0F 4D A0 9D 6C F8 90 BB 57 15 D0 59 +0150 | 49 07 4C 0B 86 11 FE 9A 6C 1A 01 D8 FD F4 52 15 +0160 | F7 83 DD 56 B6 D5 4F 50 20 D8 EC D0 8C E4 90 55 +0170 | D2 1D 47 F6 41 3D 84 72 43 87 26 61 CF 4C EB 0A +0180 | 9E 49 F6 DD 15 83 8F 97 22 7B 7A E3 F4 D9 55 22 +0190 | 29 BB B3 18 93 BF 4A 77 3E 63 4E AB 5D 26 1E 1C +01A0 | D0 49 74 B1 94 F3 70 0E CC 41 DA 3A 0C 6C 59 55 +01B0 | AB 5D 3E 19 DB A0 AE 35 8B FA E6 5B F0 1F F6 FC +01C0 | B1 0C 57 91 90 58 A5 6B 1E 18 2D 20 2C 6C D7 C0 +01D0 | ED 33 54 20 84 B3 E5 6D BC A3 2D 1A 0D A9 83 04 +01E0 | 14 D4 4D B9 FD D6 66 24 C6 8C 0E 61 FF 1A 37 11 +01F0 | 49 81 18 91 83 19 F1 0E BD 83 B4 AD 51 81 30 64 +0200 | 3C A7 02 EA F0 2E 56 BB A5 74 27 D0 0C 33 9A 3D +0210 | CE 30 CC B4 77 6A D0 1E F1 44 8F D5 ED 36 A5 C2 +0220 | 12 C8 8B 03 EC 62 76 EA 7D BB EE 26 C6 C8 7B AA +0230 | 3A 41 A8 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, 801EC2D375B3EA86501A0DE9B3A41A865 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4D8020000 (728 in decimal)78020000 (632 in decimal) Message body length
nonce 24, 16D2AC74533A313A58870E49D53BA68A0550C933C4ADE5B6C3B5B55C411581CB21 Value generated by client in Step 1
server_nonce 40, 160009D4B04BA75778C560958C4F18A6BAFECEEFE94ADAF667EE9B8167AC9761C8 Value received from server in Step 2
encrypted_answer 56, 596FE500200A1608F7BB072F2F2ABB7BCD5 2D5F0D2CD326FA020ED43DD200A1E9D3 29D7584E67C32EA5C0A3A09B9BCCDBBC 1609B0565C443E9C5B460FD5B15247C1 93AAE9782B651DEA5D5B4F5E35F6BCAD D55F0BE28DF5AEF4FB2AAE88579DA42C D9E53A5283405E9BF96391C09359D461 643FBFBC957855E6902B681B975B058E 8A8983EAC17B5CA92BAF731E9D300AEC E7F071F012B70EAE2F6BA6B01F958709 296BBC78E9D55D470ADAFF09FAABE724 9F61DE6B3CD43E0F77F251F42C0BBD22 E918213AE11341BBCAA1AEBAD843A4FB 0054B5F90966970CD8458CC372722E1C 473E82A00E4F53800AF1338AEC5C73DD BF91F34B0AA94BE4B68D3EAFB3D5267E 3DD1F68B1B5AB4A1018055F58D3CE58C A1A2F602B12E494BCADE7E0121E1C311 62162BC807F8859E4AF2636C490FEFA0 4B83260FA54C940FAF0B71DA0EDB93BE 758391B2BFC4499778D8D6492E5867F8 30AB4576F56CFA5567C03A9E6A55B6B7 87323983E649940F45B504A07A441838 1B9BAAED24447DD73F7E7041FFD77543 3DFFF480EDA43E974EE657CF49C7E5A9 F73EF7F959CB54B5DEE3F10AA7578A0A 0CFB88072378D38120C92EB6DD358D67 74DDF4AB05B206AD6F78A2460A291F90 052509C8D6B7957661B87D5AA38A302C F442FE51E6D410B566E628D2C3B7E4AB 06F69B67A093ABDD7AA3853BAF6BC9BB C3A0E355E263AC42FE38B2B60F41AED2 5E9F2548141061B9550F3F845C50E6D7 8F3954383B689EBBEFD689A1A48B3EC8 54ABE73C9040537FA5B0FE7983E70C31 D33F4DAAA32CADB00971206BB18F6572 5025AB8801C3C6266E6F9E79A03F4357
9604F4AE
FE5002005F2737D54E1DE0517FFB5046 D71FEE25B4D79F55F8811CA4B678170E A7FA33309F163BC8B5820C50430A95E2 4964EA9466F3918C63BA124285A49EF5 FB3CCC8CB384423122F74154D535C829 693FF9C05FD7119BBCC57E05AB388823 D0259B2A68CB9806EB28F151F38E1F23 0E4B7819EA0F6508E935BD29168EFC8E FB01A0359918C25114925AC20BD8FB9C CEA91BD41137970C64957CFA57412C74 63B4232648086BC7D8ACBE369C70F427 997645D39DF559F8669BFC4D33FBA67B 93047BBB26C4DFF6089DAEA96EC476A8 3DFC767179FD43194EC573BE10350763 82AAA5F0DD34969E52314DE751358B07 9E548EBD5781171890A7933EAA1B11EE C126770C04FC69EA5D18186F43ACC56B 94BCE3D7FD759248FAD12E4315A2EEAF 8CFF12714A3890E87E40D77592A87FD2 05597D069B7AAE9013CC6E0E0E0B04FA 3A80F2C40C898C1F5BE71A19B8252D70 988C585195CA7E41F98066C0EB36CFAC B84325826907008BAC0E678E2E2B1A99 FCEC47D1FCE60CD43F977D5A98B269CA 70D4D1C7B956FBDDA2A6B716F628260B C2AFB1A176603C66A1F110FC914F34A0 0553E86C796783E6105DA6E5DEFEEE1E D556DBA9751B58E611E73DC82F8F7830 CE08F1434062FC376E7BD45D0F218EBA D7F50900FDF7554145809400F8481A01 9FDBF74CB172EFBC79A3A4B0A8167423 F252052352BB00DA1ED99575B19BA18C 1A80450DB34C9DE536E03522F6BDCA4B 9F899E87BE02622585DE27ED825D4E25 5BECDAEF9F8F109320293083338BA237 AB86E4F09D03DD45B8F31F0FE66BAD92 36E60059B0BF8C388913E9A8FAD30B78
CB974343
See below
@@ -570,13 +570,13 @@ answer = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B - + - + @@ -594,13 +594,13 @@ answer = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B - + - + @@ -609,34 +609,34 @@ answer = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B
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 = 9ECDD388AF28E2E9331B545F04F70C9523AA4DE19040D32B03B8F726BDBB76F0D9BAE78D117F43A25581556CECE3566A7B1A1A1CADA4B74E8BE751FF704A70300081906313BAD8F250639135D0A47FA6C69D47FFBE89B6C8A02959B87FD6FCEC223FDCA26838FD0426170BAAD37880662A87055DBBDA282AB0966BD1B8D1923A230439CDB95AFA872F16D5323950843414F4ED0547CA90FCB02E3D1E05B6933821FD17C6F2ECAD84D6BDD30B08925A45720134562E07A8E8C92C8FA3769CE62EB2CCCC199FB0607DB5FB1420159B9B373AC4C149A628F6D690655B4D7D698C75E647774E7CAED53C152E76D3F365A9F9E332C9C2C3A72B2940A711F239FB54B6
+
b = 8A3840F0DC6666A90077F545E9BFE309F1C291503FDA9DB9F7D9C3F3E2AC81A0C5E9AE776C12055DC5B35E5A689F441E52E30CDECF351B232BA788496AB82ED0AA74AC928DE21CC088AC573C55939082E5F2ED96330BAE75C2B131EFDCE08D45CD926A32C1AA2B86E5BD2D5A7085FA754ADAE942E3C0D6DC6A00CFCAD4E22FCC34473AF56D6723321DB9B7ED2EBDFA75C2332F60237FFAF98909C54108D484389BA5DAA35452E94F879833674F759FDBE4A2B382E6D139A9990ECDF2803601E2FAC13B395D7D6901D57E1E1905C48026A5C71AE13E957786339CC5E20DAB698A782F7C971F9842E60F5A727A3383DE454CA76E051F589577D6CEEC55A50E5368

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

-
g_b = 2045E19A8796B889E5E907163BB68826E6DA69FE4092453D62718A5B5078DAC8A7F37BA27A13A55ACBD2C7665746AACE4CC5F5E67BB099E1A0A36639A560649E173AF621F3660F1CF1E9C06F920511A01A0C20794E30F926D29243772B554292BE6B5D706DEB624013586E6DAC720C5CF7916251C64122FD46E9E64F34DB37FA3E897BBD1177A4F8082B3D17C27B1A707C4DE257941DA95E5CBC0D09442ED99F06044DB0D0B0A60E7C219B5B46D24DF701635EF95A3024AB013F1E234CAE7D534182D74A3F4F64D5F2BC883B875D6D87C90DC2DE09E82FF1BE110ADA5E936C84F1AEEE0BB0F083B0A739EEEE251AA011DFF69B0CBAFB8B0710EEBD003180B615
+
g_b = 59BC5E63BF9C753326C9D5E076C8E2B0C6C05FFD50A2E928C3E2946184D118693B7989DDE27C8D10CF6869CEFFF5AA1CE333DC057435B9B5B2A51BB655199423378918F4AF2F94E93551DAD3EE07A69ABE5D1BC56D29C2F12EE813AB915277CC97190D04B623708608DBB2E4C260765ABD91BC3835F7D658BA9F26CC7CEFEE3BA7E89CAFE79EC7048F93FC3B1DF4D625837F3BCA2F8F0527BA5E935F6B1B83B17F6FA5588CDD5E052CF2923B89E0C9E8705F990EEAE7804CBDCE10256B441D0E2FB42011D7690EAF935BB7442BE02D511E93C13B93C5C3AA02CF93D57DE26C1AE39C0B95E2B7D3758545F99C327DC6D871764F1CC76A3DFBC5768CE6ED21BB64
7.1) generation of encrypted_data

Generated payload (excluding transport headers/trailers):

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

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, 16D2AC74533A313A58870E49D53BA68A0550C933C4ADE5B6C3B5B55C411581CB21 Value generated by client in Step 1
server_nonce 20, 160009D4B04BA75778C560958C4F18A6BAFECEEFE94ADAF667EE9B8167AC9761C8 Value received from server in Step 2
g_a 300, 260FE0001000191D9C9A43ADD5EEB346D1E B018C5532304F4595FDD9CD3811EBF53 E9C9ACE4D8D4119FAFAEA24DB7F18285 F5BD922CF4193AEC05C0BB1C8CF0D7D1 339EF7CA0BA3EB358CB6C25B4BDF9EFA E82C04DAA5000CB48B6B98857F6FF1A8 7493A3EDA1FEBA2280F760BC1B0244C9 D2D66782EF2B1BC8A94B8E3C919DDCA1 114C589444B4444C6235131A7FA3448E AFA96969385159160C86891B7B54CF73 9F319A906DC99E6370FF6AF96C5B80C1 217619143551B165F205F4060B82F4D8 C6A49171DDDF09C920BCCE8B46576EDC DF66F26C5BC2A678B7C82A69771A9E6C E4B8905C2EB90A68376F8870E87C1F4F 472A4E6E47055420DAFAC80CE39379FC
EE1C045C
FE0001009D7238956877A7B51C24895C B1BE674FCFCA14DD0F4DA09D6CF890BB 5715D05949074C0B8611FE9A6C1A01D8 FDF45215F783DD56B6D54F5020D8ECD0 8CE49055D21D47F6413D847243872661 CF4CEB0A9E49F6DD15838F97227B7AE3 F4D9552229BBB31893BF4A773E634EAB 5D261E1CD04974B194F3700ECC41DA3A 0C6C5955AB5D3E19DBA0AE358BFAE65B F01FF6FCB10C57919058A56B1E182D20 2C6CD7C0ED33542084B3E56DBCA32D1A 0DA9830414D44DB9FDD66624C68C0E61 FF1A3711498118918319F10EBD83B4AD 518130643CA702EAF02E56BBA57427D0 0C339A3DCE30CCB4776AD01EF1448FD5 ED36A5C212C88B03EC6276EA7DBBEE26
C6C87BAA
g_a diffie-hellman parameter
server_time 560, 45B3EA865 (1705524827 in decimal)3A41A865 (1705525562 in decimal) Server time
@@ -658,19 +658,19 @@ answer = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B - + - + - + @@ -684,47 +684,47 @@ answer = BA0D89B5D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6B

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 = 54B64366D2AC74533A313A58870E49D53BA68A050009D4B04BA75778C560958C4F18A6BA0000000000000000FE0001002045E19A8796B889E5E907163BB68826E6DA69FE4092453D62718A5B5078DAC8A7F37BA27A13A55ACBD2C7665746AACE4CC5F5E67BB099E1A0A36639A560649E173AF621F3660F1CF1E9C06F920511A01A0C20794E30F926D29243772B554292BE6B5D706DEB624013586E6DAC720C5CF7916251C64122FD46E9E64F34DB37FA3E897BBD1177A4F8082B3D17C27B1A707C4DE257941DA95E5CBC0D09442ED99F06044DB0D0B0A60E7C219B5B46D24DF701635EF95A3024AB013F1E234CAE7D534182D74A3F4F64D5F2BC883B875D6D87C90DC2DE09E82FF1BE110ADA5E936C84F1AEEE0BB0F083B0A739EEEE251AA011DFF69B0CBAFB8B0710EEBD003180B615
-padding = 5F0D1DE79F61579108272399
-tmp_aes_key = F805C7E689A4E7AAD5C85A75FDE99DE29A982EA60DBFF1B8774E7971F940E98A
-tmp_aes_iv = 88B8594FE2F8E89F875D1C6AF5E31C22C985AB4A7E4CB009D93DF6DD1482ED11
+
data = 54B6436650C933C4ADE5B6C3B5B55C411581CB21FECEEFE94ADAF667EE9B8167AC9761C80000000000000000FE00010059BC5E63BF9C753326C9D5E076C8E2B0C6C05FFD50A2E928C3E2946184D118693B7989DDE27C8D10CF6869CEFFF5AA1CE333DC057435B9B5B2A51BB655199423378918F4AF2F94E93551DAD3EE07A69ABE5D1BC56D29C2F12EE813AB915277CC97190D04B623708608DBB2E4C260765ABD91BC3835F7D658BA9F26CC7CEFEE3BA7E89CAFE79EC7048F93FC3B1DF4D625837F3BCA2F8F0527BA5E935F6B1B83B17F6FA5588CDD5E052CF2923B89E0C9E8705F990EEAE7804CBDCE10256B441D0E2FB42011D7690EAF935BB7442BE02D511E93C13B93C5C3AA02CF93D57DE26C1AE39C0B95E2B7D3758545F99C327DC6D871764F1CC76A3DFBC5768CE6ED21BB64
+padding = 6A867FA67771656D6C92FD59
+tmp_aes_key = FCE0B35A21F44D030F77356DEDAB99EE7DFF47AC34ADB6424364127BEF70E0AA
+tmp_aes_iv = 18017C774362086FD3D8059DE21E1F254713F049F8E13DA800D025FA813B52FD

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 = 37201A6355370E8BDF93202F9FCC87F354FADD9339765F45589AB3C83CCB2B7C4A61A131690B47864D65C2D0303B9C1F3B96953FD00E18E1FDB4F3588100B9C0924472EEF1B8EB26DD87D624CD9D12B665C34A7B3742C141B0C3B266213289527EF2F1DFAA9F92C83B99299DCA36B81F069B8FD6C7D14541F3C14724EB29325D130AA97DB0EE6AB4AEBB6A3F9064FF8B87BF213226314E323BCA00EB3852113D7632C625F1E973DBC3D6A29FF925F6EBA7CFF3EFCD8E77D0B1AC1E55EA2BAD3EDBA1982C8CC82D5EFD50C3E7DDD67C5634AFC05213A897EABD82E1A0E35760C26DAEA60EDDA2CB28B63F8159028F4C61D78267AB57161577731F0B3FB419EB8A1550835BC884FD17BD8C0CDB7A71DAC531028FED9120DF89027ADA57BF1DEC5C8FC74EDFC2D8B686966E57A2F935C91A0682DE90A326BD32BC4E116EE91D2503E224047828D3C2CFA8A3BF5F8D911752
+
encrypted_data = FDDE3B612F5636DB66A70D975BD4FE92467E0AF40C3FDB9929A074686A0DFEB85F7FB17B7090C7995675BA0959DDF6A7786607BB783CD731B1C369DD6B1A3D6AE429A7BF6F312842CA91540E368913B40AFBA3F01A6068D62B53AB12832181DDD1F4E413679984FEA52C7F93B34009C7427D6BA4EFBB79538B046E38142DFEC6531F7B801C2C57D07B230C9FF279B7316B7918973C4E779705E9F92C5BCB5303C6D4E9472C554AA297C45CAB3E2F2DBBED740122EA46FB4FE300C84B9762C9CD0C506A6F7F0E30494405DFA9FD2A2F6B845C85FC2A25AACD42A88C2843BEDA0C995A0A36B68DBCF852498D4CC68FCBE220BACA68BC7358307D4E30FFED4503345593B299E4ACFAE15EC727E9EC4C9697BA25F352CCD6F1EFEE1B0A12D0F2DE4AF6653A35111AB8456CB3955470228D2C3FFB4646F1A0A7EF1DC21F5071B856F9CA55F75777734B7BBF1D21AF17535045

The length of the final string is 336 bytes.

7.2) set_client_DH_params query

Sent payload (excluding transport headers/trailers):

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

Payload (de)serialization:

set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
nonce 4, 16D2AC74533A313A58870E49D53BA68A0550C933C4ADE5B6C3B5B55C411581CB21 Value generated by client in Step 1
server_nonce 20, 160009D4B04BA75778C560958C4F18A6BAFECEEFE94ADAF667EE9B8167AC9761C8 Value received from server in Step 2
g_b 36, 260FE0001002045E19A8796B889E5E90716 3BB68826E6DA69FE4092453D62718A5B 5078DAC8A7F37BA27A13A55ACBD2C766 5746AACE4CC5F5E67BB099E1A0A36639 A560649E173AF621F3660F1CF1E9C06F 920511A01A0C20794E30F926D2924377 2B554292BE6B5D706DEB624013586E6D AC720C5CF7916251C64122FD46E9E64F 34DB37FA3E897BBD1177A4F8082B3D17 C27B1A707C4DE257941DA95E5CBC0D09 442ED99F06044DB0D0B0A60E7C219B5B 46D24DF701635EF95A3024AB013F1E23 4CAE7D534182D74A3F4F64D5F2BC883B 875D6D87C90DC2DE09E82FF1BE110ADA 5E936C84F1AEEE0BB0F083B0A739EEEE 251AA011DFF69B0CBAFB8B0710EEBD00
3180B615
FE00010059BC5E63BF9C753326C9D5E0 76C8E2B0C6C05FFD50A2E928C3E29461 84D118693B7989DDE27C8D10CF6869CE FFF5AA1CE333DC057435B9B5B2A51BB6 55199423378918F4AF2F94E93551DAD3 EE07A69ABE5D1BC56D29C2F12EE813AB 915277CC97190D04B623708608DBB2E4 C260765ABD91BC3835F7D658BA9F26CC 7CEFEE3BA7E89CAFE79EC7048F93FC3B 1DF4D625837F3BCA2F8F0527BA5E935F 6B1B83B17F6FA5588CDD5E052CF2923B 89E0C9E8705F990EEAE7804CBDCE1025 6B441D0E2FB42011D7690EAF935BB744 2BE02D511E93C13B93C5C3AA02CF93D5 7DE26C1AE39C0B95E2B7D3758545F99C 327DC6D871764F1CC76A3DFBC5768CE6
ED21BB64
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 = 835F6EB517D11E41A5F6338F29D4F8438DF9771D54A6D9BA0B96BCACFDF1F14F0A7ABC0504976D9A6ED84E87258033ED015AE48331C90C7D697917CD14C9056F3FF142DC81BB942D675E2A5034702D83F63FAE694380F1222E747779EC012F7780E4359427A0B1676414CD6BF64B6FECF7A758BAD66D56FFDAF58BD56434AE67B64C28DBBD81E9D91A7A7E66462DE6689F7348859B10302D9D238BEB9205EA39A437B0FF526DEA5664AA9AEE462AB103AEBABCE740B88E43CB0A3FB7BDDE92E0F6DECAFB808BF9581CF4BD6B0BA016915276731F7F18550C510B1FF0C369F0C96A8ADD4E09D1333E87C84E7295B8803B5DC9F1BD37F358A831D47DB766E03648
+
auth_key = 4D26BD0566B8B667C5F700D2807B47C30EA5CA75C0AA3F669AF19A81C89993AEFBB9788FBAF6CC49C176E6BB39E8D55846F886A55ED6C500CC81DBAD5C36510FF20DC537CE9724780380EB55680C40054AA13815D52456C72667EDDCB0767FF2535A6225C787C07258C47358AD381B8ABC8F4AACE3BCD128C0017B14783B2ABFFBF01FDEF8E39B8EE57F9E5AD1EADA3A8D840E7B4841F250D0AD2B720A32EF7B2F451E725CDCDA6C42CCD36106A68F399CC3F293B0C19F08FC42D5AEE4002007EAC8A44A16463F64327A439F8831A83150C8742A0539AB3049904ECB7CA951FE9ED9252829829FF8721A2690E71DB00E60B777C03785796C2A8A3A7F2D37FAC8
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 6C E6 E5 5B 3E A8 65
-0010 | 5C 00 00 00 34 F7 CB 3B D2 AC 74 53 3A 31 3A 58
-0020 | 87 0E 49 D5 3B A6 8A 05 00 09 D4 B0 4B A7 57 78
-0030 | C5 60 95 8C 4F 18 A6 BA 03 83 CA 93 75 5E BD 34
-0040 | FA 87 21 8C DF 8C C2 E7
+
0000 | 00 00 00 00 00 00 00 00 01 40 01 75 3B 41 A8 65
+0010 | 9C 00 00 00 34 F7 CB 3B 50 C9 33 C4 AD E5 B6 C3
+0020 | B5 B5 5C 41 15 81 CB 21 FE CE EF E9 4A DA F6 67
+0030 | EE 9B 81 67 AC 97 61 C8 07 BC 70 E5 42 D1 25 6A
+0040 | 17 46 A3 B4 99 70 F6 98

Payload (de)serialization:

dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
message_id 8, 8041100005B3EA86598FE0B003A41A865 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16D2AC74533A313A58870E49D53BA68A0550C933C4ADE5B6C3B5B55C411581CB21 Value generated by client in Step 1
server_nonce 40, 160009D4B04BA75778C560958C4F18A6BAFECEEFE94ADAF667EE9B8167AC9761C8 Value received from server in Step 2
encrypted_data 56, 340FE50010037201A6355370E8BDF93202F 9FCC87F354FADD9339765F45589AB3C8 3CCB2B7C4A61A131690B47864D65C2D0 303B9C1F3B96953FD00E18E1FDB4F358 8100B9C0924472EEF1B8EB26DD87D624 CD9D12B665C34A7B3742C141B0C3B266 213289527EF2F1DFAA9F92C83B99299D CA36B81F069B8FD6C7D14541F3C14724 EB29325D130AA97DB0EE6AB4AEBB6A3F 9064FF8B87BF213226314E323BCA00EB 3852113D7632C625F1E973DBC3D6A29F F925F6EBA7CFF3EFCD8E77D0B1AC1E55 EA2BAD3EDBA1982C8CC82D5EFD50C3E7 DDD67C5634AFC05213A897EABD82E1A0 E35760C26DAEA60EDDA2CB28B63F8159 028F4C61D78267AB57161577731F0B3F B419EB8A1550835BC884FD17BD8C0CDB 7A71DAC531028FED9120DF89027ADA57 BF1DEC5C8FC74EDFC2D8B686966E57A2 F935C91A0682DE90A326BD32BC4E116E E91D2503E224047828D3C2CFA8A3BF5F
8D911752
FE500100FDDE3B612F5636DB66A70D97 5BD4FE92467E0AF40C3FDB9929A07468 6A0DFEB85F7FB17B7090C7995675BA09 59DDF6A7786607BB783CD731B1C369DD 6B1A3D6AE429A7BF6F312842CA91540E 368913B40AFBA3F01A6068D62B53AB12 832181DDD1F4E413679984FEA52C7F93 B34009C7427D6BA4EFBB79538B046E38 142DFEC6531F7B801C2C57D07B230C9F F279B7316B7918973C4E779705E9F92C 5BCB5303C6D4E9472C554AA297C45CAB 3E2F2DBBED740122EA46FB4FE300C84B 9762C9CD0C506A6F7F0E30494405DFA9 FD2A2F6B845C85FC2A25AACD42A88C28 43BEDA0C995A0A36B68DBCF852498D4C C68FCBE220BACA68BC7358307D4E30FF ED4503345593B299E4ACFAE15EC727E9 EC4C9697BA25F352CCD6F1EFEE1B0A12 D0F2DE4AF6653A35111AB8456CB39554 70228D2C3FFB4646F1A0A7EF1DC21F50 71B856F9CA55F75777734B7BBF1D21AF
17535045
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/corefork.telegram.org/type/MessageMedia.html b/data/web/corefork.telegram.org/type/MessageMedia.html index 184e19c234..d1ef304f52 100644 --- a/data/web/corefork.telegram.org/type/MessageMedia.html +++ b/data/web/corefork.telegram.org/type/MessageMedia.html @@ -148,7 +148,7 @@ - +
message_id 8, 8016CE6E55B3EA865014001753B41A865 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 45C000000 (92 in decimal)9C000000 (156 in decimal) Message body length
nonce 24, 16D2AC74533A313A58870E49D53BA68A0550C933C4ADE5B6C3B5B55C411581CB21 Value generated by client in Step 1
server_nonce 40, 160009D4B04BA75778C560958C4F18A6BAFECEEFE94ADAF667EE9B8167AC9761C8 Value received from server in Step 2
new_nonce_hash1 56, 160383CA93755EBD34FA87218CDF8CC2E707BC70E542D1256A1746A3B49970F698 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.
messageMediaGiveawayResults A giveaway with public winners has finished, this constructor contains info about the winners.