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 @@
message_id
8, 8
-44590D005427C565
+1C5D0E00902EC565
Message ID generated as specified here » (unixtime() << 32) + (N*4)
@@ -95,7 +95,7 @@
nonce
24, 16
-85D5BF80B189FC0CA6C37EAB8279C730
+800BA718BC0E7EA3F5905067F72A9564
Random number
@@ -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 @@
message_id
8, 8
-016486F85427C565
+0180522D902EC565
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-84000000
(132 in decimal)
+C4000000
(196 in decimal)
Message body length
@@ -150,19 +150,19 @@
nonce
24, 16
-85D5BF80B189FC0CA6C37EAB8279C730
+800BA718BC0E7EA3F5905067F72A9564
Value generated by client in Step 1
server_nonce
40, 16
-63D248C5E09A636096C3543C7616A35E
+D6A3856C3E35034B03006EFBC27F6EEF
Server-generated random number
pq
56, 12
-0821489646FBB5259B000000
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
@@ -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
pq
4, 12
-0821489646FBB5259B000000
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, 8
-04580CAEBD000000
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, 8
-0460C53737000000
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, 16
-85D5BF80B189FC0CA6C37EAB8279C730
+800BA718BC0E7EA3F5905067F72A9564
Value generated by client in Step 1
server_nonce
48, 16
-63D248C5E09A636096C3543C7616A35E
+D6A3856C3E35034B03006EFBC27F6EEF
Value received from server in Step 2
new_nonce
64, 32
-13BC04D073971FA01B33FD074FCC123C
33BB95FC8CDE98010BAE6205429E5547
+10CA08B00013DB56A7C38DFCE608E250
DFA346479E075A31C07BC064C0661CE6
Client-generated random number
@@ -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;
@@ -345,7 +345,7 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
message_id
8, 8
-5C940A005527C565
+F0CF0E00902EC565
Message ID generated as specified here » (unixtime() << 32) + (N*4)
@@ -363,25 +363,25 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
nonce
24, 16
-85D5BF80B189FC0CA6C37EAB8279C730
+800BA718BC0E7EA3F5905067F72A9564
Value generated by client in Step 1
server_nonce
40, 16
-63D248C5E09A636096C3543C7616A35E
+D6A3856C3E35034B03006EFBC27F6EEF
Value received from server in Step 2
p
56, 8
-04580CAEBD000000
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, 8
-0460C53737000000
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
@@ -393,7 +393,7 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
encrypted_data
80, 260
-FE000100AB09AB1EAC21B3D1F9DAAF16
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
@@ -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;
@@ -464,13 +464,13 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
message_id
8, 8
-01DCB1C75527C565
+01E0CED3902EC565
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-C4020000
(708 in decimal)
+AC020000
(684 in decimal)
Message body length
@@ -482,19 +482,19 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
nonce
24, 16
-85D5BF80B189FC0CA6C37EAB8279C730
+800BA718BC0E7EA3F5905067F72A9564
Value generated by client in Step 1
server_nonce
40, 16
-63D248C5E09A636096C3543C7616A35E
+D6A3856C3E35034B03006EFBC27F6EEF
Value received from server in Step 2
encrypted_answer
56, 596
-FE500200E671FEFBB4B2A99FB2D7196D
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
@@ -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;
@@ -570,13 +570,13 @@ answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35
nonce
4, 16
-85D5BF80B189FC0CA6C37EAB8279C730
+800BA718BC0E7EA3F5905067F72A9564
Value generated by client in Step 1
server_nonce
20, 16
-63D248C5E09A636096C3543C7616A35E
+D6A3856C3E35034B03006EFBC27F6EEF
Value received from server in Step 2
@@ -594,13 +594,13 @@ answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35
g_a
300, 260
-FE00010073BE87B3EDC77461298DDECD
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, 4
-5527C565
(1707419477 in decimal)
+902EC565
(1707421328 in decimal)
Server time
@@ -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;
@@ -658,19 +658,19 @@ answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35
nonce
4, 16
-85D5BF80B189FC0CA6C37EAB8279C730
+800BA718BC0E7EA3F5905067F72A9564
Value generated by client in Step 1
server_nonce
20, 16
-63D248C5E09A636096C3543C7616A35E
+D6A3856C3E35034B03006EFBC27F6EEF
Value received from server in Step 2
g_b
36, 260
-FE00010040D09EB7C6A7B0717B564A74
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
@@ -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;
@@ -746,7 +746,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
message_id
8, 8
-5CCE05005627C565
+F4CF0E00902EC565
Message ID generated as specified here » (unixtime() << 32) + (N*4)
@@ -764,19 +764,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
nonce
24, 16
-85D5BF80B189FC0CA6C37EAB8279C730
+800BA718BC0E7EA3F5905067F72A9564
Value generated by client in Step 1
server_nonce
40, 16
-63D248C5E09A636096C3543C7616A35E
+D6A3856C3E35034B03006EFBC27F6EEF
Value received from server in Step 2
encrypted_data
56, 340
-FE5001001DF0B6D5DD8EFD79F454B187
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
@@ -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;
@@ -817,13 +817,13 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
message_id
8, 8
-01B4FB705727C565
+01946883912EC565
Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length
16, 4
-6C000000
(108 in decimal)
+94000000
(148 in decimal)
Message body length
@@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
nonce
24, 16
-85D5BF80B189FC0CA6C37EAB8279C730
+800BA718BC0E7EA3F5905067F72A9564
Value generated by client in Step 1
server_nonce
40, 16
-63D248C5E09A636096C3543C7616A35E
+D6A3856C3E35034B03006EFBC27F6EEF
Value received from server in Step 2
new_nonce_hash1
56, 16
-864CA9378A437E2DF7B1F307C8489B29
+4329748B0C4DF330C605E9BFA2142EA6
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.