From a7f451b02a8e362e5793a90d8074d10632aa91a9 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 24 Jun 2024 17:12:19 +0000 Subject: [PATCH] Update content of files --- .../constructor/globalPrivacySettings.html | 11 +- .../constructor/userFull.html | 15 +- .../method/contacts.getSaved.html | 5 + .../method/messages.getOutboxReadDate.html | 25 +- .../mtproto/samples-auth_key.html | 412 +++++++++--------- 5 files changed, 255 insertions(+), 213 deletions(-) diff --git a/data/web/corefork.telegram.org/constructor/globalPrivacySettings.html b/data/web/corefork.telegram.org/constructor/globalPrivacySettings.html index 3e5a58f2cf..853ce9eef5 100644 --- a/data/web/corefork.telegram.org/constructor/globalPrivacySettings.html +++ b/data/web/corefork.telegram.org/constructor/globalPrivacySettings.html @@ -89,12 +89,12 @@ hide_read_marks flags.3?true -  +If set, users that cannot see our exact last online date due to the current value of the inputPrivacyKeyStatusTimestamp key will receive a 403 USER_PRIVACY_RESTRICTED error when invoking messages.getOutboxReadDate to fetch the exact read date of one of their messages. new_noncontact_peers_require_premium flags.4?true -  +If set, only users that have a premium account, are in our contact list, or already have a private chat with us can write to us privately; a 403 PRIVACY_PREMIUM_REQUIRED error will be emitted otherwise. The userFull.contact_require_premium flag will be set for users that have this flag enabled. @@ -102,7 +102,12 @@

GlobalPrivacySettings

Related pages

Folders

-

Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.

+

Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.

+

inputPrivacyKeyStatusTimestamp

+

Whether people will be able to see your exact last online timestamp

+

messages.getOutboxReadDate

+

userFull

+

Extended user info

diff --git a/data/web/corefork.telegram.org/constructor/userFull.html b/data/web/corefork.telegram.org/constructor/userFull.html index 9af63723e2..125bda07b2 100644 --- a/data/web/corefork.telegram.org/constructor/userFull.html +++ b/data/web/corefork.telegram.org/constructor/userFull.html @@ -129,17 +129,17 @@ contact_require_premium flags.29?true -  +If set, we can only write to this user if we are subscribed to Telegram Premium, or if they're a mutual contact (user.mutual_contact).
To set this flag for ourselves invoke account.setGlobalPrivacySettings, setting the settings.new_noncontact_peers_require_premium flag. read_dates_private flags.30?true -  +If set, users that cannot see our exact last online date due to the current value of the inputPrivacyKeyStatusTimestamp key will receive a 403 USER_PRIVACY_RESTRICTED error when invoking messages.getOutboxReadDate to fetch the exact read date of one of their messages.
To set this flag for ourselves invoke account.setGlobalPrivacySettings, setting the settings.hide_read_marks flag. flags2 # -  +Flags, see TL conditional fields sponsored_enabled @@ -298,6 +298,15 @@

Set a custom wallpaper » in a specific private chat with another user.

Wallpapers

Telegram apps support generating, sharing and synchronizing chat backgrounds.

+

Telegram Premium

+

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

+

user

+

Indicates info about a certain user

+

account.setGlobalPrivacySettings

+

Set global privacy settings

+

inputPrivacyKeyStatusTimestamp

+

Whether people will be able to see your exact last online timestamp

+

messages.getOutboxReadDate

Pinned messages

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

Folders

diff --git a/data/web/corefork.telegram.org/method/contacts.getSaved.html b/data/web/corefork.telegram.org/method/contacts.getSaved.html index 669adcca18..c4d4cad432 100644 --- a/data/web/corefork.telegram.org/method/contacts.getSaved.html +++ b/data/web/corefork.telegram.org/method/contacts.getSaved.html @@ -72,6 +72,11 @@ +400 +TAKEOUT_INVALID +The specified takeout ID is invalid. + + 403 TAKEOUT_REQUIRED A takeout session needs to be initialized first, see here » for more info. diff --git a/data/web/corefork.telegram.org/method/messages.getOutboxReadDate.html b/data/web/corefork.telegram.org/method/messages.getOutboxReadDate.html index b23a088121..4cdaa806fc 100644 --- a/data/web/corefork.telegram.org/method/messages.getOutboxReadDate.html +++ b/data/web/corefork.telegram.org/method/messages.getOutboxReadDate.html @@ -123,11 +123,34 @@ Description…"> 400 +MESSAGE_ID_INVALID +The provided message id is invalid. + + +400 +MESSAGE_TOO_OLD +The message is too old, the requested information is not available. + + +400 PEER_ID_INVALID The provided peer id is invalid. + +403 +USER_PRIVACY_RESTRICTED +The user's privacy settings do not allow you to do this. + + +403 +YOUR_PRIVACY_RESTRICTED +You cannot fetch the read date of this message because you have disallowed other users to do so for your messages; to fix, allow other users to see your exact last online date OR purchase a Telegram Premium subscription. + - + +

Related pages

+

Telegram Premium

+

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

diff --git a/data/web/corefork.telegram.org/mtproto/samples-auth_key.html b/data/web/corefork.telegram.org/mtproto/samples-auth_key.html index 434dd3774f..d3effe7d2b 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 68 82 01 00 9A ED 77 66
-0010 | 14 00 00 00 F1 8E 7E BE BD D3 43 62 8E 05 18 35
-0020 | 1B EB 12 EF BC AF BB 7C
+
0000 | 00 00 00 00 00 00 00 00 B8 6A 0A 00 98 A7 79 66
+0010 | 14 00 00 00 F1 8E 7E BE D4 5A 10 48 DD 54 2C EB
+0020 | 93 BA F4 1E 88 DE 4B 74

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 5C ED 7B 9A ED 77 66
-0010 | 68 00 00 00 63 24 16 05 BD D3 43 62 8E 05 18 35
-0020 | 1B EB 12 EF BC AF BB 7C 20 FB B9 18 86 EE 0C 2E
-0030 | BF BD 51 E8 A5 03 40 98 08 1E CE 43 71 B8 6C 45
-0040 | E3 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 30 E0 AC 98 A7 79 66
+0010 | C4 00 00 00 63 24 16 05 D4 5A 10 48 DD 54 2C EB
+0020 | 93 BA F4 1E 88 DE 4B 74 C5 37 7C D6 91 F8 CE DD
+0030 | 36 3D 8F C7 FE DF 3D 7B 08 16 86 37 77 EE 8D 1E
+0040 | C3 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 = 2219785822044702179
-

Decompose into 2 prime cofactors p < q: 2219785822044702179 = 1275787277 * 1739934127

-
p = 1275787277
-q = 1739934127
+
pq = 1623045703956504259
+

Decompose into 2 prime cofactors p < q: 1623045703956504259 = 1013887393 * 1600814563

