diff --git a/data/web/corefork.telegram.org/api/saved-messages.html b/data/web/corefork.telegram.org/api/saved-messages.html index 27ab36e27a..523ebcaa85 100644 --- a/data/web/corefork.telegram.org/api/saved-messages.html +++ b/data/web/corefork.telegram.org/api/saved-messages.html @@ -112,17 +112,17 @@ To add new dialogs to the saved dialog list, simply forward messages from any no

Saving messages from private chats with users with forward privacy enabled will add them to a saved dialog entry of a special anonymous user with id=2666000.

Clients may use the following pseudocode to manually populate the saved_peer_id of old layer < 170 messages stored in the local database.

-
// user_id is the ID of the current user.
+
// user_id is the ID of the current user.
 
 if (message.peer_id == user_id) {
   if (message.fwd_from.saved_from_peer) {
     message.saved_peer_id = message.fwd_from.saved_from_peer
   } elseif (message.fwd_from.from_id) {
-    message.saved_peer_id = user_id;
+    message.saved_peer_id = user_id;
   } elseif (message.fwd_from.from_name) {
-    message.saved_peer_id = 2666000;
+    message.saved_peer_id = 2666000;
   } else {
-    message.saved_peer_id = user_id;
+    message.saved_peer_id = user_id;
   }
 }

Sending (not forwarding from another dialog) new messages directly to ourselves will add them to a saved dialog entry with ourselves.

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 c3c43250c4..cf3151212e 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 44 59 0D 00 54 27 C5 65
-0010 | 14 00 00 00 F1 8E 7E BE 85 D5 BF 80 B1 89 FC 0C
-0020 | A6 C3 7E AB 82 79 C7 30
+
0000 | 00 00 00 00 00 00 00 00 1C 5D 0E 00 90 2E C5 65
+0010 | 14 00 00 00 F1 8E 7E BE 80 0B A7 18 BC 0E 7E A3
+0020 | F5 90 50 67 F7 2A 95 64

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 64 86 F8 54 27 C5 65
-0010 | 84 00 00 00 63 24 16 05 85 D5 BF 80 B1 89 FC 0C
-0020 | A6 C3 7E AB 82 79 C7 30 63 D2 48 C5 E0 9A 63 60
-0030 | 96 C3 54 3C 76 16 A3 5E 08 21 48 96 46 FB B5 25
-0040 | 9B 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 80 52 2D 90 2E C5 65
+0010 | C4 00 00 00 63 24 16 05 80 0B A7 18 BC 0E 7E A3
+0020 | F5 90 50 67 F7 2A 95 64 D6 A3 85 6C 3E 35 03 4B
+0030 | 03 00 6E FB C2 7F 6E EF 08 25 2D 69 08 47 91 B6
+0040 | D1 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 = 2398332033189619099
-

Decompose into 2 prime cofactors p < q: 2398332033189619099 = 1477226173 * 1623537463

-
p = 1477226173
-q = 1623537463
+
pq = 2678912837636699857
+

Decompose into 2 prime cofactors p < q: 2678912837636699857 = 1396420087 * 1918414711

+
p = 1396420087
+q = 1918414711

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 21 48 96 46 FB B5 25 9B 00 00 00
-0010 | 04 58 0C AE BD 00 00 00 04 60 C5 37 37 00 00 00
-0020 | 85 D5 BF 80 B1 89 FC 0C A6 C3 7E AB 82 79 C7 30
-0030 | 63 D2 48 C5 E0 9A 63 60 96 C3 54 3C 76 16 A3 5E
-0040 | 13 BC 04 D0 73 97 1F A0 1B 33 FD 07 4F CC 12 3C
-0050 | 33 BB 95 FC 8C DE 98 01 0B AE 62 05 42 9E 55 47
+
0000 | 95 5F F5 A9 08 25 2D 69 08 47 91 B6 D1 00 00 00
+0010 | 04 53 3B AD F7 00 00 00 04 72 58 AF 77 00 00 00
+0020 | 80 0B A7 18 BC 0E 7E A3 F5 90 50 67 F7 2A 95 64
+0030 | D6 A3 85 6C 3E 35 03 4B 03 00 6E FB C2 7F 6E EF
+0040 | 10 CA 08 B0 00 13 DB 56 A7 C3 8D FC E6 08 E2 50
+0050 | DF A3 46 47 9E 07 5A 31 C0 7B C0 64 C0 66 1C E6
 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 = 1623537463
- + - + - + - + - + - + @@ -291,39 +291,39 @@ q = 1623537463

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 = 955FF5A90821489646FBB5259B00000004580CAEBD0000000460C5373700000085D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E13BC04D073971FA01B33FD074FCC123C33BB95FC8CDE98010BAE6205429E554702000000
-random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C5B5569A9FE5E2472F7B962426E0ADEA1BB4030BEE3AA6A292908D5FD3408F5110F44E06601203D91CCF55D3CE7BA8B5FA85CBD4A77400A80B7F2FA0284C1FAC
+
data = 955FF5A908252D69084791B6D100000004533BADF7000000047258AF77000000800BA718BC0E7EA3F5905067F72A9564D6A3856C3E35034B03006EFBC27F6EEF10CA08B00013DB56A7C38DFCE608E250DFA346479E075A31C07BC064C0661CE602000000
+random_padding_bytes = 5602F0EF85C8F5C01164BE7AE51F8853BFC80F37140F9489ACDF5B9E85D22F97EC9D7D094053E4C8C035AD6F08BEA39D94C7B50F74D9EF318AADBB025DC5EB9D2F4898BC4BD969124E5ED89EDBBD680C11B882CA01ECEBA7F5CEF9C2

And this is the output:

