From e867e19ab2a1304c8e38c213647dab9ee91ff45c Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 28 Jun 2023 20:43:29 +0000 Subject: [PATCH] Update content of files --- .../mtproto/samples-auth_key.html | 445 +++++++++--------- 1 file changed, 233 insertions(+), 212 deletions(-) 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 8e24998d1b..a5db719751 100644 --- a/data/web/corefork.telegram.org/mtproto/samples-auth_key.html +++ b/data/web/corefork.telegram.org/mtproto/samples-auth_key.html @@ -53,10 +53,10 @@ For example, for the abridged version of the transport », the…">

1. request req_pq_multi

Sent payload (excluding transport headers/trailers):

-
0000 | 00 00 00 00 00 00 00 00 00 00 00 00 C4 90 9C 64
-0010 | 14 00 00 00 F1 8E 7E BE DF D6 01 C3 D4 AD 9E 9F
-0020 | 59 2A 9E 0E 97 B3 E6 03
-

Payload serialization:

+
0000 | 00 00 00 00 00 00 00 00 00 00 00 00 58 9A 9C 64
+0010 | 14 00 00 00 F1 8E 7E BE 61 07 9B D3 CE 40 0A AA
+0020 | C0 6A 7E C0 F9 E7 0A F2
+

Payload (de)serialization:

req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;
@@ -77,7 +77,7 @@ For example, for the abridged version of the transport », the…"> - + @@ -95,7 +95,7 @@ For example, for the abridged version of the transport », the…"> - + @@ -104,14 +104,14 @@ For example, for the abridged version of the transport », the…">

2. response respq

Received payload (excluding transport headers/trailers):

-
0000 | 00 00 00 00 00 00 00 00 01 84 C1 D8 C4 90 9C 64
-0010 | 5C 00 00 00 63 24 16 05 DF D6 01 C3 D4 AD 9E 9F
-0020 | 59 2A 9E 0E 97 B3 E6 03 74 8B 67 63 BB E5 93 96
-0030 | D6 24 9A 28 79 1F F0 70 08 1B 0A 05 21 4E 98 91
-0040 | CB 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 68 EB F7 58 9A 9C 64
+0010 | 7C 00 00 00 63 24 16 05 61 07 9B D3 CE 40 0A AA
+0020 | C0 6A 7E C0 F9 E7 0A F2 F3 3B CB F4 A8 C2 3D 6A
+0030 | EE 2D 08 5D 77 13 F5 B1 08 14 E0 52 91 6A AF 01
+0040 | 01 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 serialization:

+

Payload (de)serialization:

resPQ#05162463 nonce:int128 server_nonce:int128 pq:string server_public_key_fingerprints:Vector<long> = ResPQ;
message_id 8, 800000000C4909C6400000000589A9C64 Exact unixtime*2^32, +(4*N) if N messages with the same message ID were already generated
nonce 24, 16DFD601C3D4AD9E9F592A9E0E97B3E60361079BD3CE400AAAC06A7EC0F9E70AF2 Random number
@@ -132,13 +132,13 @@ For example, for the abridged version of the transport », the…"> - + - + @@ -150,19 +150,19 @@ For example, for the abridged version of the transport », the…"> - + - + - + @@ -207,22 +207,22 @@ For example, for the abridged version of the transport », the…">

2.1. decompose p and q

-
pq = 1948375429401842123
-

Decompose into 2 prime cofactors: 1272587959 * 1531033997 = 1948375429401842123

-
p = 1272587959
-q = 1531033997
+
pq = 1504293060055335169
+

Decompose into 2 prime cofactors: 1504293060055335169 = 1019397109 * 1475669341

+
p = 1019397109
+q = 1475669341

2.2. encrypted_data generation

Generated payload (excluding transport headers/trailers):

-
0000 | 95 5F F5 A9 08 1B 0A 05 21 4E 98 91 CB 00 00 00
-0010 | 04 4B DA 26 B7 00 00 00 04 5B 41 B9 8D 00 00 00
-0020 | DF D6 01 C3 D4 AD 9E 9F 59 2A 9E 0E 97 B3 E6 03
-0030 | 74 8B 67 63 BB E5 93 96 D6 24 9A 28 79 1F F0 70
-0040 | 16 CE AD 6A 85 3A 5B C4 68 E8 1E 7C 54 EC 20 97
-0050 | C8 95 5D 1C C6 1F 6B 5F 13 4E 56 46 78 4C C0 81
+
0000 | 95 5F F5 A9 08 14 E0 52 91 6A AF 01 01 00 00 00
+0010 | 04 3C C2 C3 F5 00 00 00 04 57 F4 ED 5D 00 00 00
+0020 | 61 07 9B D3 CE 40 0A AA C0 6A 7E C0 F9 E7 0A F2
+0030 | F3 3B CB F4 A8 C2 3D 6A EE 2D 08 5D 77 13 F5 B1
+0040 | 77 C0 A6 8B C9 A6 9D B0 E0 49 94 75 DD 0E ED 08
+0050 | 0B F0 59 CA 67 9B A9 AB AC B5 BB CF 69 25 76 FA
 0060 | 02 00 00 00
-

Payload serialization:

+

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;
 p_q_inner_data_temp_dc#56fddf88 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int expires_in:int = P_Q_inner_data;
 p_q_inner_data#83c95aec pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 = P_Q_inner_data;
@@ -246,37 +246,37 @@ p_q_inner_data_temp#3c6a84d4 pq:string p:string q:string nonce:int128 server_non
 
- + - + - + - + - + - + @@ -291,40 +291,40 @@ p_q_inner_data_temp#3c6a84d4 pq:string p:string q:string nonce:int128 server_non

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 = 955FF5A9081B0A05214E9891CB000000044BDA26B7000000045B41B98D000000DFD601C3D4AD9E9F592A9E0E97B3E603748B6763BBE59396D6249A28791FF07016CEAD6A853A5BC468E81E7C54EC2097C8955D1CC61F6B5F134E5646784CC08102000000
-random_padding_bytes = 0A82901E4C955DEF7CB1FF0A698F2E1AF69116524EA5E8DFCEC0A5EAE4536B99D061DA8BFF2103419464FD69303912D9D62F377CC3245D7347AA1D0F8F8FE881C97EE2DFB2BDBE2E2D88FAAE42594F29D1770E17B44CF4B67CB36486
+
data = 955FF5A90814E052916AAF0101000000043CC2C3F50000000457F4ED5D00000061079BD3CE400AAAC06A7EC0F9E70AF2F33BCBF4A8C23D6AEE2D085D7713F5B177C0A68BC9A69DB0E0499475DD0EED080BF059CA679BA9ABACB5BBCF692576FA02000000
+random_padding_bytes = E5019A0D9F552D15ACB43E2264CD899B8F87534B8D3C6BD8DEBA75BBFD953DBD9141C0C87E30E96A343AAF4EA390489899E3325E01CC03C40198DDEA8CB382D6BCCB30380AD5FFA5AD054B2DC9BEB280C0039AF3C7DC0D6C62ED3703

And this is the output:

-
encrypted_data = C7B379DAF991447C61EEE34A0138053144E1FDB4DDAFA91909DDF35EB762DC35D1DE3F147E4A6DC44B7088B13A68BA103C621149578590BDD22CBEC0A61014AFEEC51623362AEDA4349AE0F35594D8941775AB5E646CABB26A3214E7873C45830E4A64C722C7E60D17F95DF82ECA383183CA1BFAB4545F2706860F61B6372777A85EDF44783227E3821835C78603115369E2EC01E788CAB624426F73CD4B7BA1BCA9AC831A92FCA878BE701B12772DEF1A7B3854F70C96F3856B50B2CCF775E4F661790CFC3B44D415432E00D6D2A98BF9D709A2C6C43BD3014D5F81025D4A1B68977004708EF7CB3FAE68F4248F26A2C52AEBF18F48478451D7461D09024A10
+
encrypted_data = CFCCD0A2FE4CE6DA364CAD61560586C2A0481427128257864AF9BA9B047612F7030BECC81F3A911A8A9178E2EA0205297B3A70B9C4001273E817C289613DC2F80033EEE5B41ED7B6C8EBB2CDAAFBB1115B800F736D0B5651FD279F13D7E23B13365FBE0F561137D7D33A32BCD2FAEB8091FF528BEFD48EF6EAAB42BE1201E879259EC477AD033CBD13C2C1607F9EB61663CE372DD5E7999FC5F0CE6B7903AE812BDDA619551BFBE69218BEC7E550B2E5E8428C2C8AF615ACD34F53D25737B87280E28BB2157B34987C00C1F45D734D79364166BB1FA275DA0563DBE09EFBC03450450947196C526A580A09B25F4CB23786ABFB00862AE177183A9FADA88E86D3

The length of the final string is 256 bytes.

3. request req_dh_params

Sent payload (excluding transport headers/trailers):

-
0000 | 00 00 00 00 00 00 00 00 04 00 00 00 C4 90 9C 64
-0010 | 40 01 00 00 BE E4 12 D7 DF D6 01 C3 D4 AD 9E 9F
-0020 | 59 2A 9E 0E 97 B3 E6 03 74 8B 67 63 BB E5 93 96
-0030 | D6 24 9A 28 79 1F F0 70 04 4B DA 26 B7 00 00 00
-0040 | 04 5B 41 B9 8D 00 00 00 85 FD 64 DE 85 1D 9D D0
-0050 | FE 00 01 00 C7 B3 79 DA F9 91 44 7C 61 EE E3 4A
-0060 | 01 38 05 31 44 E1 FD B4 DD AF A9 19 09 DD F3 5E
-0070 | B7 62 DC 35 D1 DE 3F 14 7E 4A 6D C4 4B 70 88 B1
-0080 | 3A 68 BA 10 3C 62 11 49 57 85 90 BD D2 2C BE C0
-0090 | A6 10 14 AF EE C5 16 23 36 2A ED A4 34 9A E0 F3
-00A0 | 55 94 D8 94 17 75 AB 5E 64 6C AB B2 6A 32 14 E7
-00B0 | 87 3C 45 83 0E 4A 64 C7 22 C7 E6 0D 17 F9 5D F8
-00C0 | 2E CA 38 31 83 CA 1B FA B4 54 5F 27 06 86 0F 61
-00D0 | B6 37 27 77 A8 5E DF 44 78 32 27 E3 82 18 35 C7
-00E0 | 86 03 11 53 69 E2 EC 01 E7 88 CA B6 24 42 6F 73
-00F0 | CD 4B 7B A1 BC A9 AC 83 1A 92 FC A8 78 BE 70 1B
-0100 | 12 77 2D EF 1A 7B 38 54 F7 0C 96 F3 85 6B 50 B2
-0110 | CC F7 75 E4 F6 61 79 0C FC 3B 44 D4 15 43 2E 00
-0120 | D6 D2 A9 8B F9 D7 09 A2 C6 C4 3B D3 01 4D 5F 81
-0130 | 02 5D 4A 1B 68 97 70 04 70 8E F7 CB 3F AE 68 F4
-0140 | 24 8F 26 A2 C5 2A EB F1 8F 48 47 84 51 D7 46 1D
-0150 | 09 02 4A 10
-

Payload serialization:

+
0000 | 00 00 00 00 00 00 00 00 00 00 00 00 59 9A 9C 64
+0010 | 40 01 00 00 BE E4 12 D7 61 07 9B D3 CE 40 0A AA
+0020 | C0 6A 7E C0 F9 E7 0A F2 F3 3B CB F4 A8 C2 3D 6A
+0030 | EE 2D 08 5D 77 13 F5 B1 04 3C C2 C3 F5 00 00 00
+0040 | 04 57 F4 ED 5D 00 00 00 85 FD 64 DE 85 1D 9D D0
+0050 | FE 00 01 00 CF CC D0 A2 FE 4C E6 DA 36 4C AD 61
+0060 | 56 05 86 C2 A0 48 14 27 12 82 57 86 4A F9 BA 9B
+0070 | 04 76 12 F7 03 0B EC C8 1F 3A 91 1A 8A 91 78 E2
+0080 | EA 02 05 29 7B 3A 70 B9 C4 00 12 73 E8 17 C2 89
+0090 | 61 3D C2 F8 00 33 EE E5 B4 1E D7 B6 C8 EB B2 CD
+00A0 | AA FB B1 11 5B 80 0F 73 6D 0B 56 51 FD 27 9F 13
+00B0 | D7 E2 3B 13 36 5F BE 0F 56 11 37 D7 D3 3A 32 BC
+00C0 | D2 FA EB 80 91 FF 52 8B EF D4 8E F6 EA AB 42 BE
+00D0 | 12 01 E8 79 25 9E C4 77 AD 03 3C BD 13 C2 C1 60
+00E0 | 7F 9E B6 16 63 CE 37 2D D5 E7 99 9F C5 F0 CE 6B
+00F0 | 79 03 AE 81 2B DD A6 19 55 1B FB E6 92 18 BE C7
+0100 | E5 50 B2 E5 E8 42 8C 2C 8A F6 15 AC D3 4F 53 D2
+0110 | 57 37 B8 72 80 E2 8B B2 15 7B 34 98 7C 00 C1 F4
+0120 | 5D 73 4D 79 36 41 66 BB 1F A2 75 DA 05 63 DB E0
+0130 | 9E FB C0 34 50 45 09 47 19 6C 52 6A 58 0A 09 B2
+0140 | 5F 4C B2 37 86 AB FB 00 86 2A E1 77 18 3A 9F AD
+0150 | A8 8E 86 D3
+

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, 80184C1D8C4909C640168EBF7589A9C64 Exact unixtime*2^32, +(4*N) if N messages with the same message ID were already generated
message_length 16, 45C000000 (92 in decimal)7C000000 (124 in decimal) Message body length
nonce 24, 16DFD601C3D4AD9E9F592A9E0E97B3E60361079BD3CE400AAAC06A7EC0F9E70AF2 Value generated by client in Step 1
server_nonce 40, 16748B6763BBE59396D6249A28791FF070F33BCBF4A8C23D6AEE2D085D7713F5B1 Server-generated random number
pq 56, 12081B0A05214E9891CB000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1948375429401842123
0814E052916AAF0101000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1504293060055335169
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
pq 4, 12081B0A05214E9891CB000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1948375429401842123
0814E052916AAF0101000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1504293060055335169
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p 16, 8044BDA26B7000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1272587959
043CC2C3F5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1019397109
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 24, 8045B41B98D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1531033997
0457F4ED5D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1475669341
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce 32, 16DFD601C3D4AD9E9F592A9E0E97B3E60361079BD3CE400AAAC06A7EC0F9E70AF2 Value generated by client in Step 1
server_nonce 48, 16748B6763BBE59396D6249A28791FF070F33BCBF4A8C23D6AEE2D085D7713F5B1 Value received from server in Step 2
new_nonce 64, 3216CEAD6A853A5BC468E81E7C54EC2097 C8955D1CC61F6B5F134E5646784CC08177C0A68BC9A69DB0E0499475DD0EED08 0BF059CA679BA9ABACB5BBCF692576FA Client-generated random number
@@ -345,7 +345,7 @@ random_padding_bytes = 0A82901E4C955DEF7CB1FF0A698F2E1AF69116524EA5E8DFCEC0A5EAE - + @@ -363,25 +363,25 @@ random_padding_bytes = 0A82901E4C955DEF7CB1FF0A698F2E1AF69116524EA5E8DFCEC0A5EAE - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = 0A82901E4C955DEF7CB1FF0A698F2E1AF69116524EA5E8DFCEC0A5EAE - + @@ -402,48 +402,48 @@ random_padding_bytes = 0A82901E4C955DEF7CB1FF0A698F2E1AF69116524EA5E8DFCEC0A5EAE