+
p = 1013887393
+q = 1600814563

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 CE 43 71 B8 6C 45 E3 00 00 00
-0010 | 04 4C 0A F8 0D 00 00 00 04 67 B5 49 AF 00 00 00
-0020 | BD D3 43 62 8E 05 18 35 1B EB 12 EF BC AF BB 7C
-0030 | 20 FB B9 18 86 EE 0C 2E BF BD 51 E8 A5 03 40 98
-0040 | 34 5D F4 48 5C 4F 01 3B D2 B2 71 5D 91 98 5D 71
-0050 | 9A 75 09 9C 72 DF AD 46 26 AA 13 3F 70 6D 90 1E
+
0000 | 95 5F F5 A9 08 16 86 37 77 EE 8D 1E C3 00 00 00
+0010 | 04 3C 6E B1 A1 00 00 00 04 5F 6A 7D E3 00 00 00
+0020 | D4 5A 10 48 DD 54 2C EB 93 BA F4 1E 88 DE 4B 74
+0030 | C5 37 7C D6 91 F8 CE DD 36 3D 8F C7 FE DF 3D 7B
+0040 | 93 B1 FF C5 FC A2 3E 19 7E 12 4D 71 33 9C E3 34
+0050 | 2D C0 02 D8 1B 4E 23 9A DE 75 45 95 25 C0 D5 1E
 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 = 1739934127
- + - + - + - + - + - + @@ -291,39 +291,39 @@ q = 1739934127

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 = 955FF5A9081ECE4371B86C45E3000000044C0AF80D0000000467B549AF000000BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A5034098345DF4485C4F013BD2B2715D91985D719A75099C72DFAD4626AA133F706D901E02000000
-random_padding_bytes = 74898DDC498AC0DB200C925B12A533A4E45EEB1F799632FF14A00A3C67BF2D1B1E5B51198EDCF74817A9F393D00774F028C17FA6A26BC0F6BBE175502EB3C22A3B81361EDCFB9EEE72D0298AEE741BFA8592B09CCD3A8A2231D2717B
+
data = 955FF5A90816863777EE8D1EC3000000043C6EB1A1000000045F6A7DE3000000D45A1048DD542CEB93BAF41E88DE4B74C5377CD691F8CEDD363D8FC7FEDF3D7B93B1FFC5FCA23E197E124D71339CE3342DC002D81B4E239ADE75459525C0D51E02000000
+random_padding_bytes = 44A6E0B1FA5F5E5CE010D882A40B698476C112F26322D44CBC93FD2B99CBAF1BA2EFEB033085ECBCA520CB8B8F305441DD8776CBB8B3230BB767F6E52C4CC6CF65C28A942F4CBF979394D3B42AFDD92A186379568186F2B14C75BD4F

And this is the output:

-
encrypted_data = A9B1176500689D99C4442CA88FF80035AF58FE2A59399E4CA85D81F7045EAA7EC3DA61007668A9F68041B8BEB69BAD881EA80FFD3E9278BF660065D51ACD0F2A77AAC1AD41F268F0046C63D20E0910CC45D9172B3B6169EB6995AE931ED126BDD155E25D1DEFFF29DB2CC8097383614F20D5E7B83B8F575EE521D562F81A9B45C944FD9AB27D548874A46D957FAB7E0267328FD0058BEA4383FB02F9B7612490417D4033403D58A19CCE6D11CABE864239F39B621F7C51F6BF6A90B3FD8EFA5A869B6D5E25C325D235020A3126D3C4B65EEE0BE9FB5A5C300A7EB03F50968FAAAFF122303D73DD35E86FA3AB8E0F2D50BCABB698C00EBD04D8ABA422291C80CF
+
encrypted_data = 51A4C35E1001399E2D3D0BB0E27E0EE873D637E6FFB369852F942E768A7B13DB4DD3CF95AFDC047411AF6F7D84083554E5CB84B231CB8C994B7132DB92CDF1547C69148B6E94D72D0A6D41E943BAA93F1E114FBC3859FD0525C5952B5A61821645ECFC9E38A4363EA9FF9A9D7EE90F3A1374F40D27BA2214C9BE9F2422F0AC28FDD11F96C10E59909E43F0BCF7B10C253210A014F6E9E647EB078D147377270CFD83487A7138A988EA3C5EE521C30F684A85FD821B0C44A1974B40A619CBB8B3B421DBF1B0BEB1105815B555EC505CF3C08401F4D087BB3752145B0F17F401125414E4EDEBDCA06CA9D96CA18B9CBE00B395706C5E57BB2EFB5CA8E8FB1C2C7B

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

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, 8688201009AED7766B86A0A0098A77966 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16BDD343628E0518351BEB12EFBCAFBB7CD45A1048DD542CEB93BAF41E88DE4B74 Random number
message_id 8, 8015CED7B9AED77660130E0AC98A77966 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 468000000 (104 in decimal)C4000000 (196 in decimal) Message body length
nonce 24, 16BDD343628E0518351BEB12EFBCAFBB7CD45A1048DD542CEB93BAF41E88DE4B74 Value generated by client in Step 1
server_nonce 40, 1620FBB91886EE0C2EBFBD51E8A5034098C5377CD691F8CEDD363D8FC7FEDF3D7B Server-generated random number
pq 56, 12081ECE4371B86C45E3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2219785822044702179
0816863777EE8D1EC3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1623045703956504259
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
pq 4, 12081ECE4371B86C45E3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2219785822044702179
0816863777EE8D1EC3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1623045703956504259
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p 16, 8044C0AF80D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1275787277
043C6EB1A1000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1013887393
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 24, 80467B549AF000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1739934127
045F6A7DE3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1600814563
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce 32, 16BDD343628E0518351BEB12EFBCAFBB7CD45A1048DD542CEB93BAF41E88DE4B74 Value generated by client in Step 1
server_nonce 48, 1620FBB91886EE0C2EBFBD51E8A5034098C5377CD691F8CEDD363D8FC7FEDF3D7B Value received from server in Step 2
new_nonce 64, 32345DF4485C4F013BD2B2715D91985D71 9A75099C72DFAD4626AA133F706D901E93B1FFC5FCA23E197E124D71339CE334 2DC002D81B4E239ADE75459525C0D51E Client-generated random number
@@ -345,7 +345,7 @@ random_padding_bytes = 74898DDC498AC0DB200C925B12A533A4E45EEB1F799632FF14A00A3C6 - + @@ -363,25 +363,25 @@ random_padding_bytes = 74898DDC498AC0DB200C925B12A533A4E45EEB1F799632FF14A00A3C6 - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = 74898DDC498AC0DB200C925B12A533A4E45EEB1F799632FF14A00A3C6 - + @@ -402,47 +402,47 @@ random_padding_bytes = 74898DDC498AC0DB200C925B12A533A4E45EEB1F799632FF14A00A3C6
6) Server responds with:

Received payload (excluding transport headers/trailers):

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

Payload (de)serialization:

server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
message_id 8, 8F0EB0C009AED77664C110D0098A77966 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16BDD343628E0518351BEB12EFBCAFBB7CD45A1048DD542CEB93BAF41E88DE4B74 Value generated by client in Step 1
server_nonce 40, 1620FBB91886EE0C2EBFBD51E8A5034098C5377CD691F8CEDD363D8FC7FEDF3D7B Value received from server in Step 2
p 56, 8044C0AF80D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1275787277
043C6EB1A1000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1013887393
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 64, 80467B549AF000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1739934127
045F6A7DE3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1600814563
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
encrypted_data 80, 260FE000100A9B1176500689D99C4442CA8 8FF80035AF58FE2A59399E4CA85D81F7 045EAA7EC3DA61007668A9F68041B8BE B69BAD881EA80FFD3E9278BF660065D5 1ACD0F2A77AAC1AD41F268F0046C63D2 0E0910CC45D9172B3B6169EB6995AE93 1ED126BDD155E25D1DEFFF29DB2CC809 7383614F20D5E7B83B8F575EE521D562 F81A9B45C944FD9AB27D548874A46D95 7FAB7E0267328FD0058BEA4383FB02F9 B7612490417D4033403D58A19CCE6D11 CABE864239F39B621F7C51F6BF6A90B3 FD8EFA5A869B6D5E25C325D235020A31 26D3C4B65EEE0BE9FB5A5C300A7EB03F 50968FAAAFF122303D73DD35E86FA3AB 8E0F2D50BCABB698C00EBD04D8ABA422
291C80CF
FE00010051A4C35E1001399E2D3D0BB0 E27E0EE873D637E6FFB369852F942E76 8A7B13DB4DD3CF95AFDC047411AF6F7D 84083554E5CB84B231CB8C994B7132DB 92CDF1547C69148B6E94D72D0A6D41E9 43BAA93F1E114FBC3859FD0525C5952B 5A61821645ECFC9E38A4363EA9FF9A9D 7EE90F3A1374F40D27BA2214C9BE9F24 22F0AC28FDD11F96C10E59909E43F0BC F7B10C253210A014F6E9E647EB078D14 7377270CFD83487A7138A988EA3C5EE5 21C30F684A85FD821B0C44A1974B40A6 19CBB8B3B421DBF1B0BEB1105815B555 EC505CF3C08401F4D087BB3752145B0F 17F401125414E4EDEBDCA06CA9D96CA1 8B9CBE00B395706C5E57BB2EFB5CA8E8
FB1C2C7B
Value generated above
@@ -464,13 +464,13 @@ random_padding_bytes = 74898DDC498AC0DB200C925B12A533A4E45EEB1F799632FF14A00A3C6 - + - + @@ -482,19 +482,19 @@ random_padding_bytes = 74898DDC498AC0DB200C925B12A533A4E45EEB1F799632FF14A00A3C6 - + - + - + @@ -502,20 +502,20 @@ random_padding_bytes = 74898DDC498AC0DB200C925B12A533A4E45EEB1F799632FF14A00A3C6

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

-
encrypted_answer = BC64C0EE340FB933C2718E69BEBC56F7B83F9556D7EE47778465A46E15502AB228FC8104D9D34E629CF61E80F9E4DB7A9F5F98F0ED7E90AE85796D51422C98651CF7171365A7157A649BAD478AA485355214E9FCBFCF97D4E9E2ECCF8C0FBAAD9F5860E1CEDF83085906C798518A1FD90F985A8CA9561987CA31C792DBAD7B79236C3506E64A57AD8395D9313549A6A0F6B29A60D6626AAE864B215FBE04A5F1EA06A60402D3C59F3A2E39842ADC5BC9DF9441040B88B6EFEA017ED8040B2843FF06680AE7E0A6B8A7E59311F18BC5095D2B655E19CF396000A8BB19D0EEDAB9B58D3331E7DF012D8014EC094338E86E1D57F19163A086E5DC5D489CC2BA3051B37BAA2EA2F947ECA131E1A579A75F10B0B05962DF6CCE974E0027D5ECF0294EB04F8BF938305A9225DEC0E0207FDB16C1C417C56160F6F54039C1C612A35112069066B38C104094C3ACE00BA51A120DFA2CDAE97AC354B8172D0C5BE0C294C3AC973174E4FECA50BDB2EF1DECC37DE6548F4D5AF3FA597A6BE268B69433C6915D85E44C92246761B4B9DE648FCEBFFBB68ACAC9968ED45A07E798E43AEFB2583EF342C436BBB0D4B2497294E367AF3EB4AE8984493AEE2CF61D1000508DCEB1B20DD99B71FC5DCB05464D4963D917D4F40559F386C5B80A9EBFD98C1E10A00ECA344AEA476BB1B6E27E92201B63F893C8EE1036B13E2B0E0AC3F6C5EEC8CCDEA4C541CB57D8132CB52EC69B1A648F3C16CDA7774486089ACF2CC097767509C18CF5FC44FF74410338A6C1ABCDB51ED626DCAE323479B34334874C2D05DD98FE8E55F4465F865E2FCF1C5BF20493A2D6
-tmp_aes_key = 63BF1BC5DB02E0ADE18277C00F02786F3059DE28473FBEE7333DAB1495A9BE8C
-tmp_aes_iv = D37420FF595A1B55C7F1700B81597A184B050F3DAB81CA004405375F345DF448
+
encrypted_answer = E5D33B92D07708033CB6363FFFCFE1F7613A2595FF75CC40AD0BDEA48EE577F643E92990D4A8AB1EC664C9E5737E2630A3D260EA25B942A655E0EEEA5EDF72FA6C811B82AF52BD436AC4D573032D27980B6BAD43485E2FA9B127EEF21605661B306BCD91A4299007FB8D1FD357DDEE2B58D90BEF5D48C6F2D216C556758B96BC9B099BFF85AD7CE5D4FE02879A271C415E70E6002365DD494F66D3DFAA4B4AE89A9474733B044A4BCE82C1DC5115F04BE13CDF2F4078CC6F415A4848E95358B76FF4892419389024729C53F90BD5B00AA7215B648DA2787DA81D2BA6832BE9948E5C91781E9945491B0046CBFB5FD49F8448A37B4D9A0BA5BB1D62942694B3E7609DFD0006394709333468EB3EFBE77B35C22F248C2162FA23DD96D3CE7FD516C41528BB00A31FEFA690BBF763086968F55577CFE9A54499C538B6E92165AF8E4828C3A67C5F3B9E37A5E9823C5332E3DDAAD419F61311B4B715B286BE0A685C738E482A6FCC0AE2DB9B6984091ACE08EF54FD5B038796928C8CEBB7A6BD3E471D78ABF32A80DB1773E2CD0678CBFB398964C35FB13F379D6014CC66C54D600B04CD4F795DB4415FFA06F3B55FE819FD7DA0D8EA563C01BF8D35712997A6EB8FE3C9ADA0070394826ABEA9BAE43E923E85A33CEA8FA82AB50DFF624282C3B1D63D6581624F6279842535560160528C768046838309814D2F666909623D84D30061ECF955022BA55A41E04F6901A83D6C152DCB07875CCD13BBCF30FD01483DE8ABC03FA61C55E3C75AD9901EBBA8FA8C61BF04DA0F8F61EBE348890243CED5DB759A9965EB0661083E1190FA4F5CBF23
+tmp_aes_key = B6DCA375BD1FBCB35C5DC4AC99AF7BEEA45A673F832B617967231EB190E8344E
+tmp_aes_iv = DD4D80EFB531616F749D717D8D556794F655938F3D1942FDFDA6EE4693B1FFC5