-
encrypted_data = AB09AB1EAC21B3D1F9DAAF1684D4DC1D8216B3DC47A59FB8B5EF0AAADBCF8F9455061CE2D95CCEB91CD3D2EFDAEE11D6E7241D8A7B57E1AB937EF9BF5227E79B3EFBB06056B155ECE06DF6A5EDEBD013D4F6AC5F0BDFCDE1CBD3B7AFE213C230704FBC2E8DA608BD885CE7B624781E48341636ED752464A03E5806904B723208B6D953070A8B7A822F039A8051FA5ADED15B362850F5813B5F7F13D04657550346BD76380841DEE24F5993E8E8EB4AEADEBE6EBD72F0114D95AB85A9DE322596B6EE226F4D46952C1657A0FF474CD660C490FA6C17449625FD6D91C6B4700F911AEC5D58829014686411AB1B0D723C1FE66F2D1D9A9F9D234BB5ABAC1ED22DD1
+
encrypted_data = 9ADEE1E1701055AC3B88E379136412DB5A0AC411CC4F2521BFEDFC4A8D5550955B79B4AB3785A575B4CA81B4E24A199BD1BD14B74107C5F1D93AA1369222018B1727AD469A055A2B98FB1D27190FACAA22D35391E5F6C6E5A7E9935003272F8A95A8608D9AB2BEDA7D47470F441B204A9CBDB4A8A44771CD6AA20B1514DBD75620DA1723D37E7BA13BAB536EA869B14D3C3608F85EFAE52825E7F6EAB56A1B9AED7EB82B3B57DC4900CF91C62B59B507188B5FE33986E7E45C5EB00093E0062144B5B9FB2412D835DDA7961D41AC39D201C72DD8A6EEC47D96B012801F35F62B7EF6BDDE0EC124AAB6A2C4EBB5A9F6207B8BF62A650B8C0C9F7C51DECF4748A7

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

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, 844590D005427C5651C5D0E00902EC565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1685D5BF80B189FC0CA6C37EAB8279C730800BA718BC0E7EA3F5905067F72A9564 Random number
message_id 8, 8016486F85427C5650180522D902EC565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 484000000 (132 in decimal)C4000000 (196 in decimal) Message body length
nonce 24, 1685D5BF80B189FC0CA6C37EAB8279C730800BA718BC0E7EA3F5905067F72A9564 Value generated by client in Step 1
server_nonce 40, 1663D248C5E09A636096C3543C7616A35ED6A3856C3E35034B03006EFBC27F6EEF Server-generated random number
pq 56, 120821489646FBB5259B000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2398332033189619099
08252D69084791B6D1000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2678912837636699857
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
pq 4, 120821489646FBB5259B000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2398332033189619099
08252D69084791B6D1000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2678912837636699857
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p 16, 804580CAEBD000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1477226173
04533BADF7000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1396420087
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 24, 80460C53737000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1623537463
047258AF77000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1918414711
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce 32, 1685D5BF80B189FC0CA6C37EAB8279C730800BA718BC0E7EA3F5905067F72A9564 Value generated by client in Step 1
server_nonce 48, 1663D248C5E09A636096C3543C7616A35ED6A3856C3E35034B03006EFBC27F6EEF Value received from server in Step 2
new_nonce 64, 3213BC04D073971FA01B33FD074FCC123C 33BB95FC8CDE98010BAE6205429E554710CA08B00013DB56A7C38DFCE608E250 DFA346479E075A31C07BC064C0661CE6 Client-generated random number
@@ -345,7 +345,7 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C - + @@ -363,25 +363,25 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C - + @@ -402,47 +402,47 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
6) Server responds with:

Received payload (excluding transport headers/trailers):

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

Payload (de)serialization:

server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
message_id 8, 85C940A005527C565F0CF0E00902EC565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1685D5BF80B189FC0CA6C37EAB8279C730800BA718BC0E7EA3F5905067F72A9564 Value generated by client in Step 1
server_nonce 40, 1663D248C5E09A636096C3543C7616A35ED6A3856C3E35034B03006EFBC27F6EEF Value received from server in Step 2
p 56, 804580CAEBD000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1477226173
04533BADF7000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1396420087
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 64, 80460C53737000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1623537463
047258AF77000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1918414711
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
encrypted_data 80, 260FE000100AB09AB1EAC21B3D1F9DAAF16 84D4DC1D8216B3DC47A59FB8B5EF0AAA DBCF8F9455061CE2D95CCEB91CD3D2EF DAEE11D6E7241D8A7B57E1AB937EF9BF 5227E79B3EFBB06056B155ECE06DF6A5 EDEBD013D4F6AC5F0BDFCDE1CBD3B7AF E213C230704FBC2E8DA608BD885CE7B6 24781E48341636ED752464A03E580690 4B723208B6D953070A8B7A822F039A80 51FA5ADED15B362850F5813B5F7F13D0 4657550346BD76380841DEE24F5993E8 E8EB4AEADEBE6EBD72F0114D95AB85A9 DE322596B6EE226F4D46952C1657A0FF 474CD660C490FA6C17449625FD6D91C6 B4700F911AEC5D58829014686411AB1B 0D723C1FE66F2D1D9A9F9D234BB5ABAC
1ED22DD1
FE0001009ADEE1E1701055AC3B88E379 136412DB5A0AC411CC4F2521BFEDFC4A 8D5550955B79B4AB3785A575B4CA81B4 E24A199BD1BD14B74107C5F1D93AA136 9222018B1727AD469A055A2B98FB1D27 190FACAA22D35391E5F6C6E5A7E99350 03272F8A95A8608D9AB2BEDA7D47470F 441B204A9CBDB4A8A44771CD6AA20B15 14DBD75620DA1723D37E7BA13BAB536E A869B14D3C3608F85EFAE52825E7F6EA B56A1B9AED7EB82B3B57DC4900CF91C6 2B59B507188B5FE33986E7E45C5EB000 93E0062144B5B9FB2412D835DDA7961D 41AC39D201C72DD8A6EEC47D96B01280 1F35F62B7EF6BDDE0EC124AAB6A2C4EB B5A9F6207B8BF62A650B8C0C9F7C51DE
CF4748A7
Value generated above
@@ -464,13 +464,13 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C - + - + @@ -482,19 +482,19 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C - + - + - + @@ -502,20 +502,20 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C

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

