diff --git a/data/web/corefork.telegram.org/api/layers.html b/data/web/corefork.telegram.org/api/layers.html index a9e398d110..d5aba6220e 100644 --- a/data/web/corefork.telegram.org/api/layers.html +++ b/data/web/corefork.telegram.org/api/layers.html @@ -97,8 +97,8 @@
New Constructors

Schema changes

diff --git a/data/web/corefork.telegram.org/constructor/inputStorePaymentStarsGift.html b/data/web/corefork.telegram.org/constructor/inputStorePaymentStarsGift.html index 67a596357e..337c8adb3d 100644 --- a/data/web/corefork.telegram.org/constructor/inputStorePaymentStarsGift.html +++ b/data/web/corefork.telegram.org/constructor/inputStorePaymentStarsGift.html @@ -4,44 +4,10 @@ inputStorePaymentStarsGift - + - + @@ -76,7 +42,8 @@ InputStorePaymentPurpose">

inputStorePaymentStarsGift

-

+

Used to top up the Telegram Stars balance of a friend using the Play Store/App Store flow (official apps only).

+

+

InputStorePaymentPurpose

+

Related pages

+

Bot Payments API

+

Telegram Stars

+

Telegram Stars are an in-app currency that allows the user to pay for digital goods and services offered by Telegram bots or Telegram channels.

diff --git a/data/web/corefork.telegram.org/constructor/inputStorePaymentStarsTopup.html b/data/web/corefork.telegram.org/constructor/inputStorePaymentStarsTopup.html index 2accf5178f..f5736f23d8 100644 --- a/data/web/corefork.telegram.org/constructor/inputStorePaymentStarsTopup.html +++ b/data/web/corefork.telegram.org/constructor/inputStorePaymentStarsTopup.html @@ -4,38 +4,10 @@ inputStorePaymentStarsTopup - + - + @@ -70,7 +42,8 @@ InputStorePaymentPurpose">

inputStorePaymentStarsTopup

-

+

Used to top up the Telegram Stars balance using the Play Store/App Store flow (official apps only).

+

+

InputStorePaymentPurpose

+

Related pages

+

Bot Payments API

+

Telegram Stars

+

Telegram Stars are an in-app currency that allows the user to pay for digital goods and services offered by Telegram bots or Telegram channels.

diff --git a/data/web/corefork.telegram.org/constructor/starsTransaction.html b/data/web/corefork.telegram.org/constructor/starsTransaction.html index a1f918e063..6dcdf166e7 100644 --- a/data/web/corefork.telegram.org/constructor/starsTransaction.html +++ b/data/web/corefork.telegram.org/constructor/starsTransaction.html @@ -139,23 +139,29 @@ bot_payload flags.7?bytes -  +Bot specified invoice payload (i.e. the payload passed to inputMediaInvoice when creating the invoice). msg_id flags.8?int -  +For paid media transactions », message ID of the paid media posted to peer.peer (can point to a deleted message; either way, extended_media will always contain the bought media). extended_media flags.9?Vector<MessageMedia> -  +The purchased paid media ».

Type

StarsTransaction

Related pages

+

inputMediaInvoice

+

Generated invoice of a bot payment

+

Payments API

+

You can accept payments from Telegram users via Telegram Bots.

+

Paid media

+

Content creators can accept Stars by publishing paid photos or videos on their channels. Subscribers will be allowed to view such posts only after paying the author to unlock them.

Telegram Stars

Telegram Stars are an in-app currency that allows the user to pay for digital goods and services offered by Telegram bots or Telegram channels.

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 90f4552ccf..1009580d95 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 88 48 04 00 BE 5F AE 66
-0010 | 14 00 00 00 F1 8E 7E BE FF BF 89 C2 AF 61 6F 9E
-0020 | 59 46 CF 8B 1D C6 7A 60
+
0000 | 00 00 00 00 00 00 00 00 2C E5 07 00 7F 62 AE 66
+0010 | 14 00 00 00 F1 8E 7E BE 9B 01 C4 BE E4 4F B3 88
+0020 | B6 C0 29 C7 44 D2 86 0E

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 04 2E E3 BE 5F AE 66
-0010 | B0 00 00 00 63 24 16 05 FF BF 89 C2 AF 61 6F 9E
-0020 | 59 46 CF 8B 1D C6 7A 60 F3 43 1A F7 D8 96 00 09
-0030 | E9 F2 AB 7A AA 49 96 19 08 1E 19 19 46 D2 C9 07
-0040 | 49 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 EC A4 5E 7F 62 AE 66
+0010 | 54 00 00 00 63 24 16 05 9B 01 C4 BE E4 4F B3 88
+0020 | B6 C0 29 C7 44 D2 86 0E 47 EE 45 59 FE 7A 60 1D
+0030 | 03 FA 6C A2 51 0F 2F 36 08 16 44 F7 E5 6E 72 C8
+0040 | BF 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 = 2168792487530399561
-

Decompose into 2 prime cofactors p < q: 2168792487530399561 = 1088326117 * 1992778133

-
p = 1088326117
-q = 1992778133
+
pq = 1604679932023326911
+

Decompose into 2 prime cofactors p < q: 1604679932023326911 = 1254145391 * 1279500721

+
p = 1254145391
+q = 1279500721

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 1E 19 19 46 D2 C9 07 49 00 00 00
-0010 | 04 40 DE 89 E5 00 00 00 04 76 C7 61 95 00 00 00
-0020 | FF BF 89 C2 AF 61 6F 9E 59 46 CF 8B 1D C6 7A 60
-0030 | F3 43 1A F7 D8 96 00 09 E9 F2 AB 7A AA 49 96 19
-0040 | FC 1B D4 88 E2 3F DC 45 75 8A 4B 6C C4 3F AC 79
-0050 | 18 BC AD 25 84 01 F2 6A C5 F5 64 DF 7A DA 35 06
+
0000 | 95 5F F5 A9 08 16 44 F7 E5 6E 72 C8 BF 00 00 00
+0010 | 04 4A C0 BD 6F 00 00 00 04 4C 43 A1 B1 00 00 00
+0020 | 9B 01 C4 BE E4 4F B3 88 B6 C0 29 C7 44 D2 86 0E
+0030 | 47 EE 45 59 FE 7A 60 1D 03 FA 6C A2 51 0F 2F 36
+0040 | D2 F8 19 F2 4D 66 32 53 B8 E9 36 1A F1 B0 11 13
+0050 | D6 22 AC B9 96 44 39 89 0D 30 8C 5C C5 11 24 E7
 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 = 1992778133