Yielding:

-
answer_with_hash = 1A81AC6A56C6470C624C8844979252D0C9B9E27EBA0D89B5BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A503409803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100915F316AF2EBC858375013FB985FD5C05B1A4FA4C2EC94F8F7C2A4BF738A9759F809DE8BB085A1F96372F20B9F1DAFC0009264EC99EDD8F8482F9DFF5744EDF7956B678E6828EA91D0583D99E7B11CE97BA03B75D77CA1F5B4F360807D38C2F04902F2AC7035C5AD1A1A43D4FC3E788FCC97AE32D1E94E75D289ACDC029E3DACAFFF1164318AAE73AC2253EC7C4876C6C1E45E9664F15A44404FE352BFB50965695472CDA99DDA361135FE5C197F5783F3E26EEC18944D58513C355EF6800E8738CD7B987DD9C934441A180206EEC010FF0D1A756769850D5FAFB05DFBA967B2D0BA5D69D6888089195A07249E175A6BE0194511EA6D2FF019A81426EDAE4A229BED776696FCFCE0315A79DD
-answer = BA0D89B5BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A503409803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100915F316AF2EBC858375013FB985FD5C05B1A4FA4C2EC94F8F7C2A4BF738A9759F809DE8BB085A1F96372F20B9F1DAFC0009264EC99EDD8F8482F9DFF5744EDF7956B678E6828EA91D0583D99E7B11CE97BA03B75D77CA1F5B4F360807D38C2F04902F2AC7035C5AD1A1A43D4FC3E788FCC97AE32D1E94E75D289ACDC029E3DACAFFF1164318AAE73AC2253EC7C4876C6C1E45E9664F15A44404FE352BFB50965695472CDA99DDA361135FE5C197F5783F3E26EEC18944D58513C355EF6800E8738CD7B987DD9C934441A180206EEC010FF0D1A756769850D5FAFB05DFBA967B2D0BA5D69D6888089195A07249E175A6BE0194511EA6D2FF019A81426EDAE4A229BED776696FCFCE0315A79DD
+
answer_with_hash = 0BE683EFD781089554415A53EE00C8ACC6D0FFF6BA0D89B5D45A1048DD542CEB93BAF41E88DE4B74C5377CD691F8CEDD363D8FC7FEDF3D7B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010063029A5FFA59973D6B5234A550713CB9F4A5431E7E8B8FAAED49C1EAE5F3C43D0578802C15D6E7482FA09853AD5955331AFE584C3FD51E041858BE0272FE24D576D905C60533ED5B425CE9201BD6A19C818A4825B7E286B4E013F454B1C329AF49EC7A1528FF72755F8AECF04999AEBE6366B80392560CE1C5E37A4A44847AAED690472C47C043607A16008C403B6C02B31C4F2B61DEDB07B63AE4EA3816BA77AF7A2E00E64CA74D24C9FAC11B95E4389148244AC48D76DD249173174C3622FF149E8E20F92BA12EC5D265EABAD9ABF286676E8B92B8D28E10269C2533638A7D30A5A2C300180F8924FBA39A27DA6C023EFF3DAC031926BB661276C606B302D099A77966238FBC5771A739D0
+answer = BA0D89B5D45A1048DD542CEB93BAF41E88DE4B74C5377CD691F8CEDD363D8FC7FEDF3D7B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010063029A5FFA59973D6B5234A550713CB9F4A5431E7E8B8FAAED49C1EAE5F3C43D0578802C15D6E7482FA09853AD5955331AFE584C3FD51E041858BE0272FE24D576D905C60533ED5B425CE9201BD6A19C818A4825B7E286B4E013F454B1C329AF49EC7A1528FF72755F8AECF04999AEBE6366B80392560CE1C5E37A4A44847AAED690472C47C043607A16008C403B6C02B31C4F2B61DEDB07B63AE4EA3816BA77AF7A2E00E64CA74D24C9FAC11B95E4389148244AC48D76DD249173174C3622FF149E8E20F92BA12EC5D265EABAD9ABF286676E8B92B8D28E10269C2533638A7D30A5A2C300180F8924FBA39A27DA6C023EFF3DAC031926BB661276C606B302D099A77966238FBC5771A739D0

Generated payload (excluding transport headers/trailers):

-
0000 | BA 0D 89 B5 BD D3 43 62 8E 05 18 35 1B EB 12 EF
-0010 | BC AF BB 7C 20 FB B9 18 86 EE 0C 2E BF BD 51 E8
-0020 | A5 03 40 98 03 00 00 00 FE 00 01 00 C7 1C AE B9
+
0000 | BA 0D 89 B5 D4 5A 10 48 DD 54 2C EB 93 BA F4 1E
+0010 | 88 DE 4B 74 C5 37 7C D6 91 F8 CE DD 36 3D 8F C7
+0020 | FE DF 3D 7B 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 = BA0D89B5BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A503409
 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 | 91 5F 31 6A F2 EB C8 58 37 50 13 FB 98 5F D5 C0