-
encrypted_answer = E671FEFBB4B2A99FB2D7196D1FFEB469789E2B34A0CCF23A20F442C67C8E9C0F88E0AB61AA53168D3DB9CE492D4F23F35A8762B3479309AADCF916AC20AE34F65826DC16EE0A0218729C22A686F84D1814336658A8B87616ED856CC8C6B283F49068CE5A943540C969BA6D74CD15E478EC4C9E1A5672A06500C09B19FACD08749085DCC095902047E86A8F9046D620423F5FF8ED038E1CE3A4BC2036BB79C0528E950F4558ED19C0A62D450C41E9A3248593DECE4888DA2B44F9EB938E29FDDD956083C5346D30D58B56EE95526D7B6B83E59BA43F5DFBEFAE6C34A838944BCD6DA248646891220108CA36C77E894A6A6A6953857FA41DDE73DE9B566B328CC9F826374B489C22D50C178A2CA480809AF07CFE0881A4CE4269191EB6341FCFBBF50BCB57E2EFE0A334846FAF1EECB381FBBD1EF66C5E2CF5B71F35E40F3C788BE3584CD10F8715CA7C849FE7427B50F67D1D90FBBF964B2A473E2A861BC7DA354C7D466C4570C0DA5946DF6703F2D5D1DE1799A2AF3D4E0684854609BBE9C607E7CFA14BD9DE9960DD077C3A4349167301754C724B772364FDA97131DA1C229A5243176B9C4F885D2BDDA9059BBD1830709E6463BEF62ACAC28BE7D94F7A0D77F4BA821A75EC87CAD6A70A83BA1162F6718BC441E3C242032F918204B66C6E95DE38835C88E01CA45338FE6BD36E6D4E94D98923CA85EA694A342D6E913B95D6BE40D7B500028DD4B0B8714D8169E4F0FA40B7B3BE861A827387BAA1FCB1BF9E72F26DEB559286ACCE0A65607020283D91BE22C125E5B58AD1EAE034A7EB89666CEA8C0B0C51E1F59EA2557FDD56E881
-tmp_aes_key = B64E760C2EA83BA9EDA2DA7E5826A518B6D82CE469DE416A140B25AACB7AA41B
-tmp_aes_iv = 279F8786E2A347AF1284D523F2EF9589DE890EEE25235638E1CA610A13BC04D0
+
encrypted_answer = D82BAED9A026FF5D2C6E90A7E0CD404CC945B7C871C9AE29FD2AB084B5E5866E4EDB5024CA86B6AEFB1E9B9A50A5D048E719DB3C336189A4D34EE008759585C37277EFC8576802945BA75E205B6CCC42B59134F92B4D70FFCE91224FC4AB6CABA1D3DE6FA2C876770E9199628B13880C7A7A52A4EA02C9E4F81B75314278A1FFA738E13B38348A0BBB7172D2B41FB183F22BA66754F96F060C103ECC8EE9274D98D7D995C8247ED7F3A5B4279E5419AC5980F13885C27958F4F9D8E24BEE354C8975ABF55C5748F1D93932FCB8DA034077C5E6D9654A903A02B373E9318A42EEA0D82B35D4676B869BE9FD19D6A9AB449C9AA4C8D7B03D038219D2A1342C31C369EB573F4AD8312CD6E33F59EDF2BC3D2D42C009556E0CCCFFB52005B4CFCDC29486C0C3958467E9029560F7DABE76D05A7F8ADCE5ABC547F399F68EF643EF525B1DD03FB7BDD7E4EC7580572957F1967988FEBAC3FC06C0758EB82BD219E4F4E12534AB5012BE48D00F92075168894F3C605A761758BC8C7EEF5DA72F8D798EAE148F448568C29858CB89936434D18AA03BCBC9C9BF8D86B0493FA58C8D59475A4499255DC1B215C7E21DCF0D3F1D6CF037B9BA80A7BA9710E9871A32A783299515E0380371666085F7991FB9B2FADC9090D49B4C1B85E5B18A72218385C8B5C08F4FF7F3E11EB40860532BF4E5D5CBA2113046399314CA83ED6F042B2208EDC2480DF30DCEE08F6AF8AACD15625BC84B32A296E477167FBE95F0560CED82C816C5AEB4651BAFD0C7B41AB39FF36F9D94A35CDDF05DC1357769C4E6A6198983583822FBCFA1F50D2BBB74C2EDCD75EE
+tmp_aes_key = 1694A711A6114B6BBABB94EE9CD3EE5351BD3878EBB313CE8AC4738062E9AD92
+tmp_aes_iv = BED33E660AAB7A16C00377B33A6054E28E405B895CA9CF3DE96DDAA610CA08B0

Yielding:

-
answer_with_hash = EB47937161D3E7E6E038995C4465F21BBB695AC2BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010073BE87B3EDC77461298DDECD1B9F9E37301A903111767C4B27BC97A6BF6EACD991CA46BBCA1BB63DF693D128C5D1B7142BA62ECA5C6C404AC30D1748E4341C92BD3258729A702D255A12381BB95DC13909505F9664EC2EF58366D00618258549B148955C05081C722D4B4DCA51E1B24E840BB2F09928C85B446058C7C810A4E650CCF0A1F61B6FF562FB2C7B902DDAEC000FB28D9703CB45F6FB143C896B6E17FBBEA9817A74259615BD8D884714659EA06B85FD9FF96CB14B4846FF46451D088AFDDCACD60C0C90741E9708FF664361E6B81E62E6AA95A4BCDF4E7C4AE9722112E3684937BBDEA97289012BFA0B4092F5F3D9E65447B00FA549A8F171C35B875527C565360299833531B6A5
-answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010073BE87B3EDC77461298DDECD1B9F9E37301A903111767C4B27BC97A6BF6EACD991CA46BBCA1BB63DF693D128C5D1B7142BA62ECA5C6C404AC30D1748E4341C92BD3258729A702D255A12381BB95DC13909505F9664EC2EF58366D00618258549B148955C05081C722D4B4DCA51E1B24E840BB2F09928C85B446058C7C810A4E650CCF0A1F61B6FF562FB2C7B902DDAEC000FB28D9703CB45F6FB143C896B6E17FBBEA9817A74259615BD8D884714659EA06B85FD9FF96CB14B4846FF46451D088AFDDCACD60C0C90741E9708FF664361E6B81E62E6AA95A4BCDF4E7C4AE9722112E3684937BBDEA97289012BFA0B4092F5F3D9E65447B00FA549A8F171C35B875527C565360299833531B6A5
+
answer_with_hash = 9F9876C0901CCD5F876B90AF170A0537BA6A9029BA0D89B5800BA718BC0E7EA3F5905067F72A9564D6A3856C3E35034B03006EFBC27F6EEF03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001007F300A42E28D0930B74A8EDC8EA47CEF91005DAC0EB568814CAE16890572EB063E7D5C0D0E22F5F8B70744FC091806B34374F130E56FE4C5B79CB038124E6612460CAD9E4D66F2061FD8EBB051CCEAE3E5E8C4D908E043B09C8ED2ED2AE60C7BEE2420F093B9FA8598C9C7DF765F04E9A628678A9D1932B2CECE9D5DA091CFB603BC45F31083C495B2169BC4CC2B67FEB2EAE6A2F6F8FD7EBFD1BAF3A7C12F8828C35C84641311F0A80A3244AC443F9EF80684F5C21F216AD2738D0E2AED09E6680A0E879AEA037B66D265037260CFBF7BB5B0F3BA8A40DC396AC4874B33B0A9160D19FECECE8060566B4CA5BC252DEF14637B12C998C696954667C419F1D2BA902EC565005886AFC04B2171
+answer = BA0D89B5800BA718BC0E7EA3F5905067F72A9564D6A3856C3E35034B03006EFBC27F6EEF03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001007F300A42E28D0930B74A8EDC8EA47CEF91005DAC0EB568814CAE16890572EB063E7D5C0D0E22F5F8B70744FC091806B34374F130E56FE4C5B79CB038124E6612460CAD9E4D66F2061FD8EBB051CCEAE3E5E8C4D908E043B09C8ED2ED2AE60C7BEE2420F093B9FA8598C9C7DF765F04E9A628678A9D1932B2CECE9D5DA091CFB603BC45F31083C495B2169BC4CC2B67FEB2EAE6A2F6F8FD7EBFD1BAF3A7C12F8828C35C84641311F0A80A3244AC443F9EF80684F5C21F216AD2738D0E2AED09E6680A0E879AEA037B66D265037260CFBF7BB5B0F3BA8A40DC396AC4874B33B0A9160D19FECECE8060566B4CA5BC252DEF14637B12C998C696954667C419F1D2BA902EC565005886AFC04B2171

Generated payload (excluding transport headers/trailers):

-
0000 | BA 0D 89 B5 85 D5 BF 80 B1 89 FC 0C A6 C3 7E AB
-0010 | 82 79 C7 30 63 D2 48 C5 E0 9A 63 60 96 C3 54 3C
-0020 | 76 16 A3 5E 03 00 00 00 FE 00 01 00 C7 1C AE B9
+
0000 | BA 0D 89 B5 80 0B A7 18 BC 0E 7E A3 F5 90 50 67
+0010 | F7 2A 95 64 D6 A3 85 6C 3E 35 03 4B 03 00 6E FB
+0020 | C2 7F 6E EF 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 = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35
 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 | 73 BE 87 B3 ED C7 74 61 29 8D DE CD 1B 9F 9E 37