- + - + - + - + - + - + @@ -291,39 +291,39 @@ q = 1992778133

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 = 955FF5A9081E191946D2C907490000000440DE89E50000000476C76195000000FFBF89C2AF616F9E5946CF8B1DC67A60F3431AF7D8960009E9F2AB7AAA499619FC1BD488E23FDC45758A4B6CC43FAC7918BCAD258401F26AC5F564DF7ADA350602000000
-random_padding_bytes = C3CAAB0D9CA763A9968A1CB0D5EB78AE9ADA553A5A10D1078FE23865EE7E2EEDCC5C8BC7DC54205B464C414C4A8FE0F21625319E98029DCC572091218198167D510520198972517A1FA8FFBD6AC20E8A9435E62910CF795153111314
+
data = 955FF5A9081644F7E56E72C8BF000000044AC0BD6F000000044C43A1B10000009B01C4BEE44FB388B6C029C744D2860E47EE4559FE7A601D03FA6CA2510F2F36D2F819F24D663253B8E9361AF1B01113D622ACB9964439890D308C5CC51124E702000000
+random_padding_bytes = B21DADEA02D355477CB91F6AEBFF1AC70CB3ABFC5ABC13F86F27C9F61F620D9C27FDF00D8D09BDCD01D4F97A0AB04B73AFB0297F2453FEE3023C5B4D9DF76E6C2F3BEAC47E5F61D8DCEDF4F3C48C8B939884EDB6BA8B647AA9843BA4

And this is the output:

-
encrypted_data = 0F1A3FF0BD8C4B5A153F935A3EB891E9A2144A4C38FD87A52A974BB058FE6DD7464C9A8174A537126FF8F6C13E18C96CE787D398A2E9EC9A6040887AEB9C69BF1B77BB37C9B65D7436A8F3D9122EC41B1A9D950528CD70CDCF49B660570C7E55E3F17E00ABD3C0FBE33E5D8F08D7656B5E8AF458DF9BEC3E76EC835DEAB3599110B063F746CD50E643C03BF2AAC9BB682CDBD8D0FDCBB88DCC5C3A3599A99B08D0B9408E1862CD5B6F9BD2A0571490F312AA4ECCCCDEC6EE9A4C8E3FA87AB6713C4F86F452FCE82DBA247F7B695471B74D20F1A764369D4197FA176A0BC1D85FF121BCCD224529DC9D96A7F55316F968D795B2D5FB8BA26267840CE9DE24918A
+
encrypted_data = 5BC2201B2F24B780A8A199A9DF143925A946046CCCAF0A8F3127C46205C0DD3A9C84B987C337A29F10C89500A7C21347F48706A90C7392FFD6977DB7DC8934B942FFBFF647F0E9F5DCE5B78B0BA833724233B15C638106818D240887FE806836B0A863D4F77B7956D41C2CCA521341DA7CF52D8BB7EA2D4860DBB110E61627C8A660861F71150B22C533791797551D2AC4E5B28C924231CF008DDC318100521CDFE523B9BE204ECA3F5196AC0E173D25F7552CFCCD261E94565C590A0D12609E0F187DBD0B4A71817EB003EEC945E85BA480B0FEAEA96F70C464E44DC87BAA1B24193C65CB6EB609E1858578807E4B187DFEF7702F6BE62CEB3ECC9DFEB4D7CE

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

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, 888480400BE5FAE662CE507007F62AE66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16FFBF89C2AF616F9E5946CF8B1DC67A609B01C4BEE44FB388B6C029C744D2860E Random number
message_id 8, 801042EE3BE5FAE6601ECA45E7F62AE66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4B0000000 (176 in decimal)54000000 (84 in decimal) Message body length
nonce 24, 16FFBF89C2AF616F9E5946CF8B1DC67A609B01C4BEE44FB388B6C029C744D2860E Value generated by client in Step 1
server_nonce 40, 16F3431AF7D8960009E9F2AB7AAA49961947EE4559FE7A601D03FA6CA2510F2F36 Server-generated random number
pq 56, 12081E191946D2C90749000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2168792487530399561
081644F7E56E72C8BF000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1604679932023326911
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
pq 4, 12081E191946D2C90749000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2168792487530399561
081644F7E56E72C8BF000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1604679932023326911
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p 16, 80440DE89E5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1088326117
044AC0BD6F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1254145391
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 24, 80476C76195000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1992778133
044C43A1B1000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1279500721
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce 32, 16FFBF89C2AF616F9E5946CF8B1DC67A609B01C4BEE44FB388B6C029C744D2860E Value generated by client in Step 1
server_nonce 48, 16F3431AF7D8960009E9F2AB7AAA49961947EE4559FE7A601D03FA6CA2510F2F36 Value received from server in Step 2
new_nonce 64, 32FC1BD488E23FDC45758A4B6CC43FAC79 18BCAD258401F26AC5F564DF7ADA3506D2F819F24D663253B8E9361AF1B01113 D622ACB9964439890D308C5CC51124E7 Client-generated random number
@@ -345,7 +345,7 @@ random_padding_bytes = C3CAAB0D9CA763A9968A1CB0D5EB78AE9ADA553A5A10D1078FE23865E - + @@ -363,25 +363,25 @@ random_padding_bytes = C3CAAB0D9CA763A9968A1CB0D5EB78AE9ADA553A5A10D1078FE23865E - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = C3CAAB0D9CA763A9968A1CB0D5EB78AE9ADA553A5A10D1078FE23865E - + @@ -402,47 +402,47 @@ random_padding_bytes = C3CAAB0D9CA763A9968A1CB0D5EB78AE9ADA553A5A10D1078FE23865E
6) Server responds with:

Received payload (excluding transport headers/trailers):

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

Payload (de)serialization:

server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
message_id 8, 82CA20D00BF5FAE664C850E007F62AE66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16FFBF89C2AF616F9E5946CF8B1DC67A609B01C4BEE44FB388B6C029C744D2860E Value generated by client in Step 1
server_nonce 40, 16F3431AF7D8960009E9F2AB7AAA49961947EE4559FE7A601D03FA6CA2510F2F36 Value received from server in Step 2
p 56, 80440DE89E5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1088326117
044AC0BD6F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1254145391
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 64, 80476C76195000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1992778133
044C43A1B1000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1279500721
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
encrypted_data 80, 260FE0001000F1A3FF0BD8C4B5A153F935A 3EB891E9A2144A4C38FD87A52A974BB0 58FE6DD7464C9A8174A537126FF8F6C1 3E18C96CE787D398A2E9EC9A6040887A EB9C69BF1B77BB37C9B65D7436A8F3D9 122EC41B1A9D950528CD70CDCF49B660 570C7E55E3F17E00ABD3C0FBE33E5D8F 08D7656B5E8AF458DF9BEC3E76EC835D EAB3599110B063F746CD50E643C03BF2 AAC9BB682CDBD8D0FDCBB88DCC5C3A35 99A99B08D0B9408E1862CD5B6F9BD2A0 571490F312AA4ECCCCDEC6EE9A4C8E3F A87AB6713C4F86F452FCE82DBA247F7B 695471B74D20F1A764369D4197FA176A 0BC1D85FF121BCCD224529DC9D96A7F5 5316F968D795B2D5FB8BA26267840CE9
DE24918A
FE0001005BC2201B2F24B780A8A199A9 DF143925A946046CCCAF0A8F3127C462 05C0DD3A9C84B987C337A29F10C89500 A7C21347F48706A90C7392FFD6977DB7 DC8934B942FFBFF647F0E9F5DCE5B78B 0BA833724233B15C638106818D240887 FE806836B0A863D4F77B7956D41C2CCA 521341DA7CF52D8BB7EA2D4860DBB110 E61627C8A660861F71150B22C5337917 97551D2AC4E5B28C924231CF008DDC31 8100521CDFE523B9BE204ECA3F5196AC 0E173D25F7552CFCCD261E94565C590A 0D12609E0F187DBD0B4A71817EB003EE C945E85BA480B0FEAEA96F70C464E44D C87BAA1B24193C65CB6EB609E1858578 807E4B187DFEF7702F6BE62CEB3ECC9D
FEB4D7CE
Value generated above
@@ -464,13 +464,13 @@ random_padding_bytes = C3CAAB0D9CA763A9968A1CB0D5EB78AE9ADA553A5A10D1078FE23865E - + - + @@ -482,19 +482,19 @@ random_padding_bytes = C3CAAB0D9CA763A9968A1CB0D5EB78AE9ADA553A5A10D1078FE23865E - + - + - + @@ -502,20 +502,20 @@ random_padding_bytes = C3CAAB0D9CA763A9968A1CB0D5EB78AE9ADA553A5A10D1078FE23865E

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

-
encrypted_answer = A5339E32F5A1462DFC5C1D836720B8598D2D15C770B80028E70F91138EEC21EE019354D5182CA6D3E39AE806FCAF1426ECE956BAF3DDF5539D68EA827B667EC04A0F8FA66C4F36ADAE01300C802B09FC27E24B24DE64D0E6CA76219AE2C547286AC6AB664EBFB436EF50C7EC6B2587A2D8A896DF8C5252C5B6051FCA453841658E06533394747188258C5E04FB79E9FD28C56A32BDC327FA3B3AB4744358BCA6743A67668892EA35AA8855A9D23D8B65D1CA9012E3E85992B192935ECB0FF2724C11D522FB35B8881DF3F50477114820B2DC611F1E610BF964EDE2143BBB2A2AC9E684F62CFF0695315BEAC2A0CBF8B562AE0551C2D251FA7B96268FB0AD4F20A42EB0EB72447417C7BDC22B5890AA16B2DB6F38EBB708A6CF82B4AF9B2FE2A867C9DD2924206164AB99932B5CE3587044D553E43906A6274CA89D72CFBE29679A4E2154C9014FF585D810619CD96960C63BBFE60ABC1550E90C61900C28EA3448861C8C4B1C4E27A4DC5D2EB48379905BF8171C341672BBF9CAE003BAF44A6A0CC7158CE05CCDAA48152B6FD85B71328E4410B8875A9C2603C63086C279A8874AE88AF25B9F8204B45DFF3A26D749D43D15A7D8E33F69E45D2B044F8EF5E8F7C91C79DA51F6E3D794E3D26F8F772C2380EAD60EE9CC3BD173139AA1B682AAA219445B643C11385073979B45244E65D9883DEA0E420D30D74BDF5FCDEE9FAFFE7CAE511E6A152318C94E6F65487E2D2DB8396ED08F05A0366B2ACFFBD17C5AF5BC46106C1393029B444DF715B2735B50FC579BDC73410267547A61E24E8238E71C853EFF0E6CB2AAB3C8A4A4A0EC8A9F
-tmp_aes_key = B025233C2D0BE415F2D978000429D04908F4107759FED43ED2572C802894A431
-tmp_aes_iv = 857BAC258C90E735067828AB3249FF945DFAA7CF4E582BD785742656FC1BD488
+
encrypted_answer = DF3189558FD583B82CF64B6C2C3E88484E62725ECC2DF732B584895099CCAD440A998BBDE2BB0179175A9548B855A2A3CD6E0A9938A08336FA156EB741981D90917A97F8588A6B8CF936AC4ED81B02338A17CDE14012664BCE04AF8051193BF4718F0F531D4A5C8D2A6536906BCD618ECB90706BF5DF158E80988C5558F85A7174A5B908637986122B56799E552B3F4AD19C33A6B1090126EF0ABE1C846B6E118DEC833E685DFB60EB1E2B9E1CBD5C3F84E8E7DE6A4C041B125E51A2457630080B2E76913082AFF5BB4CD5167AF0CF74053585B1EC82D539E8DE3A20ED0A030DBF54E2CB628A6CAF5A232117DBFB31A6691EAE56972D56A68F78143BFDF8CFA8E230BC1D0D419DE96DA910135F221C9806F93E3743C74E649C09EC2320DF8AD42B211B51205F58AF99B6EAB6F2179FD21E5DC8065CE13C82EA76F97A9F1B8140F92BA4426EC42D65F913A998A9FF14C35F7F9C080D9AE0DEFF71BBDD717FE7F01B30909FDAC3E8DB7B94853D1A7C3FEF69B38CCB9CA915E87C3D15A083F6452CCA3F410F8902E6985D61B99689557F0337216B15242AA39EEE5240514CE255C46AC7E2D2EDB9EDDA6EB11E92D9656DADDB79AACB9FA1B4E2CB5AE74E99A1D226EFC104D96D674B9C856B3CFEEBFDF20D0C3DCA0156FC69BF1F74557FEBD75ADB04CC6F4E48F4B78464D80AA21A97E89A35E80406A2BD5D87AA191848DB7401A05D9A8C86B9BC17148CA13BABB199A6E0A9F9F5F9F57FBE269B642B634F4C9F09F634CC99307DE78B5C0239CB443A9DE9933008B143534200AF74F41178ADBA3C606180338DB4B4E8F6C62C2E44C29BC5
+tmp_aes_key = E5D04D3D974072B1E3BBE0A64AF5226F1B4AC9E12E3E1E1EF6BFB38312175BD8
+tmp_aes_iv = B6A314D270A63B8FB6AAE4839FD6FA2B964B9D05ED1593039031F1C9D2F819F2