-0140 | 5B 1A 4F A4 C2 EC 94 F8 F7 C2 A4 BF 73 8A 97 59
-0150 | F8 09 DE 8B B0 85 A1 F9 63 72 F2 0B 9F 1D AF C0
-0160 | 00 92 64 EC 99 ED D8 F8 48 2F 9D FF 57 44 ED F7
-0170 | 95 6B 67 8E 68 28 EA 91 D0 58 3D 99 E7 B1 1C E9
-0180 | 7B A0 3B 75 D7 7C A1 F5 B4 F3 60 80 7D 38 C2 F0
-0190 | 49 02 F2 AC 70 35 C5 AD 1A 1A 43 D4 FC 3E 78 8F
-01A0 | CC 97 AE 32 D1 E9 4E 75 D2 89 AC DC 02 9E 3D AC
-01B0 | AF FF 11 64 31 8A AE 73 AC 22 53 EC 7C 48 76 C6
-01C0 | C1 E4 5E 96 64 F1 5A 44 40 4F E3 52 BF B5 09 65
-01D0 | 69 54 72 CD A9 9D DA 36 11 35 FE 5C 19 7F 57 83
-01E0 | F3 E2 6E EC 18 94 4D 58 51 3C 35 5E F6 80 0E 87
-01F0 | 38 CD 7B 98 7D D9 C9 34 44 1A 18 02 06 EE C0 10
-0200 | FF 0D 1A 75 67 69 85 0D 5F AF B0 5D FB A9 67 B2
-0210 | D0 BA 5D 69 D6 88 80 89 19 5A 07 24 9E 17 5A 6B
-0220 | E0 19 45 11 EA 6D 2F F0 19 A8 14 26 ED AE 4A 22
-0230 | 9B ED 77 66
+0130 | 63 02 9A 5F FA 59 97 3D 6B 52 34 A5 50 71 3C B9 +0140 | F4 A5 43 1E 7E 8B 8F AA ED 49 C1 EA E5 F3 C4 3D +0150 | 05 78 80 2C 15 D6 E7 48 2F A0 98 53 AD 59 55 33 +0160 | 1A FE 58 4C 3F D5 1E 04 18 58 BE 02 72 FE 24 D5 +0170 | 76 D9 05 C6 05 33 ED 5B 42 5C E9 20 1B D6 A1 9C +0180 | 81 8A 48 25 B7 E2 86 B4 E0 13 F4 54 B1 C3 29 AF +0190 | 49 EC 7A 15 28 FF 72 75 5F 8A EC F0 49 99 AE BE +01A0 | 63 66 B8 03 92 56 0C E1 C5 E3 7A 4A 44 84 7A AE +01B0 | D6 90 47 2C 47 C0 43 60 7A 16 00 8C 40 3B 6C 02 +01C0 | B3 1C 4F 2B 61 DE DB 07 B6 3A E4 EA 38 16 BA 77 +01D0 | AF 7A 2E 00 E6 4C A7 4D 24 C9 FA C1 1B 95 E4 38 +01E0 | 91 48 24 4A C4 8D 76 DD 24 91 73 17 4C 36 22 FF +01F0 | 14 9E 8E 20 F9 2B A1 2E C5 D2 65 EA BA D9 AB F2 +0200 | 86 67 6E 8B 92 B8 D2 8E 10 26 9C 25 33 63 8A 7D +0210 | 30 A5 A2 C3 00 18 0F 89 24 FB A3 9A 27 DA 6C 02 +0220 | 3E FF 3D AC 03 19 26 BB 66 12 76 C6 06 B3 02 D0 +0230 | 99 A7 79 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, 801F803569BED776601E00C5E99A77966 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4A0020000 (672 in decimal)9C020000 (668 in decimal) Message body length
nonce 24, 16BDD343628E0518351BEB12EFBCAFBB7CD45A1048DD542CEB93BAF41E88DE4B74 Value generated by client in Step 1
server_nonce 40, 1620FBB91886EE0C2EBFBD51E8A5034098C5377CD691F8CEDD363D8FC7FEDF3D7B Value received from server in Step 2
encrypted_answer 56, 596FE500200BC64C0EE340FB933C2718E69 BEBC56F7B83F9556D7EE47778465A46E 15502AB228FC8104D9D34E629CF61E80 F9E4DB7A9F5F98F0ED7E90AE85796D51 422C98651CF7171365A7157A649BAD47 8AA485355214E9FCBFCF97D4E9E2ECCF 8C0FBAAD9F5860E1CEDF83085906C798 518A1FD90F985A8CA9561987CA31C792 DBAD7B79236C3506E64A57AD8395D931 3549A6A0F6B29A60D6626AAE864B215F BE04A5F1EA06A60402D3C59F3A2E3984 2ADC5BC9DF9441040B88B6EFEA017ED8 040B2843FF06680AE7E0A6B8A7E59311 F18BC5095D2B655E19CF396000A8BB19 D0EEDAB9B58D3331E7DF012D8014EC09 4338E86E1D57F19163A086E5DC5D489C C2BA3051B37BAA2EA2F947ECA131E1A5 79A75F10B0B05962DF6CCE974E0027D5 ECF0294EB04F8BF938305A9225DEC0E0 207FDB16C1C417C56160F6F54039C1C6 12A35112069066B38C104094C3ACE00B A51A120DFA2CDAE97AC354B8172D0C5B E0C294C3AC973174E4FECA50BDB2EF1D ECC37DE6548F4D5AF3FA597A6BE268B6 9433C6915D85E44C92246761B4B9DE64 8FCEBFFBB68ACAC9968ED45A07E798E4 3AEFB2583EF342C436BBB0D4B2497294 E367AF3EB4AE8984493AEE2CF61D1000 508DCEB1B20DD99B71FC5DCB05464D49 63D917D4F40559F386C5B80A9EBFD98C 1E10A00ECA344AEA476BB1B6E27E9220 1B63F893C8EE1036B13E2B0E0AC3F6C5 EEC8CCDEA4C541CB57D8132CB52EC69B 1A648F3C16CDA7774486089ACF2CC097 767509C18CF5FC44FF74410338A6C1AB CDB51ED626DCAE323479B34334874C2D 05DD98FE8E55F4465F865E2FCF1C5BF2
0493A2D6
FE500200E5D33B92D07708033CB6363F FFCFE1F7613A2595FF75CC40AD0BDEA4 8EE577F643E92990D4A8AB1EC664C9E5 737E2630A3D260EA25B942A655E0EEEA 5EDF72FA6C811B82AF52BD436AC4D573 032D27980B6BAD43485E2FA9B127EEF2 1605661B306BCD91A4299007FB8D1FD3 57DDEE2B58D90BEF5D48C6F2D216C556 758B96BC9B099BFF85AD7CE5D4FE0287 9A271C415E70E6002365DD494F66D3DF AA4B4AE89A9474733B044A4BCE82C1DC 5115F04BE13CDF2F4078CC6F415A4848 E95358B76FF4892419389024729C53F9 0BD5B00AA7215B648DA2787DA81D2BA6 832BE9948E5C91781E9945491B0046CB FB5FD49F8448A37B4D9A0BA5BB1D6294 2694B3E7609DFD0006394709333468EB 3EFBE77B35C22F248C2162FA23DD96D3 CE7FD516C41528BB00A31FEFA690BBF7 63086968F55577CFE9A54499C538B6E9 2165AF8E4828C3A67C5F3B9E37A5E982 3C5332E3DDAAD419F61311B4B715B286 BE0A685C738E482A6FCC0AE2DB9B6984 091ACE08EF54FD5B038796928C8CEBB7 A6BD3E471D78ABF32A80DB1773E2CD06 78CBFB398964C35FB13F379D6014CC66 C54D600B04CD4F795DB4415FFA06F3B5 5FE819FD7DA0D8EA563C01BF8D357129 97A6EB8FE3C9ADA0070394826ABEA9BA E43E923E85A33CEA8FA82AB50DFF6242 82C3B1D63D6581624F62798425355601 60528C768046838309814D2F66690962 3D84D30061ECF955022BA55A41E04F69 01A83D6C152DCB07875CCD13BBCF30FD 01483DE8ABC03FA61C55E3C75AD9901E BBA8FA8C61BF04DA0F8F61EBE3488902 43CED5DB759A9965EB0661083E1190FA
4F5CBF23
See below
@@ -570,13 +570,13 @@ answer = BA0D89B5BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A503409 - + - + @@ -594,13 +594,13 @@ answer = BA0D89B5BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A503409 - + - + @@ -609,34 +609,34 @@ answer = BA0D89B5BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A503409
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 = 85F40B8BFC6E8574B767C1688EB24E0331A92CD2ECBE358F24CF362D93EE2DEEF61B7ADD62B9A442700CBDA83860048232597F3215540A27619DE5C975A31383BFD50332F9F7FBA8A7DF2FFDAC1A51B24A6E37A67D4363C427E1986F4769329E1C114D0D6285C05C1887BA606F296F49B145E5B0141AD6698CD8237E41494DF3F64E5C3BE577011F0CE1D82594929B3E58F35BF2ECEE5480D37871A9547DB5A5C586F3E980EA3B33BAC49A0BAFA71412004B3D6D55734673C72688DBD4C06BFA3DF9E72FBEF2261D64FCF684ABD7F2AE1627E3D86D2D4E9608644AE02447F4DBCF60C2218D2E7E255E8D3523FBB45A933E4709043E8247661F145496F9AA380A
+
b = 553BE1FD6D539A750269AD7421BDD77C4D961D48B0582D9DFAC6C574677F5AD262F1A98E38D3AF1683F4C32B7CCEB6820DEA4746B09608DCC3A8C4336E769C8FDCD00A8EF7FAB6F84D427759B379BD7859773B56BFD0CDA17D94D8DA330269349A6162DB4D5A40BCCFC4BD44107EA738CDA8A00258988E3768EBAB2BC14CBB72A32FDC03AACB3DE8DE6D0BADE1BAC3964FFB23CCECCB79A0B34B75F934145D131EA3431AB430F6CAFE42F52B7153E2D8701A74750455AB9EC14C63AD3E868F2143BB00B4800D4BE0ABDBECD375A55C6680D7BEB939736D750E5DA9B4FE79263E9E88BA6591A81C03399F00206B0520836B58DA0DEC9702125277FE3E7FA9EE6C

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