4. response server_dh_params_ok

Received payload (excluding transport headers/trailers):

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

Payload serialization:

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

Payload (de)serialization:

server_DH_params_fail#79cb045d nonce:int128 server_nonce:int128 new_nonce_hash:int128 = Server_DH_Params;
 server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
message_id 8, 804000000C4909C6400000000599A9C64 Exact unixtime*2^32, +(4*N) if N messages with the same message ID were already generated
nonce 24, 16DFD601C3D4AD9E9F592A9E0E97B3E60361079BD3CE400AAAC06A7EC0F9E70AF2 Value generated by client in Step 1
server_nonce 40, 16748B6763BBE59396D6249A28791FF070F33BCBF4A8C23D6AEE2D085D7713F5B1 Value received from server in Step 2
p 56, 8044BDA26B7000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1272587959
043CC2C3F5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1019397109
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 64, 8045B41B98D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1531033997
0457F4ED5D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1475669341
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
encrypted_data 80, 260FE000100C7B379DAF991447C61EEE34A 0138053144E1FDB4DDAFA91909DDF35E B762DC35D1DE3F147E4A6DC44B7088B1 3A68BA103C621149578590BDD22CBEC0 A61014AFEEC51623362AEDA4349AE0F3 5594D8941775AB5E646CABB26A3214E7 873C45830E4A64C722C7E60D17F95DF8 2ECA383183CA1BFAB4545F2706860F61 B6372777A85EDF44783227E3821835C7 8603115369E2EC01E788CAB624426F73 CD4B7BA1BCA9AC831A92FCA878BE701B 12772DEF1A7B3854F70C96F3856B50B2 CCF775E4F661790CFC3B44D415432E00 D6D2A98BF9D709A2C6C43BD3014D5F81 025D4A1B68977004708EF7CB3FAE68F4 248F26A2C52AEBF18F48478451D7461D
09024A10
FE000100CFCCD0A2FE4CE6DA364CAD61 560586C2A0481427128257864AF9BA9B 047612F7030BECC81F3A911A8A9178E2 EA0205297B3A70B9C4001273E817C289 613DC2F80033EEE5B41ED7B6C8EBB2CD AAFBB1115B800F736D0B5651FD279F13 D7E23B13365FBE0F561137D7D33A32BC D2FAEB8091FF528BEFD48EF6EAAB42BE 1201E879259EC477AD033CBD13C2C160 7F9EB61663CE372DD5E7999FC5F0CE6B 7903AE812BDDA619551BFBE69218BEC7 E550B2E5E8428C2C8AF615ACD34F53D2 5737B87280E28BB2157B34987C00C1F4 5D734D79364166BB1FA275DA0563DBE0 9EFBC03450450947196C526A580A09B2 5F4CB23786ABFB00862AE177183A9FAD
A88E86D3
See Generation of encrypted_data »
@@ -465,13 +465,13 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s - + - + @@ -483,31 +483,41 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s - + - + - +
message_id 8, 80164D069C5909C6401647985599A9C64 Exact unixtime*2^32, +(4*N) if N messages with the same message ID were already generated
message_length 16, 4C4020000 (708 in decimal)E8020000 (744 in decimal) Message body length
nonce 24, 16DFD601C3D4AD9E9F592A9E0E97B3E60361079BD3CE400AAAC06A7EC0F9E70AF2 Value generated by client in Step 1
server_nonce 40, 16748B6763BBE59396D6249A28791FF070F33BCBF4A8C23D6AEE2D085D7713F5B1 Value received from server in Step 2
encrypted_answer 56, 596FE500200941DB6389BB212EE21EFDC8F CBF22F9D12853E320DCCC7985D4EE801 A5B671512EC6228330245849E5D1980A B5D013237936E76130154D9F742C8F49 DBE6CAB450AC88A74D38E7E1C177E57E BB4AA534BA93DF8923BE4B1D60533A5D DF80DDB66CE7BAFA648A6BFC79B64142 1BDD30B4992FBB1871F94CD86F5C4953 E7540750EF5B80C0E34CA15964E8F40D C87D39B6A5EC270FFB84C7768AFE7C03 A0F2367728687C3642CEA73251754AC0 28556AEDD283FF18DB65A2D6B0A80B93 F2EDB5644ABD97762A5DE6449E29C9DA 78EFEAEBF0F6C97E2F52F99E99C9B861 7D8BB5BF769F4BF429E632F464D1C655 97F392B11900BE6C78D21CF1BABC4991 F0BA557A57FFEA041609E503856BFFFD F73D2A20392039C1EB8E21A3BA95CC85 267D00499B639AB2F7345E9276D4206C 151C2AA3A000016DB8309A5F54E265A6 F4BEAC0BDB486D2ACD539C1DD10E5F74 96582A5248CDD7DDC8E6D494CB7BBDA2 E9C7402C327003B92D7AA8BB77951FD5 83C148E3C5DC82C0EE0C11F0E6B2590F 3A1349D9076CDE62C3A162BA0EFD9060 EC7FB8FEF9DAABFFF86D4FDC5679CFF1 65C933DFBF81C25F6EDCB28730179560 A934272A944A64A287B101ED18E8B012 1C24EBF6C053A0F7FB38958FCC6360D5 2F66701499016C18363A95D3AAC8321E ED6209FD54B86E1361E6CA2BBEF603C6 6D4E8C732DD91BEA011913440E947711 A47D052CC7DBEB3C4EFF09F81FC38FCD 349AE79ECE9851AC8FA5611CDCD80785 DD7F50EE2A652D32E3D0FDD6D9A7D117 14B04F6D4F507F5BE5042C24A7B921AB 1B1D0E8B3AD27718F7198C34D9EACA57
E795AC60
FE500200F1B0F8E0E234D33F9E48D871 E12FC90CE88EA536E0A561EE5463158E 72208CF790CDAD29A3316DD8F36FB94C DD119BD77B4C7A62EFBC3E6EDC4010E8 9E7208651C7262155C791F2352EBF97F C6883C59BB94033EDE006E252C46FA2F 7B0BCAC6354AF423873F705BDE51AC92 4F1B59258CDB03ABCA67AD5B2FF1847C F5DB3F0F0A65525DEAB4E0FEA2B3BDF7 CB475215CFCBBF0782144B7A09153AF9 ACB637AC8C3738977A480A1C367F1395 404340E934F64628C17CD33FE5FDCB36 2638ADC41834CEB6B43C25F8072593D2 172FB2931AE1D74D5F62493A29EC52B3 1C911956AD8B1057CEAB920BA102A70D B678A1FE5D5A7A428716F5CC063EBBEC F6776AF4AE2DD2E2BACBA28240B90E26 76B05CE27F391275104412A65E5B56FC 741B62FEA8BA1D612CF1FF83AE513226 42B62B60582584D2459C946A497225C7 55C03CA5219CFA50F900685CFD26D75E 11267FF482A3CEA1DC50FAB87E08CB91 4FA4F6583A1A69104E034DBA054670F2 2AD266FE800D872428B5165DC54D87FF E992D31B25A0E04FFC7008D7E5BE0224 30630330D365D7B28D33EC8F54D4DF5C 5ED0D9E8A17535C8A03B25F4B297D4EC 036D6AEEDF84653E63DDDEE7A2B91A0F 0C2464FE56CD63D64315F77DDF6B4429 E6C1EC7169FC1F74963154738E34DF12 01E68BD03B5D7CBCC6D7E2820C4C05B5 1AF167437E4263E243E45293246AC63C 3B7AEE5DF2956385382161C876D78122 845E70BF4A37C148E3CBEF4749FE92E6 6B9DBA10321BEAF7728189CDCE8A0D80 548FA16A369A8F6689B6E2FCE56520C4 951422F2B213D917A56FF94F4D91BB96
867A8761
See Decomposition of encrypted_answer »