Yielding:

-
answer_with_hash = 057EA9A2DFB071DFDCB8757F3BC4CFB0AC8024D1BA0D89B5FFBF89C2AF616F9E5946CF8B1DC67A60F3431AF7D8960009E9F2AB7AAA49961903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004776BC37BB62C99645DEAF4B851D25AE5D50422C362E5765012369F6EF34734A201E843E1B49917264842F5D2F61C5BB087EC9AC8AB5907DB3BDEA778C911D84F9B4D329AA543D0162C7F35060196BD50B0E4A02F47DED2BCB982B1F40BD8477851152F76C172D3EA7E82574304C2E3E51E259A6449BCFC9FEAEFFA51150EFFBFEB12231741C5ABD7C871732D853C6E5103F247B194CB266665B20A51CE1F66103E244685F2EA3E3A9C3CCE467665E15F194787BE3F9D53C876BDDD1D40C05696B68AE0D8416042BDEBB284A7D767F093CB1B2352D38D4BC7609DC37C250EBD7843247071CA590BD1FC03D517867A91EC64A9D5601D6D1AF43A216F67C75F5C8BF5FAE66FE206CD76AA6241B
-answer = BA0D89B5FFBF89C2AF616F9E5946CF8B1DC67A60F3431AF7D8960009E9F2AB7AAA49961903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004776BC37BB62C99645DEAF4B851D25AE5D50422C362E5765012369F6EF34734A201E843E1B49917264842F5D2F61C5BB087EC9AC8AB5907DB3BDEA778C911D84F9B4D329AA543D0162C7F35060196BD50B0E4A02F47DED2BCB982B1F40BD8477851152F76C172D3EA7E82574304C2E3E51E259A6449BCFC9FEAEFFA51150EFFBFEB12231741C5ABD7C871732D853C6E5103F247B194CB266665B20A51CE1F66103E244685F2EA3E3A9C3CCE467665E15F194787BE3F9D53C876BDDD1D40C05696B68AE0D8416042BDEBB284A7D767F093CB1B2352D38D4BC7609DC37C250EBD7843247071CA590BD1FC03D517867A91EC64A9D5601D6D1AF43A216F67C75F5C8BF5FAE66FE206CD76AA6241B
+
answer_with_hash = F4B92C626F44ADB3825A6534FCA04EC72F3D9345BA0D89B59B01C4BEE44FB388B6C029C744D2860E47EE4559FE7A601D03FA6CA2510F2F3603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001007064B314A50AE2361CC4F5EC9123FD1BBD28AE5AF6B788FA07B41122BBAB699B0C48DB346B5E98F0C8A1D73305F587878F759F81379DA3C4A87D1E884BA9AD31AE7F5F97D845C057347AC261C5F672373D61FE682AE867EE978DC72A0F09CE2C2E9F17432A58ACC45F4B0B262DFC474A0EF74941D76F75921A1014B5E1B964F5FB1F96E67E9ACFCA1658C0BA37FA392370C854711839EC23E8D99193FB781A736C61CE60769077622913663FC0F9B2291E62E089D3F80F3B5E75245FB843F673BCEAB8E2B9852D99F82F630E238806218CF0237C040767EA5D366A7D1AE64292DCD8D95E67832279DAD7588F2424567F6308E1045EFB035DC084795437E66FD58062AE66E74A2AD89FB3B3FD
+answer = BA0D89B59B01C4BEE44FB388B6C029C744D2860E47EE4559FE7A601D03FA6CA2510F2F3603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001007064B314A50AE2361CC4F5EC9123FD1BBD28AE5AF6B788FA07B41122BBAB699B0C48DB346B5E98F0C8A1D73305F587878F759F81379DA3C4A87D1E884BA9AD31AE7F5F97D845C057347AC261C5F672373D61FE682AE867EE978DC72A0F09CE2C2E9F17432A58ACC45F4B0B262DFC474A0EF74941D76F75921A1014B5E1B964F5FB1F96E67E9ACFCA1658C0BA37FA392370C854711839EC23E8D99193FB781A736C61CE60769077622913663FC0F9B2291E62E089D3F80F3B5E75245FB843F673BCEAB8E2B9852D99F82F630E238806218CF0237C040767EA5D366A7D1AE64292DCD8D95E67832279DAD7588F2424567F6308E1045EFB035DC084795437E66FD58062AE66E74A2AD89FB3B3FD

Generated payload (excluding transport headers/trailers):

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

Payload (de)serialization:

server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;
message_id 8, 801BC33C1BF5FAE66016C16328062AE66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4E8020000 (744 in decimal)E0020000 (736 in decimal) Message body length
nonce 24, 16FFBF89C2AF616F9E5946CF8B1DC67A609B01C4BEE44FB388B6C029C744D2860E Value generated by client in Step 1
server_nonce 40, 16F3431AF7D8960009E9F2AB7AAA49961947EE4559FE7A601D03FA6CA2510F2F36 Value received from server in Step 2
encrypted_answer 56, 596FE500200A5339E32F5A1462DFC5C1D83 6720B8598D2D15C770B80028E70F9113 8EEC21EE019354D5182CA6D3E39AE806 FCAF1426ECE956BAF3DDF5539D68EA82 7B667EC04A0F8FA66C4F36ADAE01300C 802B09FC27E24B24DE64D0E6CA76219A E2C547286AC6AB664EBFB436EF50C7EC 6B2587A2D8A896DF8C5252C5B6051FCA 453841658E06533394747188258C5E04 FB79E9FD28C56A32BDC327FA3B3AB474 4358BCA6743A67668892EA35AA8855A9 D23D8B65D1CA9012E3E85992B192935E CB0FF2724C11D522FB35B8881DF3F504 77114820B2DC611F1E610BF964EDE214 3BBB2A2AC9E684F62CFF0695315BEAC2 A0CBF8B562AE0551C2D251FA7B96268F B0AD4F20A42EB0EB72447417C7BDC22B 5890AA16B2DB6F38EBB708A6CF82B4AF 9B2FE2A867C9DD2924206164AB99932B 5CE3587044D553E43906A6274CA89D72 CFBE29679A4E2154C9014FF585D81061 9CD96960C63BBFE60ABC1550E90C6190 0C28EA3448861C8C4B1C4E27A4DC5D2E B48379905BF8171C341672BBF9CAE003 BAF44A6A0CC7158CE05CCDAA48152B6F D85B71328E4410B8875A9C2603C63086 C279A8874AE88AF25B9F8204B45DFF3A 26D749D43D15A7D8E33F69E45D2B044F 8EF5E8F7C91C79DA51F6E3D794E3D26F 8F772C2380EAD60EE9CC3BD173139AA1 B682AAA219445B643C11385073979B45 244E65D9883DEA0E420D30D74BDF5FCD EE9FAFFE7CAE511E6A152318C94E6F65 487E2D2DB8396ED08F05A0366B2ACFFB D17C5AF5BC46106C1393029B444DF715 B2735B50FC579BDC73410267547A61E2 4E8238E71C853EFF0E6CB2AAB3C8A4A4
A0EC8A9F
FE500200DF3189558FD583B82CF64B6C 2C3E88484E62725ECC2DF732B5848950 99CCAD440A998BBDE2BB0179175A9548 B855A2A3CD6E0A9938A08336FA156EB7 41981D90917A97F8588A6B8CF936AC4E D81B02338A17CDE14012664BCE04AF80 51193BF4718F0F531D4A5C8D2A653690 6BCD618ECB90706BF5DF158E80988C55 58F85A7174A5B908637986122B56799E 552B3F4AD19C33A6B1090126EF0ABE1C 846B6E118DEC833E685DFB60EB1E2B9E 1CBD5C3F84E8E7DE6A4C041B125E51A2 457630080B2E76913082AFF5BB4CD516 7AF0CF74053585B1EC82D539E8DE3A20 ED0A030DBF54E2CB628A6CAF5A232117 DBFB31A6691EAE56972D56A68F78143B FDF8CFA8E230BC1D0D419DE96DA91013 5F221C9806F93E3743C74E649C09EC23 20DF8AD42B211B51205F58AF99B6EAB6 F2179FD21E5DC8065CE13C82EA76F97A 9F1B8140F92BA4426EC42D65F913A998 A9FF14C35F7F9C080D9AE0DEFF71BBDD 717FE7F01B30909FDAC3E8DB7B94853D 1A7C3FEF69B38CCB9CA915E87C3D15A0 83F6452CCA3F410F8902E6985D61B996 89557F0337216B15242AA39EEE524051 4CE255C46AC7E2D2EDB9EDDA6EB11E92 D9656DADDB79AACB9FA1B4E2CB5AE74E 99A1D226EFC104D96D674B9C856B3CFE EBFDF20D0C3DCA0156FC69BF1F74557F EBD75ADB04CC6F4E48F4B78464D80AA2 1A97E89A35E80406A2BD5D87AA191848 DB7401A05D9A8C86B9BC17148CA13BAB B199A6E0A9F9F5F9F57FBE269B642B63 4F4C9F09F634CC99307DE78B5C0239CB 443A9DE9933008B143534200AF74F411 78ADBA3C606180338DB4B4E8F6C62C2E
44C29BC5
See below
@@ -570,13 +570,13 @@ answer = BA0D89B5FFBF89C2AF616F9E5946CF8B1DC67A60F3431AF7D8960009E9F2AB7AAA49961 - + - + @@ -594,13 +594,13 @@ answer = BA0D89B5FFBF89C2AF616F9E5946CF8B1DC67A60F3431AF7D8960009E9F2AB7AAA49961 - + - + @@ -609,34 +609,34 @@ answer = BA0D89B5FFBF89C2AF616F9E5946CF8B1DC67A60F3431AF7D8960009E9F2AB7AAA49961
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 = 091BF72733ACD769D90FD22C62B0A5274BFE05C91163521A43FBB747F66D38768821629CD6800E0B74D56A4229E2E70F00ED12E5CB0FAE35376B4DDBE5D38143C655B466043980213992A3D2C8AE0810FC81E7AB80E6C13D1B02F5D2062030E0D67C9F165511805F8E5E9129EE08FD2D710E946473ECAF37CC9F372F1C649CE03DEFD2EDC79F146428D6C3F675A19C84229000EE666E634D778E915F2E2ADEFF3C194715BB530A1C2185AC5C431641E85F61CB85DC34AF92D3627663DC603EF5B02F6C4C1849842E68BE4F185E6FD47DB479261BD4DA3DA525B879C5D3A7B6293531F462AD19F386A42515621774EBCC8E329C185575005561D0B1DB924B6446
+
b = C4714EF06165EC1263E7C02F5C98C59D8A79103CD5C51550948BEDAB3D9074250A6E98ECA699654BD702532013921FD6EB65F25974136BFEB07BACEA0F88464188E6B196EA97801C4D63CFE4DCEB4DC6F3CE59BFBAAED7CE525BDBEDAF35C6D81A5547C4D2D9C32568432C7B6868A2A09F1E97B99C515FB838ED92F980270DF0472854AB47040B426EC48E3D3EC6AAA560F9492385C1B0664258A3BEA1D2E96CCE930884E284494FDCB5A7C76A302D78AC0C92B161D07BA834504DFC112BC6E36E070AC1F6610B3E941433BE355CAEAEB68698921297C08EDCD49CC3008DBF577C4DAD15E08F55C761733ED555F586F1396D01A998138BC4A300F0655BA86F57

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