-
g_b = 4C7F87CD92831F9C137C0E4E514710E8CACBB841CFC642D2C39623D1A675DFD8E99242C4F1E172C727F64DA6B0A265DCD3C35609A6A99CF284AAC1B14632D31AD8415C6BB963559981121E7DCC157FDB59B72AC980175AB7C605A22C759CFD2D36644BAF643984A31F86E2A00804062FBA7E9072CAC2837716E9251000C40D96EB3ECF5538565094CA1D2A499F425B6046177467028062D618B754F2534D89A2974D3BDF896139935F30C305DF67CB2BDD1D701823EDC17F1908E69FF324C33F7F830B38A08A8C11D99A0D8B01D2ED3501CEFD2B3710DC8CF4799C79F2AF844E921DCC5D583C55E6BAA618AFD49BE51D569C25CD970E1030252F808FF618CFAE
+
g_b = 05117351AF3C1A403AD3258BC3BED605FF9E5374F6089CB63FFC40D4E4C7A7BDC2743BB884D15BA2B68233B361C6FCFFEBE695943287A4F305895530AD810C602F27D427BB027C99B1AC81F4AAAB35A4EC4B9F6577633D6E43B8ACE3FABEA81F0C00E4C49018BA337E4E4D45D33BFD0815C6D17FA65F8963804511CFCE62327382F16AC97E372A8C584DBC21D10D6E1D4D29392EF9F8C5B01063775EC3D1945E3A106970158A94F01B2F9D1ACE7041BC0A5F1B4426453FFEC61F601589F6290316C67A38B76E42ECCDE9D1F13F1C0BD0E85AA46B0AFD8E1788E7F9732255B6B30A036C27CA35241DBA73A8274D2FA94CAA2A04A705DF6F209E07B3F3ABE92CA6
7.1) generation of encrypted_data