-0140 | 30 1A 90 31 11 76 7C 4B 27 BC 97 A6 BF 6E AC D9
-0150 | 91 CA 46 BB CA 1B B6 3D F6 93 D1 28 C5 D1 B7 14
-0160 | 2B A6 2E CA 5C 6C 40 4A C3 0D 17 48 E4 34 1C 92
-0170 | BD 32 58 72 9A 70 2D 25 5A 12 38 1B B9 5D C1 39
-0180 | 09 50 5F 96 64 EC 2E F5 83 66 D0 06 18 25 85 49
-0190 | B1 48 95 5C 05 08 1C 72 2D 4B 4D CA 51 E1 B2 4E
-01A0 | 84 0B B2 F0 99 28 C8 5B 44 60 58 C7 C8 10 A4 E6
-01B0 | 50 CC F0 A1 F6 1B 6F F5 62 FB 2C 7B 90 2D DA EC
-01C0 | 00 0F B2 8D 97 03 CB 45 F6 FB 14 3C 89 6B 6E 17
-01D0 | FB BE A9 81 7A 74 25 96 15 BD 8D 88 47 14 65 9E
-01E0 | A0 6B 85 FD 9F F9 6C B1 4B 48 46 FF 46 45 1D 08
-01F0 | 8A FD DC AC D6 0C 0C 90 74 1E 97 08 FF 66 43 61
-0200 | E6 B8 1E 62 E6 AA 95 A4 BC DF 4E 7C 4A E9 72 21
-0210 | 12 E3 68 49 37 BB DE A9 72 89 01 2B FA 0B 40 92
-0220 | F5 F3 D9 E6 54 47 B0 0F A5 49 A8 F1 71 C3 5B 87
-0230 | 55 27 C5 65
+0130 | 7F 30 0A 42 E2 8D 09 30 B7 4A 8E DC 8E A4 7C EF +0140 | 91 00 5D AC 0E B5 68 81 4C AE 16 89 05 72 EB 06 +0150 | 3E 7D 5C 0D 0E 22 F5 F8 B7 07 44 FC 09 18 06 B3 +0160 | 43 74 F1 30 E5 6F E4 C5 B7 9C B0 38 12 4E 66 12 +0170 | 46 0C AD 9E 4D 66 F2 06 1F D8 EB B0 51 CC EA E3 +0180 | E5 E8 C4 D9 08 E0 43 B0 9C 8E D2 ED 2A E6 0C 7B +0190 | EE 24 20 F0 93 B9 FA 85 98 C9 C7 DF 76 5F 04 E9 +01A0 | A6 28 67 8A 9D 19 32 B2 CE CE 9D 5D A0 91 CF B6 +01B0 | 03 BC 45 F3 10 83 C4 95 B2 16 9B C4 CC 2B 67 FE +01C0 | B2 EA E6 A2 F6 F8 FD 7E BF D1 BA F3 A7 C1 2F 88 +01D0 | 28 C3 5C 84 64 13 11 F0 A8 0A 32 44 AC 44 3F 9E +01E0 | F8 06 84 F5 C2 1F 21 6A D2 73 8D 0E 2A ED 09 E6 +01F0 | 68 0A 0E 87 9A EA 03 7B 66 D2 65 03 72 60 CF BF +0200 | 7B B5 B0 F3 BA 8A 40 DC 39 6A C4 87 4B 33 B0 A9 +0210 | 16 0D 19 FE CE CE 80 60 56 6B 4C A5 BC 25 2D EF +0220 | 14 63 7B 12 C9 98 C6 96 95 46 67 C4 19 F1 D2 BA +0230 | 90 2E C5 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, 801DCB1C75527C56501E0CED3902EC565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4C4020000 (708 in decimal)AC020000 (684 in decimal) Message body length
nonce 24, 1685D5BF80B189FC0CA6C37EAB8279C730800BA718BC0E7EA3F5905067F72A9564 Value generated by client in Step 1
server_nonce 40, 1663D248C5E09A636096C3543C7616A35ED6A3856C3E35034B03006EFBC27F6EEF Value received from server in Step 2
encrypted_answer 56, 596FE500200E671FEFBB4B2A99FB2D7196D 1FFEB469789E2B34A0CCF23A20F442C6 7C8E9C0F88E0AB61AA53168D3DB9CE49 2D4F23F35A8762B3479309AADCF916AC 20AE34F65826DC16EE0A0218729C22A6 86F84D1814336658A8B87616ED856CC8 C6B283F49068CE5A943540C969BA6D74 CD15E478EC4C9E1A5672A06500C09B19 FACD08749085DCC095902047E86A8F90 46D620423F5FF8ED038E1CE3A4BC2036 BB79C0528E950F4558ED19C0A62D450C 41E9A3248593DECE4888DA2B44F9EB93 8E29FDDD956083C5346D30D58B56EE95 526D7B6B83E59BA43F5DFBEFAE6C34A8 38944BCD6DA248646891220108CA36C7 7E894A6A6A6953857FA41DDE73DE9B56 6B328CC9F826374B489C22D50C178A2C A480809AF07CFE0881A4CE4269191EB6 341FCFBBF50BCB57E2EFE0A334846FAF 1EECB381FBBD1EF66C5E2CF5B71F35E4 0F3C788BE3584CD10F8715CA7C849FE7 427B50F67D1D90FBBF964B2A473E2A86 1BC7DA354C7D466C4570C0DA5946DF67 03F2D5D1DE1799A2AF3D4E0684854609 BBE9C607E7CFA14BD9DE9960DD077C3A 4349167301754C724B772364FDA97131 DA1C229A5243176B9C4F885D2BDDA905 9BBD1830709E6463BEF62ACAC28BE7D9 4F7A0D77F4BA821A75EC87CAD6A70A83 BA1162F6718BC441E3C242032F918204 B66C6E95DE38835C88E01CA45338FE6B D36E6D4E94D98923CA85EA694A342D6E 913B95D6BE40D7B500028DD4B0B8714D 8169E4F0FA40B7B3BE861A827387BAA1 FCB1BF9E72F26DEB559286ACCE0A6560 7020283D91BE22C125E5B58AD1EAE034 A7EB89666CEA8C0B0C51E1F59EA2557F
DD56E881
FE500200D82BAED9A026FF5D2C6E90A7 E0CD404CC945B7C871C9AE29FD2AB084 B5E5866E4EDB5024CA86B6AEFB1E9B9A 50A5D048E719DB3C336189A4D34EE008 759585C37277EFC8576802945BA75E20 5B6CCC42B59134F92B4D70FFCE91224F C4AB6CABA1D3DE6FA2C876770E919962 8B13880C7A7A52A4EA02C9E4F81B7531 4278A1FFA738E13B38348A0BBB7172D2 B41FB183F22BA66754F96F060C103ECC 8EE9274D98D7D995C8247ED7F3A5B427 9E5419AC5980F13885C27958F4F9D8E2 4BEE354C8975ABF55C5748F1D93932FC B8DA034077C5E6D9654A903A02B373E9 318A42EEA0D82B35D4676B869BE9FD19 D6A9AB449C9AA4C8D7B03D038219D2A1 342C31C369EB573F4AD8312CD6E33F59 EDF2BC3D2D42C009556E0CCCFFB52005 B4CFCDC29486C0C3958467E9029560F7 DABE76D05A7F8ADCE5ABC547F399F68E F643EF525B1DD03FB7BDD7E4EC758057 2957F1967988FEBAC3FC06C0758EB82B D219E4F4E12534AB5012BE48D00F9207 5168894F3C605A761758BC8C7EEF5DA7 2F8D798EAE148F448568C29858CB8993 6434D18AA03BCBC9C9BF8D86B0493FA5 8C8D59475A4499255DC1B215C7E21DCF 0D3F1D6CF037B9BA80A7BA9710E9871A 32A783299515E0380371666085F7991F B9B2FADC9090D49B4C1B85E5B18A7221 8385C8B5C08F4FF7F3E11EB40860532B F4E5D5CBA2113046399314CA83ED6F04 2B2208EDC2480DF30DCEE08F6AF8AACD 15625BC84B32A296E477167FBE95F056 0CED82C816C5AEB4651BAFD0C7B41AB3 9FF36F9D94A35CDDF05DC1357769C4E6 A6198983583822FBCFA1F50D2BBB74C2
EDCD75EE
See below
@@ -570,13 +570,13 @@ answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35 - + - + @@ -594,13 +594,13 @@ answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35 - + - + @@ -609,34 +609,34 @@ answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35
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 = F9D5F8A3A43686CC4EC12727388730C47ACDB2ABC2AC2CA25BD5DDA1389FE47B7BBA499BF3C396BDBF6923FE590E9772073C8C6406C29FCFEA1AD41513C26348DF2DC03042CB44426670E2C0D6494C9B26413BF021BC3AC29BA44B78B5EF5EE7EB07FBB5A6D4663F49DF4CA3B73380322B4A8C27CAAD2ED81C0D06217428C3EB57C2D96DA00C6C8E851A1DF03237276F4FE8147359205A7AF7EFAB0E251DCE371D8E44F124AF6E672C78F7F8753D7FB335FE0B299C7432173DB85FF1DBAB1D2C24B78EF3C8AA400923211673D56C0F398CCCDCB2EA36D5FE38E7D3B64A3D160EF7B0FF682E7A9D49FCBFFEE5C21343B940285FE77E8DE18C6A8706132FA432C7
+
b = 2EC303EC47EBF359A8EF58553C5765B4350F0DB8BD1E88289C840D3921DC5DB3E583843026A862DFF6BABBD4128D5425355B2098CEBE676E45752DF24B80ACB39D66C214B318F8CE58DA27812278657B0FC3DA942DCDA52D2FDB5884C36FFB4540BF39EE43CA92F6F1921B152E0669BE3A955A03682E0BFDF1D5B209864FEDB2250B946C3F5D252E5E9905422944B5292A46F6E6CDA543981C2B608EAB1BA17104352972CA57866D285FE6C2660E416977913CDF28D3EC17BCE02F17052DDAADD5710F624C8A0E6790F4C97A245A6584C87DE00F4E9673DE92E406A61D247C5E8BB615A59F91EA73D28DCC95D235CC6CA412CA3E185116ED6CF963D2C15C23EB

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