4.1 server_dh_inner_data decryption and deserialization

-

Decrypt encrypted_answer using the process specified in step 5.

+

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

+ +
encrypted_answer = F1B0F8E0E234D33F9E48D871E12FC90CE88EA536E0A561EE5463158E72208CF790CDAD29A3316DD8F36FB94CDD119BD77B4C7A62EFBC3E6EDC4010E89E7208651C7262155C791F2352EBF97FC6883C59BB94033EDE006E252C46FA2F7B0BCAC6354AF423873F705BDE51AC924F1B59258CDB03ABCA67AD5B2FF1847CF5DB3F0F0A65525DEAB4E0FEA2B3BDF7CB475215CFCBBF0782144B7A09153AF9ACB637AC8C3738977A480A1C367F1395404340E934F64628C17CD33FE5FDCB362638ADC41834CEB6B43C25F8072593D2172FB2931AE1D74D5F62493A29EC52B31C911956AD8B1057CEAB920BA102A70DB678A1FE5D5A7A428716F5CC063EBBECF6776AF4AE2DD2E2BACBA28240B90E2676B05CE27F391275104412A65E5B56FC741B62FEA8BA1D612CF1FF83AE51322642B62B60582584D2459C946A497225C755C03CA5219CFA50F900685CFD26D75E11267FF482A3CEA1DC50FAB87E08CB914FA4F6583A1A69104E034DBA054670F22AD266FE800D872428B5165DC54D87FFE992D31B25A0E04FFC7008D7E5BE022430630330D365D7B28D33EC8F54D4DF5C5ED0D9E8A17535C8A03B25F4B297D4EC036D6AEEDF84653E63DDDEE7A2B91A0F0C2464FE56CD63D64315F77DDF6B4429E6C1EC7169FC1F74963154738E34DF1201E68BD03B5D7CBCC6D7E2820C4C05B51AF167437E4263E243E45293246AC63C3B7AEE5DF2956385382161C876D78122845E70BF4A37C148E3CBEF4749FE92E66B9DBA10321BEAF7728189CDCE8A0D80548FA16A369A8F6689B6E2FCE56520C4951422F2B213D917A56FF94F4D91BB96867A8761
+tmp_aes_key = 83E6FC26B9543A3D5FE6357D7DF98DC7E5EDA4B1791A2973A414443CD6736E2B
+tmp_aes_iv = F61B20DAF8A413BCEBE132A7EE9410C958F7B1C3537E82A7C35E899F77C0A68B
+ +

Yielding:

+ +
answer_with_hash = B0130D06F5DE68C63D9D8BAD16F534BEE3EE354BBA0D89B561079BD3CE400AAAC06A7EC0F9E70AF2F33BCBF4A8C23D6AEE2D085D7713F5B103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002E356F542ED36C7C234A0C6DBA49CDF1B1D4510968CEF23450B0FC42F20B63757B95D5AFC1DCA0ED8E146219B411B0D254A7C740457F54E51C4EC8B6B9C97B84A23EA77E36D38A4230BE5D7B1E65BB3F0A4E6D486B22CB279703634AFE013962427A67D78C81FC74AD292FB970B3DFB4F00F93F0FB172B3C9069234E2154AC2D2CD52EA2015D693CF37308D81F1A27B92EE69B260B056A34ADBFC6496A419A24E2D8F54B048FCDD66AB99D0A3CD0DA36DE726019C11750F39FF63BAC6ADD9758286D44275535BB19B53AB57C7C890E0DE9DA13A50DC6F3E9F3C6EBD637489D6968960CC9991F69B0E2E1C306144395D303284C0C12D4376CB56BA051C060FCFF599A9C64A0D61A12CE49CCFA
+answer = BA0D89B561079BD3CE400AAAC06A7EC0F9E70AF2F33BCBF4A8C23D6AEE2D085D7713F5B103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002E356F542ED36C7C234A0C6DBA49CDF1B1D4510968CEF23450B0FC42F20B63757B95D5AFC1DCA0ED8E146219B411B0D254A7C740457F54E51C4EC8B6B9C97B84A23EA77E36D38A4230BE5D7B1E65BB3F0A4E6D486B22CB279703634AFE013962427A67D78C81FC74AD292FB970B3DFB4F00F93F0FB172B3C9069234E2154AC2D2CD52EA2015D693CF37308D81F1A27B92EE69B260B056A34ADBFC6496A419A24E2D8F54B048FCDD66AB99D0A3CD0DA36DE726019C11750F39FF63BAC6ADD9758286D44275535BB19B53AB57C7C890E0DE9DA13A50DC6F3E9F3C6EBD637489D6968960CC9991F69B0E2E1C306144395D303284C0C12D4376CB56BA051C060FCFF599A9C64A0D61A12CE49CCFA
+

Generated payload (excluding transport headers/trailers):

-
0000 | BA 0D 89 B5 DF D6 01 C3 D4 AD 9E 9F 59 2A 9E 0E
-0010 | 97 B3 E6 03 74 8B 67 63 BB E5 93 96 D6 24 9A 28
-0020 | 79 1F F0 70 03 00 00 00 FE 00 01 00 C7 1C AE B9
+
0000 | BA 0D 89 B5 61 07 9B D3 CE 40 0A AA C0 6A 7E C0
+0010 | F9 E7 0A F2 F3 3B CB F4 A8 C2 3D 6A EE 2D 08 5D
+0020 | 77 13 F5 B1 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
@@ -524,24 +534,24 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s
 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 | 79 0F 9F 6E E3 E6 FF 34 9C DF EC E3 86 C8 1B 49
-0140 | 2A F8 7B 0D B1 00 CB 7C D9 6E E2 9A 6F 74 1A FF
-0150 | A7 8F 6A 48 7C 89 80 11 FF 3B 64 7E 3E 1B 79 BC
-0160 | AA C2 74 7E 10 FA FA B3 69 AD BA 9E E6 7F DD 31
-0170 | 67 9C D3 35 6B 06 9F E3 1F 80 B2 5F 15 D4 6E 86
-0180 | 64 03 0E 4B EA 40 7A A8 90 22 C7 CB A2 7B AA E5
-0190 | 87 46 5D 8F B5 C0 0B A0 5B 74 92 43 94 1A 11 59
-01A0 | 8B 48 45 B4 80 C4 4C 38 0F F8 AC 87 4E FB 22 51
-01B0 | 84 17 43 23 28 AD 26 36 29 07 D1 B4 65 0C 02 65
-01C0 | 95 49 9F 53 55 82 11 FC 08 D8 00 72 98 00 B6 CF
-01D0 | EC 22 F0 E9 EB 56 4C A7 7E 7A 7F 97 D1 A9 21 65
-01E0 | 90 1F 65 2A AC DC 09 80 BD F8 A1 F1 0A 09 7D C8
-01F0 | 49 0D FA 27 1A 16 DF B0 AB 2D FB 10 28 6F 6E 12
-0200 | 03 AB 0A 92 5C DE DE D4 BB 94 00 43 4D 47 C5 90
-0210 | 08 E9 67 96 3B E1 1D 5E 12 F5 8B 8B 37 14 88 3F
-0220 | 7A 02 48 66 DB 59 3A 32 68 F3 98 CE D9 53 98 37
-0230 | C5 90 9C 64
-

Payload serialization:

+0130 | 2E 35 6F 54 2E D3 6C 7C 23 4A 0C 6D BA 49 CD F1 +0140 | B1 D4 51 09 68 CE F2 34 50 B0 FC 42 F2 0B 63 75 +0150 | 7B 95 D5 AF C1 DC A0 ED 8E 14 62 19 B4 11 B0 D2 +0160 | 54 A7 C7 40 45 7F 54 E5 1C 4E C8 B6 B9 C9 7B 84 +0170 | A2 3E A7 7E 36 D3 8A 42 30 BE 5D 7B 1E 65 BB 3F +0180 | 0A 4E 6D 48 6B 22 CB 27 97 03 63 4A FE 01 39 62 +0190 | 42 7A 67 D7 8C 81 FC 74 AD 29 2F B9 70 B3 DF B4 +01A0 | F0 0F 93 F0 FB 17 2B 3C 90 69 23 4E 21 54 AC 2D +01B0 | 2C D5 2E A2 01 5D 69 3C F3 73 08 D8 1F 1A 27 B9 +01C0 | 2E E6 9B 26 0B 05 6A 34 AD BF C6 49 6A 41 9A 24 +01D0 | E2 D8 F5 4B 04 8F CD D6 6A B9 9D 0A 3C D0 DA 36 +01E0 | DE 72 60 19 C1 17 50 F3 9F F6 3B AC 6A DD 97 58 +01F0 | 28 6D 44 27 55 35 BB 19 B5 3A B5 7C 7C 89 0E 0D +0200 | E9 DA 13 A5 0D C6 F3 E9 F3 C6 EB D6 37 48 9D 69 +0210 | 68 96 0C C9 99 1F 69 B0 E2 E1 C3 06 14 43 95 D3 +0220 | 03 28 4C 0C 12 D4 37 6C B5 6B A0 51 C0 60 FC FF +0230 | 59 9A 9C 64
+

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;
@@ -562,13 +572,13 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s - + - + @@ -586,13 +596,13 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s - + - + @@ -601,35 +611,35 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s

4.2. generate diffie-helman parameters

First, generate a secure random 2048-bit number b:

-
b = 9A995B773D2EFDBC35278F68CE723EBD131407AE61447E983B144A714FB86AF6029CE9537D24E5AD6CFE7335079D4B00725FDE14A974CC8D6C01B98EE6AA208D189A09514499060DB69BE3624425F3FCC8E53188FD3F60593E43945B8D2C5DEAC6A5A94EBDDDDD6ABF349044F28E6DCA180F6707B61B379B7C40BD20347FC16AA9D421CF523C8CC2EE024E0FCCF8D12BC40A2B83FF48747B2F651D20A65A044B8EEBA44C5AE9639B279868DCD774926FBA74767693B60D9C9F480C7E6C38839197F71E0A901972D2E467AE67BC57B9922655012F9C4A4C32546D9486559E3D0C193D92FC6349F5007C89907C3678F04F6B5745520929FB30677F3F75643CF5A1
+
b = BEB68C99A15F26F3590BB9E035CF2285590CDC8BCEC7DC112973D0D68FC78DD283FB7C38D39450FDA2B65BD7B4EBB25C042C4C1D7B52DAEEA7C40898984279DE8A5B4101D94A9621D2B4EF405864B0975FF21C6971B039161190346706C8A35473CA5B9E8CF0A1E3819D2DFA294270CEB6652DF940C26555425987513EAFD09CDD6F70C889DBBC1D1BBF287154760CC4BB3E80A8B313914F4017C22314A3DCDC634AE3BB7C33A45835E87A093706280FD7BEF2C1C3952BC19C55F2086E966EB374A635CC66D8B70899236C6E0944FF2353DE77610C9567ACC221FF036F29F463C0593DA02E90DE1AF4F65C1C709482610A76E71E20B1068B7DFC5D990E865D66

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

-
g_b = B5841CD8246261CFBD6FDA1C4BF64E7ECCC82C19EAB86C59D986C429D6A0D5204C547C74ED6AB61E28A4AA9A39FA676D14C1C9FACCE9B9D3056A34093408CEC28EEDF5F09AC3F2645137D91F50E4FE6A358A24507EB3E8AB94312D8013C4740E492C0A5E902E2E460CFA96055C8682C3B220D0E1661884FCE525D3AD8ED7B23D3B341BDFB1D5DD988F363A48730EC1565313B20AD286FD7E36317E3D870E92A9AEBAB835833F023A185168922FA7BCEA7D5F4F0B1B7DBD10F0818D7F9A4A94961EA4597415E457CD575E309B73225F205CD2D67918C00C170412CD430D6A343D061C4BAD7AC149CC4EC5F1910F3A0C09D184C9F123FCA71C51E83419E9E5F64D
+
g_b = 2F96BE7689D134320851F8247F8B92A541EA353EFBE190F0B79A54451121A3A21B3AE5AD1F744A957804362EFFCB1199342FEB787873032801CC9B991349E86B9E6973A1337A67AE94A5E73BD312DD146B0659B25460A838612055B5A5823814F3AAA8DFBD54B8094C42994541407C11293DFC08FCEDB50665104207ECAAC3DEE4B5AEBC1742159B39F8B00D4CD49616F8C3AF5E50A69EBEE7B7913B91369BD9736F9A42B4697F0DB7B11B95A7C927DF7D72DD90A42B2B3B9D3F2281D27454F1CFE659B33832855DD95E65EB6CF34EAE308F7B2972016BBBDEB20C30782B587CA16C8CDEB87A5108975A6069BAAB97EDBBFB1E2C0B7C190142F66B4970C2D130

4.3 generation of encrypted_data

Generated payload (excluding transport headers/trailers):

-
0000 | 54 B6 43 66 DF D6 01 C3 D4 AD 9E 9F 59 2A 9E 0E
-0010 | 97 B3 E6 03 74 8B 67 63 BB E5 93 96 D6 24 9A 28
-0020 | 79 1F F0 70 00 00 00 00 00 00 00 00 FE 00 01 00
-0030 | B5 84 1C D8 24 62 61 CF BD 6F DA 1C 4B F6 4E 7E
-0040 | CC C8 2C 19 EA B8 6C 59 D9 86 C4 29 D6 A0 D5 20
-0050 | 4C 54 7C 74 ED 6A B6 1E 28 A4 AA 9A 39 FA 67 6D
-0060 | 14 C1 C9 FA CC E9 B9 D3 05 6A 34 09 34 08 CE C2
-0070 | 8E ED F5 F0 9A C3 F2 64 51 37 D9 1F 50 E4 FE 6A
-0080 | 35 8A 24 50 7E B3 E8 AB 94 31 2D 80 13 C4 74 0E
-0090 | 49 2C 0A 5E 90 2E 2E 46 0C FA 96 05 5C 86 82 C3
-00A0 | B2 20 D0 E1 66 18 84 FC E5 25 D3 AD 8E D7 B2 3D
-00B0 | 3B 34 1B DF B1 D5 DD 98 8F 36 3A 48 73 0E C1 56
-00C0 | 53 13 B2 0A D2 86 FD 7E 36 31 7E 3D 87 0E 92 A9
-00D0 | AE BA B8 35 83 3F 02 3A 18 51 68 92 2F A7 BC EA
-00E0 | 7D 5F 4F 0B 1B 7D BD 10 F0 81 8D 7F 9A 4A 94 96
-00F0 | 1E A4 59 74 15 E4 57 CD 57 5E 30 9B 73 22 5F 20
-0100 | 5C D2 D6 79 18 C0 0C 17 04 12 CD 43 0D 6A 34 3D
-0110 | 06 1C 4B AD 7A C1 49 CC 4E C5 F1 91 0F 3A 0C 09
-0120 | D1 84 C9 F1 23 FC A7 1C 51 E8 34 19 E9 E5 F6 4D
-

Payload serialization:

+
0000 | 54 B6 43 66 61 07 9B D3 CE 40 0A AA C0 6A 7E C0
+0010 | F9 E7 0A F2 F3 3B CB F4 A8 C2 3D 6A EE 2D 08 5D
+0020 | 77 13 F5 B1 00 00 00 00 00 00 00 00 FE 00 01 00
+0030 | 2F 96 BE 76 89 D1 34 32 08 51 F8 24 7F 8B 92 A5
+0040 | 41 EA 35 3E FB E1 90 F0 B7 9A 54 45 11 21 A3 A2
+0050 | 1B 3A E5 AD 1F 74 4A 95 78 04 36 2E FF CB 11 99
+0060 | 34 2F EB 78 78 73 03 28 01 CC 9B 99 13 49 E8 6B
+0070 | 9E 69 73 A1 33 7A 67 AE 94 A5 E7 3B D3 12 DD 14
+0080 | 6B 06 59 B2 54 60 A8 38 61 20 55 B5 A5 82 38 14
+0090 | F3 AA A8 DF BD 54 B8 09 4C 42 99 45 41 40 7C 11
+00A0 | 29 3D FC 08 FC ED B5 06 65 10 42 07 EC AA C3 DE
+00B0 | E4 B5 AE BC 17 42 15 9B 39 F8 B0 0D 4C D4 96 16
+00C0 | F8 C3 AF 5E 50 A6 9E BE E7 B7 91 3B 91 36 9B D9
+00D0 | 73 6F 9A 42 B4 69 7F 0D B7 B1 1B 95 A7 C9 27 DF
+00E0 | 7D 72 DD 90 A4 2B 2B 3B 9D 3F 22 81 D2 74 54 F1
+00F0 | CF E6 59 B3 38 32 85 5D D9 5E 65 EB 6C F3 4E AE
+0100 | 30 8F 7B 29 72 01 6B BB DE B2 0C 30 78 2B 58 7C
+0110 | A1 6C 8C DE B8 7A 51 08 97 5A 60 69 BA AB 97 ED
+0120 | BB FB 1E 2C 0B 7C 19 01 42 F6 6B 49 70 C2 D1 30
+

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, 16DFD601C3D4AD9E9F592A9E0E97B3E60361079BD3CE400AAAC06A7EC0F9E70AF2 Value generated by client in Step 1
server_nonce 20, 16748B6763BBE59396D6249A28791FF070F33BCBF4A8C23D6AEE2D085D7713F5B1 Value received from server in Step 2
g_a 300, 260FE000100790F9F6EE3E6FF349CDFECE3 86C81B492AF87B0DB100CB7CD96EE29A 6F741AFFA78F6A487C898011FF3B647E 3E1B79BCAAC2747E10FAFAB369ADBA9E E67FDD31679CD3356B069FE31F80B25F 15D46E8664030E4BEA407AA89022C7CB A27BAAE587465D8FB5C00BA05B749243 941A11598B4845B480C44C380FF8AC87 4EFB22518417432328AD26362907D1B4 650C026595499F53558211FC08D80072 9800B6CFEC22F0E9EB564CA77E7A7F97 D1A92165901F652AACDC0980BDF8A1F1 0A097DC8490DFA271A16DFB0AB2DFB10 286F6E1203AB0A925CDEDED4BB940043 4D47C59008E967963BE11D5E12F58B8B 3714883F7A024866DB593A3268F398CE
D9539837
FE0001002E356F542ED36C7C234A0C6D BA49CDF1B1D4510968CEF23450B0FC42 F20B63757B95D5AFC1DCA0ED8E146219 B411B0D254A7C740457F54E51C4EC8B6 B9C97B84A23EA77E36D38A4230BE5D7B 1E65BB3F0A4E6D486B22CB279703634A FE013962427A67D78C81FC74AD292FB9 70B3DFB4F00F93F0FB172B3C9069234E 2154AC2D2CD52EA2015D693CF37308D8 1F1A27B92EE69B260B056A34ADBFC649 6A419A24E2D8F54B048FCDD66AB99D0A 3CD0DA36DE726019C11750F39FF63BAC 6ADD9758286D44275535BB19B53AB57C 7C890E0DE9DA13A50DC6F3E9F3C6EBD6 37489D6968960CC9991F69B0E2E1C306 144395D303284C0C12D4376CB56BA051
C060FCFF
g_a diffie-hellman parameter
server_time 560, 4C5909C64 (1687982277 in decimal)599A9C64 (1687984729 in decimal) Server time
@@ -650,63 +660,74 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s - + - + - - + + - +
nonce 4, 16DFD601C3D4AD9E9F592A9E0E97B3E60361079BD3CE400AAAC06A7EC0F9E70AF2 Value generated by client in Step 1
server_nonce 20, 16748B6763BBE59396D6249A28791FF070F33BCBF4A8C23D6AEE2D085D7713F5B1 Value received from server in Step 2
g_b 36, 260FE000100B5841CD8246261CFBD6FDA1C 4BF64E7ECCC82C19EAB86C59D986C429 D6A0D5204C547C74ED6AB61E28A4AA9A 39FA676D14C1C9FACCE9B9D3056A3409 3408CEC28EEDF5F09AC3F2645137D91F 50E4FE6A358A24507EB3E8AB94312D80 13C4740E492C0A5E902E2E460CFA9605 5C8682C3B220D0E1661884FCE525D3AD 8ED7B23D3B341BDFB1D5DD988F363A48 730EC1565313B20AD286FD7E36317E3D 870E92A9AEBAB835833F023A18516892 2FA7BCEA7D5F4F0B1B7DBD10F0818D7F 9A4A94961EA4597415E457CD575E309B 73225F205CD2D67918C00C170412CD43 0D6A343D061C4BAD7AC149CC4EC5F191 0F3A0C09D184C9F123FCA71C51E83419
E9E5F64D
pow(g, b) mod dh_primeFE0001002F96BE7689D134320851F824 7F8B92A541EA353EFBE190F0B79A5445 1121A3A21B3AE5AD1F744A957804362E FFCB1199342FEB787873032801CC9B99 1349E86B9E6973A1337A67AE94A5E73B D312DD146B0659B25460A838612055B5 A5823814F3AAA8DFBD54B8094C429945 41407C11293DFC08FCEDB50665104207 ECAAC3DEE4B5AEBC1742159B39F8B00D 4CD49616F8C3AF5E50A69EBEE7B7913B 91369BD9736F9A42B4697F0DB7B11B95 A7C927DF7D72DD90A42B2B3B9D3F2281 D27454F1CFE659B33832855DD95E65EB 6CF34EAE308F7B2972016BBBDEB20C30 782B587CA16C8CDEB87A5108975A6069 BAAB97EDBBFB1E2C0B7C190142F66B49
70C2D130
Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding
retry_id 296, 8 0000000000000000Equal to zero at the time of the first attempt; otherwise, it is equal to auth_key_aux_hash from the previous failed attempt (see Item 9).Equal to zero at the time of the first attempt; otherwise, it is equal to auth_key_aux_hash from the previous failed attempt (see Item 7).
-

The serialization of Client_DH_Inner_Data produces some string data. This is followed by encrypted_data:

-
data_with_hash := SHA1(data) + data + (0-15 random bytes); such that the length be divisible by 16;
-AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv) = 928A4957D0463B525C1CC48AABAA030A256BE5C746792C84CA4C5A0DF60AC799048D98A38A8480EDCF082214DFC79DCB9EE34E206513E2B3BC1504CFE6C9ADA46BF9A03CA74F192EAF8C278454ADABC795A566615462D31817382984039505F71CB33A41E2527A4B1AC05107872FED8E3ABCEE1518AE965B0ED3AED7F67479155BDA8E4C286B64CDF123EC748CF289B1DB02D1907B562DF462D8582BA6F0A3022DC2D3504D69D1BA48B677E3A830BFAFD67584C8AA24E1344A8904E305F9587C92EF964F0083F50F61EAB4A393EAA33C9270294AEDC7732891D4EA1599F52311D74469D2112F4EDF3F342E93C8E87E812DC3989BAECFE6740A46077524C75093F5A5405736DE8937BB6E42C9A0DCF22CA53227D462BCCC2CFE94B6FE86AB7FBFA395021F66661AF7C0024CA2986CA03F3476905407D1EA9C010B763258DB1AA2CC7826D91334EFC1FDC665B67FE45ED0
+

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 = 54B6436661079BD3CE400AAAC06A7EC0F9E70AF2F33BCBF4A8C23D6AEE2D085D7713F5B10000000000000000FE0001002F96BE7689D134320851F8247F8B92A541EA353EFBE190F0B79A54451121A3A21B3AE5AD1F744A957804362EFFCB1199342FEB787873032801CC9B991349E86B9E6973A1337A67AE94A5E73BD312DD146B0659B25460A838612055B5A5823814F3AAA8DFBD54B8094C42994541407C11293DFC08FCEDB50665104207ECAAC3DEE4B5AEBC1742159B39F8B00D4CD49616F8C3AF5E50A69EBEE7B7913B91369BD9736F9A42B4697F0DB7B11B95A7C927DF7D72DD90A42B2B3B9D3F2281D27454F1CFE659B33832855DD95E65EB6CF34EAE308F7B2972016BBBDEB20C30782B587CA16C8CDEB87A5108975A6069BAAB97EDBBFB1E2C0B7C190142F66B4970C2D130
+padding = 3F278A4C4010D41218A1D70F
+tmp_aes_key = 83E6FC26B9543A3D5FE6357D7DF98DC7E5EDA4B1791A2973A414443CD6736E2B
+tmp_aes_iv = F61B20DAF8A413BCEBE132A7EE9410C958F7B1C3537E82A7C35E899F77C0A68B
+ +

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 = 430A36E55F18CB44BFFFAC0272BCBE6F1FCFC589D2FD35A96EF285F383800F6CBBCC0B0A576827B237A41894BFFEFA5D9C880340CBB1CD4E016BE6A089ED80C41456397EFE2791707BBBD629C5CBAE237856BCFF5D3B057A26C9FA8917B6B218B10D1B7ADB62F471AEFDA26D2678C492B569D636E38DC46B1BDE833A980C16E4A1D8E7CDE40AF26DD28E00CA34A8C01BE311550C81681B0E070CD627333E837E395980C93F69417BCA8864AECCF4211E949EA79FC3556F415E4F8C1B0454217759E8436132323A4251BBB051F17E4191C40BA003757918180EDF9537AC791C15093FED041F1FC0F0A88C39BAF6E463F1A90BAC6D7A3BE0C6195F3230DB264047341E2CB4067404FE078EB89E0745903DB1AA4BBDAB03E1DA91083D7F8D57AD0AC69948D00A380912E7F297CF86C316F7517798869B2185E9AEFADB2BDC07E2893D4B9FD06E723AC2FE0A96BD7532A424
+

The length of the final string is 336 bytes.

5. request set_client_dh_params

Sent payload (excluding transport headers/trailers):

-
0000 | 00 00 00 00 00 00 00 00 00 00 00 00 C5 90 9C 64
-0010 | 78 01 00 00 1F 5F 04 F5 DF D6 01 C3 D4 AD 9E 9F
-0020 | 59 2A 9E 0E 97 B3 E6 03 74 8B 67 63 BB E5 93 96
-0030 | D6 24 9A 28 79 1F F0 70 FE 50 01 00 61 90 D4 3D
-0040 | 96 79 4A F6 81 C7 36 6F A0 50 7F 35 CB E5 0F D0
-0050 | 1E D9 BF 27 49 B1 D4 DB B9 17 C7 73 B6 05 B5 37
-0060 | 0C F1 01 A2 0C F8 A6 E3 5E C8 C7 F0 7F A2 B4 C3
-0070 | CF F9 7D 11 55 FD 90 37 9B A3 D5 87 53 10 1A D4
-0080 | FA 36 8F 0C 56 B9 C5 7D 50 1C 14 AF F8 5C 97 65
-0090 | 73 40 A6 F3 45 87 13 F5 F7 D7 4B 2B 79 45 52 03
-00A0 | 22 4F 42 5D E4 65 2D 05 A4 4A FF A4 E7 70 B6 CF
-00B0 | A8 BD D2 2C 01 B6 4C 3F 0D 32 09 D8 4C 64 FF C7
-00C0 | EB C9 B3 C8 5D 8C 02 F9 D2 7E F7 20 EE A4 DC 78
-00D0 | 71 A7 C9 F1 4C 0A B1 31 35 5E EB 80 EE C9 16 8F
-00E0 | 86 83 26 4D FF F9 48 75 41 F9 B5 2D C6 92 15 7A
-00F0 | 71 6F A0 CC 9E 45 0F 44 CF F4 19 BB 0E B8 7C 52
-0100 | 1D F8 1C 9D 24 F3 4D 47 77 2A 63 87 B9 3D 4C 5F
-0110 | E0 CA E8 44 4B 29 BE 25 38 C4 E0 CA 5E E6 9A 20
-0120 | 49 F8 C9 2B 09 FE 52 BE 48 E9 E6 5C 76 7D D2 6C
-0130 | 5D 52 36 42 A6 11 04 D1 B6 81 9C 88 D9 A9 77 5A
-0140 | E8 56 4A 72 21 8B 38 DC 53 48 7E 91 95 9E 5A EC
-0150 | 7C E8 DB 02 04 4D 2D D1 C8 26 2A F6 50 75 E3 0F
-0160 | 2C EA 99 73 60 CF 1F EF B7 A3 46 4E 1C 69 24 61
-0170 | 7B CE D6 B3 AD 89 A5 87 42 20 4D A0 76 0E EB E5
-0180 | 8D A2 81 B4 C1 0D 97 32 99 E0 58 67
-

Payload serialization:

+
0000 | 00 00 00 00 00 00 00 00 04 00 00 00 59 9A 9C 64
+0010 | 78 01 00 00 1F 5F 04 F5 61 07 9B D3 CE 40 0A AA
+0020 | C0 6A 7E C0 F9 E7 0A F2 F3 3B CB F4 A8 C2 3D 6A
+0030 | EE 2D 08 5D 77 13 F5 B1 FE 50 01 00 43 0A 36 E5
+0040 | 5F 18 CB 44 BF FF AC 02 72 BC BE 6F 1F CF C5 89
+0050 | D2 FD 35 A9 6E F2 85 F3 83 80 0F 6C BB CC 0B 0A
+0060 | 57 68 27 B2 37 A4 18 94 BF FE FA 5D 9C 88 03 40
+0070 | CB B1 CD 4E 01 6B E6 A0 89 ED 80 C4 14 56 39 7E
+0080 | FE 27 91 70 7B BB D6 29 C5 CB AE 23 78 56 BC FF
+0090 | 5D 3B 05 7A 26 C9 FA 89 17 B6 B2 18 B1 0D 1B 7A
+00A0 | DB 62 F4 71 AE FD A2 6D 26 78 C4 92 B5 69 D6 36
+00B0 | E3 8D C4 6B 1B DE 83 3A 98 0C 16 E4 A1 D8 E7 CD
+00C0 | E4 0A F2 6D D2 8E 00 CA 34 A8 C0 1B E3 11 55 0C
+00D0 | 81 68 1B 0E 07 0C D6 27 33 3E 83 7E 39 59 80 C9
+00E0 | 3F 69 41 7B CA 88 64 AE CC F4 21 1E 94 9E A7 9F
+00F0 | C3 55 6F 41 5E 4F 8C 1B 04 54 21 77 59 E8 43 61
+0100 | 32 32 3A 42 51 BB B0 51 F1 7E 41 91 C4 0B A0 03
+0110 | 75 79 18 18 0E DF 95 37 AC 79 1C 15 09 3F ED 04
+0120 | 1F 1F C0 F0 A8 8C 39 BA F6 E4 63 F1 A9 0B AC 6D
+0130 | 7A 3B E0 C6 19 5F 32 30 DB 26 40 47 34 1E 2C B4
+0140 | 06 74 04 FE 07 8E B8 9E 07 45 90 3D B1 AA 4B BD
+0150 | AB 03 E1 DA 91 08 3D 7F 8D 57 AD 0A C6 99 48 D0
+0160 | 0A 38 09 12 E7 F2 97 CF 86 C3 16 F7 51 77 98 86
+0170 | 9B 21 85 E9 AE FA DB 2B DC 07 E2 89 3D 4B 9F D0
+0180 | 6E 72 3A C2 FE 0A 96 BD 75 32 A4 24
+