Generated payload (excluding transport headers/trailers):

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

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, 16BDD343628E0518351BEB12EFBCAFBB7CD45A1048DD542CEB93BAF41E88DE4B74 Value generated by client in Step 1
server_nonce 20, 1620FBB91886EE0C2EBFBD51E8A5034098C5377CD691F8CEDD363D8FC7FEDF3D7B Value received from server in Step 2
g_a 300, 260FE000100915F316AF2EBC858375013FB 985FD5C05B1A4FA4C2EC94F8F7C2A4BF 738A9759F809DE8BB085A1F96372F20B 9F1DAFC0009264EC99EDD8F8482F9DFF 5744EDF7956B678E6828EA91D0583D99 E7B11CE97BA03B75D77CA1F5B4F36080 7D38C2F04902F2AC7035C5AD1A1A43D4 FC3E788FCC97AE32D1E94E75D289ACDC 029E3DACAFFF1164318AAE73AC2253EC 7C4876C6C1E45E9664F15A44404FE352 BFB50965695472CDA99DDA361135FE5C 197F5783F3E26EEC18944D58513C355E F6800E8738CD7B987DD9C934441A1802 06EEC010FF0D1A756769850D5FAFB05D FBA967B2D0BA5D69D6888089195A0724 9E175A6BE0194511EA6D2FF019A81426
EDAE4A22
FE00010063029A5FFA59973D6B5234A5 50713CB9F4A5431E7E8B8FAAED49C1EA E5F3C43D0578802C15D6E7482FA09853 AD5955331AFE584C3FD51E041858BE02 72FE24D576D905C60533ED5B425CE920 1BD6A19C818A4825B7E286B4E013F454 B1C329AF49EC7A1528FF72755F8AECF0 4999AEBE6366B80392560CE1C5E37A4A 44847AAED690472C47C043607A16008C 403B6C02B31C4F2B61DEDB07B63AE4EA 3816BA77AF7A2E00E64CA74D24C9FAC1 1B95E4389148244AC48D76DD24917317 4C3622FF149E8E20F92BA12EC5D265EA BAD9ABF286676E8B92B8D28E10269C25 33638A7D30A5A2C300180F8924FBA39A 27DA6C023EFF3DAC031926BB661276C6
06B302D0
g_a diffie-hellman parameter
server_time 560, 49BED7766 (1719135643 in decimal)99A77966 (1719248793 in decimal) Server time
@@ -658,19 +658,19 @@ answer = BA0D89B5BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A503409 - + - + - + @@ -684,47 +684,47 @@ answer = BA0D89B5BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A503409

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 = 54B64366BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A50340980000000000000000FE0001004C7F87CD92831F9C137C0E4E514710E8CACBB841CFC642D2C39623D1A675DFD8E99242C4F1E172C727F64DA6B0A265DCD3C35609A6A99CF284AAC1B14632D31AD8415C6BB963559981121E7DCC157FDB59B72AC980175AB7C605A22C759CFD2D36644BAF643984A31F86E2A00804062FBA7E9072CAC2837716E9251000C40D96EB3ECF5538565094CA1D2A499F425B6046177467028062D618B754F2534D89A2974D3BDF896139935F30C305DF67CB2BDD1D701823EDC17F1908E69FF324C33F7F830B38A08A8C11D99A0D8B01D2ED3501CEFD2B3710DC8CF4799C79F2AF844E921DCC5D583C55E6BAA618AFD49BE51D569C25CD970E1030252F808FF618CFAE
-padding = 2C0117281AD0958C0F04A25F
-tmp_aes_key = 63BF1BC5DB02E0ADE18277C00F02786F3059DE28473FBEE7333DAB1495A9BE8C
-tmp_aes_iv = D37420FF595A1B55C7F1700B81597A184B050F3DAB81CA004405375F345DF448
+
data = 54B64366D45A1048DD542CEB93BAF41E88DE4B74C5377CD691F8CEDD363D8FC7FEDF3D7B0000000000000000FE00010005117351AF3C1A403AD3258BC3BED605FF9E5374F6089CB63FFC40D4E4C7A7BDC2743BB884D15BA2B68233B361C6FCFFEBE695943287A4F305895530AD810C602F27D427BB027C99B1AC81F4AAAB35A4EC4B9F6577633D6E43B8ACE3FABEA81F0C00E4C49018BA337E4E4D45D33BFD0815C6D17FA65F8963804511CFCE62327382F16AC97E372A8C584DBC21D10D6E1D4D29392EF9F8C5B01063775EC3D1945E3A106970158A94F01B2F9D1ACE7041BC0A5F1B4426453FFEC61F601589F6290316C67A38B76E42ECCDE9D1F13F1C0BD0E85AA46B0AFD8E1788E7F9732255B6B30A036C27CA35241DBA73A8274D2FA94CAA2A04A705DF6F209E07B3F3ABE92CA6
+padding = DEE8F11B2001E4F5E7EB904F
+tmp_aes_key = B6DCA375BD1FBCB35C5DC4AC99AF7BEEA45A673F832B617967231EB190E8344E
+tmp_aes_iv = DD4D80EFB531616F749D717D8D556794F655938F3D1942FDFDA6EE4693B1FFC5

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 = 4D4F434D3F9C6BA064D27B62E563AC86D46F79C7334187270929F137A2F38F241113DA6F2E07B240A10079E4063081F26846395786AC9F47C73634123512C45D9A3D4733CDD63FCB91159F19D458B79193488B84D02B7F8521D7C6AA9F632558E436B0C865B201935AED75F6E4F33FE1633D1C79C9821BB62C838A1DF84DDE32AA6C5C19C872BB6A4835C6EAB93FD1C3680465210DB0E0ADEC3B155D742EBECEA4FB1E63CE68CAB77330543A7FC8ED2D2AD2A0D625BAF67E17312BE2C2D5C2C54C4A9C1C9F63BA207C7B8E301E71B8ADC1E0C8A8B9D1C6FC1618ED64D07A37A7DCF9ED2DB758098F88419644B5422EFD62710E46D0859A224CF4B5652E3FE7E3C4C3BBC675AB96772904B857D2D8E76ADF5032A6D6AFFAE0D4EA3F9183B2BC2461678716F118E0F735E28A558FF6BE33668C9666EA6B68049C635C344783A568C59D061480A4A8EB4936FCCF6117F272
+
encrypted_data = 1A579496107925531B376D709AAC2A7817B1E1D22CD1A40B24B07CCEC9A63A9367BEE0B1986B225490E6C01CC07960DD8C3AAA1C00D71C2FFDBEEEB136A0D012EED1F00EA4A8ED4D46A06EFE148D6BB2200365C653E6D7B9362792469B26C29735EFE78F06606A75A56B59091FC996E632F02E05BD3D1872C1B3FAAACD9CCF223611B60121FCF921BCB6ACE58852371D6184477D0AB01BBE61D30D57FB1E34F657E229567099820C630F2BF4C431866147C03127347E762DE1E514BF06647E85C2E1901813AA328052F78F26396B8DC193A00C4E15FA32F1CFBC452B3A051715F2F152814826A24F8D07CCDF7B73DC45D5EE0B1ADF389160909DC267C38B182A272C99A24484B376DA78B61A648F9B9819B8F3387BD9E7D72E604771DA38CC3580C21A580051537B0CDDE8107A5680058AD757846AE7487E4F2E51CB21F9D04E49AE9E047294FEB543DC60189A0BA8EC

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

Payload (de)serialization:

set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
nonce 4, 16BDD343628E0518351BEB12EFBCAFBB7CD45A1048DD542CEB93BAF41E88DE4B74 Value generated by client in Step 1
server_nonce 20, 1620FBB91886EE0C2EBFBD51E8A5034098C5377CD691F8CEDD363D8FC7FEDF3D7B Value received from server in Step 2
g_b 36, 260FE0001004C7F87CD92831F9C137C0E4E 514710E8CACBB841CFC642D2C39623D1 A675DFD8E99242C4F1E172C727F64DA6 B0A265DCD3C35609A6A99CF284AAC1B1 4632D31AD8415C6BB963559981121E7D CC157FDB59B72AC980175AB7C605A22C 759CFD2D36644BAF643984A31F86E2A0 0804062FBA7E9072CAC2837716E92510 00C40D96EB3ECF5538565094CA1D2A49 9F425B6046177467028062D618B754F2 534D89A2974D3BDF896139935F30C305 DF67CB2BDD1D701823EDC17F1908E69F F324C33F7F830B38A08A8C11D99A0D8B 01D2ED3501CEFD2B3710DC8CF4799C79 F2AF844E921DCC5D583C55E6BAA618AF D49BE51D569C25CD970E1030252F808F
F618CFAE
FE00010005117351AF3C1A403AD3258B C3BED605FF9E5374F6089CB63FFC40D4 E4C7A7BDC2743BB884D15BA2B68233B3 61C6FCFFEBE695943287A4F305895530 AD810C602F27D427BB027C99B1AC81F4 AAAB35A4EC4B9F6577633D6E43B8ACE3 FABEA81F0C00E4C49018BA337E4E4D45 D33BFD0815C6D17FA65F8963804511CF CE62327382F16AC97E372A8C584DBC21 D10D6E1D4D29392EF9F8C5B01063775E C3D1945E3A106970158A94F01B2F9D1A CE7041BC0A5F1B4426453FFEC61F6015 89F6290316C67A38B76E42ECCDE9D1F1 3F1C0BD0E85AA46B0AFD8E1788E7F973 2255B6B30A036C27CA35241DBA73A827 4D2FA94CAA2A04A705DF6F209E07B3F3
ABE92CA6
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 = 4CD3C3FF187CD37E9662FB897FBB2AE7A0FC0605E197D9E38679098F6E14733C9467624818FC014391A76FB45183D0AE8BF5F93769A1391F8FC19BAE426367A4B7A756F693342FD96A66F20C6C2637495377F7FF327EF401A28828C6759EA8CFC13AF4CC3A89CA20C1C940CEF532C7885349B5CE96963BEFB2ED64E56997E87B25E2A6DBC7072C48E6859D551252A6DB73F8DA90637A8E260D7B594E75AAFA1630815853B176EBD0B2CDF9F0DD0610942C1A862F9AD477C54ED5C2286A14F043E98711310B2A9CA0C756CA68585193E692C43C61015EBEB95CF9D81A9A714B97882F250D047AE9C3669F0BDA33F8A5729B6528917CA48F4E3A45B156121CC968
+
auth_key = 0BF99E1B1020531057E407D8CA793759EAB5D8BA2E88F7719EB6EA3ADDD458067BA11914DBE76F5FF192A7CA383CB65E1F977FCAFF69057B04E196DCFCF973C951BD35D649101125498227D4D31E678E7F0F2AA4C0B0A182D33EB850CB2471ADEE4FAD7A6C88AB91AA327A4D391C0046A055E5A6E5CB2D2AC7E9E9FD7BC7C75DDEC706788C0023920FB6A82B33E299762117A849F339F2D256625C46AA77D32EFDEA030AD6A44EEDE98AB85718F2F3C66B59892C3A0E546F11B8B77741FACBA65352FB926B3B6FFA254140C0FE7CA83029FD4F9BBDCA3A54AD45A109E572D4E2DC3A17F9A3AD7ACF6EF796E1621865823F31A1774968EF01A5F1259FEA423BD9
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 68 5C E9 9B ED 77 66
-0010 | B0 00 00 00 34 F7 CB 3B BD D3 43 62 8E 05 18 35
-0020 | 1B EB 12 EF BC AF BB 7C 20 FB B9 18 86 EE 0C 2E
-0030 | BF BD 51 E8 A5 03 40 98 BE BA 32 DD A2 AC 6F 94
-0040 | 07 61 48 8F 7B 8E C3 03
+
0000 | 00 00 00 00 00 00 00 00 01 3C 46 34 9A A7 79 66
+0010 | 68 00 00 00 34 F7 CB 3B D4 5A 10 48 DD 54 2C EB
+0020 | 93 BA F4 1E 88 DE 4B 74 C5 37 7C D6 91 F8 CE DD
+0030 | 36 3D 8F C7 FE DF 3D 7B 6A 7C 96 A2 B7 3A 3C A0
+0040 | 8A 99 2A C5 EA 47 56 D0

Payload (de)serialization:

dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
message_id 8, 8CC5B05009BED77669C30060099A77966 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 16BDD343628E0518351BEB12EFBCAFBB7CD45A1048DD542CEB93BAF41E88DE4B74 Value generated by client in Step 1
server_nonce 40, 1620FBB91886EE0C2EBFBD51E8A5034098C5377CD691F8CEDD363D8FC7FEDF3D7B Value received from server in Step 2
encrypted_data 56, 340FE5001004D4F434D3F9C6BA064D27B62 E563AC86D46F79C7334187270929F137 A2F38F241113DA6F2E07B240A10079E4 063081F26846395786AC9F47C7363412 3512C45D9A3D4733CDD63FCB91159F19 D458B79193488B84D02B7F8521D7C6AA 9F632558E436B0C865B201935AED75F6 E4F33FE1633D1C79C9821BB62C838A1D F84DDE32AA6C5C19C872BB6A4835C6EA B93FD1C3680465210DB0E0ADEC3B155D 742EBECEA4FB1E63CE68CAB77330543A 7FC8ED2D2AD2A0D625BAF67E17312BE2 C2D5C2C54C4A9C1C9F63BA207C7B8E30 1E71B8ADC1E0C8A8B9D1C6FC1618ED64 D07A37A7DCF9ED2DB758098F88419644 B5422EFD62710E46D0859A224CF4B565 2E3FE7E3C4C3BBC675AB96772904B857 D2D8E76ADF5032A6D6AFFAE0D4EA3F91 83B2BC2461678716F118E0F735E28A55 8FF6BE33668C9666EA6B68049C635C34 4783A568C59D061480A4A8EB4936FCCF
6117F272
FE5001001A579496107925531B376D70 9AAC2A7817B1E1D22CD1A40B24B07CCE C9A63A9367BEE0B1986B225490E6C01C C07960DD8C3AAA1C00D71C2FFDBEEEB1 36A0D012EED1F00EA4A8ED4D46A06EFE 148D6BB2200365C653E6D7B936279246 9B26C29735EFE78F06606A75A56B5909 1FC996E632F02E05BD3D1872C1B3FAAA CD9CCF223611B60121FCF921BCB6ACE5 8852371D6184477D0AB01BBE61D30D57 FB1E34F657E229567099820C630F2BF4 C431866147C03127347E762DE1E514BF 06647E85C2E1901813AA328052F78F26 396B8DC193A00C4E15FA32F1CFBC452B 3A051715F2F152814826A24F8D07CCDF 7B73DC45D5EE0B1ADF389160909DC267 C38B182A272C99A24484B376DA78B61A 648F9B9819B8F3387BD9E7D72E604771 DA38CC3580C21A580051537B0CDDE810 7A5680058AD757846AE7487E4F2E51CB 21F9D04E49AE9E047294FEB543DC6018
9A0BA8EC
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, 801685CE99BED7766013C46349AA77966 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4B0000000 (176 in decimal)68000000 (104 in decimal) Message body length
nonce 24, 16BDD343628E0518351BEB12EFBCAFBB7CD45A1048DD542CEB93BAF41E88DE4B74 Value generated by client in Step 1
server_nonce 40, 1620FBB91886EE0C2EBFBD51E8A5034098C5377CD691F8CEDD363D8FC7FEDF3D7B Value received from server in Step 2
new_nonce_hash1 56, 16BEBA32DDA2AC6F940761488F7B8EC3036A7C96A2B73A3CA08A992AC5EA4756D0 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.