-
g_b = 40D09EB7C6A7B0717B564A74A7C11B3E34809E3124C099892293A21DC0B576A417DAF6BE9DB6D8BFFD959AA40E4D60AD66134A3FAF69B815ED71A8E7E84BD405FBAE96B69DE961538959526FD77AA534E1F6B10916D6D112A38D330C2937333D82B5FDF97B5A7FF3E56AA51E507A0614FE379929BF90A02860AD82E48CE48E2C8A3B7FD853B6AB9EBEE5CEDD1EFC7BADBD3B05704CC2DD7FF3130B0FA7F4DA041DD6C7EBC8C2FDFBBBF03181A306966469226F361EE479C5F9DB8082A00598AB42DBC45397AEF1DD7EDEDBC8D5B6A6F85F995DA60B55014CD26BA9B033C46118608097D50470EB69E171D276429BB6D53F4A13FF717EB9E23EA8D51C76698368
+
g_b = 392EFB02FF06BE541AE2836DE1C443530B1CCE635FF07D9817B3532644A0CF3C5F4BD8F8C53F40E00AFEE41D1C478F7A7ACDAAE1601E52C42C86436A816F3AB39DACDB60AF51E04A7E9C36DD8EF081FA2E6DFBCD2FB24C312B02A45413C5D18A7E1D1B6C16FFB582D1C1D538946C8269ED1AE18A5FCFBAE4FCE2D4835D80ACC6400153CE43C54F3A9ABAB65F048E8661476AB2C4FAD76BE6B46B407A5419F92A19431D09BB2265A3135DC7F41BF18D88502997A1AD3E96ED533BBB409A9D3A51AE17FA2B7BFC81657851BCC4E73608FBFDF682D08893468FDC6D1247D2B5EAFD91A80D96B399E2B657144A8C41FCBF0A9FF8114E243EBA9D15325C1DEE3297E5
7.1) generation of encrypted_data