Payload (de)serialization:

set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
@@ -727,7 +748,7 @@ AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv) = 928A4957D0463B525 - + @@ -745,20 +766,20 @@ AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv) = 928A4957D0463B525 - + - + - - + +
message_id 8, 800000000C5909C6404000000599A9C64 Exact unixtime*2^32, +(4*N) if N messages with the same message ID were already generated
nonce 24, 16DFD601C3D4AD9E9F592A9E0E97B3E60361079BD3CE400AAAC06A7EC0F9E70AF2 Value generated by client in Step 1
server_nonce 40, 16748B6763BBE59396D6249A28791FF070F33BCBF4A8C23D6AEE2D085D7713F5B1 Value received from server in Step 2
encrypted_data 56, 340FE5001006190D43D96794AF681C7366F A0507F35CBE50FD01ED9BF2749B1D4DB B917C773B605B5370CF101A20CF8A6E3 5EC8C7F07FA2B4C3CFF97D1155FD9037 9BA3D58753101AD4FA368F0C56B9C57D 501C14AFF85C97657340A6F3458713F5 F7D74B2B79455203224F425DE4652D05 A44AFFA4E770B6CFA8BDD22C01B64C3F 0D3209D84C64FFC7EBC9B3C85D8C02F9 D27EF720EEA4DC7871A7C9F14C0AB131 355EEB80EEC9168F8683264DFFF94875 41F9B52DC692157A716FA0CC9E450F44 CFF419BB0EB87C521DF81C9D24F34D47 772A6387B93D4C5FE0CAE8444B29BE25 38C4E0CA5EE69A2049F8C92B09FE52BE 48E9E65C767DD26C5D523642A61104D1 B6819C88D9A9775AE8564A72218B38DC 53487E91959E5AEC7CE8DB02044D2DD1 C8262AF65075E30F2CEA997360CF1FEF B7A3464E1C6924617BCED6B3AD89A587 42204DA0760EEBE58DA281B4C10D9732
99E05867
Encrypted client_DH_inner_data, generated as followsFE500100430A36E55F18CB44BFFFAC02 72BCBE6F1FCFC589D2FD35A96EF285F3 83800F6CBBCC0B0A576827B237A41894 BFFEFA5D9C880340CBB1CD4E016BE6A0 89ED80C41456397EFE2791707BBBD629 C5CBAE237856BCFF5D3B057A26C9FA89 17B6B218B10D1B7ADB62F471AEFDA26D 2678C492B569D636E38DC46B1BDE833A 980C16E4A1D8E7CDE40AF26DD28E00CA 34A8C01BE311550C81681B0E070CD627 333E837E395980C93F69417BCA8864AE CCF4211E949EA79FC3556F415E4F8C1B 0454217759E8436132323A4251BBB051 F17E4191C40BA003757918180EDF9537 AC791C15093FED041F1FC0F0A88C39BA F6E463F1A90BAC6D7A3BE0C6195F3230 DB264047341E2CB4067404FE078EB89E 0745903DB1AA4BBDAB03E1DA91083D7F 8D57AD0AC69948D00A380912E7F297CF 86C316F7517798869B2185E9AEFADB2B DC07E2893D4B9FD06E723AC2FE0A96BD
7532A424
Encrypted client_DH_inner_data generated previously
@@ -766,18 +787,18 @@ AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv) = 928A4957D0463B525

6. auth key generation

The clients computes the auth_key using formula g^{ab} mod dh_prime:

-
auth_key = 7AB41163F9DADC0E7AD17B0ED9C960B23436B0925E8D875C14AE2CB171D3B37F5E98A186E6C447641AD963FB63D99B31DEF206F55D522A41D120D04C4D5ACA12CEBF1130A4BF09C7A430CF5ACF550BA166CAE2AD842ECD94E26B4DC57460F537B2CB1DEEB8F681ABFF0C416757BAE47C4B1E2BFEE3EEB994D653D9794633A5C8BE0EEAEE35E1DFA271BE94140F39FCDAE9DD51330C7F46761744F4B79CBFB89A82891567A4AB8924C84F2024049F3E2DB86E6008454A0D3E5353E44E72CB2E1A24CFF0573F8EC4FE420EF0F4D15DE37749D2907DDB960C9BA0A8C89EA6AFAD8E8B0862D231329DEC391C793D067F4459587A5D6374B188126A949852133013A6
+
auth_key = 387F13DD24C48755BB0B3F4EF874E0AE86EAE3236676695D30BCC0005ECD0836F9968DAB19B362E4A2C0E0A1DDB1E0DCDA225A2571D5D911EFBE764CA97123799117B3AC18FA749F287B304156427DCECF1D4C16A2922C9727D0CF004EA075C22A37B0D901933DEFAF27A6D1D7FC57024E02E5D12ECF9D6C1ADF1E7A1B5A85284FA29B09DA5BD5ACB0DAE6580B88C026E97F2BFDCFF183C9661DFD639804B3DFB175EA755E9D9B02DA907B299C4A84B070C0A517E27F395B8ABA67C923583BF0493A27559C9716951B554669D0A33AD6E9A8D78C5EE1E89A03A177B06833B45DD60A5680E46F6B03B7C94ECAF5E7E31B3B03D28F59E237D764E80973C1F05C98

7. reply set_client_dh_params_answer

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 94 13 B1 C5 90 9C 64
-0010 | 38 00 00 00 34 F7 CB 3B DF D6 01 C3 D4 AD 9E 9F
-0020 | 59 2A 9E 0E 97 B3 E6 03 74 8B 67 63 BB E5 93 96
-0030 | D6 24 9A 28 79 1F F0 70 61 A9 07 63 0C 8B FD 9E
-0040 | 2E D7 28 5B 0B 4C C8 26
-

Payload serialization:

+
0000 | 00 00 00 00 00 00 00 00 01 CC C6 CE 59 9A 9C 64
+0010 | 54 00 00 00 34 F7 CB 3B 61 07 9B D3 CE 40 0A AA
+0020 | C0 6A 7E C0 F9 E7 0A F2 F3 3B CB F4 A8 C2 3D 6A
+0030 | EE 2D 08 5D 77 13 F5 B1 C9 C0 EC 9D DD 5F 1A 18
+0040 | 52 51 15 70 51 A6 94 1E
+

Payload (de)serialization:

dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
 dh_gen_retry#46dc1fb9 nonce:int128 server_nonce:int128 new_nonce_hash2:int128 = Set_client_DH_params_answer;
 dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = Set_client_DH_params_answer;
@@ -800,13 +821,13 @@ dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = S message_id 8, 8 -019413B1C5909C64 +01CCC6CE599A9C64 Exact unixtime*2^32, +(4*N) if N messages with the same message ID were already generated message_length 16, 4 -38000000 (56 in decimal) +54000000 (84 in decimal) Message body length @@ -818,19 +839,19 @@ dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = S nonce 24, 16 -DFD601C3D4AD9E9F592A9E0E97B3E603 +61079BD3CE400AAAC06A7EC0F9E70AF2 Value generated by client in Step 1 server_nonce 40, 16 -748B6763BBE59396D6249A28791FF070 +F33BCBF4A8C23D6AEE2D085D7713F5B1 Value received from server in Step 2 new_nonce_hash1 56, 16 -61A907630C8BFD9E2ED7285B0B4CC826 +C9C0EC9DDD5F1A185251157051A6941E 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.