-
g_b = 70F24CC44C13D7EB184E0459D1FE5FCCA24CFA9CAE9CCE27BA49A4FD01986BCD8C5C8ECBB51D68259267AC3AF181D5C6DD52ED8E88C6B2952851A33FB8A9BF6810EE664422D4B82FCB4B24B460A62BFB075A6A6D0A00083A28BABF071906BCD96418A68EB2983B946B552F0341C75A4179EE786DD05DD668928B73F906076BED2E94360A70599FDBA6C2FEC1D6616C869233C386B9C3F3E2977E7E9DD68B27A0FB054FD62AE69C68FD6FB00E0BA5EF4521107504FBCA20D69F65FEBD518993594841B8B83B3144B99D02BB9D5F30490C626AA3672DA54A9FF27FF213D042A280D3EAEB8388CAB7D88A422533BCB646C24CCF692F41B34680A642A16C9134887A
+
g_b = A677087BC6E180E68FE728ED795EAB074FBB0210DDDBDA036D8EFAEEC03EEC96F7113A446B80B6AF0784198F47B7649B63B8D8C8DE35E8B51857F54D1207D267C55630F62208C0622611E393284743C6B1FEFACD3DE3E62E19F358F50AEFEC32EA1327A1095295FCA91F52F69C1D838CA857508B3CC86E252418282FD570A5F5D4BC02FE5498095B22799EEAD7ACA91AF495A3B2023D5C85B3A47F55720087582ED38EB99A2340B75F732B9E311E509D8E9DCE66A4AFF13F47BECD0A86342C76F45CC307BC33934942488D2ACAFC34DA13695503752634AE64D5693ED31EE5020376B36862A5CCA91CE1C871B03042D18FC93AC4352A810FA9F8317A1D968A90
7.1) generation of encrypted_data

Generated payload (excluding transport headers/trailers):

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

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, 16FFBF89C2AF616F9E5946CF8B1DC67A609B01C4BEE44FB388B6C029C744D2860E Value generated by client in Step 1
server_nonce 20, 16F3431AF7D8960009E9F2AB7AAA49961947EE4559FE7A601D03FA6CA2510F2F36 Value received from server in Step 2
g_a 300, 260FE0001004776BC37BB62C99645DEAF4B 851D25AE5D50422C362E5765012369F6 EF34734A201E843E1B49917264842F5D 2F61C5BB087EC9AC8AB5907DB3BDEA77 8C911D84F9B4D329AA543D0162C7F350 60196BD50B0E4A02F47DED2BCB982B1F 40BD8477851152F76C172D3EA7E82574 304C2E3E51E259A6449BCFC9FEAEFFA5 1150EFFBFEB12231741C5ABD7C871732 D853C6E5103F247B194CB266665B20A5 1CE1F66103E244685F2EA3E3A9C3CCE4 67665E15F194787BE3F9D53C876BDDD1 D40C05696B68AE0D8416042BDEBB284A 7D767F093CB1B2352D38D4BC7609DC37 C250EBD7843247071CA590BD1FC03D51 7867A91EC64A9D5601D6D1AF43A216F6
7C75F5C8
FE0001007064B314A50AE2361CC4F5EC 9123FD1BBD28AE5AF6B788FA07B41122 BBAB699B0C48DB346B5E98F0C8A1D733 05F587878F759F81379DA3C4A87D1E88 4BA9AD31AE7F5F97D845C057347AC261 C5F672373D61FE682AE867EE978DC72A 0F09CE2C2E9F17432A58ACC45F4B0B26 2DFC474A0EF74941D76F75921A1014B5 E1B964F5FB1F96E67E9ACFCA1658C0BA 37FA392370C854711839EC23E8D99193 FB781A736C61CE60769077622913663F C0F9B2291E62E089D3F80F3B5E75245F B843F673BCEAB8E2B9852D99F82F630E 238806218CF0237C040767EA5D366A7D 1AE64292DCD8D95E67832279DAD7588F 2424567F6308E1045EFB035DC0847954
37E66FD5
g_a diffie-hellman parameter
server_time 560, 4BF5FAE66 (1722703807 in decimal)8062AE66 (1722704512 in decimal) Server time
@@ -658,19 +658,19 @@ answer = BA0D89B5FFBF89C2AF616F9E5946CF8B1DC67A60F3431AF7D8960009E9F2AB7AAA49961 - + - + - + @@ -684,47 +684,47 @@ answer = BA0D89B5FFBF89C2AF616F9E5946CF8B1DC67A60F3431AF7D8960009E9F2AB7AAA49961

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 = 54B64366FFBF89C2AF616F9E5946CF8B1DC67A60F3431AF7D8960009E9F2AB7AAA4996190000000000000000FE00010070F24CC44C13D7EB184E0459D1FE5FCCA24CFA9CAE9CCE27BA49A4FD01986BCD8C5C8ECBB51D68259267AC3AF181D5C6DD52ED8E88C6B2952851A33FB8A9BF6810EE664422D4B82FCB4B24B460A62BFB075A6A6D0A00083A28BABF071906BCD96418A68EB2983B946B552F0341C75A4179EE786DD05DD668928B73F906076BED2E94360A70599FDBA6C2FEC1D6616C869233C386B9C3F3E2977E7E9DD68B27A0FB054FD62AE69C68FD6FB00E0BA5EF4521107504FBCA20D69F65FEBD518993594841B8B83B3144B99D02BB9D5F30490C626AA3672DA54A9FF27FF213D042A280D3EAEB8388CAB7D88A422533BCB646C24CCF692F41B34680A642A16C9134887A
-padding = 33D6693D06443AA59C4211E3
-tmp_aes_key = B025233C2D0BE415F2D978000429D04908F4107759FED43ED2572C802894A431
-tmp_aes_iv = 857BAC258C90E735067828AB3249FF945DFAA7CF4E582BD785742656FC1BD488
+
data = 54B643669B01C4BEE44FB388B6C029C744D2860E47EE4559FE7A601D03FA6CA2510F2F360000000000000000FE000100A677087BC6E180E68FE728ED795EAB074FBB0210DDDBDA036D8EFAEEC03EEC96F7113A446B80B6AF0784198F47B7649B63B8D8C8DE35E8B51857F54D1207D267C55630F62208C0622611E393284743C6B1FEFACD3DE3E62E19F358F50AEFEC32EA1327A1095295FCA91F52F69C1D838CA857508B3CC86E252418282FD570A5F5D4BC02FE5498095B22799EEAD7ACA91AF495A3B2023D5C85B3A47F55720087582ED38EB99A2340B75F732B9E311E509D8E9DCE66A4AFF13F47BECD0A86342C76F45CC307BC33934942488D2ACAFC34DA13695503752634AE64D5693ED31EE5020376B36862A5CCA91CE1C871B03042D18FC93AC4352A810FA9F8317A1D968A90
+padding = A151B081366094066064BE85
+tmp_aes_key = E5D04D3D974072B1E3BBE0A64AF5226F1B4AC9E12E3E1E1EF6BFB38312175BD8
+tmp_aes_iv = B6A314D270A63B8FB6AAE4839FD6FA2B964B9D05ED1593039031F1C9D2F819F2

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 = EB96A87DE7B9691D064FB262D606C3A2659ACEB875F559AA887202F6E76B20D3280A532034D341AF4B14A93272725C16C40A7C62CA59A54476D0654ADFA2BD50411E8E4A0C8AE5BD9E3A0B03943FF3E3654F81ED12BCFF434369D795E668929D6040AF67BBBFBAF9D2AF4ABD987ED10B60091392502534051095D613AF3A4A821AF4AFB7CDE91E4CB082F520E178195AF43E2FDD55E05369C13ADC797018351B45280B9CAA960A28B572587761D0A70E66CEB1F61D2F8550BB64798060B45823988E5CD52EFC8BF01E342FD5F0509AB3E97D3CF5FEA08A8A4A74B5BE9DD94C08FAB59E311D5C80700486C9B2623530D94D67A81EFEEEC8E0EC48B31F8B6C97D2D3EF375F7752ACE2E7C1CBD9B3DF1F52FC94AECEE66CF15812D4E2D134F3083A35785FA15CFE0D83F602E837EBE44C6980A6122B62B552EE981AC7EFD708A2E5AC74B087717B1079CFCBE1273AC18EA1
+
encrypted_data = C5A7061B4C92136CEF1CC3844E817A5AD33F20E7008B7971C674ED4A43782651DF651C4FD952D563E35B68BE227BE66C857D877D2B4CF5D0DEA3EB16DB02CB6AF0125F531B43E738C9E6F2F2FFE4FC49D3550D75E4B98AD16CD59CAF1D353EBB9A854F0E6E342EC1517B1B74C6D4BC89525BAAB0C199F2BAB1DD82569F629B396D4027526BDB3E2B17DDA4FAA1FE3F9FE144DAE8ABDD5B1A3677486FEF248ABBD242AD99E856EAF670A819956AA23BF00AA04F41138AB3F9B11EF1F4CA778D3360247189559CE662AD3A3B523A082C22340B0BC98F5E8D367B062EDA3EA38B40D87F8B1C454C9F2AC761925E2FF27D366E2FB47554732635804E595234ED81ED891E4B50E99DEDBC431ED1EC4E9E0DD02E5E5208EB6C3F6288354F861A32489582C006FB3BBB354707E0DAB0063BDCAE95038000E1FAF0271EDF1C77A9B69B7EE2A42E8DF31158BF66D504DB35098F7D

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

