Update content of files

This commit is contained in:
GitHub Action 2024-07-25 16:45:55 +00:00
parent bf1ceb04b4
commit e56faa045f
2 changed files with 208 additions and 207 deletions

View file

@ -46,7 +46,7 @@
<p>Below you will find information on schema changes. For more details on the use of layers, see <a href="/api/invoking#layers">Invoking API methods</a>.</p>
<h3><a class="anchor" href="#layer-181" id="layer-181" name="layer-181"><i class="anchor-icon"></i></a><a href="/schema?layer=181">Layer 181</a></h3>
<p>This layer introduces <a href="/api/factcheck">fact-checks »</a>, <a href="/api/stars">Telegram Stars</a> and <a href="/constructor/messageEntityBlockquote">collapsable message quotes »</a>.</p>
<p>This layer introduces <a href="/api/factcheck">fact-checks »</a>, <a href="/api/stars">Telegram Stars</a> and <a href="/constructor/messageEntityBlockquote">collapsible message quotes »</a>.</p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
@ -112,6 +112,7 @@
<a href="/method/payments.sendStarsForm">payments.sendStarsForm</a>#02bb731d flags:<a href="/type/%23">#</a> form_id:<a href="/type/long">long</a> invoice:<a href="/type/InputInvoice">InputInvoice</a> = <a href="/type/payments.PaymentResult">payments.PaymentResult</a>;
<a href="/method/payments.refundStarsCharge">payments.refundStarsCharge</a>#25ae8f4a user_id:<a href="/type/InputUser">InputUser</a> charge_id:<a href="/type/string">string</a> = <a href="/type/Updates">Updates</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-180" id="layer-180" name="layer-180"><i class="anchor-icon"></i></a><a href="/schema?layer=180">Layer 180</a></h3>
<p>This layer introduces <a href="/api/effects">animated message effects »</a>, <a href="/method/channels.searchPosts">global hashtag search in all public channels (including those we aren't a member of) »</a>, <a href="/constructor/updateBroadcastRevenueTransactions">channel ad revenue transaction updates »</a>.</p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 28 1E 0B 00 6F 7E A2 66
0010 | 14 00 00 00 F1 8E 7E BE 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 80 22 01 00 1C 80 A2 66
0010 | 14 00 00 00 F1 8E 7E BE 83 B0 58 5B 19 7D 96 F7
0020 | BF 9A D3 67 84 FA 35 A1</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;</code></pre>
<table class="table">
@ -77,7 +77,7 @@
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>281E0B006F7EA266</code></td>
<td><code>802201001C80A266</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -95,7 +95,7 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td><code>83B0585B197D96F7BF9AD36784FA35A1</code></td>
<td>Random number</td>
</tr>
</tbody>
@ -104,11 +104,11 @@
<h5><a class="anchor" href="#2-server-sends-response-of-the-form" id="2-server-sends-response-of-the-form" name="2-server-sends-response-of-the-form"><i class="anchor-icon"></i></a>2) Server sends response of the form</h5>
<!-- start resPQ -->
<p>Received payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 04 D5 D9 6F 7E A2 66
0010 | BC 00 00 00 63 24 16 05 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1
0030 | 4C F7 5A 8A 5D 4F 9E 5C 08 10 69 D1 E8 78 0E 37
0040 | 25 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 A4 B3 F5 1C 80 A2 66
0010 | 50 00 00 00 63 24 16 05 83 B0 58 5B 19 7D 96 F7
0020 | BF 9A D3 67 84 FA 35 A1 13 31 71 3E 97 3C FD 9A
0030 | AA 92 CB F4 6F 51 58 C0 08 16 34 14 91 F1 0D F2
0040 | 47 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 (de)serialization:</p>
@ -132,13 +132,13 @@
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>0104D5D96F7EA266</code></td>
<td><code>01A4B3F51C80A266</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>BC000000</code> (188 in decimal)</td>
<td><code>50000000</code> (80 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td><code>83B0585B197D96F7BF9AD36784FA35A1</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td><code>1331713E973CFD9AAA92CBF46F5158C0</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>081069D1E8780E3725000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1182707173538281253</td>
<td><code>0816341491F10DF247000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1599926384670405191</td>
<td>Single-byte prefix denoting length, an 8-byte string, and three bytes of padding</td>
</tr>
<tr>
@ -208,22 +208,22 @@
<h4><a class="anchor" href="#proof-of-work" id="proof-of-work" name="proof-of-work"><i class="anchor-icon"></i></a>Proof of work</h4>
<h5><a class="anchor" href="#3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" id="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" name="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q"><i class="anchor-icon"></i></a>3) Client decomposes pq into prime factors such that p &lt; q.</h5>
<!-- start pq -->
<pre><code>pq = 1182707173538281253</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1182707173538281253 = 1078298003 * 1096827751</code></p>
<pre><code>p = 1078298003
q = 1096827751</code></pre>
<pre><code>pq = 1599926384670405191</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1599926384670405191 = 1191256111 * 1343058281</code></p>
<pre><code>p = 1191256111
q = 1343058281</code></pre>
<!-- end pq -->
<h4><a class="anchor" href="#presenting-proof-of-work-server-authentication" id="presenting-proof-of-work-server-authentication" name="presenting-proof-of-work-server-authentication"><i class="anchor-icon"></i></a>Presenting proof of work; Server authentication</h4>
<h5><a class="anchor" href="#4-encrypted-data-payload-generation" id="4-encrypted-data-payload-generation" name="4-encrypted-data-payload-generation"><i class="anchor-icon"></i></a>4) <code>encrypted_data</code> payload generation</h5>
<p>First of all, generate an <code>encrypted_data</code> payload as follows:</p>
<!-- start p_q_inner_data_dc -->
<p>Generated payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 95 5F F5 A9 08 10 69 D1 E8 78 0E 37 25 00 00 00
0010 | 04 40 45 85 93 00 00 00 04 41 60 43 67 00 00 00
0020 | 92 63 8E CF 53 C6 21 AC 5A 56 9F A7 D8 24 8D D2
0030 | 81 32 9E 3B 6E D3 C9 C1 4C F7 5A 8A 5D 4F 9E 5C
0040 | 38 DD 22 3E CA ED DA E7 C5 BB FA 37 3B 0E BB 43
0050 | 1E 09 F4 94 D6 DF BC DC DF 42 A4 B7 9A E8 53 5D
<pre><code>0000 | 95 5F F5 A9 08 16 34 14 91 F1 0D F2 47 00 00 00
0010 | 04 47 01 20 2F 00 00 00 04 50 0D 71 69 00 00 00
0020 | 83 B0 58 5B 19 7D 96 F7 BF 9A D3 67 84 FA 35 A1
0030 | 13 31 71 3E 97 3C FD 9A AA 92 CB F4 6F 51 58 C0
0040 | 79 68 97 19 BE 03 14 A2 99 5F DE 1F BA 86 20 98
0050 | 1A EB 50 99 10 BE 5F 92 5C 93 98 65 5D BB 9D 33
0060 | 02 00 00 00</code></pre>
<p>Payload (de)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;</code></pre>
@ -246,37 +246,37 @@ q = 1096827751</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>081069D1E8780E3725000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1182707173538281253</td>
<td><code>0816341491F10DF247000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1599926384670405191</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>0440458593000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1078298003</td>
<td><code>044701202F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1191256111</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>0441604367000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1096827751</td>
<td><code>04500D7169000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1343058281</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>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td><code>83B0585B197D96F7BF9AD36784FA35A1</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td><code>1331713E973CFD9AAA92CBF46F5158C0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>38DD223ECAEDDAE7C5BBFA373B0EBB43</code> <code>1E09F494D6DFBCDCDF42A4B79AE8535D</code></td>
<td><code>79689719BE0314A2995FDE1FBA862098</code> <code>1AEB509910BE5F925C9398655DBB9D33</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1096827751</code></pre>
<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 = 955FF5A9081069D1E8780E37250000000440458593000000044160436700000092638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5C38DD223ECAEDDAE7C5BBFA373B0EBB431E09F494D6DFBCDCDF42A4B79AE8535D02000000
random_padding_bytes = 36BC32FCFD16542DAA475870C8D2B5F292D1528FA6DCA73533C04201A88255BD4D45DA41CA3C1649B54EB3856D8378D6F98DE38562C5EBEC143F2D64B558D2476578B8F406DB632774296B96CF0B518F3E7BAF90336BF6DF6184EE92</code></pre>
<pre><code>data = 955FF5A90816341491F10DF247000000044701202F00000004500D716900000083B0585B197D96F7BF9AD36784FA35A11331713E973CFD9AAA92CBF46F5158C079689719BE0314A2995FDE1FBA8620981AEB509910BE5F925C9398655DBB9D3302000000
random_padding_bytes = C8E4576EF64B3977CB5C690948A7B8F9372499FEA2EAAB77F1ECEAA0BCDC116018A90D87C362454B47BA9DD16F8B02F31219A142AAFE6147C39DA25F4BFF755818B6A817316741BDC3B244C246FCF3CFF64C7DC544F77E45DD8D7066</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 = 3F5C01340DB35237AAAD2C0BAEF9EA263633CB2CE3B6138BB2E90BA40A9D1604ED43BA2B309F74CD9487FB0FD2288211651B6F3E10A04164E3D24F964832F83CAB5D43BDFC5D3C3F6F21B517B3ED63307A2087BA057FF0A15BC110781D6DB73F17DA58D47373A3BB24D3946D126B78D0166423EDF10E39B51228C8EDB6F8B68CFD92D66A3696C9F3FF6ECAFA2F1E8BA4EC0F7E38715B77BBC9F38D231D1BEF3529E1698922C9332877BC42C929D4BFDD492108953E805EF55E44CEE939D8F759BA673FED970382500672EC7B0D5DCDD9D42BE029C20B05C248775DF37CF2EA86E3CCC1A0968C93F4CE3418A3490118411EA877EA2E8B0BE7FB3144FFEFC4F003</code></pre>
<pre><code>encrypted_data = 4F3F03A204A2F836A9E9DEEC0BD637AB712E6BD26076D3658D029D5FC9BD6D5037242603AA51BC288DD35C82DC27F10F34DC197D652A4D563B81B3AC6485A1050783CC418E7B496C61CFCBF379A51614F50F9C6A79F4DA9A2FAAAFD6C630F53565DE6DA19F27E60791871155599876738A476490CFBDA7ED00726747C98428C14F6BA3C3684080244E986AAF750C6515143DB0749BE4F3EFCD5F2E64CEBD5678FB3C93B484D272E9CFBEC8D7E752B81D16DA6C5C241A1A53E95FA086F1B5D7D9AE302E88BFF11AA724E930A27453D3110D64614443FDE0DE832D9F794B3E731D8A063AA2B23FAAA30BA22C2DFFDA63D5A8CB7C325ABE85DFE610FE3288B9CFA2</code></pre>
<!-- end p_q_inner_data_output -->
<p>The length of the final string is 256 bytes.</p>
<h5><a class="anchor" href="#5-send-req-dh-params-query-with-generated-encrypted-data" id="5-send-req-dh-params-query-with-generated-encrypted-data" name="5-send-req-dh-params-query-with-generated-encrypted-data"><i class="anchor-icon"></i></a>5) Send req_DH_params query with generated <code>encrypted_data</code></h5>
<!-- start req_DH_params -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 2C 1E 0B 00 6F 7E A2 66
0010 | 40 01 00 00 BE E4 12 D7 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1
0030 | 4C F7 5A 8A 5D 4F 9E 5C 04 40 45 85 93 00 00 00
0040 | 04 41 60 43 67 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 3F 5C 01 34 0D B3 52 37 AA AD 2C 0B
0060 | AE F9 EA 26 36 33 CB 2C E3 B6 13 8B B2 E9 0B A4
0070 | 0A 9D 16 04 ED 43 BA 2B 30 9F 74 CD 94 87 FB 0F
0080 | D2 28 82 11 65 1B 6F 3E 10 A0 41 64 E3 D2 4F 96
0090 | 48 32 F8 3C AB 5D 43 BD FC 5D 3C 3F 6F 21 B5 17
00A0 | B3 ED 63 30 7A 20 87 BA 05 7F F0 A1 5B C1 10 78
00B0 | 1D 6D B7 3F 17 DA 58 D4 73 73 A3 BB 24 D3 94 6D
00C0 | 12 6B 78 D0 16 64 23 ED F1 0E 39 B5 12 28 C8 ED
00D0 | B6 F8 B6 8C FD 92 D6 6A 36 96 C9 F3 FF 6E CA FA
00E0 | 2F 1E 8B A4 EC 0F 7E 38 71 5B 77 BB C9 F3 8D 23
00F0 | 1D 1B EF 35 29 E1 69 89 22 C9 33 28 77 BC 42 C9
0100 | 29 D4 BF DD 49 21 08 95 3E 80 5E F5 5E 44 CE E9
0110 | 39 D8 F7 59 BA 67 3F ED 97 03 82 50 06 72 EC 7B
0120 | 0D 5D CD D9 D4 2B E0 29 C2 0B 05 C2 48 77 5D F3
0130 | 7C F2 EA 86 E3 CC C1 A0 96 8C 93 F4 CE 34 18 A3
0140 | 49 01 18 41 1E A8 77 EA 2E 8B 0B E7 FB 31 44 FF
0150 | EF C4 F0 03</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 E4 9E 03 00 1D 80 A2 66
0010 | 40 01 00 00 BE E4 12 D7 83 B0 58 5B 19 7D 96 F7
0020 | BF 9A D3 67 84 FA 35 A1 13 31 71 3E 97 3C FD 9A
0030 | AA 92 CB F4 6F 51 58 C0 04 47 01 20 2F 00 00 00
0040 | 04 50 0D 71 69 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 4F 3F 03 A2 04 A2 F8 36 A9 E9 DE EC
0060 | 0B D6 37 AB 71 2E 6B D2 60 76 D3 65 8D 02 9D 5F
0070 | C9 BD 6D 50 37 24 26 03 AA 51 BC 28 8D D3 5C 82
0080 | DC 27 F1 0F 34 DC 19 7D 65 2A 4D 56 3B 81 B3 AC
0090 | 64 85 A1 05 07 83 CC 41 8E 7B 49 6C 61 CF CB F3
00A0 | 79 A5 16 14 F5 0F 9C 6A 79 F4 DA 9A 2F AA AF D6
00B0 | C6 30 F5 35 65 DE 6D A1 9F 27 E6 07 91 87 11 55
00C0 | 59 98 76 73 8A 47 64 90 CF BD A7 ED 00 72 67 47
00D0 | C9 84 28 C1 4F 6B A3 C3 68 40 80 24 4E 98 6A AF
00E0 | 75 0C 65 15 14 3D B0 74 9B E4 F3 EF CD 5F 2E 64
00F0 | CE BD 56 78 FB 3C 93 B4 84 D2 72 E9 CF BE C8 D7
0100 | E7 52 B8 1D 16 DA 6C 5C 24 1A 1A 53 E9 5F A0 86
0110 | F1 B5 D7 D9 AE 30 2E 88 BF F1 1A A7 24 E9 30 A2
0120 | 74 53 D3 11 0D 64 61 44 43 FD E0 DE 83 2D 9F 79
0130 | 4B 3E 73 1D 8A 06 3A A2 B2 3F AA A3 0B A2 2C 2D
0140 | FF DA 63 D5 A8 CB 7C 32 5A BE 85 DF E6 10 FE 32
0150 | 88 B9 CF A2</code></pre>
<p>Payload (de)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 = 36BC32FCFD16542DAA475870C8D2B5F292D1528FA6DCA73533C04201A
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>2C1E0B006F7EA266</code></td>
<td><code>E49E03001D80A266</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -363,25 +363,25 @@ random_padding_bytes = 36BC32FCFD16542DAA475870C8D2B5F292D1528FA6DCA73533C04201A
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td><code>83B0585B197D96F7BF9AD36784FA35A1</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td><code>1331713E973CFD9AAA92CBF46F5158C0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>0440458593000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1078298003</td>
<td><code>044701202F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1191256111</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>0441604367000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1096827751</td>
<td><code>04500D7169000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1343058281</td>
<td>Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
</tr>
<tr>
@ -393,7 +393,7 @@ random_padding_bytes = 36BC32FCFD16542DAA475870C8D2B5F292D1528FA6DCA73533C04201A
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001003F5C01340DB35237AAAD2C0B</code> <code>AEF9EA263633CB2CE3B6138BB2E90BA4</code> <code>0A9D1604ED43BA2B309F74CD9487FB0F</code> <code>D2288211651B6F3E10A04164E3D24F96</code> <code>4832F83CAB5D43BDFC5D3C3F6F21B517</code> <code>B3ED63307A2087BA057FF0A15BC11078</code> <code>1D6DB73F17DA58D47373A3BB24D3946D</code> <code>126B78D0166423EDF10E39B51228C8ED</code> <code>B6F8B68CFD92D66A3696C9F3FF6ECAFA</code> <code>2F1E8BA4EC0F7E38715B77BBC9F38D23</code> <code>1D1BEF3529E1698922C9332877BC42C9</code> <code>29D4BFDD492108953E805EF55E44CEE9</code> <code>39D8F759BA673FED970382500672EC7B</code> <code>0D5DCDD9D42BE029C20B05C248775DF3</code> <code>7CF2EA86E3CCC1A0968C93F4CE3418A3</code> <code>490118411EA877EA2E8B0BE7FB3144FF</code><br> <code>EFC4F003</code></td>
<td><code>FE0001004F3F03A204A2F836A9E9DEEC</code> <code>0BD637AB712E6BD26076D3658D029D5F</code> <code>C9BD6D5037242603AA51BC288DD35C82</code> <code>DC27F10F34DC197D652A4D563B81B3AC</code> <code>6485A1050783CC418E7B496C61CFCBF3</code> <code>79A51614F50F9C6A79F4DA9A2FAAAFD6</code> <code>C630F53565DE6DA19F27E60791871155</code> <code>599876738A476490CFBDA7ED00726747</code> <code>C98428C14F6BA3C3684080244E986AAF</code> <code>750C6515143DB0749BE4F3EFCD5F2E64</code> <code>CEBD5678FB3C93B484D272E9CFBEC8D7</code> <code>E752B81D16DA6C5C241A1A53E95FA086</code> <code>F1B5D7D9AE302E88BFF11AA724E930A2</code> <code>7453D3110D64614443FDE0DE832D9F79</code> <code>4B3E731D8A063AA2B23FAAA30BA22C2D</code> <code>FFDA63D5A8CB7C325ABE85DFE610FE32</code><br> <code>88B9CFA2</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 36BC32FCFD16542DAA475870C8D2B5F292D1528FA6DCA73533C04201A
<h5><a class="anchor" href="#6-server-responds-with" id="6-server-responds-with" name="6-server-responds-with"><i class="anchor-icon"></i></a>6) Server responds with:</h5>
<!-- 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 30 CA 95 70 7E A2 66
0010 | A8 02 00 00 5C 07 E8 D0 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1
0030 | 4C F7 5A 8A 5D 4F 9E 5C FE 50 02 00 4A 6A 11 FB
0040 | 97 0A C5 BB 6D 54 76 57 BF 18 6B CF 62 9E EA 5C
0050 | 2E 48 93 F2 62 79 D6 26 75 C1 CB FB 1F 45 67 73
0060 | 3F 41 4A D6 61 A9 C5 73 1B A9 CD E1 F9 95 79 F3
0070 | 1E 3B 0F E9 69 A8 40 15 C5 93 8E 51 C0 6E E5 32
0080 | 9A E9 3E 5A E3 30 3B D9 85 02 91 86 C3 C5 4E 80
0090 | AE 84 25 5F 1A E2 88 15 02 41 87 D2 4E 72 10 1F
00A0 | 33 2C 42 94 68 4D 5E 10 DB E4 1B 51 EE CD 54 CF
00B0 | DC 71 C2 94 AF F3 76 E4 B7 8D D8 89 E6 A2 E8 5B
00C0 | 02 9B EE 34 EC 99 20 28 74 74 70 AD 85 28 E4 73
00D0 | F0 4B 6D BE 47 BF 58 0C 65 5A CA 44 A6 30 A2 95
00E0 | 61 03 42 7B F3 3D 34 39 D8 70 F8 86 65 73 6E 65
00F0 | 04 B8 A2 14 A6 BE 1C F6 72 57 4D B1 98 02 68 BC
0100 | 78 3F 22 B8 34 39 48 8B 33 52 F3 F9 EA 90 CD A2
0110 | 2A B2 00 47 BE 70 3E 3F 2F 42 10 39 A2 28 53 74
0120 | 06 19 C1 91 9B FE 77 D3 BA 43 CC 55 10 05 E5 0E
0130 | 21 8B 9C 5E C9 9E 8B EE B1 FD D5 02 74 95 E9 2D
0140 | 49 8A AF 0A 46 32 5B BD D9 52 BB A8 4E CF 87 58
0150 | 42 F2 A5 98 08 25 69 4E 5C 41 F3 A5 CB E6 F6 06
0160 | DA 68 19 99 53 F2 36 E3 66 B1 B0 5C FE 33 80 E6
0170 | E4 0B 3F 78 26 02 D6 B1 65 FE EA 28 E8 9A D2 BA
0180 | 4B B1 43 BA 9C E8 92 2C 6F 97 0C 99 4D 7F 8F 89
0190 | 97 65 00 D5 41 FF 1B BB 2B CD 7D 3C AE 73 FC 9E
01A0 | AE 6E 40 F6 79 10 11 5F BD 7D 36 98 34 D1 31 BD
01B0 | 91 53 FC 82 36 CD 6C E1 E3 2E 65 B9 FA 4F 2C 15
01C0 | E2 79 63 57 6E 29 8F 4F D9 64 25 2F 4B E3 D5 80
01D0 | 89 88 6C 28 1C 8E F9 F6 53 CB D5 7F 75 07 6E 57
01E0 | E0 1D 79 23 6E A4 BE 9A E9 9F 16 86 A1 7F A7 EF
01F0 | 83 84 47 F9 C6 C5 22 89 6C A1 CD 52 04 88 BA 05
0200 | 4D 1E D2 BF 9C 28 37 AD F2 37 D4 44 D4 AD EF A3
0210 | 97 90 D5 60 4E C9 20 E1 BD C3 86 2B A1 D6 C7 BC
0220 | AE 8C E1 CA 78 9C 03 97 98 16 E3 63 39 A3 13 D2
0230 | 10 18 0F 8C 9B DC E0 9A 17 7C 46 9D A9 13 30 18
0240 | AF 50 20 43 10 72 E3 38 C7 FC E7 77 E7 6F BF E5
0250 | 9E 01 40 F8 6E 13 E7 8A FF 7D 82 76 DB 16 79 40
0260 | 4F 04 94 30 B1 A8 85 8B CA 07 E0 68 12 4F 2F AA
0270 | 32 36 A7 66 07 B6 8A 86 28 40 59 23 8B 9A CE B6
0280 | 97 9B 9C 1F 17 9E EF 5A 62 B8 4C C6</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 5C D3 9E 1D 80 A2 66
0010 | DC 02 00 00 5C 07 E8 D0 83 B0 58 5B 19 7D 96 F7
0020 | BF 9A D3 67 84 FA 35 A1 13 31 71 3E 97 3C FD 9A
0030 | AA 92 CB F4 6F 51 58 C0 FE 50 02 00 25 EE 70 E7
0040 | 96 2F B4 DC 4E 6E 8B 22 66 97 4D F9 65 0E EF 9C
0050 | 64 2E C3 EF 9D 62 12 26 B3 49 25 5E 68 E8 EC DB
0060 | 1E 28 33 39 3E 6C C7 5D 0D 08 59 9C 95 CA 3F 47
0070 | 2E 7C FD B9 BF 91 7D 46 6B 9E 05 47 41 FB 26 36
0080 | 8B D4 B3 EB AD 64 75 35 4B 06 83 5E 41 31 34 CA
0090 | A6 BE D5 42 A3 CB 6E 16 AA F9 0C 12 C6 05 21 40
00A0 | AD B9 DD 4B 0C 2A 92 7E A7 CB 7F 56 9E 85 06 B6
00B0 | CD 22 B7 60 0A 99 00 2C B5 77 2F 4B B1 68 2E 1F
00C0 | CD C1 18 72 27 53 91 F3 3D 5F 5F 43 62 92 4D ED
00D0 | 68 02 07 10 8B AD 62 80 DE FE B1 EA 49 1C 09 0F
00E0 | 6A 57 82 E0 C0 F5 29 1E 73 38 11 FF 24 A3 BA 4A
00F0 | F4 66 55 6C A5 05 33 AE F1 1F 2B C9 EA 65 B9 25
0100 | A7 D0 B2 5F DE B7 99 4C 0B B3 65 E4 26 BE 78 6C
0110 | 92 7E 34 6E 80 B3 AD 7D C7 17 7C 3D 7F 03 7C 6B
0120 | EF 0F CF B6 93 C9 13 06 A5 2D BD 9D A1 E7 BB 46
0130 | EF 1C D4 56 05 81 0C 50 93 7E C2 E5 7B 55 2A 84
0140 | 6E 32 E8 57 DF FE E8 51 A2 4A 39 B6 73 5E 71 F7
0150 | 23 07 BD D7 85 16 60 EA 27 9B 89 5D A4 95 22 49
0160 | 7F E4 1B 7E 10 74 8D 09 92 EC 05 81 B1 C1 DE 34
0170 | 5F 31 00 5A 92 AC D1 9F A6 42 98 4F E0 43 7C 20
0180 | 49 B1 C5 04 24 01 3F 1F D6 79 1D E0 4A 79 2F 85
0190 | D0 01 88 7A 94 E4 07 FA 26 7A 56 91 62 8C 30 A7
01A0 | CE D1 F2 11 DD 6C 86 D8 62 92 44 F7 42 D9 48 28
01B0 | 6C C7 D5 DE 9B 05 9B 86 A1 59 64 B9 B8 BE 46 2F
01C0 | 3F 26 9F 39 39 17 BD 39 C9 8E 0A 0E D4 67 A3 65
01D0 | 59 FF 1F A5 FA 91 35 AA 98 B9 F9 49 70 91 01 AA
01E0 | BB 36 0C 1F 67 13 F2 0F 51 C5 E0 B5 FF 6B BD 6D
01F0 | 7B CE 3B 82 3C C8 86 E6 D9 FD 22 6F 40 3D 03 A6
0200 | 65 84 4D 8A 37 6E 94 2F CA 68 1C 20 38 ED 7B 30
0210 | 6D 42 09 B6 46 95 2C B8 0A B7 55 E8 D6 E3 49 0B
0220 | E9 80 08 EA 89 8F 26 A6 8F 6D FC E2 09 D1 45 F5
0230 | BA FA 67 AB 0D 91 E6 45 C3 79 B5 AE 2A 84 B5 7F
0240 | 09 E0 81 F8 6E 9C 31 FD 64 52 04 81 57 00 69 A6
0250 | 51 40 A1 B6 47 00 3B 0D B5 0B 39 EC C2 CB 04 FC
0260 | 53 D4 37 D5 43 A0 9D F3 70 87 C3 B7 76 96 5C 91
0270 | D6 8E D8 07 D7 6C 82 B1 56 FD 8D 78 54 29 7B E8
0280 | 26 FA A5 73 3E 50 91 18 87 86 E5 14</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;</code></pre>
<table class="table">
@ -464,13 +464,13 @@ random_padding_bytes = 36BC32FCFD16542DAA475870C8D2B5F292D1528FA6DCA73533C04201A
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>0130CA95707EA266</code></td>
<td><code>015CD39E1D80A266</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>A8020000</code> (680 in decimal)</td>
<td><code>DC020000</code> (732 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 36BC32FCFD16542DAA475870C8D2B5F292D1528FA6DCA73533C04201A
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td><code>83B0585B197D96F7BF9AD36784FA35A1</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td><code>1331713E973CFD9AAA92CBF46F5158C0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002004A6A11FB970AC5BB6D547657</code> <code>BF186BCF629EEA5C2E4893F26279D626</code> <code>75C1CBFB1F4567733F414AD661A9C573</code> <code>1BA9CDE1F99579F31E3B0FE969A84015</code> <code>C5938E51C06EE5329AE93E5AE3303BD9</code> <code>85029186C3C54E80AE84255F1AE28815</code> <code>024187D24E72101F332C4294684D5E10</code> <code>DBE41B51EECD54CFDC71C294AFF376E4</code> <code>B78DD889E6A2E85B029BEE34EC992028</code> <code>747470AD8528E473F04B6DBE47BF580C</code> <code>655ACA44A630A2956103427BF33D3439</code> <code>D870F88665736E6504B8A214A6BE1CF6</code> <code>72574DB1980268BC783F22B83439488B</code> <code>3352F3F9EA90CDA22AB20047BE703E3F</code> <code>2F421039A22853740619C1919BFE77D3</code> <code>BA43CC551005E50E218B9C5EC99E8BEE</code> <code>B1FDD5027495E92D498AAF0A46325BBD</code> <code>D952BBA84ECF875842F2A5980825694E</code> <code>5C41F3A5CBE6F606DA68199953F236E3</code> <code>66B1B05CFE3380E6E40B3F782602D6B1</code> <code>65FEEA28E89AD2BA4BB143BA9CE8922C</code> <code>6F970C994D7F8F89976500D541FF1BBB</code> <code>2BCD7D3CAE73FC9EAE6E40F67910115F</code> <code>BD7D369834D131BD9153FC8236CD6CE1</code> <code>E32E65B9FA4F2C15E27963576E298F4F</code> <code>D964252F4BE3D58089886C281C8EF9F6</code> <code>53CBD57F75076E57E01D79236EA4BE9A</code> <code>E99F1686A17FA7EF838447F9C6C52289</code> <code>6CA1CD520488BA054D1ED2BF9C2837AD</code> <code>F237D444D4ADEFA39790D5604EC920E1</code> <code>BDC3862BA1D6C7BCAE8CE1CA789C0397</code> <code>9816E36339A313D210180F8C9BDCE09A</code> <code>177C469DA9133018AF5020431072E338</code> <code>C7FCE777E76FBFE59E0140F86E13E78A</code> <code>FF7D8276DB1679404F049430B1A8858B</code> <code>CA07E068124F2FAA3236A76607B68A86</code> <code>284059238B9ACEB6979B9C1F179EEF5A</code><br> <code>62B84CC6</code></td>
<td><code>FE50020025EE70E7962FB4DC4E6E8B22</code> <code>66974DF9650EEF9C642EC3EF9D621226</code> <code>B349255E68E8ECDB1E2833393E6CC75D</code> <code>0D08599C95CA3F472E7CFDB9BF917D46</code> <code>6B9E054741FB26368BD4B3EBAD647535</code> <code>4B06835E413134CAA6BED542A3CB6E16</code> <code>AAF90C12C6052140ADB9DD4B0C2A927E</code> <code>A7CB7F569E8506B6CD22B7600A99002C</code> <code>B5772F4BB1682E1FCDC11872275391F3</code> <code>3D5F5F4362924DED680207108BAD6280</code> <code>DEFEB1EA491C090F6A5782E0C0F5291E</code> <code>733811FF24A3BA4AF466556CA50533AE</code> <code>F11F2BC9EA65B925A7D0B25FDEB7994C</code> <code>0BB365E426BE786C927E346E80B3AD7D</code> <code>C7177C3D7F037C6BEF0FCFB693C91306</code> <code>A52DBD9DA1E7BB46EF1CD45605810C50</code> <code>937EC2E57B552A846E32E857DFFEE851</code> <code>A24A39B6735E71F72307BDD7851660EA</code> <code>279B895DA49522497FE41B7E10748D09</code> <code>92EC0581B1C1DE345F31005A92ACD19F</code> <code>A642984FE0437C2049B1C50424013F1F</code> <code>D6791DE04A792F85D001887A94E407FA</code> <code>267A5691628C30A7CED1F211DD6C86D8</code> <code>629244F742D948286CC7D5DE9B059B86</code> <code>A15964B9B8BE462F3F269F393917BD39</code> <code>C98E0A0ED467A36559FF1FA5FA9135AA</code> <code>98B9F949709101AABB360C1F6713F20F</code> <code>51C5E0B5FF6BBD6D7BCE3B823CC886E6</code> <code>D9FD226F403D03A665844D8A376E942F</code> <code>CA681C2038ED7B306D4209B646952CB8</code> <code>0AB755E8D6E3490BE98008EA898F26A6</code> <code>8F6DFCE209D145F5BAFA67AB0D91E645</code> <code>C379B5AE2A84B57F09E081F86E9C31FD</code> <code>64520481570069A65140A1B647003B0D</code> <code>B50B39ECC2CB04FC53D437D543A09DF3</code> <code>7087C3B776965C91D68ED807D76C82B1</code> <code>56FD8D7854297BE826FAA5733E509118</code><br> <code>8786E514</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 36BC32FCFD16542DAA475870C8D2B5F292D1528FA6DCA73533C04201A
<!-- end server_DH_params_ok -->
<p>Decrypt <code>encrypted_answer</code> using the reverse of the process specified in <a href="/mtproto/auth_key#6-server-responds-with">step 6</a>:</p>
<!-- start server_DH_inner_data_input -->
<pre><code>encrypted_answer = 4A6A11FB970AC5BB6D547657BF186BCF629EEA5C2E4893F26279D62675C1CBFB1F4567733F414AD661A9C5731BA9CDE1F99579F31E3B0FE969A84015C5938E51C06EE5329AE93E5AE3303BD985029186C3C54E80AE84255F1AE28815024187D24E72101F332C4294684D5E10DBE41B51EECD54CFDC71C294AFF376E4B78DD889E6A2E85B029BEE34EC992028747470AD8528E473F04B6DBE47BF580C655ACA44A630A2956103427BF33D3439D870F88665736E6504B8A214A6BE1CF672574DB1980268BC783F22B83439488B3352F3F9EA90CDA22AB20047BE703E3F2F421039A22853740619C1919BFE77D3BA43CC551005E50E218B9C5EC99E8BEEB1FDD5027495E92D498AAF0A46325BBDD952BBA84ECF875842F2A5980825694E5C41F3A5CBE6F606DA68199953F236E366B1B05CFE3380E6E40B3F782602D6B165FEEA28E89AD2BA4BB143BA9CE8922C6F970C994D7F8F89976500D541FF1BBB2BCD7D3CAE73FC9EAE6E40F67910115FBD7D369834D131BD9153FC8236CD6CE1E32E65B9FA4F2C15E27963576E298F4FD964252F4BE3D58089886C281C8EF9F653CBD57F75076E57E01D79236EA4BE9AE99F1686A17FA7EF838447F9C6C522896CA1CD520488BA054D1ED2BF9C2837ADF237D444D4ADEFA39790D5604EC920E1BDC3862BA1D6C7BCAE8CE1CA789C03979816E36339A313D210180F8C9BDCE09A177C469DA9133018AF5020431072E338C7FCE777E76FBFE59E0140F86E13E78AFF7D8276DB1679404F049430B1A8858BCA07E068124F2FAA3236A76607B68A86284059238B9ACEB6979B9C1F179EEF5A62B84CC6
tmp_aes_key = 9B2DB3607E4868AB72C98C0FAA723450C93F5D03DC01F3FD919CF5E015C70210
tmp_aes_iv = 717BECED312445E965C2A534DFA9A07681B16D91A159E96CF2CB727F38DD223E</code></pre>
<pre><code>encrypted_answer = 25EE70E7962FB4DC4E6E8B2266974DF9650EEF9C642EC3EF9D621226B349255E68E8ECDB1E2833393E6CC75D0D08599C95CA3F472E7CFDB9BF917D466B9E054741FB26368BD4B3EBAD6475354B06835E413134CAA6BED542A3CB6E16AAF90C12C6052140ADB9DD4B0C2A927EA7CB7F569E8506B6CD22B7600A99002CB5772F4BB1682E1FCDC11872275391F33D5F5F4362924DED680207108BAD6280DEFEB1EA491C090F6A5782E0C0F5291E733811FF24A3BA4AF466556CA50533AEF11F2BC9EA65B925A7D0B25FDEB7994C0BB365E426BE786C927E346E80B3AD7DC7177C3D7F037C6BEF0FCFB693C91306A52DBD9DA1E7BB46EF1CD45605810C50937EC2E57B552A846E32E857DFFEE851A24A39B6735E71F72307BDD7851660EA279B895DA49522497FE41B7E10748D0992EC0581B1C1DE345F31005A92ACD19FA642984FE0437C2049B1C50424013F1FD6791DE04A792F85D001887A94E407FA267A5691628C30A7CED1F211DD6C86D8629244F742D948286CC7D5DE9B059B86A15964B9B8BE462F3F269F393917BD39C98E0A0ED467A36559FF1FA5FA9135AA98B9F949709101AABB360C1F6713F20F51C5E0B5FF6BBD6D7BCE3B823CC886E6D9FD226F403D03A665844D8A376E942FCA681C2038ED7B306D4209B646952CB80AB755E8D6E3490BE98008EA898F26A68F6DFCE209D145F5BAFA67AB0D91E645C379B5AE2A84B57F09E081F86E9C31FD64520481570069A65140A1B647003B0DB50B39ECC2CB04FC53D437D543A09DF37087C3B776965C91D68ED807D76C82B156FD8D7854297BE826FAA5733E5091188786E514
tmp_aes_key = 67630CD17CB12A5126F4CB291AEB81CC809995FC713CCAFD7626920004ADFDD5
tmp_aes_iv = 75F9EF2A2C236C84B0E7EF83548AFA321BAE5B84A8BADBBE10DDA22879689719</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 275BF3A03306402F7DFA72ED4E2D817BB3DD2960BA0D89B592638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000C68334471841DEA570C80A4FAA55311D859A67D0F084D40648AFEA0A5121BE22E28CF3EFB6D160C52A13B31BB5B69A915FF598DBD7255E75AD0E0B15A9EA208AFCC1E8E7008575E71EBBFB2FCF3700D2269107D3DF02D82B7545A691ECC58098ECDBA37B2A0BE6374F3B3B09A52FF1871CA9CB08B1B64D49BFEA518BEE2CFD2FF755529DEAE5E300238D88754DD192E0F4055B3E6E5690B91F9912A8B727446221461CE12AB102A4D6644FCA2B7590D053C152E812F1317E7609226EE5D880E1F57F353EDB29D8F175B0E424E88E51B53BD278FBD733EA738AB1B31A0D943C32AEC019131364488C78FC1A481151A2626299A8BA60EE1B93C7ED8300D83D4A4707EA26688B738ADE93C2AE0
answer = BA0D89B592638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000C68334471841DEA570C80A4FAA55311D859A67D0F084D40648AFEA0A5121BE22E28CF3EFB6D160C52A13B31BB5B69A915FF598DBD7255E75AD0E0B15A9EA208AFCC1E8E7008575E71EBBFB2FCF3700D2269107D3DF02D82B7545A691ECC58098ECDBA37B2A0BE6374F3B3B09A52FF1871CA9CB08B1B64D49BFEA518BEE2CFD2FF755529DEAE5E300238D88754DD192E0F4055B3E6E5690B91F9912A8B727446221461CE12AB102A4D6644FCA2B7590D053C152E812F1317E7609226EE5D880E1F57F353EDB29D8F175B0E424E88E51B53BD278FBD733EA738AB1B31A0D943C32AEC019131364488C78FC1A481151A2626299A8BA60EE1B93C7ED8300D83D4A4707EA26688B738ADE93C2AE0</code></pre>
<pre><code>answer_with_hash = 8874EC20B27CF30D45E77DEAA9951DD810042416BA0D89B583B0585B197D96F7BF9AD36784FA35A11331713E973CFD9AAA92CBF46F5158C003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001008DD333670D6BD116DC20BB073A65921A8F20E1890F595D3490038C4E8987BEE08D5B9EFE0B942B1CAB7D34B611F7A136E7EF0D9F5FF621CCC0D2FB1DC452D88C3FABBF5BBE965A19E56FC3B9B76070C6AE03FFECF9C7FB17B46ACA2B61B2F6DAA1CBD3EEEAE719D06FB5A01EAA016075B7DAC7C934C8F3CFB79E8E3594549725D6B1121A22AD93B9BBB003066863F59FC819C16B963CCE9A71E327DD6AD135792DDC17B05DB6C33A0A14E3458EFBA402989D504152C489FDF42D20121D35EF573D06838351938ED47F38E91142E08D2907AEFB4D8A289B6173BD04AC05A165C6EE2B5CB158BB712F87CB32C02D5991070BCD367235A04F8CFB83E2AD1D3C65391D80A266C404F3D9970E6900
answer = BA0D89B583B0585B197D96F7BF9AD36784FA35A11331713E973CFD9AAA92CBF46F5158C003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001008DD333670D6BD116DC20BB073A65921A8F20E1890F595D3490038C4E8987BEE08D5B9EFE0B942B1CAB7D34B611F7A136E7EF0D9F5FF621CCC0D2FB1DC452D88C3FABBF5BBE965A19E56FC3B9B76070C6AE03FFECF9C7FB17B46ACA2B61B2F6DAA1CBD3EEEAE719D06FB5A01EAA016075B7DAC7C934C8F3CFB79E8E3594549725D6B1121A22AD93B9BBB003066863F59FC819C16B963CCE9A71E327DD6AD135792DDC17B05DB6C33A0A14E3458EFBA402989D504152C489FDF42D20121D35EF573D06838351938ED47F38E91142E08D2907AEFB4D8A289B6173BD04AC05A165C6EE2B5CB158BB712F87CB32C02D5991070BCD367235A04F8CFB83E2AD1D3C65391D80A266C404F3D9970E6900</code></pre>
<!-- end server_DH_inner_data_output -->
<!-- start server_DH_inner_data -->
<p>Generated payload (excluding transport headers/trailers):</p>
<pre><code>0000 | BA 0D 89 B5 92 63 8E CF 53 C6 21 AC 5A 56 9F A7
0010 | D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1 4C F7 5A 8A
0020 | 5D 4F 9E 5C 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 83 B0 58 5B 19 7D 96 F7 BF 9A D3 67
0010 | 84 FA 35 A1 13 31 71 3E 97 3C FD 9A AA 92 CB F4
0020 | 6F 51 58 C0 03 00 00 00 FE 00 01 00 C7 1C AE B9
0030 | C6 B1 C9 04 8E 6C 52 2F 70 F1 3F 73 98 0D 40 23
0040 | 8E 3E 21 C1 49 34 D0 37 56 3D 93 0F 48 19 8A 0A
0050 | A7 C1 40 58 22 94 93 D2 25 30 F4 DB FA 33 6F 6E
@ -532,23 +532,23 @@ answer = BA0D89B592638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5
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 | 0C 68 33 44 71 84 1D EA 57 0C 80 A4 FA A5 53 11
0140 | D8 59 A6 7D 0F 08 4D 40 64 8A FE A0 A5 12 1B E2
0150 | 2E 28 CF 3E FB 6D 16 0C 52 A1 3B 31 BB 5B 69 A9
0160 | 15 FF 59 8D BD 72 55 E7 5A D0 E0 B1 5A 9E A2 08
0170 | AF CC 1E 8E 70 08 57 5E 71 EB BF B2 FC F3 70 0D
0180 | 22 69 10 7D 3D F0 2D 82 B7 54 5A 69 1E CC 58 09
0190 | 8E CD BA 37 B2 A0 BE 63 74 F3 B3 B0 9A 52 FF 18
01A0 | 71 CA 9C B0 8B 1B 64 D4 9B FE A5 18 BE E2 CF D2
01B0 | FF 75 55 29 DE AE 5E 30 02 38 D8 87 54 DD 19 2E
01C0 | 0F 40 55 B3 E6 E5 69 0B 91 F9 91 2A 8B 72 74 46
01D0 | 22 14 61 CE 12 AB 10 2A 4D 66 44 FC A2 B7 59 0D
01E0 | 05 3C 15 2E 81 2F 13 17 E7 60 92 26 EE 5D 88 0E
01F0 | 1F 57 F3 53 ED B2 9D 8F 17 5B 0E 42 4E 88 E5 1B
0200 | 53 BD 27 8F BD 73 3E A7 38 AB 1B 31 A0 D9 43 C3
0210 | 2A EC 01 91 31 36 44 88 C7 8F C1 A4 81 15 1A 26
0220 | 26 29 9A 8B A6 0E E1 B9 3C 7E D8 30 0D 83 D4 A4
0230 | 70 7E A2 66</code></pre>
0130 | 8D D3 33 67 0D 6B D1 16 DC 20 BB 07 3A 65 92 1A
0140 | 8F 20 E1 89 0F 59 5D 34 90 03 8C 4E 89 87 BE E0
0150 | 8D 5B 9E FE 0B 94 2B 1C AB 7D 34 B6 11 F7 A1 36
0160 | E7 EF 0D 9F 5F F6 21 CC C0 D2 FB 1D C4 52 D8 8C
0170 | 3F AB BF 5B BE 96 5A 19 E5 6F C3 B9 B7 60 70 C6
0180 | AE 03 FF EC F9 C7 FB 17 B4 6A CA 2B 61 B2 F6 DA
0190 | A1 CB D3 EE EA E7 19 D0 6F B5 A0 1E AA 01 60 75
01A0 | B7 DA C7 C9 34 C8 F3 CF B7 9E 8E 35 94 54 97 25
01B0 | D6 B1 12 1A 22 AD 93 B9 BB B0 03 06 68 63 F5 9F
01C0 | C8 19 C1 6B 96 3C CE 9A 71 E3 27 DD 6A D1 35 79
01D0 | 2D DC 17 B0 5D B6 C3 3A 0A 14 E3 45 8E FB A4 02
01E0 | 98 9D 50 41 52 C4 89 FD F4 2D 20 12 1D 35 EF 57
01F0 | 3D 06 83 83 51 93 8E D4 7F 38 E9 11 42 E0 8D 29
0200 | 07 AE FB 4D 8A 28 9B 61 73 BD 04 AC 05 A1 65 C6
0210 | EE 2B 5C B1 58 BB 71 2F 87 CB 32 C0 2D 59 91 07
0220 | 0B CD 36 72 35 A0 4F 8C FB 83 E2 AD 1D 3C 65 39
0230 | 1D 80 A2 66</code></pre>
<p>Payload (de)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">
@ -570,13 +570,13 @@ answer = BA0D89B592638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td><code>83B0585B197D96F7BF9AD36784FA35A1</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td><code>1331713E973CFD9AAA92CBF46F5158C0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B592638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001000C68334471841DEA570C80A4</code> <code>FAA55311D859A67D0F084D40648AFEA0</code> <code>A5121BE22E28CF3EFB6D160C52A13B31</code> <code>BB5B69A915FF598DBD7255E75AD0E0B1</code> <code>5A9EA208AFCC1E8E7008575E71EBBFB2</code> <code>FCF3700D2269107D3DF02D82B7545A69</code> <code>1ECC58098ECDBA37B2A0BE6374F3B3B0</code> <code>9A52FF1871CA9CB08B1B64D49BFEA518</code> <code>BEE2CFD2FF755529DEAE5E300238D887</code> <code>54DD192E0F4055B3E6E5690B91F9912A</code> <code>8B727446221461CE12AB102A4D6644FC</code> <code>A2B7590D053C152E812F1317E7609226</code> <code>EE5D880E1F57F353EDB29D8F175B0E42</code> <code>4E88E51B53BD278FBD733EA738AB1B31</code> <code>A0D943C32AEC019131364488C78FC1A4</code> <code>81151A2626299A8BA60EE1B93C7ED830</code><br> <code>0D83D4A4</code></td>
<td><code>FE0001008DD333670D6BD116DC20BB07</code> <code>3A65921A8F20E1890F595D3490038C4E</code> <code>8987BEE08D5B9EFE0B942B1CAB7D34B6</code> <code>11F7A136E7EF0D9F5FF621CCC0D2FB1D</code> <code>C452D88C3FABBF5BBE965A19E56FC3B9</code> <code>B76070C6AE03FFECF9C7FB17B46ACA2B</code> <code>61B2F6DAA1CBD3EEEAE719D06FB5A01E</code> <code>AA016075B7DAC7C934C8F3CFB79E8E35</code> <code>94549725D6B1121A22AD93B9BBB00306</code> <code>6863F59FC819C16B963CCE9A71E327DD</code> <code>6AD135792DDC17B05DB6C33A0A14E345</code> <code>8EFBA402989D504152C489FDF42D2012</code> <code>1D35EF573D06838351938ED47F38E911</code> <code>42E08D2907AEFB4D8A289B6173BD04AC</code> <code>05A165C6EE2B5CB158BB712F87CB32C0</code> <code>2D5991070BCD367235A04F8CFB83E2AD</code><br> <code>1D3C6539</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>707EA266</code> (1721925232 in decimal)</td>
<td><code>1D80A266</code> (1721925661 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B592638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5
<h5><a class="anchor" href="#7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message" id="7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message" name="7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message"><i class="anchor-icon"></i></a>7) Client computes random 2048-bit number <em>b</em> (using a sufficient amount of entropy) and sends the server a message</h5>
<p>First, generate a secure random 2048-bit number b:</p>
<!-- start b -->
<pre><code>b = 1840B50088DA0DC4578C07F6EB06641EF319E5E2D020EAB4EC8751AAE39667B4D657CFB741A2A2B54A3FFA5FF91134BE2035C31855E3FCA3279852E0797C7D0B1CA1DD904D15B82E26C220276DBBF9FCC701EF6F995B5719C9AE7DB57BCE98FA4B7E3D60F6D432F4AC844A43554181998D259A61DE4EB2F523AA6DAD34A9AB0F8648F109F111F0BC617CEE7D538C7B8A36258A2F5C372D58D25A42DF7B8CB0C8D7C07955FAEAAA126F16D97BBEDF961839E52F2D4273D7AAF2A1B285922EA87FC0ECF136FBA0C8AD99318BCFED07E58590F67016B4E8B3CC8A99EA7C01EF72FCF907E5D7A73E066B65E93ECDEB53D552386BB007F2ED31070F2F041946227E3C</code></pre>
<pre><code>b = 4030612088CBABF5B36205D028CABC1B2BB0A966F03E92E00ADF21DE80B56E7B03B8A3997B9ED47F3B5A6C2B765DF0D7C27B4337D967E2C5940936487CA6451802F100ED0C6F95A7EAA29269A1429E0C5287C735D96979B17A37CF00DF60526E1EDB7E22AAF40693EC3B7AF50C7A402AEED2E84E8B927D500920AA171EA836B3B868E30C92B850DCD78B0BE11CA91313BA6840E7AEF59B8B894AAA1594C1111055B616FB5FB79C873CE1DC79CCF4D496AB0A41DDB03F16A14D664BA28C57F5B397B4CE12B30AF1C509C54B2D75427DA4D78C4A0211A8060323C7A1766703ACEE86445200A985EA1EBA5969AB74A1E00A95830472B062DA18D5D314DA23E76CBA</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 = 6891C7A59696CDB5942FD0A8B5FAA47FE78B5B0EA12ED2FB72907BE893C82CBD079C15FB57D2E8AA2FA9137CADE959E8D33788335F9C47724E1A4E69D6847BC801BEFB9E4B76A5576EC51C0F03CA867FBDE38B968B794C3AC46E8778B62DCCAC92765FB26D60EFB3B744E39E61576AA9DC0005B67ED889B38215CE6D2465EFA4F5D61D79960E7A4AA148CFCE9034425149D35AEEE5810E959A570EA8BEBF211EEC7F209F4780FC480D0C0F0047572B4F589A25F3C388F46AA4C3919F1F027DA968BDF28EACE21F53F51861CDCC4174B761A6FF9B4BC90A614C3722EB6953E6E11A3368F20BBD05A286BDB71E8F95C3A6080BBB8A6737095B7E7B63B14D14AF16</code></pre>
<pre><code>g_b = 1BE9C56BC2F495CD45ACF44410F7B823CCD5DDE747A32CCDAD82042A879B4D604F6530676402940645FD9227974B55B02AC7226789601429E187D1227B234E60D1E2E36C084589FD7DCDD10A46C214AB5956023DCAF68A062238332ACA6FC89034375C7A1080D7A97AD7C2F2765F8CECF1C486AD4D195902013008204A36EDF0BD45A4F3F5A42BEE532D721FF31DED4FB03D8FC48293EBD37D0D4D3457806B3680905DA1DC7E481F3F49F56FB878060CCD33A7F86C4EF17D0A00A29A2BF5AF423DBD881C2538FD38A62D5143C5AF4CC9823465A0BF07BE942D4E36132CA373374F6E49056D98122C1ECBAD99A230C8749D2EB72D7551E9EEAC37A4E8E7C55A46</code></pre>
<!-- end g_b -->
<h6>7.1) generation of encrypted_data</h6>
<!-- start client_DH_inner_data -->
<p>Generated payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 54 B6 43 66 92 63 8E CF 53 C6 21 AC 5A 56 9F A7
0010 | D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1 4C F7 5A 8A
0020 | 5D 4F 9E 5C 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 68 91 C7 A5 96 96 CD B5 94 2F D0 A8 B5 FA A4 7F
0040 | E7 8B 5B 0E A1 2E D2 FB 72 90 7B E8 93 C8 2C BD
0050 | 07 9C 15 FB 57 D2 E8 AA 2F A9 13 7C AD E9 59 E8
0060 | D3 37 88 33 5F 9C 47 72 4E 1A 4E 69 D6 84 7B C8
0070 | 01 BE FB 9E 4B 76 A5 57 6E C5 1C 0F 03 CA 86 7F
0080 | BD E3 8B 96 8B 79 4C 3A C4 6E 87 78 B6 2D CC AC
0090 | 92 76 5F B2 6D 60 EF B3 B7 44 E3 9E 61 57 6A A9
00A0 | DC 00 05 B6 7E D8 89 B3 82 15 CE 6D 24 65 EF A4
00B0 | F5 D6 1D 79 96 0E 7A 4A A1 48 CF CE 90 34 42 51
00C0 | 49 D3 5A EE E5 81 0E 95 9A 57 0E A8 BE BF 21 1E
00D0 | EC 7F 20 9F 47 80 FC 48 0D 0C 0F 00 47 57 2B 4F
00E0 | 58 9A 25 F3 C3 88 F4 6A A4 C3 91 9F 1F 02 7D A9
00F0 | 68 BD F2 8E AC E2 1F 53 F5 18 61 CD CC 41 74 B7
0100 | 61 A6 FF 9B 4B C9 0A 61 4C 37 22 EB 69 53 E6 E1
0110 | 1A 33 68 F2 0B BD 05 A2 86 BD B7 1E 8F 95 C3 A6
0120 | 08 0B BB 8A 67 37 09 5B 7E 7B 63 B1 4D 14 AF 16</code></pre>
<pre><code>0000 | 54 B6 43 66 83 B0 58 5B 19 7D 96 F7 BF 9A D3 67
0010 | 84 FA 35 A1 13 31 71 3E 97 3C FD 9A AA 92 CB F4
0020 | 6F 51 58 C0 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 1B E9 C5 6B C2 F4 95 CD 45 AC F4 44 10 F7 B8 23
0040 | CC D5 DD E7 47 A3 2C CD AD 82 04 2A 87 9B 4D 60
0050 | 4F 65 30 67 64 02 94 06 45 FD 92 27 97 4B 55 B0
0060 | 2A C7 22 67 89 60 14 29 E1 87 D1 22 7B 23 4E 60
0070 | D1 E2 E3 6C 08 45 89 FD 7D CD D1 0A 46 C2 14 AB
0080 | 59 56 02 3D CA F6 8A 06 22 38 33 2A CA 6F C8 90
0090 | 34 37 5C 7A 10 80 D7 A9 7A D7 C2 F2 76 5F 8C EC
00A0 | F1 C4 86 AD 4D 19 59 02 01 30 08 20 4A 36 ED F0
00B0 | BD 45 A4 F3 F5 A4 2B EE 53 2D 72 1F F3 1D ED 4F
00C0 | B0 3D 8F C4 82 93 EB D3 7D 0D 4D 34 57 80 6B 36
00D0 | 80 90 5D A1 DC 7E 48 1F 3F 49 F5 6F B8 78 06 0C
00E0 | CD 33 A7 F8 6C 4E F1 7D 0A 00 A2 9A 2B F5 AF 42
00F0 | 3D BD 88 1C 25 38 FD 38 A6 2D 51 43 C5 AF 4C C9
0100 | 82 34 65 A0 BF 07 BE 94 2D 4E 36 13 2C A3 73 37
0110 | 4F 6E 49 05 6D 98 12 2C 1E CB AD 99 A2 30 C8 74
0120 | 9D 2E B7 2D 75 51 E9 EE AC 37 A4 E8 E7 C5 5A 46</code></pre>
<p>Payload (de)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">
@ -658,19 +658,19 @@ answer = BA0D89B592638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td><code>83B0585B197D96F7BF9AD36784FA35A1</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td><code>1331713E973CFD9AAA92CBF46F5158C0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001006891C7A59696CDB5942FD0A8</code> <code>B5FAA47FE78B5B0EA12ED2FB72907BE8</code> <code>93C82CBD079C15FB57D2E8AA2FA9137C</code> <code>ADE959E8D33788335F9C47724E1A4E69</code> <code>D6847BC801BEFB9E4B76A5576EC51C0F</code> <code>03CA867FBDE38B968B794C3AC46E8778</code> <code>B62DCCAC92765FB26D60EFB3B744E39E</code> <code>61576AA9DC0005B67ED889B38215CE6D</code> <code>2465EFA4F5D61D79960E7A4AA148CFCE</code> <code>9034425149D35AEEE5810E959A570EA8</code> <code>BEBF211EEC7F209F4780FC480D0C0F00</code> <code>47572B4F589A25F3C388F46AA4C3919F</code> <code>1F027DA968BDF28EACE21F53F51861CD</code> <code>CC4174B761A6FF9B4BC90A614C3722EB</code> <code>6953E6E11A3368F20BBD05A286BDB71E</code> <code>8F95C3A6080BBB8A6737095B7E7B63B1</code><br> <code>4D14AF16</code></td>
<td><code>FE0001001BE9C56BC2F495CD45ACF444</code> <code>10F7B823CCD5DDE747A32CCDAD82042A</code> <code>879B4D604F6530676402940645FD9227</code> <code>974B55B02AC7226789601429E187D122</code> <code>7B234E60D1E2E36C084589FD7DCDD10A</code> <code>46C214AB5956023DCAF68A062238332A</code> <code>CA6FC89034375C7A1080D7A97AD7C2F2</code> <code>765F8CECF1C486AD4D19590201300820</code> <code>4A36EDF0BD45A4F3F5A42BEE532D721F</code> <code>F31DED4FB03D8FC48293EBD37D0D4D34</code> <code>57806B3680905DA1DC7E481F3F49F56F</code> <code>B878060CCD33A7F86C4EF17D0A00A29A</code> <code>2BF5AF423DBD881C2538FD38A62D5143</code> <code>C5AF4CC9823465A0BF07BE942D4E3613</code> <code>2CA373374F6E49056D98122C1ECBAD99</code> <code>A230C8749D2EB72D7551E9EEAC37A4E8</code><br> <code>E7C55A46</code></td>
<td>Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding</td>
</tr>
<tr>
@ -684,47 +684,47 @@ answer = BA0D89B592638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5
<!-- end client_DH_inner_data -->
<p>The serialization of <em>Client_DH_Inner_Data</em> produces a string <strong>data</strong>. This is used to generate <strong>encrypted_data</strong> as specified in <a href="#7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message">step 6</a>, using the following inputs:</p>
<!-- start client_DH_inner_data_input -->
<pre><code>data = 54B6436692638ECF53C621AC5A569FA7D8248DD281329E3B6ED3C9C14CF75A8A5D4F9E5C0000000000000000FE0001006891C7A59696CDB5942FD0A8B5FAA47FE78B5B0EA12ED2FB72907BE893C82CBD079C15FB57D2E8AA2FA9137CADE959E8D33788335F9C47724E1A4E69D6847BC801BEFB9E4B76A5576EC51C0F03CA867FBDE38B968B794C3AC46E8778B62DCCAC92765FB26D60EFB3B744E39E61576AA9DC0005B67ED889B38215CE6D2465EFA4F5D61D79960E7A4AA148CFCE9034425149D35AEEE5810E959A570EA8BEBF211EEC7F209F4780FC480D0C0F0047572B4F589A25F3C388F46AA4C3919F1F027DA968BDF28EACE21F53F51861CDCC4174B761A6FF9B4BC90A614C3722EB6953E6E11A3368F20BBD05A286BDB71E8F95C3A6080BBB8A6737095B7E7B63B14D14AF16
padding = 13EB1DB04EB9EDDD42C44712
tmp_aes_key = 9B2DB3607E4868AB72C98C0FAA723450C93F5D03DC01F3FD919CF5E015C70210
tmp_aes_iv = 717BECED312445E965C2A534DFA9A07681B16D91A159E96CF2CB727F38DD223E</code></pre>
<pre><code>data = 54B6436683B0585B197D96F7BF9AD36784FA35A11331713E973CFD9AAA92CBF46F5158C00000000000000000FE0001001BE9C56BC2F495CD45ACF44410F7B823CCD5DDE747A32CCDAD82042A879B4D604F6530676402940645FD9227974B55B02AC7226789601429E187D1227B234E60D1E2E36C084589FD7DCDD10A46C214AB5956023DCAF68A062238332ACA6FC89034375C7A1080D7A97AD7C2F2765F8CECF1C486AD4D195902013008204A36EDF0BD45A4F3F5A42BEE532D721FF31DED4FB03D8FC48293EBD37D0D4D3457806B3680905DA1DC7E481F3F49F56FB878060CCD33A7F86C4EF17D0A00A29A2BF5AF423DBD881C2538FD38A62D5143C5AF4CC9823465A0BF07BE942D4E36132CA373374F6E49056D98122C1ECBAD99A230C8749D2EB72D7551E9EEAC37A4E8E7C55A46
padding = 6D823D3CA76D5F34328264AC
tmp_aes_key = 67630CD17CB12A5126F4CB291AEB81CC809995FC713CCAFD7626920004ADFDD5
tmp_aes_iv = 75F9EF2A2C236C84B0E7EF83548AFA321BAE5B84A8BADBBE10DDA22879689719</code></pre>
<!-- end client_DH_inner_data_input -->
<p>Process:</p>
<pre><code>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);</code></pre>
<p>Output:</p>
<!-- start client_DH_inner_data_output -->
<pre><code>encrypted_data = 57FB7D62F641FB4AC199BED27A3C1231DF85D99079CB4EE37A289F5C3367409FBF957C33F98259512A879321EFAA6A9AC948B905E02E50675F026C2951EBF7BE5C8F919C7DDA0E65EF616F2E458DC5776CF61EA4D56EC6BCB249C4485CAE4C3E0132E4EDF4507F8C261C9A702EDB7358A0A9DA3327A8AE722E617E28A59BC3CE85F565D443C7CE753C51C6D8D0D334DFDA0082A647CE51B351A8F21D8C20FEFE83B6C5DD7B832024285DC9A8D2388DB4D28A5EC5C89E883B6C7D8128AE5F9384D4D69E563F0D3E2CE696F84D8F3E3634AB290C58C44226EBDD966D9F6119E1AA3B712BFFDF7865E9B335634DFF768B8D71AA37FBB223A7DEEF5E8BAD8FCB25768573BF66BE741D7A204912C9C6AF77409F7036D8D4C990AE0B366516A8330370EDB22F363EFB37727F42C2933255E221F13C9E21F8F4666741F46850A3975317BA74671356AA736581FA0DD241309D41</code></pre>
<pre><code>encrypted_data = 3DADC7C4EFED521B1D284817E75E255DFE4B0A1793312E3B0E0FE8B27FEEA2CED932DD07A780E871552073D4A3D5EC939C3441B28781E9A61CD34D9AA25E6122A4D876D00507CAC07280585B70253425E55DBDFE0A3930DD57382BAF7F7F9E5DDC26651B1DB19B4D24E40D9D12ADA32585C1356A8287462A5424A26CCD31442CAF51BA175039BD21F451C557F898B3D3A8191FD3E7A60D39C7A7B4E4B4C774649A6172745BC8398AE89C95EA6524053E3265DD68F722E9E1BE7FBC9397B821B0AE83FC095BA72DEF29082EDDAC4FAFF49C119B6A808EB92C635D5F109D90B3F23AC33683BE8292204C9FB210A08B8021B1CB61A72898F88D9C5B7116113F34582E970642BE781925CA2B7B7BD49498A32B6A8630A99F36F6F24ADFB06265AE4FD405E9D868B4F96F1BF215BD0865DAA20328A4013702409FCF0FB1744D45A44210E12B30450F0A15245D8190A9761F48</code></pre>
<!-- end client_DH_inner_data_output -->
<p>The length of the final string is 336 bytes.</p>
<h6>7.2) set_client_DH_params query</h6>
<!-- start set_client_DH_params -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 1C 07 05 00 70 7E A2 66
0010 | 78 01 00 00 1F 5F 04 F5 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1
0030 | 4C F7 5A 8A 5D 4F 9E 5C FE 50 01 00 57 FB 7D 62
0040 | F6 41 FB 4A C1 99 BE D2 7A 3C 12 31 DF 85 D9 90
0050 | 79 CB 4E E3 7A 28 9F 5C 33 67 40 9F BF 95 7C 33
0060 | F9 82 59 51 2A 87 93 21 EF AA 6A 9A C9 48 B9 05
0070 | E0 2E 50 67 5F 02 6C 29 51 EB F7 BE 5C 8F 91 9C
0080 | 7D DA 0E 65 EF 61 6F 2E 45 8D C5 77 6C F6 1E A4
0090 | D5 6E C6 BC B2 49 C4 48 5C AE 4C 3E 01 32 E4 ED
00A0 | F4 50 7F 8C 26 1C 9A 70 2E DB 73 58 A0 A9 DA 33
00B0 | 27 A8 AE 72 2E 61 7E 28 A5 9B C3 CE 85 F5 65 D4
00C0 | 43 C7 CE 75 3C 51 C6 D8 D0 D3 34 DF DA 00 82 A6
00D0 | 47 CE 51 B3 51 A8 F2 1D 8C 20 FE FE 83 B6 C5 DD
00E0 | 7B 83 20 24 28 5D C9 A8 D2 38 8D B4 D2 8A 5E C5
00F0 | C8 9E 88 3B 6C 7D 81 28 AE 5F 93 84 D4 D6 9E 56
0100 | 3F 0D 3E 2C E6 96 F8 4D 8F 3E 36 34 AB 29 0C 58
0110 | C4 42 26 EB DD 96 6D 9F 61 19 E1 AA 3B 71 2B FF
0120 | DF 78 65 E9 B3 35 63 4D FF 76 8B 8D 71 AA 37 FB
0130 | B2 23 A7 DE EF 5E 8B AD 8F CB 25 76 85 73 BF 66
0140 | BE 74 1D 7A 20 49 12 C9 C6 AF 77 40 9F 70 36 D8
0150 | D4 C9 90 AE 0B 36 65 16 A8 33 03 70 ED B2 2F 36
0160 | 3E FB 37 72 7F 42 C2 93 32 55 E2 21 F1 3C 9E 21
0170 | F8 F4 66 67 41 F4 68 50 A3 97 53 17 BA 74 67 13
0180 | 56 AA 73 65 81 FA 0D D2 41 30 9D 41</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 C8 78 07 00 1D 80 A2 66
0010 | 78 01 00 00 1F 5F 04 F5 83 B0 58 5B 19 7D 96 F7
0020 | BF 9A D3 67 84 FA 35 A1 13 31 71 3E 97 3C FD 9A
0030 | AA 92 CB F4 6F 51 58 C0 FE 50 01 00 3D AD C7 C4
0040 | EF ED 52 1B 1D 28 48 17 E7 5E 25 5D FE 4B 0A 17
0050 | 93 31 2E 3B 0E 0F E8 B2 7F EE A2 CE D9 32 DD 07
0060 | A7 80 E8 71 55 20 73 D4 A3 D5 EC 93 9C 34 41 B2
0070 | 87 81 E9 A6 1C D3 4D 9A A2 5E 61 22 A4 D8 76 D0
0080 | 05 07 CA C0 72 80 58 5B 70 25 34 25 E5 5D BD FE
0090 | 0A 39 30 DD 57 38 2B AF 7F 7F 9E 5D DC 26 65 1B
00A0 | 1D B1 9B 4D 24 E4 0D 9D 12 AD A3 25 85 C1 35 6A
00B0 | 82 87 46 2A 54 24 A2 6C CD 31 44 2C AF 51 BA 17
00C0 | 50 39 BD 21 F4 51 C5 57 F8 98 B3 D3 A8 19 1F D3
00D0 | E7 A6 0D 39 C7 A7 B4 E4 B4 C7 74 64 9A 61 72 74
00E0 | 5B C8 39 8A E8 9C 95 EA 65 24 05 3E 32 65 DD 68
00F0 | F7 22 E9 E1 BE 7F BC 93 97 B8 21 B0 AE 83 FC 09
0100 | 5B A7 2D EF 29 08 2E DD AC 4F AF F4 9C 11 9B 6A
0110 | 80 8E B9 2C 63 5D 5F 10 9D 90 B3 F2 3A C3 36 83
0120 | BE 82 92 20 4C 9F B2 10 A0 8B 80 21 B1 CB 61 A7
0130 | 28 98 F8 8D 9C 5B 71 16 11 3F 34 58 2E 97 06 42
0140 | BE 78 19 25 CA 2B 7B 7B D4 94 98 A3 2B 6A 86 30
0150 | A9 9F 36 F6 F2 4A DF B0 62 65 AE 4F D4 05 E9 D8
0160 | 68 B4 F9 6F 1B F2 15 BD 08 65 DA A2 03 28 A4 01
0170 | 37 02 40 9F CF 0F B1 74 4D 45 A4 42 10 E1 2B 30
0180 | 45 0F 0A 15 24 5D 81 90 A9 76 1F 48</code></pre>
<p>Payload (de)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">
@ -746,7 +746,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>1C070500707EA266</code></td>
<td><code>C87807001D80A266</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -764,19 +764,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td><code>83B0585B197D96F7BF9AD36784FA35A1</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td><code>1331713E973CFD9AAA92CBF46F5158C0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010057FB7D62F641FB4AC199BED2</code> <code>7A3C1231DF85D99079CB4EE37A289F5C</code> <code>3367409FBF957C33F98259512A879321</code> <code>EFAA6A9AC948B905E02E50675F026C29</code> <code>51EBF7BE5C8F919C7DDA0E65EF616F2E</code> <code>458DC5776CF61EA4D56EC6BCB249C448</code> <code>5CAE4C3E0132E4EDF4507F8C261C9A70</code> <code>2EDB7358A0A9DA3327A8AE722E617E28</code> <code>A59BC3CE85F565D443C7CE753C51C6D8</code> <code>D0D334DFDA0082A647CE51B351A8F21D</code> <code>8C20FEFE83B6C5DD7B832024285DC9A8</code> <code>D2388DB4D28A5EC5C89E883B6C7D8128</code> <code>AE5F9384D4D69E563F0D3E2CE696F84D</code> <code>8F3E3634AB290C58C44226EBDD966D9F</code> <code>6119E1AA3B712BFFDF7865E9B335634D</code> <code>FF768B8D71AA37FBB223A7DEEF5E8BAD</code> <code>8FCB25768573BF66BE741D7A204912C9</code> <code>C6AF77409F7036D8D4C990AE0B366516</code> <code>A8330370EDB22F363EFB37727F42C293</code> <code>3255E221F13C9E21F8F4666741F46850</code> <code>A3975317BA74671356AA736581FA0DD2</code><br> <code>41309D41</code></td>
<td><code>FE5001003DADC7C4EFED521B1D284817</code> <code>E75E255DFE4B0A1793312E3B0E0FE8B2</code> <code>7FEEA2CED932DD07A780E871552073D4</code> <code>A3D5EC939C3441B28781E9A61CD34D9A</code> <code>A25E6122A4D876D00507CAC07280585B</code> <code>70253425E55DBDFE0A3930DD57382BAF</code> <code>7F7F9E5DDC26651B1DB19B4D24E40D9D</code> <code>12ADA32585C1356A8287462A5424A26C</code> <code>CD31442CAF51BA175039BD21F451C557</code> <code>F898B3D3A8191FD3E7A60D39C7A7B4E4</code> <code>B4C774649A6172745BC8398AE89C95EA</code> <code>6524053E3265DD68F722E9E1BE7FBC93</code> <code>97B821B0AE83FC095BA72DEF29082EDD</code> <code>AC4FAFF49C119B6A808EB92C635D5F10</code> <code>9D90B3F23AC33683BE8292204C9FB210</code> <code>A08B8021B1CB61A72898F88D9C5B7116</code> <code>113F34582E970642BE781925CA2B7B7B</code> <code>D49498A32B6A8630A99F36F6F24ADFB0</code> <code>6265AE4FD405E9D868B4F96F1BF215BD</code> <code>0865DAA20328A4013702409FCF0FB174</code> <code>4D45A44210E12B30450F0A15245D8190</code><br> <code>A9761F48</code></td>
<td>Encrypted client_DH_inner_data generated previously, serialized as a TL byte string</td>
</tr>
</tbody>
@ -785,17 +785,17 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<h5><a class="anchor" href="#8-auth-key-generation" id="8-auth-key-generation" name="8-auth-key-generation"><i class="anchor-icon"></i></a>8) Auth key generation</h5>
<p>The client computes the auth_key using formula <code>g_a^b mod dh_prime</code>:</p>
<!-- start auth_key -->
<pre><code>auth_key = 2EDAB8AA240CECA596ED70730B81372D914A08B43581358B3AFAB5F35D59334C00CFD1716655045A595310552C162496C67CD53CC2C3724A666D89B3BE30E95B314281DD39C9BEB1BC2BCCC6D26696532019BCDF2CCE825A58392F288FE979E1AD55FBE4A37E3A4CF121CC7EDF525442EDB8A71A11D36097F82E1E181B5251B65B91D300898C59AA4FB471CC50052D8692DB527BF4E5D0B3C73106FE1AF6143CA57CCA3D281EAEB624B456C4A15646976FEF93E2A2DECE0C8909FEF3E98443AC9DE79153934423125C4A121275471F6F785A793B0E45A92687FB2897D82480825606FA38F0C68D4A1A6F67507E9731778CDEE9B2119A789CB4DAF9D1A5EF41D1</code></pre>
<pre><code>auth_key = 2C1B305A1CD023A6FB0A0F9B7A7C3B905BDA3D2F6BAB6BDC40881D071DD4A4119BA66061E2693E9E95EB99663370F980F69AA469171EB0F9AEEB7415ABEDCFF874FB65C0730D5ECA2DC0F1852C38BC022CA6E8C423F02F3351F72AEE42B5D66CE99DC99EF930255F2A7EE0F835D910184B31FB415DE142F79E52F39F203BEEC60BCE968FE12499C335CD39D4898756624D1F86D0224BA0257FE7FB3BC63C8E3ABB150E839F0DB55342A01C7BD12031EE5E8785970F9C77B42FAA995810CE38D98EE0D7A109012D9F3AB3582271779099B8530D50CCBC5E55807B8B46C568C11887DB471E8C517AE933FEDB453F176633CD675F865CF07A04E7D8BA29A0CFED56</code></pre>
<!-- end auth_key -->
<h5><a class="anchor" href="#9-final-server-reply" id="9-final-server-reply" name="9-final-server-reply"><i class="anchor-icon"></i></a>9) Final server reply</h5>
<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 C4 15 0E 71 7E A2 66
0010 | A0 00 00 00 34 F7 CB 3B 92 63 8E CF 53 C6 21 AC
0020 | 5A 56 9F A7 D8 24 8D D2 81 32 9E 3B 6E D3 C9 C1
0030 | 4C F7 5A 8A 5D 4F 9E 5C 23 0B 1D 76 15 E4 CF 65
0040 | A1 99 33 B0 1D 8C 24 6D</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 A0 E9 63 1E 80 A2 66
0010 | 40 00 00 00 34 F7 CB 3B 83 B0 58 5B 19 7D 96 F7
0020 | BF 9A D3 67 84 FA 35 A1 13 31 71 3E 97 3C FD 9A
0030 | AA 92 CB F4 6F 51 58 C0 66 15 3C 8E 75 C2 9B DB
0040 | AF AF 0F EE 28 29 98 01</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;</code></pre>
<table class="table">
@ -817,13 +817,13 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01C4150E717EA266</code></td>
<td><code>01A0E9631E80A266</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>A0000000</code> (160 in decimal)</td>
<td><code>40000000</code> (64 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>92638ECF53C621AC5A569FA7D8248DD2</code></td>
<td><code>83B0585B197D96F7BF9AD36784FA35A1</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>81329E3B6ED3C9C14CF75A8A5D4F9E5C</code></td>
<td><code>1331713E973CFD9AAA92CBF46F5158C0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>230B1D7615E4CF65A19933B01D8C246D</code></td>
<td><code>66153C8E75C29BDBAFAF0FEE28299801</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>