Update content of files

This commit is contained in:
GitHub Action 2023-06-28 20:02:07 +00:00
parent d2f9bf07ea
commit 1268bdb36a

View file

@ -53,9 +53,9 @@ For example, for the abridged version of the transport », the…">
<h1><a class="anchor" href="#1-request-req-pq-multi" id="1-request-req-pq-multi" name="1-request-req-pq-multi"><i class="anchor-icon"></i></a>1. request req_pq_multi</h1>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 00 00 00 00 DA 8E 9C 64
0010 | 14 00 00 00 F1 8E 7E BE B6 DC 10 51 90 17 31 08
0020 | 76 D2 47 AC A4 B3 55 10</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 00 00 00 00 13 90 9C 64
0010 | 14 00 00 00 F1 8E 7E BE A1 F9 B9 D5 B1 C7 24 55
0020 | 20 11 1F B7 30 1C 95 C0</code></pre>
<p>Payload serialization:</p>
<pre><code>req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;</code></pre>
<table class="table">
@ -77,7 +77,7 @@ For example, for the abridged version of the transport », the…">
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>00000000DA8E9C64</code></td>
<td><code>0000000013909C64</code></td>
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
</tr>
<tr>
@ -95,7 +95,7 @@ For example, for the abridged version of the transport », the…">
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>B6DC10519017310876D247ACA4B35510</code></td>
<td><code>A1F9B9D5B1C7245520111FB7301C95C0</code></td>
<td>Random number</td>
</tr>
</tbody>
@ -104,11 +104,11 @@ For example, for the abridged version of the transport », the…">
<h1><a class="anchor" href="#2-response-respq" id="2-response-respq" name="2-response-respq"><i class="anchor-icon"></i></a>2. response respq</h1>
<!-- start resPQ -->
<p>Received payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 9C 6E 01 DB 8E 9C 64
0010 | 84 00 00 00 63 24 16 05 B6 DC 10 51 90 17 31 08
0020 | 76 D2 47 AC A4 B3 55 10 43 99 A0 E5 D8 AA B5 BD
0030 | CD 30 8D A2 8E 00 47 19 08 12 90 AE 4B 1D 71 2D
0040 | 01 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 A8 D4 9C 13 90 9C 64
0010 | 78 00 00 00 63 24 16 05 A1 F9 B9 D5 B1 C7 24 55
0020 | 20 11 1F B7 30 1C 95 C0 70 EA 28 24 B9 2F 73 9F
0030 | 4C 26 45 7B 02 94 8D CA 08 28 6C A9 D9 90 2D A7
0040 | ED 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</code></pre>
<p>Payload serialization:</p>
@ -132,13 +132,13 @@ For example, for the abridged version of the transport », the…">
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>019C6E01DB8E9C64</code></td>
<td><code>01A8D49C13909C64</code></td>
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>84000000</code> (132 in decimal)</td>
<td><code>78000000</code> (120 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@ For example, for the abridged version of the transport », the…">
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>B6DC10519017310876D247ACA4B35510</code></td>
<td><code>A1F9B9D5B1C7245520111FB7301C95C0</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>4399A0E5D8AAB5BDCD308DA28E004719</code></td>
<td><code>70EA2824B92F739F4C26457B02948DCA</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>081290AE4B1D712D01000000</code> (TL byte deserialization =&gt; bigendian conversion to decimal =&gt; 1337760726968773889)</td>
<td><code>08286CA9D9902DA7ED000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2912889810893776877</td>
<td>Single-byte prefix denoting length, an 8-byte string, and three bytes of padding</td>
</tr>
<tr>
@ -207,20 +207,20 @@ For example, for the abridged version of the transport », the…">
<!-- end fingerprints -->
<h1><a class="anchor" href="#21-decompose-p-and-q" id="21-decompose-p-and-q" name="21-decompose-p-and-q"><i class="anchor-icon"></i></a>2.1. decompose p and q</h1>
<!-- start pq -->
<pre><code>pq = 1337760726968773889</code></pre>
<p>Decompose into 2 prime cofactors: <code>1048960817 * 1275320017 = 1337760726968773889</code></p>
<pre><code>p = 1048960817
q = 1275320017</code></pre>
<pre><code>pq = 2912889810893776877</code></pre>
<p>Decompose into 2 prime cofactors: <code>1567638131 * 1858139167 = 2912889810893776877</code></p>
<pre><code>p = 1567638131
q = 1858139167</code></pre>
<!-- end pq -->
<h1><a class="anchor" href="#22-encrypted-data-generation" id="22-encrypted-data-generation" name="22-encrypted-data-generation"><i class="anchor-icon"></i></a>2.2. encrypted_data generation</h1>
<!-- start p_q_inner_data_dc -->
<p>Generated payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 95 5F F5 A9 08 12 90 AE 4B 1D 71 2D 01 00 00 00
0010 | 04 3E 85 DF 31 00 00 00 04 4C 03 D6 D1 00 00 00
0020 | B6 DC 10 51 90 17 31 08 76 D2 47 AC A4 B3 55 10
0030 | 43 99 A0 E5 D8 AA B5 BD CD 30 8D A2 8E 00 47 19
0040 | B4 3C 50 7D 9E EB AB BE 7E 82 39 06 E9 64 94 95
0050 | 82 0A CA 9C 3A C2 66 75 1B 5B 5F C4 98 65 4E F9
<pre><code>0000 | 95 5F F5 A9 08 28 6C A9 D9 90 2D A7 ED 00 00 00
0010 | 04 5D 70 42 73 00 00 00 04 6E C0 F4 1F 00 00 00
0020 | A1 F9 B9 D5 B1 C7 24 55 20 11 1F B7 30 1C 95 C0
0030 | 70 EA 28 24 B9 2F 73 9F 4C 26 45 7B 02 94 8D CA
0040 | F6 CB F0 39 C5 6D 79 01 6C 22 33 6A C3 4A C3 CC
0050 | C6 CF 1F 11 32 3A CB FC CB 06 62 7E 94 BB C3 59
0060 | 02 00 00 00</code></pre>
<p>Payload serialization:</p>
<pre><code>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 @@ p_q_inner_data_temp#3c6a84d4 pq:string p:string q:string nonce:int128 server_non
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>081290AE4B1D712D01000000</code> (TL byte deserialization =&gt; bigendian conversion to decimal =&gt; 1337760726968773889)</td>
<td><code>08286CA9D9902DA7ED000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2912889810893776877</td>
<td>Single-byte prefix denoting length, 8-byte string, and three bytes of padding</td>
</tr>
<tr>
<td>p</td>
<td>16, 8</td>
<td><code>043E85DF31000000</code> (TL byte deserialization =&gt; bigendian conversion to decimal =&gt; 1048960817)</td>
<td><code>045D704273000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1567638131</td>
<td>First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
</tr>
<tr>
<td>q</td>
<td>24, 8</td>
<td><code>044C03D6D1000000</code> (TL byte deserialization =&gt; bigendian conversion to decimal =&gt; 1275320017)</td>
<td><code>046EC0F41F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1858139167</td>
<td>Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
</tr>
<tr>
<td>nonce</td>
<td>32, 16</td>
<td><code>B6DC10519017310876D247ACA4B35510</code></td>
<td><code>A1F9B9D5B1C7245520111FB7301C95C0</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>4399A0E5D8AAB5BDCD308DA28E004719</code></td>
<td><code>70EA2824B92F739F4C26457B02948DCA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>B43C507D9EEBABBE7E823906E9649495</code> <code>820ACA9C3AC266751B5B5FC498654EF9</code></td>
<td><code>F6CBF039C56D79016C22336AC34AC3CC</code> <code>C6CF1F11323ACBFCCB06627E94BBC359</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ p_q_inner_data_temp#3c6a84d4 pq:string p:string q:string nonce:int128 server_non
<p>The serialization of <em>P_Q_inner_data</em> produces <strong>data</strong>, which is used to generate <strong>encrypted_data</strong> as specified in <a href="/mtproto/auth_key">step 4.1</a>.<br>
These are the inputs to the algorithm specified in <a href="/mtproto/auth_key">step 4.1</a>:</p>
<!-- start p_q_inner_data_input -->
<pre><code>data = 955FF5A9081290AE4B1D712D01000000043E85DF31000000044C03D6D1000000B6DC10519017310876D247ACA4B355104399A0E5D8AAB5BDCD308DA28E004719B43C507D9EEBABBE7E823906E9649495820ACA9C3AC266751B5B5FC498654EF902000000
random_padding_bytes = C6F11EFC01816FE553BFCDFA8B80814BE952BA8143ED88F3DAD022261442D4310A62D4F11D432BAC7576C64FFBB3C09FEF8696F6463D2156BE02306E6922FAC0326490EEDB9858A6D6CC9DDF9E28F4863A6E2D9145878453E5B3B14F</code></pre>
<pre><code>data = 955FF5A908286CA9D9902DA7ED000000045D704273000000046EC0F41F000000A1F9B9D5B1C7245520111FB7301C95C070EA2824B92F739F4C26457B02948DCAF6CBF039C56D79016C22336AC34AC3CCC6CF1F11323ACBFCCB06627E94BBC35902000000
random_padding_bytes = C00B71D54D522A134D231AEE7DD68B5290D97FA57F4C2A735C4A5FC2044F28D9C361D1E16F70C6A33477F27B5EF538D532398E3A34BE17192389F2C3F214F8F2A50C9646E1143EA5B5C421DE5A2F8A20FBDC3F3C08D706F13EDA3BB9</code></pre>
<!-- end p_q_inner_data_input -->
<p>And this is the output:</p>
<!-- start p_q_inner_data_output -->
<pre><code>encrypted_data = 1E92C72633BB85FA813D502FC57B5B648069E794FDE049C4BBE3ED024F1B7B8B2E1648FB0BD331BF7B95C8F849853C6C8CC80CD190CE7A316684885DC058A5F53BD766D20CDDA3C67385642A95F3A8B1DD8C0C8BE0B0A6E542EED23AF615397C4AF4C6BBBF7263EAFD155A0C5885CED64748810D20636B5A6CDDB8CF97631317C684D64A0D2D77F692A319EFD792E95D78E2BCD9206BCB13433732242A7A83DFCDF5FA7B1F6AB03A029EFD05149D727B2C6DEE04DCE77B64017486B4C48C16C65102A732624C404034125A676011A7F35487618E5FC02ADAA21BC78AC95F47F74FB7B3225C02CBF105408B1C897905E622D9604800A1B51A0792A05E92B31D37</code></pre>
<pre><code>encrypted_data = C576240305C4E62F0D4C1C7DA76D16A3F0529C38CC8AC087C3A098D44B4A6D96E0508217EEE987E092F079FE61ED02D73B513E612D1CA391D3DFF3AFEE0919B45A5E5F80677517543A2624E46E238564118311EABB002ECE73BAD010C1DAB49F422FF700351772C017721407B6058F684A65C271B618AD30B6FFAC6F27AA39F7425E6C20AB1B3F3CEF228863F88D0EE72409A5E737C928562CF4FCA9C2158FBD92991126735E7C0A036CE498C9675017C10137AB1D0584CB7D75975DE4F3D3746B8416ACDA103A753C0B249D0D29D0E0E81206B56BC583333DEABEA203D7E42A19680F4C3996E408E369D208533C2C6EE9D1574F3722BCD9EC15789EE285942A</code></pre>
<!-- end p_q_inner_data_output -->
<p>The length of the final string is 256 bytes.</p>
<h1><a class="anchor" href="#3-request-req-dh-params" id="3-request-req-dh-params" name="3-request-req-dh-params"><i class="anchor-icon"></i></a>3. request req_dh_params</h1>
<!-- start req_DH_params -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 00 00 00 00 DB 8E 9C 64
0010 | 40 01 00 00 BE E4 12 D7 B6 DC 10 51 90 17 31 08
0020 | 76 D2 47 AC A4 B3 55 10 43 99 A0 E5 D8 AA B5 BD
0030 | CD 30 8D A2 8E 00 47 19 04 3E 85 DF 31 00 00 00
0040 | 04 4C 03 D6 D1 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 1E 92 C7 26 33 BB 85 FA 81 3D 50 2F
0060 | C5 7B 5B 64 80 69 E7 94 FD E0 49 C4 BB E3 ED 02
0070 | 4F 1B 7B 8B 2E 16 48 FB 0B D3 31 BF 7B 95 C8 F8
0080 | 49 85 3C 6C 8C C8 0C D1 90 CE 7A 31 66 84 88 5D
0090 | C0 58 A5 F5 3B D7 66 D2 0C DD A3 C6 73 85 64 2A
00A0 | 95 F3 A8 B1 DD 8C 0C 8B E0 B0 A6 E5 42 EE D2 3A
00B0 | F6 15 39 7C 4A F4 C6 BB BF 72 63 EA FD 15 5A 0C
00C0 | 58 85 CE D6 47 48 81 0D 20 63 6B 5A 6C DD B8 CF
00D0 | 97 63 13 17 C6 84 D6 4A 0D 2D 77 F6 92 A3 19 EF
00E0 | D7 92 E9 5D 78 E2 BC D9 20 6B CB 13 43 37 32 24
00F0 | 2A 7A 83 DF CD F5 FA 7B 1F 6A B0 3A 02 9E FD 05
0100 | 14 9D 72 7B 2C 6D EE 04 DC E7 7B 64 01 74 86 B4
0110 | C4 8C 16 C6 51 02 A7 32 62 4C 40 40 34 12 5A 67
0120 | 60 11 A7 F3 54 87 61 8E 5F C0 2A DA A2 1B C7 8A
0130 | C9 5F 47 F7 4F B7 B3 22 5C 02 CB F1 05 40 8B 1C
0140 | 89 79 05 E6 22 D9 60 48 00 A1 B5 1A 07 92 A0 5E
0150 | 92 B3 1D 37</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 04 00 00 00 13 90 9C 64
0010 | 40 01 00 00 BE E4 12 D7 A1 F9 B9 D5 B1 C7 24 55
0020 | 20 11 1F B7 30 1C 95 C0 70 EA 28 24 B9 2F 73 9F
0030 | 4C 26 45 7B 02 94 8D CA 04 5D 70 42 73 00 00 00
0040 | 04 6E C0 F4 1F 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 C5 76 24 03 05 C4 E6 2F 0D 4C 1C 7D
0060 | A7 6D 16 A3 F0 52 9C 38 CC 8A C0 87 C3 A0 98 D4
0070 | 4B 4A 6D 96 E0 50 82 17 EE E9 87 E0 92 F0 79 FE
0080 | 61 ED 02 D7 3B 51 3E 61 2D 1C A3 91 D3 DF F3 AF
0090 | EE 09 19 B4 5A 5E 5F 80 67 75 17 54 3A 26 24 E4
00A0 | 6E 23 85 64 11 83 11 EA BB 00 2E CE 73 BA D0 10
00B0 | C1 DA B4 9F 42 2F F7 00 35 17 72 C0 17 72 14 07
00C0 | B6 05 8F 68 4A 65 C2 71 B6 18 AD 30 B6 FF AC 6F
00D0 | 27 AA 39 F7 42 5E 6C 20 AB 1B 3F 3C EF 22 88 63
00E0 | F8 8D 0E E7 24 09 A5 E7 37 C9 28 56 2C F4 FC A9
00F0 | C2 15 8F BD 92 99 11 26 73 5E 7C 0A 03 6C E4 98
0100 | C9 67 50 17 C1 01 37 AB 1D 05 84 CB 7D 75 97 5D
0110 | E4 F3 D3 74 6B 84 16 AC DA 10 3A 75 3C 0B 24 9D
0120 | 0D 29 D0 E0 E8 12 06 B5 6B C5 83 33 3D EA BE A2
0130 | 03 D7 E4 2A 19 68 0F 4C 39 96 E4 08 E3 69 D2 08
0140 | 53 3C 2C 6E E9 D1 57 4F 37 22 BC D9 EC 15 78 9E
0150 | E2 85 94 2A</code></pre>
<p>Payload serialization:</p>
<pre><code>req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params;</code></pre>
<table class="table">
@ -345,7 +345,7 @@ random_padding_bytes = C6F11EFC01816FE553BFCDFA8B80814BE952BA8143ED88F3DAD022261
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>00000000DB8E9C64</code></td>
<td><code>0400000013909C64</code></td>
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
</tr>
<tr>
@ -363,37 +363,37 @@ random_padding_bytes = C6F11EFC01816FE553BFCDFA8B80814BE952BA8143ED88F3DAD022261
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>B6DC10519017310876D247ACA4B35510</code></td>
<td><code>A1F9B9D5B1C7245520111FB7301C95C0</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>4399A0E5D8AAB5BDCD308DA28E004719</code></td>
<td><code>70EA2824B92F739F4C26457B02948DCA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>043E85DF31000000</code> (TL byte deserialization =&gt; bigendian conversion to decimal =&gt; 1048960817)</td>
<td><code>045D704273000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1567638131</td>
<td>First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
</tr>
<tr>
<td>q</td>
<td>64, 8</td>
<td><code>044C03D6D1000000</code> (TL byte deserialization =&gt; bigendian conversion to decimal =&gt; 1275320017)</td>
<td><code>046EC0F41F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1858139167</td>
<td>Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
</tr>
<tr>
<td>public_key_fingerprint</td>
<td>72, 8</td>
<td><code>85FD64DE851D9DD0</code> (-3414540481677951611 in decimal)</td>
<td><code>85FD64DE851D9DD0</code></td>
<td><code>fingerprint</code> of public key used</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001001E92C72633BB85FA813D502F</code> <code>C57B5B648069E794FDE049C4BBE3ED02</code> <code>4F1B7B8B2E1648FB0BD331BF7B95C8F8</code> <code>49853C6C8CC80CD190CE7A316684885D</code> <code>C058A5F53BD766D20CDDA3C67385642A</code> <code>95F3A8B1DD8C0C8BE0B0A6E542EED23A</code> <code>F615397C4AF4C6BBBF7263EAFD155A0C</code> <code>5885CED64748810D20636B5A6CDDB8CF</code> <code>97631317C684D64A0D2D77F692A319EF</code> <code>D792E95D78E2BCD9206BCB1343373224</code> <code>2A7A83DFCDF5FA7B1F6AB03A029EFD05</code> <code>149D727B2C6DEE04DCE77B64017486B4</code> <code>C48C16C65102A732624C404034125A67</code> <code>6011A7F35487618E5FC02ADAA21BC78A</code> <code>C95F47F74FB7B3225C02CBF105408B1C</code> <code>897905E622D9604800A1B51A0792A05E</code> <code>92B31D37</code></td>
<td><code>FE000100C576240305C4E62F0D4C1C7D</code> <code>A76D16A3F0529C38CC8AC087C3A098D4</code> <code>4B4A6D96E0508217EEE987E092F079FE</code> <code>61ED02D73B513E612D1CA391D3DFF3AF</code> <code>EE0919B45A5E5F80677517543A2624E4</code> <code>6E238564118311EABB002ECE73BAD010</code> <code>C1DAB49F422FF700351772C017721407</code> <code>B6058F684A65C271B618AD30B6FFAC6F</code> <code>27AA39F7425E6C20AB1B3F3CEF228863</code> <code>F88D0EE72409A5E737C928562CF4FCA9</code> <code>C2158FBD92991126735E7C0A036CE498</code> <code>C9675017C10137AB1D0584CB7D75975D</code> <code>E4F3D3746B8416ACDA103A753C0B249D</code> <code>0D29D0E0E81206B56BC583333DEABEA2</code> <code>03D7E42A19680F4C3996E408E369D208</code> <code>533C2C6EE9D1574F3722BCD9EC15789EE285942A</code></td>
<td>See <a href="#generation-of-encrypted-data">Generation of encrypted_data »</a></td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = C6F11EFC01816FE553BFCDFA8B80814BE952BA8143ED88F3DAD022261
<h1><a class="anchor" href="#4-response-server-dh-params-ok" id="4-response-server-dh-params-ok" name="4-response-server-dh-params-ok"><i class="anchor-icon"></i></a>4. response server_dh_params_ok</h1>
<!-- start server_DH_params_ok -->
<p>Received payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 48 EE A3 DB 8E 9C 64
0010 | 80 02 00 00 5C 07 E8 D0 B6 DC 10 51 90 17 31 08
0020 | 76 D2 47 AC A4 B3 55 10 43 99 A0 E5 D8 AA B5 BD
0030 | CD 30 8D A2 8E 00 47 19 FE 50 02 00 8D 86 5C 2E
0040 | 1E 29 57 29 04 F2 E5 A3 ED DC 46 6A 0D 18 7E 54
0050 | AC 63 D7 DC 27 A1 21 9D CA AB F3 E7 98 5F D0 FF
0060 | 25 B4 11 25 00 8D 15 90 AC 78 F6 8F 95 AB 30 67
0070 | B6 EE 07 77 99 63 35 D6 22 31 46 F9 85 D4 79 A8
0080 | F8 1A 62 3D A9 22 37 15 D4 39 A7 6B D3 74 67 BD
0090 | 19 17 CD DE 0B 79 84 06 B0 91 AF CD B0 19 40 AB
00A0 | 7A BE 32 8C EF CB 43 DC 6D BA 18 D8 78 64 21 13
00B0 | 34 40 35 EF D1 7B 45 CE FB AF 6A C9 BC 02 CF 39
00C0 | 79 DF 67 3D 03 9A 07 3C 36 9C 1A B3 43 F2 24 0E
00D0 | 4B C8 AF 10 67 72 57 E7 13 6F 3D B1 B8 B6 12 21
00E0 | 16 01 6D 51 4B 63 2F 2C B3 E5 4D 84 84 37 EC 54
00F0 | BE 4E 36 10 FF BA BE 2D 88 C0 11 88 A2 18 03 DE
0100 | 80 6E 28 F0 DE D2 54 D4 45 B3 AB CA 92 37 56 04
0110 | 61 A2 01 21 E6 5C DD 08 C5 7D 01 E9 EF 77 03 8D
0120 | 48 8F B7 B6 9C 37 F4 A3 F2 2D 0D E6 B6 05 C0 9A
0130 | 40 3E 07 40 04 00 17 74 F9 86 9C 40 D9 04 59 DE
0140 | CF B7 15 E9 CE E7 9D 2D DC C0 41 A4 E5 F5 27 A8
0150 | E1 FE 40 BF D4 93 56 6D 3A 71 5F 7F 9E EF A8 48
0160 | 87 DB 72 C9 95 94 D7 79 A0 C6 B1 53 6C 85 86 F6
0170 | 6F 06 56 6E FF CF 1A 13 4F F9 B5 F0 9E 99 81 0D
0180 | 99 A3 33 74 80 B9 41 DE A8 16 AB C2 D4 65 5B 70
0190 | 9E 3A E5 61 6C 97 57 3A DA 26 E8 66 96 FA AD AB
01A0 | D1 B5 34 DC 54 1D DE 9B EC CD CD 16 AE 98 A3 0A
01B0 | 9A E3 9E 73 5E 5A 48 20 C1 BC C2 3E 91 B0 7E BF
01C0 | 75 8E A8 F1 23 60 09 32 EA C4 D4 DF 29 76 7D 62
01D0 | F4 21 BF 3C 05 9F 98 F0 7A 39 62 96 9E B3 58 03
01E0 | A8 16 56 E0 CB 8B 93 80 32 6B 1D 64 F9 6E BC 91
01F0 | ED BF C9 8D FD CF 56 D1 81 8C D8 B0 9D 37 08 A7
0200 | 13 01 E4 24 74 E4 88 8C 40 43 56 CD 31 E6 34 5C
0210 | 8E 26 4E 02 2C 6F 67 FD E7 A5 9B 33 51 3F 7E 89
0220 | 42 FB 20 64 0B 9D 4A 94 D9 BD A6 F1 F3 84 A3 9D
0230 | ED D5 BB 28 DE ED E3 E5 1D B1 B8 14 BE F6 7F 81
0240 | 91 18 F8 3B A5 F5 11 04 E2 2F 89 86 7D 04 90 64
0250 | 4E 12 84 82 7F D8 76 F1 2B 2D 1E 42 02 0E 7B FA
0260 | 02 67 F0 83 3D B1 54 13 18 2E BA 42 D2 5C 52 5D
0270 | D3 8B 96 D6 8B 18 71 9D 40 6A 2F 33 5F 8F CD 01
0280 | 11 C4 92 D6 D1 28 33 74 7F AC 3F 28</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 C0 2E 41 14 90 9C 64
0010 | A0 02 00 00 5C 07 E8 D0 A1 F9 B9 D5 B1 C7 24 55
0020 | 20 11 1F B7 30 1C 95 C0 70 EA 28 24 B9 2F 73 9F
0030 | 4C 26 45 7B 02 94 8D CA FE 50 02 00 A3 7D DE 27
0040 | DD 2C D8 36 5E 53 A4 4D 45 8F AE C7 07 B8 4F FD
0050 | 0D 1D C6 0F 93 EB 8D EE 86 40 8C DE 4D 4A CC 01
0060 | DE F4 1C A8 F3 F5 53 0C A6 7C 07 C6 0F 80 B3 73
0070 | EB 00 95 4B BA 8D CA 2F EB CC 73 37 48 55 DC AC
0080 | E3 4A 58 4F 83 54 43 B1 4C F6 1B B8 D5 02 32 31
0090 | 5B 84 23 C4 86 09 B4 F9 43 00 AA 85 AC DD 37 AE
00A0 | 48 33 CF 72 62 FD 78 F9 E9 CF 55 91 CC B1 37 16
00B0 | 8C CB 51 C2 32 D0 99 3F B9 13 EB F3 84 28 BA 71
00C0 | 4C 7C 44 3B 54 34 BF F6 EB C2 64 9C D5 2B E1 0D
00D0 | 91 AF EB A2 9E 8F F1 CA E7 90 5E 05 25 04 50 E9
00E0 | D4 A8 2D 32 20 A9 4D E8 CE DA 2F 5B 30 E5 AA 1E
00F0 | E5 FD 30 B4 F8 41 1D 98 1B FD 73 22 65 08 01 49
0100 | 0E BC 4B 06 94 24 93 DB B2 E3 D6 1A EF 42 8E D9
0110 | 63 E1 69 6C 26 42 02 24 65 D2 E4 57 FD F9 70 FC
0120 | 54 A1 68 48 3B 26 E4 57 DA 08 A3 FA 17 BC 17 54
0130 | E6 03 CD F7 17 C6 37 C2 A4 71 6E 86 8E 98 DA 8C
0140 | EE 3C 11 34 62 0C 12 A0 A0 12 9F 13 6C D1 E1 F4
0150 | 4A C1 F6 E9 DB AB 69 A8 DE 5C 1E 98 12 04 95 5E
0160 | E6 D1 47 CF 12 2B C6 D9 69 3C CC 31 C8 46 2B 20
0170 | 51 23 08 52 5C 42 A2 44 4B 00 23 F3 1F 84 91 99
0180 | 21 11 D1 F7 0D 15 B0 60 BC 12 9A 98 C4 8B 1D 3C
0190 | F7 82 F0 80 8D 24 79 CA 42 16 4F FB 92 FD 2C 2D
01A0 | CF EB 56 E4 95 3E CB 49 68 29 E6 FF BA 59 FF F5
01B0 | D8 A6 6E 43 82 D3 AF 89 BC A5 14 38 34 EA 4B 2C
01C0 | 30 C7 DE 8D 65 A3 2F A6 39 0D 57 F7 D5 02 57 8F
01D0 | BA 76 16 20 0D 5B 2E 5B 12 A8 99 B8 EB 10 C9 EF
01E0 | 48 35 C3 B5 ED 95 42 7F 06 3F 0A FD 19 63 AD F6
01F0 | 5C BC 1F EC 55 CC 28 22 DD DE 4A 7E EB DC AD 6E
0200 | AB AD B0 CF 51 A3 D0 FA 5A 14 1B 31 BB E5 75 18
0210 | 7E 6D 7C CC 57 97 7D 2E 7D 86 AA 50 5F 10 F5 00
0220 | 34 58 63 75 DC F2 2B 9C 91 B5 B4 B0 11 51 97 1E
0230 | 20 E1 01 E3 54 18 DF 6C 1E 89 6C BC DF 61 77 FF
0240 | 90 03 B0 DF 21 75 F7 A4 DC 61 C6 FD 7A 76 54 AE
0250 | 50 4C DC A0 1A 22 31 4B 88 D5 4A 1B A4 D6 D4 90
0260 | AB FA 71 DA 42 89 3C D8 28 45 FE 55 DA C2 68 B2
0270 | 00 1D 2B 07 AF 47 B5 09 2F 2B 4A 7D FD D0 98 48
0280 | 0D 53 41 9D 52 DD 93 42 E6 E3 F7 E1</code></pre>
<p>Payload serialization:</p>
<pre><code>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;</code></pre>
@ -465,13 +465,13 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>0148EEA3DB8E9C64</code></td>
<td><code>01C02E4114909C64</code></td>
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>80020000</code> (640 in decimal)</td>
<td><code>A0020000</code> (672 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -483,19 +483,19 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>B6DC10519017310876D247ACA4B35510</code></td>
<td><code>A1F9B9D5B1C7245520111FB7301C95C0</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>4399A0E5D8AAB5BDCD308DA28E004719</code></td>
<td><code>70EA2824B92F739F4C26457B02948DCA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002008D865C2E1E29572904F2E5A3</code> <code>EDDC466A0D187E54AC63D7DC27A1219D</code> <code>CAABF3E7985FD0FF25B41125008D1590</code> <code>AC78F68F95AB3067B6EE0777996335D6</code> <code>223146F985D479A8F81A623DA9223715</code> <code>D439A76BD37467BD1917CDDE0B798406</code> <code>B091AFCDB01940AB7ABE328CEFCB43DC</code> <code>6DBA18D878642113344035EFD17B45CE</code> <code>FBAF6AC9BC02CF3979DF673D039A073C</code> <code>369C1AB343F2240E4BC8AF10677257E7</code> <code>136F3DB1B8B6122116016D514B632F2C</code> <code>B3E54D848437EC54BE4E3610FFBABE2D</code> <code>88C01188A21803DE806E28F0DED254D4</code> <code>45B3ABCA9237560461A20121E65CDD08</code> <code>C57D01E9EF77038D488FB7B69C37F4A3</code> <code>F22D0DE6B605C09A403E074004001774</code> <code>F9869C40D90459DECFB715E9CEE79D2D</code> <code>DCC041A4E5F527A8E1FE40BFD493566D</code> <code>3A715F7F9EEFA84887DB72C99594D779</code> <code>A0C6B1536C8586F66F06566EFFCF1A13</code> <code>4FF9B5F09E99810D99A3337480B941DE</code> <code>A816ABC2D4655B709E3AE5616C97573A</code> <code>DA26E86696FAADABD1B534DC541DDE9B</code> <code>ECCDCD16AE98A30A9AE39E735E5A4820</code> <code>C1BCC23E91B07EBF758EA8F123600932</code> <code>EAC4D4DF29767D62F421BF3C059F98F0</code> <code>7A3962969EB35803A81656E0CB8B9380</code> <code>326B1D64F96EBC91EDBFC98DFDCF56D1</code> <code>818CD8B09D3708A71301E42474E4888C</code> <code>404356CD31E6345C8E264E022C6F67FD</code> <code>E7A59B33513F7E8942FB20640B9D4A94</code> <code>D9BDA6F1F384A39DEDD5BB28DEEDE3E5</code> <code>1DB1B814BEF67F819118F83BA5F51104</code> <code>E22F89867D0490644E1284827FD876F1</code> <code>2B2D1E42020E7BFA0267F0833DB15413</code> <code>182EBA42D25C525DD38B96D68B18719D</code> <code>406A2F335F8FCD0111C492D6D1283374</code> <code>7FAC3F28</code></td>
<td><code>FE500200A37DDE27DD2CD8365E53A44D</code> <code>458FAEC707B84FFD0D1DC60F93EB8DEE</code> <code>86408CDE4D4ACC01DEF41CA8F3F5530C</code> <code>A67C07C60F80B373EB00954BBA8DCA2F</code> <code>EBCC73374855DCACE34A584F835443B1</code> <code>4CF61BB8D50232315B8423C48609B4F9</code> <code>4300AA85ACDD37AE4833CF7262FD78F9</code> <code>E9CF5591CCB137168CCB51C232D0993F</code> <code>B913EBF38428BA714C7C443B5434BFF6</code> <code>EBC2649CD52BE10D91AFEBA29E8FF1CA</code> <code>E7905E05250450E9D4A82D3220A94DE8</code> <code>CEDA2F5B30E5AA1EE5FD30B4F8411D98</code> <code>1BFD7322650801490EBC4B06942493DB</code> <code>B2E3D61AEF428ED963E1696C26420224</code> <code>65D2E457FDF970FC54A168483B26E457</code> <code>DA08A3FA17BC1754E603CDF717C637C2</code> <code>A4716E868E98DA8CEE3C1134620C12A0</code> <code>A0129F136CD1E1F44AC1F6E9DBAB69A8</code> <code>DE5C1E981204955EE6D147CF122BC6D9</code> <code>693CCC31C8462B20512308525C42A244</code> <code>4B0023F31F8491992111D1F70D15B060</code> <code>BC129A98C48B1D3CF782F0808D2479CA</code> <code>42164FFB92FD2C2DCFEB56E4953ECB49</code> <code>6829E6FFBA59FFF5D8A66E4382D3AF89</code> <code>BCA5143834EA4B2C30C7DE8D65A32FA6</code> <code>390D57F7D502578FBA7616200D5B2E5B</code> <code>12A899B8EB10C9EF4835C3B5ED95427F</code> <code>063F0AFD1963ADF65CBC1FEC55CC2822</code> <code>DDDE4A7EEBDCAD6EABADB0CF51A3D0FA</code> <code>5A141B31BBE575187E6D7CCC57977D2E</code> <code>7D86AA505F10F50034586375DCF22B9C</code> <code>91B5B4B01151971E20E101E35418DF6C</code> <code>1E896CBCDF6177FF9003B0DF2175F7A4</code> <code>DC61C6FD7A7654AE504CDCA01A22314B</code> <code>88D54A1BA4D6D490ABFA71DA42893CD8</code> <code>2845FE55DAC268B2001D2B07AF47B509</code> <code>2F2B4A7DFDD098480D53419D52DD9342E6E3F7E1</code></td>
<td>See <a href="#conversion-of-encrypted-answer-into-answer">Decomposition of encrypted_answer »</a></td>
</tr>
</tbody>
@ -505,9 +505,9 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s
<p>Decrypt <code>encrypted_answer</code> using the process specified in step 5.</p>
<!-- start server_DH_inner_data -->
<p>Generated payload (excluding transport headers/trailers):</p>
<pre><code>0000 | BA 0D 89 B5 B6 DC 10 51 90 17 31 08 76 D2 47 AC
0010 | A4 B3 55 10 43 99 A0 E5 D8 AA B5 BD CD 30 8D A2
0020 | 8E 00 47 19 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 A1 F9 B9 D5 B1 C7 24 55 20 11 1F B7
0010 | 30 1C 95 C0 70 EA 28 24 B9 2F 73 9F 4C 26 45 7B
0020 | 02 94 8D CA 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,23 +524,23 @@ 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 | 55 68 99 9B 78 C1 DE E1 30 E6 04 AA 3F 04 B3 9C
0140 | 6E 61 8F 5E 29 AE 26 5E B1 59 31 D2 3C AF 96 69
0150 | 34 53 8F 16 D9 8F D3 0A DD 5B DC 39 4C 88 10 22
0160 | 85 99 1A F0 79 55 5E 37 3E 95 DF 41 D0 2C 2B 55
0170 | 8D 77 B5 46 68 8E 46 D2 3A 59 35 F6 F3 48 0B 43
0180 | 95 EB D2 92 DC 05 7E 72 66 64 F6 EB 3D 91 3A 99
0190 | B8 8F 67 E6 D7 68 86 D1 59 4E 84 34 85 32 8A 67
01A0 | EF BC E9 9D E6 CB 43 D0 B9 1F 47 1F C8 B2 4A A1
01B0 | 6F B6 09 A9 F6 9D 4A 93 ED 8A 47 87 AF 64 94 B5
01C0 | 7F 90 EC A2 8F 63 24 AA 07 08 39 AC 41 1B 1F 68
01D0 | 98 98 72 51 DD 73 7E CF CD 79 E3 E6 09 19 DB AD
01E0 | 52 BE 0D B8 D0 BE BF AD B5 14 94 85 1E 27 62 E7
01F0 | 20 D0 3A 23 4A D5 A7 67 59 EB 56 1F F9 25 F0 AD
0200 | 72 E2 99 33 46 BF 59 89 51 8D E3 A3 38 C9 03 43
0210 | 97 8A 38 78 51 FD B7 ED F2 2D DC 09 23 5C C5 1B
0220 | 23 EE E1 55 F8 BB 2B C8 B2 06 42 D7 22 03 A9 86
0230 | DB 8E 9C 64</code></pre>
0130 | 09 0D 87 8A 77 0D 8B C3 9F D6 65 02 CC 47 E2 9A
0140 | AE FF D1 27 DD 15 11 90 70 34 FF 46 76 27 A1 76
0150 | 20 B6 C3 21 E5 C0 4F D3 D4 CE 55 D5 F0 EF 86 14
0160 | F8 89 F4 02 EB FC 70 3E 49 94 51 EC 42 69 F1 AB
0170 | 16 88 57 EE 07 38 DB 48 F7 AE 04 22 BC B9 6E 13
0180 | 1D 27 DA 0F 07 DE D6 01 A5 9A 3E 2C 1F 90 F4 DF
0190 | C9 A2 E4 92 44 06 5B 78 59 23 2D F5 65 0F 0F F2
01A0 | 66 40 C5 23 E6 9F 34 DB 38 38 18 BC B8 26 A1 2F
01B0 | EF B9 84 7C 59 11 A6 23 0D 16 FD F6 C3 79 BF 0C
01C0 | 7D E2 2C CD 57 D5 DC F6 A7 4A AC 3F 8E 88 8B A6
01D0 | 7E AD 2C 7F A6 19 72 9B F0 E4 72 B3 8E C6 B9 AE
01E0 | 45 08 A6 BA E5 20 D9 66 11 EC 65 DD AF 4A 95 CE
01F0 | D2 16 B9 96 A1 EB 50 89 AF 75 E2 4F 5F D2 E5 5E
0200 | 71 69 A3 6C 58 9F A1 31 51 2B C9 49 66 7C BD 73
0210 | B7 97 5D 61 44 A9 E3 8B 0C B1 3F D9 3C 06 ED A8
0220 | 4F 84 3C F5 83 71 88 17 E1 54 D8 A5 08 B7 F2 66
0230 | 14 90 9C 64</code></pre>
<p>Payload serialization:</p>
<pre><code>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;</code></pre>
<table class="table">
@ -562,13 +562,13 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>B6DC10519017310876D247ACA4B35510</code></td>
<td><code>A1F9B9D5B1C7245520111FB7301C95C0</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>4399A0E5D8AAB5BDCD308DA28E004719</code></td>
<td><code>70EA2824B92F739F4C26457B02948DCA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -580,19 +580,19 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s
<tr>
<td>dh_prime</td>
<td>40, 260</td>
<td><code>FE000100C71CAEB9C6B1C9048E6C522F</code> <code>70F13F73980D40238E3E21C14934D037</code> <code>563D930F48198A0AA7C14058229493D2</code> <code>2530F4DBFA336F6E0AC925139543AED4</code> <code>4CCE7C3720FD51F69458705AC68CD4FE</code> <code>6B6B13ABDC9746512969328454F18FAF</code> <code>8C595F642477FE96BB2A941D5BCD1D4A</code> <code>C8CC49880708FA9B378E3C4F3A9060BE</code> <code>E67CF9A4A4A695811051907E162753B5</code> <code>6B0F6B410DBA74D8A84B2A14B3144E0E</code> <code>F1284754FD17ED950D5965B4B9DD4658</code> <code>2DB1178D169C6BC465B0D6FF9CA3928F</code> <code>EF5B9AE4E418FC15E83EBEA0F87FA9FF</code> <code>5EED70050DED2849F47BF959D956850C</code> <code>E929851F0D8115F635B105EE2E4E15D0</code> <code>4B2454BF6F4FADF034B10403119CD8E3</code> <code>B92FCC5B</code></td>
<td><code>FE000100C71CAEB9C6B1C9048E6C522F</code> <code>70F13F73980D40238E3E21C14934D037</code> <code>563D930F48198A0AA7C14058229493D2</code> <code>2530F4DBFA336F6E0AC925139543AED4</code> <code>4CCE7C3720FD51F69458705AC68CD4FE</code> <code>6B6B13ABDC9746512969328454F18FAF</code> <code>8C595F642477FE96BB2A941D5BCD1D4A</code> <code>C8CC49880708FA9B378E3C4F3A9060BE</code> <code>E67CF9A4A4A695811051907E162753B5</code> <code>6B0F6B410DBA74D8A84B2A14B3144E0E</code> <code>F1284754FD17ED950D5965B4B9DD4658</code> <code>2DB1178D169C6BC465B0D6FF9CA3928F</code> <code>EF5B9AE4E418FC15E83EBEA0F87FA9FF</code> <code>5EED70050DED2849F47BF959D956850C</code> <code>E929851F0D8115F635B105EE2E4E15D0</code> <code>4B2454BF6F4FADF034B10403119CD8E3B92FCC5B</code></td>
<td>2048-bit prime, in big-endian byte order, to be checked as specified in the auth key docs</td>
</tr>
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001005568999B78C1DEE130E604AA</code> <code>3F04B39C6E618F5E29AE265EB15931D2</code> <code>3CAF966934538F16D98FD30ADD5BDC39</code> <code>4C88102285991AF079555E373E95DF41</code> <code>D02C2B558D77B546688E46D23A5935F6</code> <code>F3480B4395EBD292DC057E726664F6EB</code> <code>3D913A99B88F67E6D76886D1594E8434</code> <code>85328A67EFBCE99DE6CB43D0B91F471F</code> <code>C8B24AA16FB609A9F69D4A93ED8A4787</code> <code>AF6494B57F90ECA28F6324AA070839AC</code> <code>411B1F6898987251DD737ECFCD79E3E6</code> <code>0919DBAD52BE0DB8D0BEBFADB5149485</code> <code>1E2762E720D03A234AD5A76759EB561F</code> <code>F925F0AD72E2993346BF5989518DE3A3</code> <code>38C90343978A387851FDB7EDF22DDC09</code> <code>235CC51B23EEE155F8BB2BC8B20642D7</code> <code>2203A986</code></td>
<td><code>FE000100090D878A770D8BC39FD66502</code> <code>CC47E29AAEFFD127DD1511907034FF46</code> <code>7627A17620B6C321E5C04FD3D4CE55D5</code> <code>F0EF8614F889F402EBFC703E499451EC</code> <code>4269F1AB168857EE0738DB48F7AE0422</code> <code>BCB96E131D27DA0F07DED601A59A3E2C</code> <code>1F90F4DFC9A2E49244065B7859232DF5</code> <code>650F0FF26640C523E69F34DB383818BC</code> <code>B826A12FEFB9847C5911A6230D16FDF6</code> <code>C379BF0C7DE22CCD57D5DCF6A74AAC3F</code> <code>8E888BA67EAD2C7FA619729BF0E472B3</code> <code>8EC6B9AE4508A6BAE520D96611EC65DD</code> <code>AF4A95CED216B996A1EB5089AF75E24F</code> <code>5FD2E55E7169A36C589FA131512BC949</code> <code>667CBD73B7975D6144A9E38B0CB13FD9</code> <code>3C06EDA84F843CF583718817E154D8A508B7F266</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>DB8E9C64</code> (1687981787 in decimal)</td>
<td><code>14909C64</code> (1687982100 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -601,34 +601,34 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s
<h1><a class="anchor" href="#42-generate-diffie-helman-parameters" id="42-generate-diffie-helman-parameters" name="42-generate-diffie-helman-parameters"><i class="anchor-icon"></i></a>4.2. generate diffie-helman parameters</h1>
<p>First, generate a secure random 2048-bit number b:</p>
<!-- start b -->
<pre><code>b = 92549D6F1A98796EC18C878741CE8F934640D692BA5648C3A63127F55C069BE9DE4D77D4AB0E9AF97E61B4BD51FB05BC83FB4E84221457BA9BCA6472F3B2BF8DA157E881B60E1AFF73C2D818CDFDFE8D3D95EFF70B9D16643C0D24ACC7908F670EA7313453CEA05BBE32A58419E8EA4731E4070355BEFFB1713E0B504148B5F39AB39D2AA9E22DF6027FCF1CB26ACF796B96775CD2850F4F038736E71A901222CB7FE8F43B07E711CCE456A605B3F4E9B79C52F668FDF2826C0FF67A08989B7C14BD36A2868A6320CEDF8C158FD28FC20D5C68FB8CACEADE0EDF7C2BE68C06B5EF4E510F0DE25A9BE157A9D7DA89DE03E154DCE564099B8038ECEB5A70BFA549</code></pre>
<pre><code>b = E462A59CDB5CF30663768339228829F5626875E6C4EBD090CED99DAD8E0E8E4FEB63929E982673D12CDF5F5B8C80672DB6631246A7A794EFB29AA9DBCED0750557DE4E552937EF797184693AF0691AB79A66F6A093F8EAD7B3FA9DE8A3672CD2D6DFED1AD93A86A2FE073534FC2C719C2DD1692E5D65A481F312019ADF474503032DA7C24580FB95788EF9D4F222512619FE047D100E96F73E568276D4458B507DA463B19F691BC25571C3E59837ABA05AC5EBBD390126A80E8CCA94661F1BCABEF4A88A646C3D1C0C0CCAC3F5B1471AC5571043094EC328D304A377998992FAA0C46EDADD33FD09C9C727A9583B38192A316BB58C45512DB6C8848904ED7375</code></pre>
<!-- end b -->
<p>Then compute <code>g_b = pow(g, b) mod dh_prime</code></p>
<!-- start g_b -->
<pre><code>g_b = 62A00BD09764BFC4544FE958335D8AD80ED0536D7C929451F06735670F6C1C478B8899C91474F5C662E3564B0BC34A9BFDC4E91939D89FB3692BF10D8D32C48715C061E8D6D22B08CE5A487D2F4526356DBFCED0CB6E56E010D71FA602104643271B29F3167E2DF33EDFDFFE65B4BA27FA6902BEC9093E4D3FF574779341104DDB8AB74AB4651562A9EA9287795D7EF42E11EBC829EA997D12813A73B502FAC2F5153C136069AAB54206AB80E7A9CCDD49A8799390CA0E07932EB986FDA47F6C60C02A9FB8D59D00CCDB55B82608C807B3554F4CA6132611BFEDB5B3C55D1109847C4D49A313A5C36E6F3D0086A48356A01A9AC81A9F90671CAC0277EB3E5631</code></pre>
<pre><code>g_b = 036B95C4619BE45DA07482AFF85439E8982344A97F94B044DB2F5626A6E7E3B4CDF5B817A1BF5F5E36A528EB21CBD61E8FE69C4DCF4F5BF11C0E6BE0A9097449023527DBCBC767EBDBE443B88D6770094723F99F39F64CA2991AC9E5E2F470BB52068164E846F5E786B4968BB35940B4D41C9F754C85C4E40FC17E90D076D42F55154E0586F0EC67CFD6E8234B82F5D50420EFC121D8EF1D7970B7FC3A7C48334D7339566A462CDC6D67AFCFE643CEA20F1C2EFE09D9E8C5B43D5AC667157601C21DA10DC60357B7496C880E1E172EABF165316A023C1964E01B2AA123927F0C1212558B872E9EC5C7F7E4F6E82F657BF36BEE66D3C311E9342FC1BBE40BCAF0</code></pre>
<!-- end g_b -->
<h1><a class="anchor" href="#43-generation-of-encrypted-data" id="43-generation-of-encrypted-data" name="43-generation-of-encrypted-data"><i class="anchor-icon"></i></a>4.3 generation of encrypted_data</h1>
<!-- start client_DH_inner_data -->
<p>Generated payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 54 B6 43 66 B6 DC 10 51 90 17 31 08 76 D2 47 AC
0010 | A4 B3 55 10 43 99 A0 E5 D8 AA B5 BD CD 30 8D A2
0020 | 8E 00 47 19 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 62 A0 0B D0 97 64 BF C4 54 4F E9 58 33 5D 8A D8
0040 | 0E D0 53 6D 7C 92 94 51 F0 67 35 67 0F 6C 1C 47
0050 | 8B 88 99 C9 14 74 F5 C6 62 E3 56 4B 0B C3 4A 9B
0060 | FD C4 E9 19 39 D8 9F B3 69 2B F1 0D 8D 32 C4 87
0070 | 15 C0 61 E8 D6 D2 2B 08 CE 5A 48 7D 2F 45 26 35
0080 | 6D BF CE D0 CB 6E 56 E0 10 D7 1F A6 02 10 46 43
0090 | 27 1B 29 F3 16 7E 2D F3 3E DF DF FE 65 B4 BA 27
00A0 | FA 69 02 BE C9 09 3E 4D 3F F5 74 77 93 41 10 4D
00B0 | DB 8A B7 4A B4 65 15 62 A9 EA 92 87 79 5D 7E F4
00C0 | 2E 11 EB C8 29 EA 99 7D 12 81 3A 73 B5 02 FA C2
00D0 | F5 15 3C 13 60 69 AA B5 42 06 AB 80 E7 A9 CC DD
00E0 | 49 A8 79 93 90 CA 0E 07 93 2E B9 86 FD A4 7F 6C
00F0 | 60 C0 2A 9F B8 D5 9D 00 CC DB 55 B8 26 08 C8 07
0100 | B3 55 4F 4C A6 13 26 11 BF ED B5 B3 C5 5D 11 09
0110 | 84 7C 4D 49 A3 13 A5 C3 6E 6F 3D 00 86 A4 83 56
0120 | A0 1A 9A C8 1A 9F 90 67 1C AC 02 77 EB 3E 56 31</code></pre>
<pre><code>0000 | 54 B6 43 66 A1 F9 B9 D5 B1 C7 24 55 20 11 1F B7
0010 | 30 1C 95 C0 70 EA 28 24 B9 2F 73 9F 4C 26 45 7B
0020 | 02 94 8D CA 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 03 6B 95 C4 61 9B E4 5D A0 74 82 AF F8 54 39 E8
0040 | 98 23 44 A9 7F 94 B0 44 DB 2F 56 26 A6 E7 E3 B4
0050 | CD F5 B8 17 A1 BF 5F 5E 36 A5 28 EB 21 CB D6 1E
0060 | 8F E6 9C 4D CF 4F 5B F1 1C 0E 6B E0 A9 09 74 49
0070 | 02 35 27 DB CB C7 67 EB DB E4 43 B8 8D 67 70 09
0080 | 47 23 F9 9F 39 F6 4C A2 99 1A C9 E5 E2 F4 70 BB
0090 | 52 06 81 64 E8 46 F5 E7 86 B4 96 8B B3 59 40 B4
00A0 | D4 1C 9F 75 4C 85 C4 E4 0F C1 7E 90 D0 76 D4 2F
00B0 | 55 15 4E 05 86 F0 EC 67 CF D6 E8 23 4B 82 F5 D5
00C0 | 04 20 EF C1 21 D8 EF 1D 79 70 B7 FC 3A 7C 48 33
00D0 | 4D 73 39 56 6A 46 2C DC 6D 67 AF CF E6 43 CE A2
00E0 | 0F 1C 2E FE 09 D9 E8 C5 B4 3D 5A C6 67 15 76 01
00F0 | C2 1D A1 0D C6 03 57 B7 49 6C 88 0E 1E 17 2E AB
0100 | F1 65 31 6A 02 3C 19 64 E0 1B 2A A1 23 92 7F 0C
0110 | 12 12 55 8B 87 2E 9E C5 C7 F7 E4 F6 E8 2F 65 7B
0120 | F3 6B EE 66 D3 C3 11 E9 34 2F C1 BB E4 0B CA F0</code></pre>
<p>Payload serialization:</p>
<pre><code>client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data;</code></pre>
<table class="table">
@ -650,25 +650,25 @@ server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:s
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>B6DC10519017310876D247ACA4B35510</code></td>
<td><code>A1F9B9D5B1C7245520111FB7301C95C0</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>4399A0E5D8AAB5BDCD308DA28E004719</code></td>
<td><code>70EA2824B92F739F4C26457B02948DCA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE00010062A00BD09764BFC4544FE958</code> <code>335D8AD80ED0536D7C929451F0673567</code> <code>0F6C1C478B8899C91474F5C662E3564B</code> <code>0BC34A9BFDC4E91939D89FB3692BF10D</code> <code>8D32C48715C061E8D6D22B08CE5A487D</code> <code>2F4526356DBFCED0CB6E56E010D71FA6</code> <code>02104643271B29F3167E2DF33EDFDFFE</code> <code>65B4BA27FA6902BEC9093E4D3FF57477</code> <code>9341104DDB8AB74AB4651562A9EA9287</code> <code>795D7EF42E11EBC829EA997D12813A73</code> <code>B502FAC2F5153C136069AAB54206AB80</code> <code>E7A9CCDD49A8799390CA0E07932EB986</code> <code>FDA47F6C60C02A9FB8D59D00CCDB55B8</code> <code>2608C807B3554F4CA6132611BFEDB5B3</code> <code>C55D1109847C4D49A313A5C36E6F3D00</code> <code>86A48356A01A9AC81A9F90671CAC0277</code> <code>EB3E5631</code></td>
<td><code>FE000100036B95C4619BE45DA07482AF</code> <code>F85439E8982344A97F94B044DB2F5626</code> <code>A6E7E3B4CDF5B817A1BF5F5E36A528EB</code> <code>21CBD61E8FE69C4DCF4F5BF11C0E6BE0</code> <code>A9097449023527DBCBC767EBDBE443B8</code> <code>8D6770094723F99F39F64CA2991AC9E5</code> <code>E2F470BB52068164E846F5E786B4968B</code> <code>B35940B4D41C9F754C85C4E40FC17E90</code> <code>D076D42F55154E0586F0EC67CFD6E823</code> <code>4B82F5D50420EFC121D8EF1D7970B7FC</code> <code>3A7C48334D7339566A462CDC6D67AFCF</code> <code>E643CEA20F1C2EFE09D9E8C5B43D5AC6</code> <code>67157601C21DA10DC60357B7496C880E</code> <code>1E172EABF165316A023C1964E01B2AA1</code> <code>23927F0C1212558B872E9EC5C7F7E4F6</code> <code>E82F657BF36BEE66D3C311E9342FC1BBE40BCAF0</code></td>
<td><code>pow(g, b) mod dh_prime</code></td>
</tr>
<tr>
<td>retry_id</td>
<td>296, 8</td>
<td><code>0000000000000000</code> (0 in decimal)</td>
<td><code>0000000000000000</code></td>
<td>Equal to zero at the time of the first attempt; otherwise, it is equal to <code>auth_key_aux_hash</code> from the previous failed attempt (see Item 9).</td>
</tr>
</tbody>
@ -681,31 +681,31 @@ AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv) = 928A4957D0463B525
<h1><a class="anchor" href="#5-request-set-client-dh-params" id="5-request-set-client-dh-params" name="5-request-set-client-dh-params"><i class="anchor-icon"></i></a>5. request set_client_dh_params</h1>
<!-- start set_client_DH_params -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 04 00 00 00 DB 8E 9C 64
0010 | 78 01 00 00 1F 5F 04 F5 B6 DC 10 51 90 17 31 08
0020 | 76 D2 47 AC A4 B3 55 10 43 99 A0 E5 D8 AA B5 BD
0030 | CD 30 8D A2 8E 00 47 19 FE 50 01 00 26 D0 EF 6C
0040 | 26 C9 52 29 46 71 95 12 FB D3 F6 28 D3 ED 3B 0B
0050 | A3 AE 96 59 0C 0F D9 66 6F E6 D9 7C 70 3B FE 0C
0060 | BC 96 5F 3F B0 1F 87 0B A6 C4 18 38 96 F1 E2 0F
0070 | DD 2B B7 07 AB 71 3E 35 84 D2 0A 60 96 0D CE 2F
0080 | 93 19 E5 78 46 6F DA 6D F6 2D A6 88 C2 3F 15 9D
0090 | EE 44 37 A5 53 4B 7E 74 58 FE 8A A7 13 23 CC 7E
00A0 | C8 5E 7C C9 C2 3C 71 13 E7 10 5A FA 19 8D EB CA
00B0 | 42 1F EA 18 70 B9 15 1C C7 DB 17 4A 12 31 96 B0
00C0 | 89 C2 48 9D D4 C8 AA 77 3F 33 94 07 4D 96 A4 59
00D0 | A8 79 AD 36 09 A8 BA EE 0F 4C 4F 5E EA B9 82 34
00E0 | DA 38 FD 85 CC A4 C4 2F 0E A9 D7 4F E3 05 A9 11
00F0 | ED F8 D0 1E 30 38 A5 F9 C2 D9 D9 20 2C B8 1E C6
0100 | 5F 6B 48 FA BD 69 03 79 E9 46 19 61 0B 2B 15 BF
0110 | 38 F3 90 16 E9 16 26 BE 3B E6 8E 84 AB E8 17 32
0120 | AF 7B 12 25 92 C3 F0 E9 38 CC 38 B1 8F B6 C6 50
0130 | 19 87 C5 41 33 32 95 92 92 9E 27 14 13 FB 99 24
0140 | C9 9C C2 58 3B C0 53 DC 58 D7 73 0B DB 4A 53 70
0150 | 3F 52 0B F9 9C E9 4A 60 37 8D 07 26 6B 9D 28 96
0160 | 2D 15 8D 1C E9 D1 D4 58 06 68 B4 8A 27 E2 52 F3
0170 | 09 AF 59 8D 3E 39 FA 12 1E 8D D4 2A 81 EB FD 11
0180 | F4 5E 07 C9 62 BD D8 8C A5 41 9B 04</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 00 00 00 00 14 90 9C 64
0010 | 78 01 00 00 1F 5F 04 F5 A1 F9 B9 D5 B1 C7 24 55
0020 | 20 11 1F B7 30 1C 95 C0 70 EA 28 24 B9 2F 73 9F
0030 | 4C 26 45 7B 02 94 8D CA FE 50 01 00 3E CB CE 83
0040 | 97 30 9D A1 84 5B 93 88 3B 11 99 21 90 FF B9 C5
0050 | 52 26 5C 26 2C 62 77 A3 0E 61 86 2B C5 45 0D 67
0060 | 21 78 1F 07 CE AD 81 67 FE E4 BE 78 4E 4A AF F5
0070 | 73 D9 DD 31 ED 4C 76 48 DB D5 A9 3C F2 90 6E BB
0080 | DE 0C E8 F2 F5 2F D6 81 3C C3 F8 63 46 9C F0 BE
0090 | C7 7A F8 A7 2B 10 1A D6 BB 93 00 1A 20 C9 E8 F0
00A0 | EF A0 AA 45 8E 84 A0 F2 BC 74 D1 BE 4D 7A BB BB
00B0 | EC 9A B6 9B DA C5 7E B7 83 91 51 17 16 83 53 78
00C0 | 7B B6 B6 73 B4 3C BC 33 FC 0B 28 0A CF E7 2E 1B
00D0 | EA 4D B7 EC F6 D6 30 7C CC FB 0F 0C 06 68 68 A3
00E0 | 82 AC EA C6 8E A4 AB 0B 31 3A 16 EF DE 55 C3 4B
00F0 | F4 F1 19 E7 F0 EE 5B D7 79 2F C8 52 23 C1 99 AA
0100 | 79 44 EC 88 11 94 0D CE 47 0C F6 A1 52 23 35 EB
0110 | BA 78 ED F2 59 75 FE 0E BD 06 33 E0 1D EB 6C 87
0120 | 01 A6 BF F1 9A AB 13 BB 3E 1E 4C 17 43 78 04 12
0130 | 45 6E 01 33 B3 70 DC 70 85 20 63 82 20 02 DE 00
0140 | 50 08 9E 37 49 E5 E6 2F D3 B9 8C C0 40 A1 60 45
0150 | 4A 81 56 E6 76 5B 1C 7B 22 D3 67 03 A3 AC D4 6B
0160 | C5 0A F3 73 C2 F0 CC 4A 1C 31 45 30 25 D9 A8 70
0170 | 45 52 BA 9F E5 E7 F3 19 85 B0 54 8A B3 93 33 F9
0180 | DB E9 3C C0 83 FF BD 09 BA 66 DA 06</code></pre>
<p>Payload serialization:</p>
<pre><code>set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;</code></pre>
<table class="table">
@ -727,7 +727,7 @@ AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv) = 928A4957D0463B525
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>04000000DB8E9C64</code></td>
<td><code>0000000014909C64</code></td>
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
</tr>
<tr>
@ -745,19 +745,19 @@ AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv) = 928A4957D0463B525
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>B6DC10519017310876D247ACA4B35510</code></td>
<td><code>A1F9B9D5B1C7245520111FB7301C95C0</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>4399A0E5D8AAB5BDCD308DA28E004719</code></td>
<td><code>70EA2824B92F739F4C26457B02948DCA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010026D0EF6C26C9522946719512</code> <code>FBD3F628D3ED3B0BA3AE96590C0FD966</code> <code>6FE6D97C703BFE0CBC965F3FB01F870B</code> <code>A6C4183896F1E20FDD2BB707AB713E35</code> <code>84D20A60960DCE2F9319E578466FDA6D</code> <code>F62DA688C23F159DEE4437A5534B7E74</code> <code>58FE8AA71323CC7EC85E7CC9C23C7113</code> <code>E7105AFA198DEBCA421FEA1870B9151C</code> <code>C7DB174A123196B089C2489DD4C8AA77</code> <code>3F3394074D96A459A879AD3609A8BAEE</code> <code>0F4C4F5EEAB98234DA38FD85CCA4C42F</code> <code>0EA9D74FE305A911EDF8D01E3038A5F9</code> <code>C2D9D9202CB81EC65F6B48FABD690379</code> <code>E94619610B2B15BF38F39016E91626BE</code> <code>3BE68E84ABE81732AF7B122592C3F0E9</code> <code>38CC38B18FB6C6501987C54133329592</code> <code>929E271413FB9924C99CC2583BC053DC</code> <code>58D7730BDB4A53703F520BF99CE94A60</code> <code>378D07266B9D28962D158D1CE9D1D458</code> <code>0668B48A27E252F309AF598D3E39FA12</code> <code>1E8DD42A81EBFD11F45E07C962BDD88C</code> <code>A5419B04</code></td>
<td><code>FE5001003ECBCE8397309DA1845B9388</code> <code>3B11992190FFB9C552265C262C6277A3</code> <code>0E61862BC5450D6721781F07CEAD8167</code> <code>FEE4BE784E4AAFF573D9DD31ED4C7648</code> <code>DBD5A93CF2906EBBDE0CE8F2F52FD681</code> <code>3CC3F863469CF0BEC77AF8A72B101AD6</code> <code>BB93001A20C9E8F0EFA0AA458E84A0F2</code> <code>BC74D1BE4D7ABBBBEC9AB69BDAC57EB7</code> <code>83915117168353787BB6B673B43CBC33</code> <code>FC0B280ACFE72E1BEA4DB7ECF6D6307C</code> <code>CCFB0F0C066868A382ACEAC68EA4AB0B</code> <code>313A16EFDE55C34BF4F119E7F0EE5BD7</code> <code>792FC85223C199AA7944EC8811940DCE</code> <code>470CF6A1522335EBBA78EDF25975FE0E</code> <code>BD0633E01DEB6C8701A6BFF19AAB13BB</code> <code>3E1E4C1743780412456E0133B370DC70</code> <code>852063822002DE0050089E3749E5E62F</code> <code>D3B98CC040A160454A8156E6765B1C7B</code> <code>22D36703A3ACD46BC50AF373C2F0CC4A</code> <code>1C31453025D9A8704552BA9FE5E7F319</code> <code>85B0548AB39333F9DBE93CC083FFBD09BA66DA06</code></td>
<td>Encrypted client_DH_inner_data, generated as follows</td>
</tr>
</tbody>
@ -766,17 +766,17 @@ AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv) = 928A4957D0463B525
<h1><a class="anchor" href="#6-auth-key-generation" id="6-auth-key-generation" name="6-auth-key-generation"><i class="anchor-icon"></i></a>6. auth key generation</h1>
<p>The clients computes the auth_key using formula <code>g^{ab} mod dh_prime</code>:</p>
<!-- start auth_key -->
<pre><code>auth_key = 6589E74DF4D3A14DC49CEB853CE31AE5BB7661A344246B57754F266BD2AC21CF48AE77153BE3B478ACE8D9892D5B96F22A7B85D66FCAF031796FA850C47597F6EB0A9031820AC3C39AF15AC792D996952181E0EA3E5B833D08E07D265BCFCDB22510581432417877FFE184FDF726F2C3014645CDD580C76CF832306C378FE8521736C2998DBFD7BAE7405FFE7E680E2742971158A3A8BEF27D61E74F1FA91508368C792A69AF71E512D4E8680E66CC1F58240504BF590E03CDAD8923CC65DCB4A11D6B337C70CC5DE31A53D0BF4D03FD57EA6FFA569B5A22FFF99CB7C5DC5416DD0DC112C4664132E68F684542CD0F621D0502AD1F01E84726431418B915B956</code></pre>
<pre><code>auth_key = 550EABB544BBED3192BDC4914FF864B914BABC8026A4F9E9AD82D6DA35BC8EE141A04978963F9704191F93FDE7C138911610390797D66BAD3EAE14E891EE8F2A5AF52FC392FE98C0EE64DD557179C5D92919C5BE6B7FF5B394A1486C09F2F9BA27484021BAE0B3D65A3BC37CD7086DC58BD9B85B066D971C5BF107CB229700D9A05559D3B2547152124EAA507C4B845D8AD4138F66B671B556A5F686DCC2A5BD4C29352ACD1BA090F8D948FD9A29818CF77EB4C61AC3E9F0DE55B3FEFB89BCDECFED1440E443368F2AC98735FC50448870CD15E9E54015AF11B9DEC1EB3B642A25E396F22C580EF42F7B5D4F41D24C23A412657DB5A203D20EFA29A963C6F1C8</code></pre>
<!-- end auth_key -->
<h1><a class="anchor" href="#7-reply-set-client-dh-params-answer" id="7-reply-set-client-dh-params-answer" name="7-reply-set-client-dh-params-answer"><i class="anchor-icon"></i></a>7. reply set_client_dh_params_answer</h1>
<p>The server verifies and confirms that auth_key_hash is unique: since it's unique, it replies with the following:</p>
<!-- start dh_gen_ok -->
<p>Received payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 8C D5 ED DB 8E 9C 64
0010 | 6C 00 00 00 34 F7 CB 3B B6 DC 10 51 90 17 31 08
0020 | 76 D2 47 AC A4 B3 55 10 43 99 A0 E5 D8 AA B5 BD
0030 | CD 30 8D A2 8E 00 47 19 B5 61 52 2A C5 74 D6 98
0040 | A6 F9 64 2B 95 C9 E6 E2</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 04 20 8A 14 90 9C 64
0010 | 74 00 00 00 34 F7 CB 3B A1 F9 B9 D5 B1 C7 24 55
0020 | 20 11 1F B7 30 1C 95 C0 70 EA 28 24 B9 2F 73 9F
0030 | 4C 26 45 7B 02 94 8D CA 87 FA CB 12 63 11 10 7E
0040 | CB 62 4A C0 8D 59 55 B4</code></pre>
<p>Payload serialization:</p>
<pre><code>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;
@ -800,13 +800,13 @@ dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = S
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>018CD5EDDB8E9C64</code></td>
<td><code>0104208A14909C64</code></td>
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>6C000000</code> (108 in decimal)</td>
<td><code>74000000</code> (116 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -818,19 +818,19 @@ dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = S
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>B6DC10519017310876D247ACA4B35510</code></td>
<td><code>A1F9B9D5B1C7245520111FB7301C95C0</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>4399A0E5D8AAB5BDCD308DA28E004719</code></td>
<td><code>70EA2824B92F739F4C26457B02948DCA</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>B561522AC574D698A6F9642B95C9E6E2</code></td>
<td><code>87FACB126311107ECB624AC08D5955B4</code></td>
<td>The 128 lower-order bits of SHA1 of the byte string derived from the <code>new_nonce</code> string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with <code>auth_key_aux_hash</code>. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.</td>
</tr>
</tbody>