Generated payload (excluding transport headers/trailers):

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

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, 1685D5BF80B189FC0CA6C37EAB8279C730800BA718BC0E7EA3F5905067F72A9564 Value generated by client in Step 1
server_nonce 20, 1663D248C5E09A636096C3543C7616A35ED6A3856C3E35034B03006EFBC27F6EEF Value received from server in Step 2
g_a 300, 260FE00010073BE87B3EDC77461298DDECD 1B9F9E37301A903111767C4B27BC97A6 BF6EACD991CA46BBCA1BB63DF693D128 C5D1B7142BA62ECA5C6C404AC30D1748 E4341C92BD3258729A702D255A12381B B95DC13909505F9664EC2EF58366D006 18258549B148955C05081C722D4B4DCA 51E1B24E840BB2F09928C85B446058C7 C810A4E650CCF0A1F61B6FF562FB2C7B 902DDAEC000FB28D9703CB45F6FB143C 896B6E17FBBEA9817A74259615BD8D88 4714659EA06B85FD9FF96CB14B4846FF 46451D088AFDDCACD60C0C90741E9708 FF664361E6B81E62E6AA95A4BCDF4E7C 4AE9722112E3684937BBDEA97289012B FA0B4092F5F3D9E65447B00FA549A8F1
71C35B87
FE0001007F300A42E28D0930B74A8EDC 8EA47CEF91005DAC0EB568814CAE1689 0572EB063E7D5C0D0E22F5F8B70744FC 091806B34374F130E56FE4C5B79CB038 124E6612460CAD9E4D66F2061FD8EBB0 51CCEAE3E5E8C4D908E043B09C8ED2ED 2AE60C7BEE2420F093B9FA8598C9C7DF 765F04E9A628678A9D1932B2CECE9D5D A091CFB603BC45F31083C495B2169BC4 CC2B67FEB2EAE6A2F6F8FD7EBFD1BAF3 A7C12F8828C35C84641311F0A80A3244 AC443F9EF80684F5C21F216AD2738D0E 2AED09E6680A0E879AEA037B66D26503 7260CFBF7BB5B0F3BA8A40DC396AC487 4B33B0A9160D19FECECE8060566B4CA5 BC252DEF14637B12C998C696954667C4
19F1D2BA
g_a diffie-hellman parameter
server_time 560, 45527C565 (1707419477 in decimal)902EC565 (1707421328 in decimal) Server time
@@ -658,19 +658,19 @@ answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35 - + - + - + @@ -684,47 +684,47 @@ answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35

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 = 54B6436685D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E0000000000000000FE00010040D09EB7C6A7B0717B564A74A7C11B3E34809E3124C099892293A21DC0B576A417DAF6BE9DB6D8BFFD959AA40E4D60AD66134A3FAF69B815ED71A8E7E84BD405FBAE96B69DE961538959526FD77AA534E1F6B10916D6D112A38D330C2937333D82B5FDF97B5A7FF3E56AA51E507A0614FE379929BF90A02860AD82E48CE48E2C8A3B7FD853B6AB9EBEE5CEDD1EFC7BADBD3B05704CC2DD7FF3130B0FA7F4DA041DD6C7EBC8C2FDFBBBF03181A306966469226F361EE479C5F9DB8082A00598AB42DBC45397AEF1DD7EDEDBC8D5B6A6F85F995DA60B55014CD26BA9B033C46118608097D50470EB69E171D276429BB6D53F4A13FF717EB9E23EA8D51C76698368
-padding = 270D8CE8A3AB22A8D43AE249
-tmp_aes_key = B64E760C2EA83BA9EDA2DA7E5826A518B6D82CE469DE416A140B25AACB7AA41B
-tmp_aes_iv = 279F8786E2A347AF1284D523F2EF9589DE890EEE25235638E1CA610A13BC04D0
+
data = 54B64366800BA718BC0E7EA3F5905067F72A9564D6A3856C3E35034B03006EFBC27F6EEF0000000000000000FE000100392EFB02FF06BE541AE2836DE1C443530B1CCE635FF07D9817B3532644A0CF3C5F4BD8F8C53F40E00AFEE41D1C478F7A7ACDAAE1601E52C42C86436A816F3AB39DACDB60AF51E04A7E9C36DD8EF081FA2E6DFBCD2FB24C312B02A45413C5D18A7E1D1B6C16FFB582D1C1D538946C8269ED1AE18A5FCFBAE4FCE2D4835D80ACC6400153CE43C54F3A9ABAB65F048E8661476AB2C4FAD76BE6B46B407A5419F92A19431D09BB2265A3135DC7F41BF18D88502997A1AD3E96ED533BBB409A9D3A51AE17FA2B7BFC81657851BCC4E73608FBFDF682D08893468FDC6D1247D2B5EAFD91A80D96B399E2B657144A8C41FCBF0A9FF8114E243EBA9D15325C1DEE3297E5
+padding = 8B75401CCCD9C0690F4B6A62
+tmp_aes_key = 1694A711A6114B6BBABB94EE9CD3EE5351BD3878EBB313CE8AC4738062E9AD92
+tmp_aes_iv = BED33E660AAB7A16C00377B33A6054E28E405B895CA9CF3DE96DDAA610CA08B0

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 = 1DF0B6D5DD8EFD79F454B18724ABFB5A3049139671D8846A810CDF1017DF9D019DB7B20A81D5EF4BFCCE20F97E938B5AEAB818056130F15EE5D738DDFB840781F7894074CB2F5B58700D0D0AD71B5BD9969C67CE8D4EF9C096E8CD0266C27CEAE681AB2F65DFF2AF2981C1E12111EA17A2265444A6B741826E4BE2A0B49388D82E4C1A5ACCC0D05404835EA72328EBF835752A577408D21382999D1FD09998A20F9784719EDF55729EC4F2376A013A13BA38E823A239378117E7E2525574F87891BA4DD7B33465CE4EFCCFF3643365E0FA353AFFC3F50F2E00F947AF5340B1EC37A2C5310CEB44C0DB5572CEF26BD3F0C297FCDB37495F0D7C27382AA941856D32EFC7BE7F1E833740761B0382BAE8649E054A0068877D349C4C02F20458D7E3C2D5E887855684C85A8430F848090F1E0D44FC58E594A1406648063903CDB63551A7F554C95B9B249F837E1D9EDB063E
+
encrypted_data = E57862B64D90687CBB358497FB42F308A5D004CBD9295103399DB4696CD5E6DBDF33284F40DEBAD95C7DD617FABD0C32BD7AA1F4D449CD3E4B2E8E89D652ACF81E112D881895DB37D5ECB74947A35C01DBCB77FB64A6790609FB752222D31179DC00A86308CD2AC55BC9695CA162039BA9D385A018063E6A70463F1B93DA6A8A06022ECF2395A763F909E86D921E40679300565703022F9E0FFEE1A5CE7D2EFC4E4562B734E6C22E8B16DF2C069BB6EA1BFD32DC93B9B15AB56A7B6026CF90653FEFA6720188CFD1F3F260EE2368997E237C406CFD06DD092C362A3D894D6DA33FCBFD60DAD3B6F2786869A89818553D48D6774588E3F1757363818165BE1E4A0FF1D2464D1A888D816916545D085951A540C8C50B61A7E7348728ED0DEA79EEF367E362D2A7DDB961F85B4A12424115BC394D8E3BC7E8B2AA3349D9C4AD2280823A1A3FE26D34548370865DC5B1497B

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

Payload (de)serialization:

set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
nonce 4, 1685D5BF80B189FC0CA6C37EAB8279C730800BA718BC0E7EA3F5905067F72A9564 Value generated by client in Step 1
server_nonce 20, 1663D248C5E09A636096C3543C7616A35ED6A3856C3E35034B03006EFBC27F6EEF Value received from server in Step 2
g_b 36, 260FE00010040D09EB7C6A7B0717B564A74 A7C11B3E34809E3124C099892293A21D C0B576A417DAF6BE9DB6D8BFFD959AA4 0E4D60AD66134A3FAF69B815ED71A8E7 E84BD405FBAE96B69DE961538959526F D77AA534E1F6B10916D6D112A38D330C 2937333D82B5FDF97B5A7FF3E56AA51E 507A0614FE379929BF90A02860AD82E4 8CE48E2C8A3B7FD853B6AB9EBEE5CEDD 1EFC7BADBD3B05704CC2DD7FF3130B0F A7F4DA041DD6C7EBC8C2FDFBBBF03181 A306966469226F361EE479C5F9DB8082 A00598AB42DBC45397AEF1DD7EDEDBC8 D5B6A6F85F995DA60B55014CD26BA9B0 33C46118608097D50470EB69E171D276 429BB6D53F4A13FF717EB9E23EA8D51C
76698368
FE000100392EFB02FF06BE541AE2836D E1C443530B1CCE635FF07D9817B35326 44A0CF3C5F4BD8F8C53F40E00AFEE41D 1C478F7A7ACDAAE1601E52C42C86436A 816F3AB39DACDB60AF51E04A7E9C36DD 8EF081FA2E6DFBCD2FB24C312B02A454 13C5D18A7E1D1B6C16FFB582D1C1D538 946C8269ED1AE18A5FCFBAE4FCE2D483 5D80ACC6400153CE43C54F3A9ABAB65F 048E8661476AB2C4FAD76BE6B46B407A 5419F92A19431D09BB2265A3135DC7F4 1BF18D88502997A1AD3E96ED533BBB40 9A9D3A51AE17FA2B7BFC81657851BCC4 E73608FBFDF682D08893468FDC6D1247 D2B5EAFD91A80D96B399E2B657144A8C 41FCBF0A9FF8114E243EBA9D15325C1D
EE3297E5
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 = 6C63D6ACD86A700AD3C5F6598145E3955FC4E97BC706864E9AC845A67D81103671042ABB23DA9F375F1C4EEE3A924C22EBF4E08A5408036314274BEE204F5D31342F20C1FFF66A041ACA36BDFBCAEBBD7B49D7459D50D02D4142FF7E741ED121B63DF86C38C8F7D0CAECA186C4A5E87A60F61A28B077F1E6888E511AE5E718A1F981469273D84DD394FCFA8A431A5B87890E5684F862A158BCB9BCD1C8EC13A77969CC8E7F7A2B0EDA41890F3AC91FCF2BD7E88A1703F35A295563D9AE3D6B7B741B1D0638DB84C88B6ACB0B5908518868CE83018A693B6306CC1BF61E5D2E0BB2815AD733745624EC1F935E09A160542A5052C0AE10FD98477C82A8EEFA41C8
+
auth_key = 9AE6221027C2C63E4D6BBD1177C871115C9987F930120E68EE84E0DAD8FB56C13F5B0A8F2C60B534C9B3B3C67F75575EB40C6A5376AE4C234C4EFA71418CE1B2274C517321EEB5C78ED585B905C14ED119E3D5A3CF34F01F46078C4DB59227FE8E57D432AB20C830FE457EBA0412CBDAC0A5E665A77DC1244DFE2C0170B39446A1E9397F167305863CE52196F700FA0DE185C642D0CDB866EFA132C29025DB627BE5CCA9A1923A781E4F808CB3B7667505BDFF5D52DDB32623D03ABEE9BF849FDD94D34472EC3DF256711754CECF5F5EDD98D9321F3E5A39BC56119563B275A404B4E82EBE670AE52F0A092C9CFD72664263E938AF03DD1CC42F4A44A8A34400
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 B4 FB 70 57 27 C5 65
-0010 | 6C 00 00 00 34 F7 CB 3B 85 D5 BF 80 B1 89 FC 0C
-0020 | A6 C3 7E AB 82 79 C7 30 63 D2 48 C5 E0 9A 63 60
-0030 | 96 C3 54 3C 76 16 A3 5E 86 4C A9 37 8A 43 7E 2D
-0040 | F7 B1 F3 07 C8 48 9B 29
+
0000 | 00 00 00 00 00 00 00 00 01 94 68 83 91 2E C5 65
+0010 | 94 00 00 00 34 F7 CB 3B 80 0B A7 18 BC 0E 7E A3
+0020 | F5 90 50 67 F7 2A 95 64 D6 A3 85 6C 3E 35 03 4B
+0030 | 03 00 6E FB C2 7F 6E EF 43 29 74 8B 0C 4D F3 30
+0040 | C6 05 E9 BF A2 14 2E A6

Payload (de)serialization:

dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
message_id 8, 85CCE05005627C565F4CF0E00902EC565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1685D5BF80B189FC0CA6C37EAB8279C730800BA718BC0E7EA3F5905067F72A9564 Value generated by client in Step 1
server_nonce 40, 1663D248C5E09A636096C3543C7616A35ED6A3856C3E35034B03006EFBC27F6EEF Value received from server in Step 2
encrypted_data 56, 340FE5001001DF0B6D5DD8EFD79F454B187 24ABFB5A3049139671D8846A810CDF10 17DF9D019DB7B20A81D5EF4BFCCE20F9 7E938B5AEAB818056130F15EE5D738DD FB840781F7894074CB2F5B58700D0D0A D71B5BD9969C67CE8D4EF9C096E8CD02 66C27CEAE681AB2F65DFF2AF2981C1E1 2111EA17A2265444A6B741826E4BE2A0 B49388D82E4C1A5ACCC0D05404835EA7 2328EBF835752A577408D21382999D1F D09998A20F9784719EDF55729EC4F237 6A013A13BA38E823A239378117E7E252 5574F87891BA4DD7B33465CE4EFCCFF3 643365E0FA353AFFC3F50F2E00F947AF 5340B1EC37A2C5310CEB44C0DB5572CE F26BD3F0C297FCDB37495F0D7C27382A A941856D32EFC7BE7F1E833740761B03 82BAE8649E054A0068877D349C4C02F2 0458D7E3C2D5E887855684C85A8430F8 48090F1E0D44FC58E594A14066480639 03CDB63551A7F554C95B9B249F837E1D
9EDB063E
FE500100E57862B64D90687CBB358497 FB42F308A5D004CBD9295103399DB469 6CD5E6DBDF33284F40DEBAD95C7DD617 FABD0C32BD7AA1F4D449CD3E4B2E8E89 D652ACF81E112D881895DB37D5ECB749 47A35C01DBCB77FB64A6790609FB7522 22D31179DC00A86308CD2AC55BC9695C A162039BA9D385A018063E6A70463F1B 93DA6A8A06022ECF2395A763F909E86D 921E40679300565703022F9E0FFEE1A5 CE7D2EFC4E4562B734E6C22E8B16DF2C 069BB6EA1BFD32DC93B9B15AB56A7B60 26CF90653FEFA6720188CFD1F3F260EE 2368997E237C406CFD06DD092C362A3D 894D6DA33FCBFD60DAD3B6F2786869A8 9818553D48D6774588E3F17573638181 65BE1E4A0FF1D2464D1A888D81691654 5D085951A540C8C50B61A7E7348728ED 0DEA79EEF367E362D2A7DDB961F85B4A 12424115BC394D8E3BC7E8B2AA3349D9 C4AD2280823A1A3FE26D34548370865D
C5B1497B
Encrypted client_DH_inner_data generated previously, serialized as a TL byte string
@@ -817,13 +817,13 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + @@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + - +
message_id 8, 801B4FB705727C56501946883912EC565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 46C000000 (108 in decimal)94000000 (148 in decimal) Message body length
nonce 24, 1685D5BF80B189FC0CA6C37EAB8279C730800BA718BC0E7EA3F5905067F72A9564 Value generated by client in Step 1
server_nonce 40, 1663D248C5E09A636096C3543C7616A35ED6A3856C3E35034B03006EFBC27F6EEF Value received from server in Step 2
new_nonce_hash1 56, 16864CA9378A437E2DF7B1F307C8489B294329748B0C4DF330C605E9BFA2142EA6 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.