Payload (de)serialization:

set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
nonce 4, 16FFBF89C2AF616F9E5946CF8B1DC67A609B01C4BEE44FB388B6C029C744D2860E Value generated by client in Step 1
server_nonce 20, 16F3431AF7D8960009E9F2AB7AAA49961947EE4559FE7A601D03FA6CA2510F2F36 Value received from server in Step 2
g_b 36, 260FE00010070F24CC44C13D7EB184E0459 D1FE5FCCA24CFA9CAE9CCE27BA49A4FD 01986BCD8C5C8ECBB51D68259267AC3A F181D5C6DD52ED8E88C6B2952851A33F B8A9BF6810EE664422D4B82FCB4B24B4 60A62BFB075A6A6D0A00083A28BABF07 1906BCD96418A68EB2983B946B552F03 41C75A4179EE786DD05DD668928B73F9 06076BED2E94360A70599FDBA6C2FEC1 D6616C869233C386B9C3F3E2977E7E9D D68B27A0FB054FD62AE69C68FD6FB00E 0BA5EF4521107504FBCA20D69F65FEBD 518993594841B8B83B3144B99D02BB9D 5F30490C626AA3672DA54A9FF27FF213 D042A280D3EAEB8388CAB7D88A422533 BCB646C24CCF692F41B34680A642A16C
9134887A
FE000100A677087BC6E180E68FE728ED 795EAB074FBB0210DDDBDA036D8EFAEE C03EEC96F7113A446B80B6AF0784198F 47B7649B63B8D8C8DE35E8B51857F54D 1207D267C55630F62208C0622611E393 284743C6B1FEFACD3DE3E62E19F358F5 0AEFEC32EA1327A1095295FCA91F52F6 9C1D838CA857508B3CC86E252418282F D570A5F5D4BC02FE5498095B22799EEA D7ACA91AF495A3B2023D5C85B3A47F55 720087582ED38EB99A2340B75F732B9E 311E509D8E9DCE66A4AFF13F47BECD0A 86342C76F45CC307BC33934942488D2A CAFC34DA13695503752634AE64D5693E D31EE5020376B36862A5CCA91CE1C871 B03042D18FC93AC4352A810FA9F8317A
1D968A90
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 = 9ECD53C772EF30454E5F0E591AB8A9CBA5543176A4A1993F9F17D23AFC6D75317AEDA29D9AFD3B6A8DBAEE205E370D892533B11601DC581F52CA51CBCE8AB8C40938A68715F3857AE36F5C82870A5025C6835804E7AC75B6F173EB9DBA9DB115439C7101B563725F7EE6DE19A9977C22DC193DE6E8FB98B1AD392FCD4547A077F74ED6D50233154A2141762FC263CA1BA01A9C5F7D224D140CCF35AF78DA44D7951A73B58110E0735A7A2230AB9A4599B2A693BFAAD55FC428EBF9BC282B99025DCD1F5D95DE69FF35DAC5E111B8852868D6E4193E733699D476434C6556B9826D0E286FAF308792CE9125D6118B614EDE9365F7BB2128C98E1C89571F8CF736
+
auth_key = 3CA723940E9A49A23BCEAC8653F26A5886C7354691968120A8276301082956DE8601423EFDDA879ACDC32A0D867C914207B786C0E71C6FD24519A6D4C6430C747A5F913EEEE867EC2B30C7A11B12CDF7186DD238917D5F062BA43A45944A9FA34585C38B3EEDB8DE48672DCCCF5F43CDF8D541EF34575454CA71FE75C3F14B95A324C03837E758EE4E2C11E33EAA256CD5F81D5427032F3A1904D73D42639917F702BC8806913E90C779F8937562D1B860AEC06F0019664FBB5A4678A088075B4048AB787B666BCB7866B954C1169DB596BFBE5C1B2BAB4E04B5FBC2E2B9DEA5D8700EBF55DDD3F2B8EE309DD7D9F88F97E837FE5CAF3DC1AD00FAB1D99B2FC2
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 AC 23 29 C0 5F AE 66
-0010 | 8C 00 00 00 34 F7 CB 3B FF BF 89 C2 AF 61 6F 9E
-0020 | 59 46 CF 8B 1D C6 7A 60 F3 43 1A F7 D8 96 00 09
-0030 | E9 F2 AB 7A AA 49 96 19 49 74 0A 0F B8 56 B1 3F
-0040 | 16 95 62 66 95 06 35 B1
+
0000 | 00 00 00 00 00 00 00 00 01 6C 89 DD 80 62 AE 66
+0010 | 74 00 00 00 34 F7 CB 3B 9B 01 C4 BE E4 4F B3 88
+0020 | B6 C0 29 C7 44 D2 86 0E 47 EE 45 59 FE 7A 60 1D
+0030 | 03 FA 6C A2 51 0F 2F 36 74 5B 1F 2A 70 86 15 F6
+0040 | E1 F1 7A 92 AA D7 BF FE

Payload (de)serialization:

dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
message_id 8, 830A20D00BF5FAE66F85406008062AE66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16FFBF89C2AF616F9E5946CF8B1DC67A609B01C4BEE44FB388B6C029C744D2860E Value generated by client in Step 1
server_nonce 40, 16F3431AF7D8960009E9F2AB7AAA49961947EE4559FE7A601D03FA6CA2510F2F36 Value received from server in Step 2
encrypted_data 56, 340FE500100EB96A87DE7B9691D064FB262 D606C3A2659ACEB875F559AA887202F6 E76B20D3280A532034D341AF4B14A932 72725C16C40A7C62CA59A54476D0654A DFA2BD50411E8E4A0C8AE5BD9E3A0B03 943FF3E3654F81ED12BCFF434369D795 E668929D6040AF67BBBFBAF9D2AF4ABD 987ED10B60091392502534051095D613 AF3A4A821AF4AFB7CDE91E4CB082F520 E178195AF43E2FDD55E05369C13ADC79 7018351B45280B9CAA960A28B5725877 61D0A70E66CEB1F61D2F8550BB647980 60B45823988E5CD52EFC8BF01E342FD5 F0509AB3E97D3CF5FEA08A8A4A74B5BE 9DD94C08FAB59E311D5C80700486C9B2 623530D94D67A81EFEEEC8E0EC48B31F 8B6C97D2D3EF375F7752ACE2E7C1CBD9 B3DF1F52FC94AECEE66CF15812D4E2D1 34F3083A35785FA15CFE0D83F602E837 EBE44C6980A6122B62B552EE981AC7EF D708A2E5AC74B087717B1079CFCBE127
3AC18EA1
FE500100C5A7061B4C92136CEF1CC384 4E817A5AD33F20E7008B7971C674ED4A 43782651DF651C4FD952D563E35B68BE 227BE66C857D877D2B4CF5D0DEA3EB16 DB02CB6AF0125F531B43E738C9E6F2F2 FFE4FC49D3550D75E4B98AD16CD59CAF 1D353EBB9A854F0E6E342EC1517B1B74 C6D4BC89525BAAB0C199F2BAB1DD8256 9F629B396D4027526BDB3E2B17DDA4FA A1FE3F9FE144DAE8ABDD5B1A3677486F EF248ABBD242AD99E856EAF670A81995 6AA23BF00AA04F41138AB3F9B11EF1F4 CA778D3360247189559CE662AD3A3B52 3A082C22340B0BC98F5E8D367B062EDA 3EA38B40D87F8B1C454C9F2AC761925E 2FF27D366E2FB47554732635804E5952 34ED81ED891E4B50E99DEDBC431ED1EC 4E9E0DD02E5E5208EB6C3F6288354F86 1A32489582C006FB3BBB354707E0DAB0 063BDCAE95038000E1FAF0271EDF1C77 A9B69B7EE2A42E8DF31158BF66D504DB
35098F7D
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/InputStorePaymentPurpose.html b/data/web/corefork.telegram.org/type/InputStorePaymentPurpose.html index 158e6bd5e7..c1e11347c2 100644 --- a/data/web/corefork.telegram.org/type/InputStorePaymentPurpose.html +++ b/data/web/corefork.telegram.org/type/InputStorePaymentPurpose.html @@ -88,11 +88,11 @@ - + - +
message_id 8, 801AC2329C05FAE66016C89DD8062AE66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 48C000000 (140 in decimal)74000000 (116 in decimal) Message body length
nonce 24, 16FFBF89C2AF616F9E5946CF8B1DC67A609B01C4BEE44FB388B6C029C744D2860E Value generated by client in Step 1
server_nonce 40, 16F3431AF7D8960009E9F2AB7AAA49961947EE4559FE7A601D03FA6CA2510F2F36 Value received from server in Step 2
new_nonce_hash1 56, 1649740A0FB856B13F16956266950635B1745B1F2A708615F6E1F17A92AAD7BFFE 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.
inputStorePaymentStarsTopup Used to top up the Telegram Stars balance using the Play Store/App Store flow (official apps only).
inputStorePaymentStarsGift Used to top up the Telegram Stars balance of a friend using the Play Store/App Store flow (official apps only).