Update content of files

This commit is contained in:
GitHub Action 2024-02-04 20:57:24 +00:00
parent 8cc0948ac9
commit acb4933d31
6 changed files with 226 additions and 208 deletions

View file

@ -61,7 +61,10 @@
<section class="cd-content">
<h3 class="cd-header">Contests</h3>
<a href="/android-ui-2023" class="cd-contest">
<a href="/js2024-r1" class="cd-contest">
<div class="cd-contest-title">JavaScript 2024 Contest, Round 1. &#036;30,000<span class="cd-badge cd-badge-new">New</span></div>
<div class="cd-contest-period">Jan 10 Jan 21</div>
</a><a href="/android-ui-2023" class="cd-contest">
<div class="cd-contest-title">Android UI Competition. &#036;25,500</div>
<div class="cd-contest-period">Nov 28 Dec 7, 2023</div>
</a><a href="/ml2023-r2" class="cd-contest">

View file

@ -49,7 +49,7 @@ An error is characterized by several parameters:</p>
<h4><a class="anchor" href="#error-type" id="error-type" name="error-type"><i class="anchor-icon"></i></a>Error Type</h4>
<p>A string literal in the form of <code>/[A-Z_0-9]+/</code>, which summarizes the problem. For example, <code>AUTH_KEY_UNREGISTERED</code>. This is an optional parameter.</p>
<h4><a class="anchor" href="#error-database" id="error-database" name="error-database"><i class="anchor-icon"></i></a>Error Database</h4>
<p>A full human-readable JSON list of RPC errors that can be returned by all methods in the API can be found <a href="/file/400780400139/3/9tGNf7t7Qes.110764.json/5860a4abc1d147899b">here »</a>, what follows is a description of its fields: </p>
<p>A full human-readable JSON list of RPC errors that can be returned by all methods in the API can be found <a href="/file/400780400424/4/FCP9Vyccaho.111662.json/d7d1b7ba612b54a702">here »</a>, what follows is a description of its fields: </p>
<ul>
<li><code>errors</code> - All error messages and codes for each method (object).<ul>
<li>Keys: Error codes as strings (numeric strings)</li>

View file

@ -129,6 +129,11 @@
<td>This supergroup is not a forum.</td>
</tr>
<tr>
<td>400</td>
<td>CHANNEL_INVALID</td>
<td>The provided channel is invalid.</td>
</tr>
<tr>
<td>403</td>
<td>CHAT_ADMIN_REQUIRED</td>
<td>You must be an admin in this chat to do this.</td>

View file

@ -94,6 +94,11 @@
</tr>
<tr>
<td>400</td>
<td>FILTER_NOT_SUPPORTED</td>
<td>The specified filter cannot be used in this context.</td>
</tr>
<tr>
<td>400</td>
<td>INPUT_CHATLIST_INVALID</td>
<td>The specified folder is invalid.</td>
</tr>

View file

@ -180,6 +180,11 @@
</tr>
<tr>
<td>400</td>
<td>MEDIA_VIDEO_STORY_MISSING</td>
<td> </td>
</tr>
<tr>
<td>400</td>
<td>PEER_ID_INVALID</td>
<td>The provided peer id is invalid.</td>
</tr>

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 F8 0F 0C 00 C0 FB B3 65
0010 | 14 00 00 00 F1 8E 7E BE 0F B3 89 6D B8 D4 F6 4A
0020 | A3 BF 00 07 47 45 01 BB</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 D4 BF 07 00 F0 F6 BF 65
0010 | 14 00 00 00 F1 8E 7E BE A0 24 D4 6F CE 98 CC 73
0020 | F5 2F 67 88 C0 39 34 50</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>F80F0C00C0FBB365</code></td>
<td><code>D4BF0700F0F6BF65</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>0FB3896DB8D4F64AA3BF0007474501BB</code></td>
<td><code>A024D46FCE98CC73F52F6788C0393450</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 08 25 87 C0 FB B3 65
0010 | CC 00 00 00 63 24 16 05 0F B3 89 6D B8 D4 F6 4A
0020 | A3 BF 00 07 47 45 01 BB B2 FB 10 D3 78 A3 4B 01
0030 | 87 44 4E 66 1C A0 BC 2D 08 12 FB 88 BE A7 BA B9
0040 | 27 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 D8 0C 06 F1 F6 BF 65
0010 | 78 00 00 00 63 24 16 05 A0 24 D4 6F CE 98 CC 73
0020 | F5 2F 67 88 C0 39 34 50 65 85 87 BB D3 7A 4B F1
0030 | 58 AA EB B0 FB 23 DF E8 08 1B B4 C2 99 3E E2 0C
0040 | 17 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>01082587C0FBB365</code></td>
<td><code>01D80C06F1F6BF65</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>CC000000</code> (204 in decimal)</td>
<td><code>78000000</code> (120 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>0FB3896DB8D4F64AA3BF0007474501BB</code></td>
<td><code>A024D46FCE98CC73F52F6788C0393450</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>B2FB10D378A34B0187444E661CA0BC2D</code></td>
<td><code>658587BBD37A4BF158AAEBB0FB23DFE8</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0812FB88BEA7BAB927000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1367837264276273447</td>
<td><code>081BB4C2993EE20C17000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1996434498272758807</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 = 1367837264276273447</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1367837264276273447 = 1145893927 * 1193685761</code></p>
<pre><code>p = 1145893927
q = 1193685761</code></pre>
<pre><code>pq = 1996434498272758807</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1996434498272758807 = 1348293407 * 1480712201</code></p>
<pre><code>p = 1348293407
q = 1480712201</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 12 FB 88 BE A7 BA B9 27 00 00 00
0010 | 04 44 4C F4 27 00 00 00 04 47 26 33 01 00 00 00
0020 | 0F B3 89 6D B8 D4 F6 4A A3 BF 00 07 47 45 01 BB
0030 | B2 FB 10 D3 78 A3 4B 01 87 44 4E 66 1C A0 BC 2D
0040 | 94 25 B6 19 AD 20 13 51 DA 61 FF 35 D8 D7 1F 10
0050 | 17 2F C1 2A E3 5F 80 E1 2D C8 26 AD AC CE 38 DF
<pre><code>0000 | 95 5F F5 A9 08 1B B4 C2 99 3E E2 0C 17 00 00 00
0010 | 04 50 5D 53 1F 00 00 00 04 58 41 E0 09 00 00 00
0020 | A0 24 D4 6F CE 98 CC 73 F5 2F 67 88 C0 39 34 50
0030 | 65 85 87 BB D3 7A 4B F1 58 AA EB B0 FB 23 DF E8
0040 | 36 A6 25 7B 45 32 62 E3 AE 2D 4B 3F D7 F2 9C 45
0050 | A7 8C 9E CD 57 6F 2D 32 B5 67 8D 39 65 A6 21 3C
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 = 1193685761</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0812FB88BEA7BAB927000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1367837264276273447</td>
<td><code>081BB4C2993EE20C17000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1996434498272758807</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>04444CF427000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1145893927</td>
<td><code>04505D531F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1348293407</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>0447263301000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1193685761</td>
<td><code>045841E009000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1480712201</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>0FB3896DB8D4F64AA3BF0007474501BB</code></td>
<td><code>A024D46FCE98CC73F52F6788C0393450</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>B2FB10D378A34B0187444E661CA0BC2D</code></td>
<td><code>658587BBD37A4BF158AAEBB0FB23DFE8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>9425B619AD201351DA61FF35D8D71F10</code> <code>172FC12AE35F80E12DC826ADACCE38DF</code></td>
<td><code>36A6257B453262E3AE2D4B3FD7F29C45</code> <code>A78C9ECD576F2D32B5678D3965A6213C</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1193685761</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 = 955FF5A90812FB88BEA7BAB92700000004444CF42700000004472633010000000FB3896DB8D4F64AA3BF0007474501BBB2FB10D378A34B0187444E661CA0BC2D9425B619AD201351DA61FF35D8D71F10172FC12AE35F80E12DC826ADACCE38DF02000000
random_padding_bytes = 493EED61CB26155C38368CCD6D4994E9EC8501BE820C9D4FC3F51ED630C390EF4A541E70EF70321606360D2602B0C2BB2ED6190BF1712EB8082B7791A42556955145014F947E4BAA5DDA157EAB8B60469D0834AA1EFBADA91D9DF7FD</code></pre>
<pre><code>data = 955FF5A9081BB4C2993EE20C1700000004505D531F000000045841E009000000A024D46FCE98CC73F52F6788C0393450658587BBD37A4BF158AAEBB0FB23DFE836A6257B453262E3AE2D4B3FD7F29C45A78C9ECD576F2D32B5678D3965A6213C02000000
random_padding_bytes = 11E5A0AC9234FD26AD551D548148021F735B999ADD2FC1532D17C2641D6A12C841B91B9BBB4AE98FF97733FCA430F7768C8EC687E59E5E7B0AD75BABFF8132511B2BCFDA6E4C81305521946D6DBD1AED1DD82E158C94C003AEAF0AAA</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 = 341338BAFE30B6F50135AD07F4571652DDAD90697D5BE5B32AE38BCF0A5F54DBEDB039694EC300BC75EC388C4A202822E385826F3171B8EB607997C6FAA99DC3AAD24D23603F8170975382258F770452B27817879CCBC8AB3014E82E985A9C6032A4E529E3F1615A8698EA18B846CEE48D18C656AF3D64DE9E3A5DF5DB5E929AA1355942534EBC5DBC5CBC057C97CE48656585DF91B19A44FA77DC345CAE1BF8CDE43EB4A759A989E9EEA192986149E8FFB443E699045F7B08AA866BDC429F66FDA98276688FC0BF3BB3FCB3F9FE57911AE3A95FD71624ED6EC89A93EB73EF249517E4343D3644D044250EC135833BCF2F3FFB783B80A3105113E9B71E2E0E7F</code></pre>
<pre><code>encrypted_data = A49E2B4D1CC6BDFD745B3C515371EEB23B6259ABE4126A53537542EFAD18CE1C8505B69665A295C7EB93BE1667AAC2A0A4501816920D2573D06C04982AC09300F985CC05462C4888D4F965F1BC0ED70E34A256BC8FE4BF8D94C326F122C2943472B2176E620199BB2E4D1A74DB0CA809C789BD5D5C30E1E42D2470D4ED9B72ECDCB1684316E5DE9979AC97F8F9CB6D5460F7FAF14B8BA68BC143B19ACF35204DC16599F4089BF6915AD801DD91960D4E1E066B4D363F9E0928DC3789FD29970A33F00BFF53D187C107522FE286A33859E5400C24585916A9652B1FCB29780308A085A3CC72D4F7AD02D6DC73FC071755AD7792AC9857864C97C78CA076AEBFB1</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 FC 0F 0C 00 C0 FB B3 65
0010 | 40 01 00 00 BE E4 12 D7 0F B3 89 6D B8 D4 F6 4A
0020 | A3 BF 00 07 47 45 01 BB B2 FB 10 D3 78 A3 4B 01
0030 | 87 44 4E 66 1C A0 BC 2D 04 44 4C F4 27 00 00 00
0040 | 04 47 26 33 01 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 34 13 38 BA FE 30 B6 F5 01 35 AD 07
0060 | F4 57 16 52 DD AD 90 69 7D 5B E5 B3 2A E3 8B CF
0070 | 0A 5F 54 DB ED B0 39 69 4E C3 00 BC 75 EC 38 8C
0080 | 4A 20 28 22 E3 85 82 6F 31 71 B8 EB 60 79 97 C6
0090 | FA A9 9D C3 AA D2 4D 23 60 3F 81 70 97 53 82 25
00A0 | 8F 77 04 52 B2 78 17 87 9C CB C8 AB 30 14 E8 2E
00B0 | 98 5A 9C 60 32 A4 E5 29 E3 F1 61 5A 86 98 EA 18
00C0 | B8 46 CE E4 8D 18 C6 56 AF 3D 64 DE 9E 3A 5D F5
00D0 | DB 5E 92 9A A1 35 59 42 53 4E BC 5D BC 5C BC 05
00E0 | 7C 97 CE 48 65 65 85 DF 91 B1 9A 44 FA 77 DC 34
00F0 | 5C AE 1B F8 CD E4 3E B4 A7 59 A9 89 E9 EE A1 92
0100 | 98 61 49 E8 FF B4 43 E6 99 04 5F 7B 08 AA 86 6B
0110 | DC 42 9F 66 FD A9 82 76 68 8F C0 BF 3B B3 FC B3
0120 | F9 FE 57 91 1A E3 A9 5F D7 16 24 ED 6E C8 9A 93
0130 | EB 73 EF 24 95 17 E4 34 3D 36 44 D0 44 25 0E C1
0140 | 35 83 3B CF 2F 3F FB 78 3B 80 A3 10 51 13 E9 B7
0150 | 1E 2E 0E 7F</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 E4 15 04 00 F1 F6 BF 65
0010 | 40 01 00 00 BE E4 12 D7 A0 24 D4 6F CE 98 CC 73
0020 | F5 2F 67 88 C0 39 34 50 65 85 87 BB D3 7A 4B F1
0030 | 58 AA EB B0 FB 23 DF E8 04 50 5D 53 1F 00 00 00
0040 | 04 58 41 E0 09 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 A4 9E 2B 4D 1C C6 BD FD 74 5B 3C 51
0060 | 53 71 EE B2 3B 62 59 AB E4 12 6A 53 53 75 42 EF
0070 | AD 18 CE 1C 85 05 B6 96 65 A2 95 C7 EB 93 BE 16
0080 | 67 AA C2 A0 A4 50 18 16 92 0D 25 73 D0 6C 04 98
0090 | 2A C0 93 00 F9 85 CC 05 46 2C 48 88 D4 F9 65 F1
00A0 | BC 0E D7 0E 34 A2 56 BC 8F E4 BF 8D 94 C3 26 F1
00B0 | 22 C2 94 34 72 B2 17 6E 62 01 99 BB 2E 4D 1A 74
00C0 | DB 0C A8 09 C7 89 BD 5D 5C 30 E1 E4 2D 24 70 D4
00D0 | ED 9B 72 EC DC B1 68 43 16 E5 DE 99 79 AC 97 F8
00E0 | F9 CB 6D 54 60 F7 FA F1 4B 8B A6 8B C1 43 B1 9A
00F0 | CF 35 20 4D C1 65 99 F4 08 9B F6 91 5A D8 01 DD
0100 | 91 96 0D 4E 1E 06 6B 4D 36 3F 9E 09 28 DC 37 89
0110 | FD 29 97 0A 33 F0 0B FF 53 D1 87 C1 07 52 2F E2
0120 | 86 A3 38 59 E5 40 0C 24 58 59 16 A9 65 2B 1F CB
0130 | 29 78 03 08 A0 85 A3 CC 72 D4 F7 AD 02 D6 DC 73
0140 | FC 07 17 55 AD 77 92 AC 98 57 86 4C 97 C7 8C A0
0150 | 76 AE BF B1</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 = 493EED61CB26155C38368CCD6D4994E9EC8501BE820C9D4FC3F51ED63
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>FC0F0C00C0FBB365</code></td>
<td><code>E4150400F1F6BF65</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 = 493EED61CB26155C38368CCD6D4994E9EC8501BE820C9D4FC3F51ED63
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>0FB3896DB8D4F64AA3BF0007474501BB</code></td>
<td><code>A024D46FCE98CC73F52F6788C0393450</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>B2FB10D378A34B0187444E661CA0BC2D</code></td>
<td><code>658587BBD37A4BF158AAEBB0FB23DFE8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>04444CF427000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1145893927</td>
<td><code>04505D531F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1348293407</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>0447263301000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1193685761</td>
<td><code>045841E009000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1480712201</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 = 493EED61CB26155C38368CCD6D4994E9EC8501BE820C9D4FC3F51ED63
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE000100341338BAFE30B6F50135AD07</code> <code>F4571652DDAD90697D5BE5B32AE38BCF</code> <code>0A5F54DBEDB039694EC300BC75EC388C</code> <code>4A202822E385826F3171B8EB607997C6</code> <code>FAA99DC3AAD24D23603F817097538225</code> <code>8F770452B27817879CCBC8AB3014E82E</code> <code>985A9C6032A4E529E3F1615A8698EA18</code> <code>B846CEE48D18C656AF3D64DE9E3A5DF5</code> <code>DB5E929AA1355942534EBC5DBC5CBC05</code> <code>7C97CE48656585DF91B19A44FA77DC34</code> <code>5CAE1BF8CDE43EB4A759A989E9EEA192</code> <code>986149E8FFB443E699045F7B08AA866B</code> <code>DC429F66FDA98276688FC0BF3BB3FCB3</code> <code>F9FE57911AE3A95FD71624ED6EC89A93</code> <code>EB73EF249517E4343D3644D044250EC1</code> <code>35833BCF2F3FFB783B80A3105113E9B7</code><br> <code>1E2E0E7F</code></td>
<td><code>FE000100A49E2B4D1CC6BDFD745B3C51</code> <code>5371EEB23B6259ABE4126A53537542EF</code> <code>AD18CE1C8505B69665A295C7EB93BE16</code> <code>67AAC2A0A4501816920D2573D06C0498</code> <code>2AC09300F985CC05462C4888D4F965F1</code> <code>BC0ED70E34A256BC8FE4BF8D94C326F1</code> <code>22C2943472B2176E620199BB2E4D1A74</code> <code>DB0CA809C789BD5D5C30E1E42D2470D4</code> <code>ED9B72ECDCB1684316E5DE9979AC97F8</code> <code>F9CB6D5460F7FAF14B8BA68BC143B19A</code> <code>CF35204DC16599F4089BF6915AD801DD</code> <code>91960D4E1E066B4D363F9E0928DC3789</code> <code>FD29970A33F00BFF53D187C107522FE2</code> <code>86A33859E5400C24585916A9652B1FCB</code> <code>29780308A085A3CC72D4F7AD02D6DC73</code> <code>FC071755AD7792AC9857864C97C78CA0</code><br> <code>76AEBFB1</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 493EED61CB26155C38368CCD6D4994E9EC8501BE820C9D4FC3F51ED63
<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 A4 A6 3C C1 FB B3 65
0010 | 8C 02 00 00 5C 07 E8 D0 0F B3 89 6D B8 D4 F6 4A
0020 | A3 BF 00 07 47 45 01 BB B2 FB 10 D3 78 A3 4B 01
0030 | 87 44 4E 66 1C A0 BC 2D FE 50 02 00 23 53 27 9B
0040 | B1 E1 E7 23 EF D9 ED 37 B9 6F D9 40 82 84 A9 C9
0050 | 99 CC 57 BE 3E 2A 7F 77 A9 3E 4E AA 3B 02 AD 83
0060 | A2 CB F1 F2 27 E8 85 6E E2 8C 51 40 D0 56 7A A0
0070 | 77 09 39 C7 D7 F8 93 E2 41 71 D6 CE 4B 53 CC BE
0080 | 1E 8F 84 F4 7D 75 13 43 5B 99 F6 50 E5 78 71 D8
0090 | 34 73 C1 68 E3 82 A8 BA EC 66 1E B2 15 52 12 15
00A0 | BA 52 98 04 49 47 DB FE 1A CF A2 CE 62 87 8E 91
00B0 | C8 19 62 D9 43 FE 34 A4 37 FB 76 DA 5C F2 1F 60
00C0 | C2 24 D8 14 8B A3 31 16 F2 72 A1 F8 B5 9B 23 20
00D0 | BF 8B B0 B6 5C 2A 78 CA 60 15 FE 70 5D CD 95 FB
00E0 | 7E 50 A2 C1 BB 59 E8 11 66 B8 F9 BE E1 E9 18 0D
00F0 | 49 E6 24 1B 02 E8 B5 6C AD E3 9D 79 8D 03 49 A3
0100 | 9F 63 7B 44 3D 68 BB AA 1B 65 FC 4C 12 92 C6 D6
0110 | D3 0B D9 73 C4 B6 18 FF 47 9C 5C 0C 46 A8 6F 97
0120 | 6A 78 62 21 5F 46 C1 7A 13 A3 73 40 D6 C1 FB 34
0130 | 9D E2 23 4B 74 C0 AF 08 61 04 84 F5 AA 89 4E 23
0140 | 12 FA 4B D0 32 CA F2 8D E8 D6 9B 47 C7 CF 4F F1
0150 | 2D D4 E0 AE 4D D0 B3 7E 93 64 2E 5A 4A 2F 1E 3F
0160 | FB CD 5D C5 46 E5 2A 1B 83 FA 0F A5 E8 DE DF 52
0170 | FB B8 A0 42 02 5C B4 E4 72 EA 89 DC 9A 9A CE 6E
0180 | FC 2D 9E BA 09 3E 28 6F AB 46 79 92 8C F7 86 E2
0190 | E8 4E 95 59 AA 33 51 7B 90 7A 05 52 6F 32 76 8F
01A0 | 7A 91 AC 9A 5A 08 82 48 40 53 02 0B 9C 08 D1 AA
01B0 | BD 9A 48 F6 3F 1F 66 13 60 1E 54 24 F2 8E D4 D1
01C0 | 9E 99 AE A1 65 5D 60 C0 7A 61 3D AC 32 C6 8F 48
01D0 | 3B 6A 3E B5 50 CC AC 6F 4F 56 50 9D C1 EC C9 F6
01E0 | C7 C1 A5 EF 72 59 EE 09 D0 34 35 84 51 E5 51 89
01F0 | E9 4D 88 88 3C 57 46 E2 44 DF C5 8C 22 30 CA 4E
0200 | 16 CA 7A 69 48 74 02 41 67 E3 7E 83 78 36 A0 18
0210 | 00 FF 00 15 FE CC 08 2F D1 06 5C 4F A2 A6 EA B5
0220 | 9B 8D 4E 21 0F EC 3B E7 88 4C A9 60 02 2C 81 B9
0230 | 5C EC 7A F2 34 C1 DE 6C B0 5F EA DD B5 1D 4F 06
0240 | 4C FF 61 70 25 81 13 32 A9 F8 21 D3 1C 40 40 17
0250 | 5A E4 F2 8C FD CC 81 77 00 B7 96 0E 61 30 25 65
0260 | 69 34 93 36 67 7C 68 D4 C2 59 75 5F 9E 22 C6 39
0270 | C3 C4 CA 3F 27 6F 91 AC 94 25 0F 98 84 EE 55 8D
0280 | BE D9 5C 70 B7 CF 41 35 5F C5 9C 6D</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 B8 BA CF F1 F6 BF 65
0010 | A8 02 00 00 5C 07 E8 D0 A0 24 D4 6F CE 98 CC 73
0020 | F5 2F 67 88 C0 39 34 50 65 85 87 BB D3 7A 4B F1
0030 | 58 AA EB B0 FB 23 DF E8 FE 50 02 00 4A 61 1E 31
0040 | 23 31 E6 03 13 27 B9 7E BF 97 5B 17 56 DB EB 40
0050 | 73 74 94 DE CB E8 D2 FB EE E1 1F 40 FC FC A0 0B
0060 | 2F 6A 10 05 BC 73 EF 1E E2 E9 3D 73 CB EA 1B 93
0070 | 64 8C 29 C9 94 4D 08 54 A0 46 33 91 0D F3 1F F5
0080 | A5 B5 2B 2B EF 4A D3 14 91 8A 51 42 A5 0A 6F 47
0090 | 91 26 9B E8 43 84 68 F6 58 D2 E3 A4 95 ED E5 04
00A0 | B1 B9 EA 0C 20 89 5B 3B 0E 05 22 C5 C1 29 4A 59
00B0 | 29 D6 75 BE 7F B3 4C 0B 63 91 EC 25 AB EA 61 80
00C0 | 57 0F 7D 98 78 AB 97 14 CC 31 62 9E 20 FC D2 4F
00D0 | D1 C1 C8 D9 AD BC E0 34 73 49 3E E1 D5 03 96 26
00E0 | 52 07 3F 5A A0 2E 52 FA CB FE EC 11 7A 70 DB 01
00F0 | 29 76 9B C5 E8 9E 4B C9 D8 5B 36 C8 FF 68 F2 D0
0100 | CE 71 52 80 6F C1 7E 3D 8F 3B AC BB 78 28 A1 BB
0110 | 93 9D ED FA 22 1A C3 55 FD FF 7A 22 78 DC 5E 77
0120 | 83 B4 0E E8 A3 3F A4 98 6C 9F 7D 49 F6 9D 35 B6
0130 | 66 B7 26 EA C2 18 4E 00 72 51 D7 9F 34 7F A9 78
0140 | 04 CA A1 A8 9D C5 41 21 39 8F 28 7D 5A E5 2F BD
0150 | 89 67 63 DF 1E 78 34 72 1D 0E EE 79 57 EA 69 60
0160 | 04 36 23 16 EC 1D B6 1A 33 67 59 83 29 73 4B 09
0170 | C2 4A 15 20 C6 5E 92 FB BA 67 20 FA 7A F5 12 60
0180 | 3C 77 0B 6A A3 EC 20 4B DF F3 D2 6B BF 0A 0F 76
0190 | 93 55 4E 32 9B 0D 04 34 CC 94 31 86 71 E9 1A 13
01A0 | E5 E1 C9 08 B9 C4 4D 1C 25 9E 26 00 A3 B8 38 30
01B0 | 55 3D BE FA 12 7C 5E 4D FA 8D ED E0 42 9C 5C 79
01C0 | FD 3C 37 62 63 A0 25 2D 37 48 CD 74 9B CF D3 61
01D0 | F2 BF A4 33 A2 1A A0 42 B3 9E 84 62 FC CF 6C 44
01E0 | 05 79 2B C2 3F A6 87 53 33 85 F4 24 91 62 31 19
01F0 | E7 19 B9 6C CF 53 4D EF 4E 75 E7 2F FD 9B 9A BE
0200 | 08 A8 D2 F2 D9 F1 F3 B9 E7 0B 17 AB 1A 36 64 8A
0210 | B2 D0 12 E7 80 06 50 29 51 87 7C 1F 25 FE 42 5C
0220 | 8F 82 B5 AD F0 5A 56 C9 E5 81 D9 53 D7 9D 99 70
0230 | 3A 52 66 F9 5F F8 6C 22 67 6F 3B 42 DB A1 D9 E8
0240 | F3 CE B4 63 A9 DC 90 DE 4C A4 15 8D CA 06 EE 2C
0250 | 27 A7 D3 F4 8C 18 ED AE A5 E2 44 73 97 EF D8 46
0260 | AC 58 6A DB BA 62 D7 B3 46 20 F0 C7 13 B1 91 17
0270 | DF 73 A0 BD 95 F3 02 9C FF 2A 8E 37 0A D2 DB 75
0280 | 88 70 CE BA 2C 8F 9F F4 AB 37 DC B9</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 = 493EED61CB26155C38368CCD6D4994E9EC8501BE820C9D4FC3F51ED63
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01A4A63CC1FBB365</code></td>
<td><code>01B8BACFF1F6BF65</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>8C020000</code> (652 in decimal)</td>
<td><code>A8020000</code> (680 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 493EED61CB26155C38368CCD6D4994E9EC8501BE820C9D4FC3F51ED63
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>0FB3896DB8D4F64AA3BF0007474501BB</code></td>
<td><code>A024D46FCE98CC73F52F6788C0393450</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>B2FB10D378A34B0187444E661CA0BC2D</code></td>
<td><code>658587BBD37A4BF158AAEBB0FB23DFE8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002002353279BB1E1E723EFD9ED37</code> <code>B96FD9408284A9C999CC57BE3E2A7F77</code> <code>A93E4EAA3B02AD83A2CBF1F227E8856E</code> <code>E28C5140D0567AA0770939C7D7F893E2</code> <code>4171D6CE4B53CCBE1E8F84F47D751343</code> <code>5B99F650E57871D83473C168E382A8BA</code> <code>EC661EB215521215BA5298044947DBFE</code> <code>1ACFA2CE62878E91C81962D943FE34A4</code> <code>37FB76DA5CF21F60C224D8148BA33116</code> <code>F272A1F8B59B2320BF8BB0B65C2A78CA</code> <code>6015FE705DCD95FB7E50A2C1BB59E811</code> <code>66B8F9BEE1E9180D49E6241B02E8B56C</code> <code>ADE39D798D0349A39F637B443D68BBAA</code> <code>1B65FC4C1292C6D6D30BD973C4B618FF</code> <code>479C5C0C46A86F976A7862215F46C17A</code> <code>13A37340D6C1FB349DE2234B74C0AF08</code> <code>610484F5AA894E2312FA4BD032CAF28D</code> <code>E8D69B47C7CF4FF12DD4E0AE4DD0B37E</code> <code>93642E5A4A2F1E3FFBCD5DC546E52A1B</code> <code>83FA0FA5E8DEDF52FBB8A042025CB4E4</code> <code>72EA89DC9A9ACE6EFC2D9EBA093E286F</code> <code>AB4679928CF786E2E84E9559AA33517B</code> <code>907A05526F32768F7A91AC9A5A088248</code> <code>4053020B9C08D1AABD9A48F63F1F6613</code> <code>601E5424F28ED4D19E99AEA1655D60C0</code> <code>7A613DAC32C68F483B6A3EB550CCAC6F</code> <code>4F56509DC1ECC9F6C7C1A5EF7259EE09</code> <code>D034358451E55189E94D88883C5746E2</code> <code>44DFC58C2230CA4E16CA7A6948740241</code> <code>67E37E837836A01800FF0015FECC082F</code> <code>D1065C4FA2A6EAB59B8D4E210FEC3BE7</code> <code>884CA960022C81B95CEC7AF234C1DE6C</code> <code>B05FEADDB51D4F064CFF617025811332</code> <code>A9F821D31C4040175AE4F28CFDCC8177</code> <code>00B7960E6130256569349336677C68D4</code> <code>C259755F9E22C639C3C4CA3F276F91AC</code> <code>94250F9884EE558DBED95C70B7CF4135</code><br> <code>5FC59C6D</code></td>
<td><code>FE5002004A611E312331E6031327B97E</code> <code>BF975B1756DBEB40737494DECBE8D2FB</code> <code>EEE11F40FCFCA00B2F6A1005BC73EF1E</code> <code>E2E93D73CBEA1B93648C29C9944D0854</code> <code>A04633910DF31FF5A5B52B2BEF4AD314</code> <code>918A5142A50A6F4791269BE8438468F6</code> <code>58D2E3A495EDE504B1B9EA0C20895B3B</code> <code>0E0522C5C1294A5929D675BE7FB34C0B</code> <code>6391EC25ABEA6180570F7D9878AB9714</code> <code>CC31629E20FCD24FD1C1C8D9ADBCE034</code> <code>73493EE1D503962652073F5AA02E52FA</code> <code>CBFEEC117A70DB0129769BC5E89E4BC9</code> <code>D85B36C8FF68F2D0CE7152806FC17E3D</code> <code>8F3BACBB7828A1BB939DEDFA221AC355</code> <code>FDFF7A2278DC5E7783B40EE8A33FA498</code> <code>6C9F7D49F69D35B666B726EAC2184E00</code> <code>7251D79F347FA97804CAA1A89DC54121</code> <code>398F287D5AE52FBD896763DF1E783472</code> <code>1D0EEE7957EA696004362316EC1DB61A</code> <code>3367598329734B09C24A1520C65E92FB</code> <code>BA6720FA7AF512603C770B6AA3EC204B</code> <code>DFF3D26BBF0A0F7693554E329B0D0434</code> <code>CC94318671E91A13E5E1C908B9C44D1C</code> <code>259E2600A3B83830553DBEFA127C5E4D</code> <code>FA8DEDE0429C5C79FD3C376263A0252D</code> <code>3748CD749BCFD361F2BFA433A21AA042</code> <code>B39E8462FCCF6C4405792BC23FA68753</code> <code>3385F42491623119E719B96CCF534DEF</code> <code>4E75E72FFD9B9ABE08A8D2F2D9F1F3B9</code> <code>E70B17AB1A36648AB2D012E780065029</code> <code>51877C1F25FE425C8F82B5ADF05A56C9</code> <code>E581D953D79D99703A5266F95FF86C22</code> <code>676F3B42DBA1D9E8F3CEB463A9DC90DE</code> <code>4CA4158DCA06EE2C27A7D3F48C18EDAE</code> <code>A5E2447397EFD846AC586ADBBA62D7B3</code> <code>4620F0C713B19117DF73A0BD95F3029C</code> <code>FF2A8E370AD2DB758870CEBA2C8F9FF4</code><br> <code>AB37DCB9</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 493EED61CB26155C38368CCD6D4994E9EC8501BE820C9D4FC3F51ED63
<!-- 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 = 2353279BB1E1E723EFD9ED37B96FD9408284A9C999CC57BE3E2A7F77A93E4EAA3B02AD83A2CBF1F227E8856EE28C5140D0567AA0770939C7D7F893E24171D6CE4B53CCBE1E8F84F47D7513435B99F650E57871D83473C168E382A8BAEC661EB215521215BA5298044947DBFE1ACFA2CE62878E91C81962D943FE34A437FB76DA5CF21F60C224D8148BA33116F272A1F8B59B2320BF8BB0B65C2A78CA6015FE705DCD95FB7E50A2C1BB59E81166B8F9BEE1E9180D49E6241B02E8B56CADE39D798D0349A39F637B443D68BBAA1B65FC4C1292C6D6D30BD973C4B618FF479C5C0C46A86F976A7862215F46C17A13A37340D6C1FB349DE2234B74C0AF08610484F5AA894E2312FA4BD032CAF28DE8D69B47C7CF4FF12DD4E0AE4DD0B37E93642E5A4A2F1E3FFBCD5DC546E52A1B83FA0FA5E8DEDF52FBB8A042025CB4E472EA89DC9A9ACE6EFC2D9EBA093E286FAB4679928CF786E2E84E9559AA33517B907A05526F32768F7A91AC9A5A0882484053020B9C08D1AABD9A48F63F1F6613601E5424F28ED4D19E99AEA1655D60C07A613DAC32C68F483B6A3EB550CCAC6F4F56509DC1ECC9F6C7C1A5EF7259EE09D034358451E55189E94D88883C5746E244DFC58C2230CA4E16CA7A694874024167E37E837836A01800FF0015FECC082FD1065C4FA2A6EAB59B8D4E210FEC3BE7884CA960022C81B95CEC7AF234C1DE6CB05FEADDB51D4F064CFF617025811332A9F821D31C4040175AE4F28CFDCC817700B7960E6130256569349336677C68D4C259755F9E22C639C3C4CA3F276F91AC94250F9884EE558DBED95C70B7CF41355FC59C6D
tmp_aes_key = 695E5D5073BA35408BB39AC367E613169C326D1FF07AF7431B871C839E5A54ED
tmp_aes_iv = EA681B84941A2E507EE05F6923DCA7B2E0AD5FD9A83859856EE0B6AD9425B619</code></pre>
<pre><code>encrypted_answer = 4A611E312331E6031327B97EBF975B1756DBEB40737494DECBE8D2FBEEE11F40FCFCA00B2F6A1005BC73EF1EE2E93D73CBEA1B93648C29C9944D0854A04633910DF31FF5A5B52B2BEF4AD314918A5142A50A6F4791269BE8438468F658D2E3A495EDE504B1B9EA0C20895B3B0E0522C5C1294A5929D675BE7FB34C0B6391EC25ABEA6180570F7D9878AB9714CC31629E20FCD24FD1C1C8D9ADBCE03473493EE1D503962652073F5AA02E52FACBFEEC117A70DB0129769BC5E89E4BC9D85B36C8FF68F2D0CE7152806FC17E3D8F3BACBB7828A1BB939DEDFA221AC355FDFF7A2278DC5E7783B40EE8A33FA4986C9F7D49F69D35B666B726EAC2184E007251D79F347FA97804CAA1A89DC54121398F287D5AE52FBD896763DF1E7834721D0EEE7957EA696004362316EC1DB61A3367598329734B09C24A1520C65E92FBBA6720FA7AF512603C770B6AA3EC204BDFF3D26BBF0A0F7693554E329B0D0434CC94318671E91A13E5E1C908B9C44D1C259E2600A3B83830553DBEFA127C5E4DFA8DEDE0429C5C79FD3C376263A0252D3748CD749BCFD361F2BFA433A21AA042B39E8462FCCF6C4405792BC23FA687533385F42491623119E719B96CCF534DEF4E75E72FFD9B9ABE08A8D2F2D9F1F3B9E70B17AB1A36648AB2D012E78006502951877C1F25FE425C8F82B5ADF05A56C9E581D953D79D99703A5266F95FF86C22676F3B42DBA1D9E8F3CEB463A9DC90DE4CA4158DCA06EE2C27A7D3F48C18EDAEA5E2447397EFD846AC586ADBBA62D7B34620F0C713B19117DF73A0BD95F3029CFF2A8E370AD2DB758870CEBA2C8F9FF4AB37DCB9
tmp_aes_key = A06762A725302D99E8973CAB4EC75AC2EBC3692B50DB264CE012BEA7A3F95F9D
tmp_aes_iv = 987E517AE8B10519D6FB7DC24B6A4A3295EEE74E909C38E19E4459FF36A6257B</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = BC46D671D2B508231144D92D9202D9A3C66D7490BA0D89B50FB3896DB8D4F64AA3BF0007474501BBB2FB10D378A34B0187444E661CA0BC2D03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010097C24DCAE30AEA5E7CB1213EDCD92578132D9E658F8A661BE55E9157F4457B12AA67EB921C408D52B93CD77F045D974C191613A8920054C7F72B9B74D5EEE95EDF9425DA675CDD3011D6F3DCD22BA453FC90159385082702D24B0E1F91DB1E1E9136B06E6195C719021905E17A5C607B57EF6D0189B0E5434A7DCCF7A979D1F6CAB988156FAB405526E4E27DA9F95B95440C84049631B12A93A33B7A0AE963697A25E2DA442DAE9BD18A373ECC2EFC38B50521BCADCD2141AFF240613C8B8C9A03B437D1877AC681BCF9BF1BE5488AEDC2F695B0B5262E3240620D881175E78E906F00341B9100598EDDA65B3C0A983F168EB595B142196D47CFDB39A2E9D890C1FBB365EB2748982C31AB5A
answer = BA0D89B50FB3896DB8D4F64AA3BF0007474501BBB2FB10D378A34B0187444E661CA0BC2D03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010097C24DCAE30AEA5E7CB1213EDCD92578132D9E658F8A661BE55E9157F4457B12AA67EB921C408D52B93CD77F045D974C191613A8920054C7F72B9B74D5EEE95EDF9425DA675CDD3011D6F3DCD22BA453FC90159385082702D24B0E1F91DB1E1E9136B06E6195C719021905E17A5C607B57EF6D0189B0E5434A7DCCF7A979D1F6CAB988156FAB405526E4E27DA9F95B95440C84049631B12A93A33B7A0AE963697A25E2DA442DAE9BD18A373ECC2EFC38B50521BCADCD2141AFF240613C8B8C9A03B437D1877AC681BCF9BF1BE5488AEDC2F695B0B5262E3240620D881175E78E906F00341B9100598EDDA65B3C0A983F168EB595B142196D47CFDB39A2E9D890C1FBB365EB2748982C31AB5A</code></pre>
<pre><code>answer_with_hash = CA016A36E48F18BCB800692EFEF9365DD2472543BA0D89B5A024D46FCE98CC73F52F6788C0393450658587BBD37A4BF158AAEBB0FB23DFE803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001001B3A4680F7FCAB6E9C3DC3A57E358CEF2F439A92488C56A79BD4B6C52B89290637BB4C74AD73E280F1D41B4CE702C509A90093757EB8DBB702526571C04405E57243EFB72898110600E81A703EB79C14F704B93C05896584B3FC485FA3BEDD23BE3397F9A71196661BAD2C945A64FC779E4594A9D97D8BA5EF6EA755CF7504E81D4B106518DE9D56365DC6F4FFE7725116FFC523DAC4A8D253DF02798E1290F01FE1BA541094DB28A1CC3AE6D008F26C9273FBFDA8E627FCADDDB002C41D47D537F04778D6C9A687D564EA848991287C1E24BC56BD40B26F466A69801B87E74E555EFD7EC9DEFE3FDF175F71EFCF1901445B99EDBAB467B0796335A3DA48DEC9F1F6BF652E2B1B378A180884
answer = BA0D89B5A024D46FCE98CC73F52F6788C0393450658587BBD37A4BF158AAEBB0FB23DFE803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001001B3A4680F7FCAB6E9C3DC3A57E358CEF2F439A92488C56A79BD4B6C52B89290637BB4C74AD73E280F1D41B4CE702C509A90093757EB8DBB702526571C04405E57243EFB72898110600E81A703EB79C14F704B93C05896584B3FC485FA3BEDD23BE3397F9A71196661BAD2C945A64FC779E4594A9D97D8BA5EF6EA755CF7504E81D4B106518DE9D56365DC6F4FFE7725116FFC523DAC4A8D253DF02798E1290F01FE1BA541094DB28A1CC3AE6D008F26C9273FBFDA8E627FCADDDB002C41D47D537F04778D6C9A687D564EA848991287C1E24BC56BD40B26F466A69801B87E74E555EFD7EC9DEFE3FDF175F71EFCF1901445B99EDBAB467B0796335A3DA48DEC9F1F6BF652E2B1B378A180884</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 0F B3 89 6D B8 D4 F6 4A A3 BF 00 07
0010 | 47 45 01 BB B2 FB 10 D3 78 A3 4B 01 87 44 4E 66
0020 | 1C A0 BC 2D 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 A0 24 D4 6F CE 98 CC 73 F5 2F 67 88
0010 | C0 39 34 50 65 85 87 BB D3 7A 4B F1 58 AA EB B0
0020 | FB 23 DF E8 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 = BA0D89B50FB3896DB8D4F64AA3BF0007474501BBB2FB10D378A34B0187444E661CA0BC2
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 | 97 C2 4D CA E3 0A EA 5E 7C B1 21 3E DC D9 25 78
0140 | 13 2D 9E 65 8F 8A 66 1B E5 5E 91 57 F4 45 7B 12
0150 | AA 67 EB 92 1C 40 8D 52 B9 3C D7 7F 04 5D 97 4C
0160 | 19 16 13 A8 92 00 54 C7 F7 2B 9B 74 D5 EE E9 5E
0170 | DF 94 25 DA 67 5C DD 30 11 D6 F3 DC D2 2B A4 53
0180 | FC 90 15 93 85 08 27 02 D2 4B 0E 1F 91 DB 1E 1E
0190 | 91 36 B0 6E 61 95 C7 19 02 19 05 E1 7A 5C 60 7B
01A0 | 57 EF 6D 01 89 B0 E5 43 4A 7D CC F7 A9 79 D1 F6
01B0 | CA B9 88 15 6F AB 40 55 26 E4 E2 7D A9 F9 5B 95
01C0 | 44 0C 84 04 96 31 B1 2A 93 A3 3B 7A 0A E9 63 69
01D0 | 7A 25 E2 DA 44 2D AE 9B D1 8A 37 3E CC 2E FC 38
01E0 | B5 05 21 BC AD CD 21 41 AF F2 40 61 3C 8B 8C 9A
01F0 | 03 B4 37 D1 87 7A C6 81 BC F9 BF 1B E5 48 8A ED
0200 | C2 F6 95 B0 B5 26 2E 32 40 62 0D 88 11 75 E7 8E
0210 | 90 6F 00 34 1B 91 00 59 8E DD A6 5B 3C 0A 98 3F
0220 | 16 8E B5 95 B1 42 19 6D 47 CF DB 39 A2 E9 D8 90
0230 | C1 FB B3 65</code></pre>
0130 | 1B 3A 46 80 F7 FC AB 6E 9C 3D C3 A5 7E 35 8C EF
0140 | 2F 43 9A 92 48 8C 56 A7 9B D4 B6 C5 2B 89 29 06
0150 | 37 BB 4C 74 AD 73 E2 80 F1 D4 1B 4C E7 02 C5 09
0160 | A9 00 93 75 7E B8 DB B7 02 52 65 71 C0 44 05 E5
0170 | 72 43 EF B7 28 98 11 06 00 E8 1A 70 3E B7 9C 14
0180 | F7 04 B9 3C 05 89 65 84 B3 FC 48 5F A3 BE DD 23
0190 | BE 33 97 F9 A7 11 96 66 1B AD 2C 94 5A 64 FC 77
01A0 | 9E 45 94 A9 D9 7D 8B A5 EF 6E A7 55 CF 75 04 E8
01B0 | 1D 4B 10 65 18 DE 9D 56 36 5D C6 F4 FF E7 72 51
01C0 | 16 FF C5 23 DA C4 A8 D2 53 DF 02 79 8E 12 90 F0
01D0 | 1F E1 BA 54 10 94 DB 28 A1 CC 3A E6 D0 08 F2 6C
01E0 | 92 73 FB FD A8 E6 27 FC AD DD B0 02 C4 1D 47 D5
01F0 | 37 F0 47 78 D6 C9 A6 87 D5 64 EA 84 89 91 28 7C
0200 | 1E 24 BC 56 BD 40 B2 6F 46 6A 69 80 1B 87 E7 4E
0210 | 55 5E FD 7E C9 DE FE 3F DF 17 5F 71 EF CF 19 01
0220 | 44 5B 99 ED BA B4 67 B0 79 63 35 A3 DA 48 DE C9
0230 | F1 F6 BF 65</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 = BA0D89B50FB3896DB8D4F64AA3BF0007474501BBB2FB10D378A34B0187444E661CA0BC2
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>0FB3896DB8D4F64AA3BF0007474501BB</code></td>
<td><code>A024D46FCE98CC73F52F6788C0393450</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>B2FB10D378A34B0187444E661CA0BC2D</code></td>
<td><code>658587BBD37A4BF158AAEBB0FB23DFE8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B50FB3896DB8D4F64AA3BF0007474501BBB2FB10D378A34B0187444E661CA0BC2
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE00010097C24DCAE30AEA5E7CB1213E</code> <code>DCD92578132D9E658F8A661BE55E9157</code> <code>F4457B12AA67EB921C408D52B93CD77F</code> <code>045D974C191613A8920054C7F72B9B74</code> <code>D5EEE95EDF9425DA675CDD3011D6F3DC</code> <code>D22BA453FC90159385082702D24B0E1F</code> <code>91DB1E1E9136B06E6195C719021905E1</code> <code>7A5C607B57EF6D0189B0E5434A7DCCF7</code> <code>A979D1F6CAB988156FAB405526E4E27D</code> <code>A9F95B95440C84049631B12A93A33B7A</code> <code>0AE963697A25E2DA442DAE9BD18A373E</code> <code>CC2EFC38B50521BCADCD2141AFF24061</code> <code>3C8B8C9A03B437D1877AC681BCF9BF1B</code> <code>E5488AEDC2F695B0B5262E3240620D88</code> <code>1175E78E906F00341B9100598EDDA65B</code> <code>3C0A983F168EB595B142196D47CFDB39</code><br> <code>A2E9D890</code></td>
<td><code>FE0001001B3A4680F7FCAB6E9C3DC3A5</code> <code>7E358CEF2F439A92488C56A79BD4B6C5</code> <code>2B89290637BB4C74AD73E280F1D41B4C</code> <code>E702C509A90093757EB8DBB702526571</code> <code>C04405E57243EFB72898110600E81A70</code> <code>3EB79C14F704B93C05896584B3FC485F</code> <code>A3BEDD23BE3397F9A71196661BAD2C94</code> <code>5A64FC779E4594A9D97D8BA5EF6EA755</code> <code>CF7504E81D4B106518DE9D56365DC6F4</code> <code>FFE7725116FFC523DAC4A8D253DF0279</code> <code>8E1290F01FE1BA541094DB28A1CC3AE6</code> <code>D008F26C9273FBFDA8E627FCADDDB002</code> <code>C41D47D537F04778D6C9A687D564EA84</code> <code>8991287C1E24BC56BD40B26F466A6980</code> <code>1B87E74E555EFD7EC9DEFE3FDF175F71</code> <code>EFCF1901445B99EDBAB467B0796335A3</code><br> <code>DA48DEC9</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>C1FBB365</code> (1706294209 in decimal)</td>
<td><code>F1F6BF65</code> (1707079409 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B50FB3896DB8D4F64AA3BF0007474501BBB2FB10D378A34B0187444E661CA0BC2
<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 = FBD2AF203260953DEFA154C1247CD766720E31A267F8D05DED49D9C8BDDC42952DA652189A214F37C83D0A6BE2604C3C32A9F020C16B0D72B102B313B2B17452AA0FCC42ECB01C6D7FE35DCF7A1E6AEFD547DD757EB3549C36B87A48E49E48E3F3F2B64E784B2A75A464EFAE5DD43EA0AB2CEDD321D18BB8EAE7A0A483CC125286F8D313EBFD9F5DEED2DD6C9B2FB6923258C741BCA3C3A03FD2590B025D20775D630A95D8F803D42131BC428095E7E021980D5DDC2AC608CD4D32DA2C8EC76C32EF84E007FE5FBC08166B9C2F81620149C66B17AA4E8FBA3A704C66270ACA2F469274AB4A1B27E0A93C7F224129FCFA6E80D2CE642F3608A38050846E95BEF2</code></pre>
<pre><code>b = 82E0B3EB6404BAE3AB3486499542EC2799F098552F1205DB20FF8A7F20BAFE1570E854519B6B57640AD207AE912EB1489C685C3874AD7DDE0EC1EB9D839973956799DD4CB31DEF2E13B31E206C13DB905D87AE0E3C4D0607BCA3F0E2A038E26DA8ABBBC6EB5B9E9552F07D48D81BDD590ABDA029DEFF554DB1CFEBC9302BDBCFD56F2F3A581A2D733047D5CE5D37CDC8DFB304CA04A2BDD5C72130C72F644DD005977C7487B5EC78FDEC2E3BD81B9588A35ED5F064BFF47B730B24912ECF831FC0B6BEE298D6E2F5896EE7AD456AAE0004AF6F093BEAF447BF5B4657BC6EA94E97622256C73F7EDE3FCD75D072665C6DD12C3C6FCC207133787C3076AD3C6FDC</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 = 6900C2840E67BFBB5D418B3823070B495E1375D7B4A32A36CA0DA2E68E1F60957A6BF2626DBD542532D746A738E175DC1B33B97736D3DDD600A6EE2B64D6EF89A355DD7EE35DC1FCC735DAD938736A2C6FE6D2A98606BF328A8D7D6CA8A06A57F149482F06ED77A71F8C8ECA8686012D766E694B2603D0308258A4F3E7F3EFED9DFB160E2CF9CE8AAA124784B23969B3F16CB3EE04DD27C49C54FC6F42F1A5BFC25F9F34FAFEF6F5EA32CB335DBE73A9B1DB2EA4E3B2E5C0991799F8E92C1C354B8C7CF411BB5690396BAA8722EBFC9D9C00E6FE9A3128E6BDA6D8C89EF6B2C3C70C32D879D6C932E95BA7C39CC2D55D055D300CF510BC6CB584C5CD248CED54</code></pre>
<pre><code>g_b = 676F45610D9363395B198F7E2AB595CB12B21D86774E10B7449AB978EEF291322F7B0EF49E7F1D7F7832A84ADD795E3D4F0BBABDAAD4EE9BF646C41B8D94DD2D025C6D5DB07F08826215BB8E16731EC4354D4A0713B0B9EC2F8CFC8940397A6BF5C6B19B8C9BCF54FE374A534B07CC1043F178BE4B41D5CB389E1D2B68FC22F2601CFB4CBD044535A6EE2C244C2A7808ECBDD725FC8BF6A16F192D65C0DF2711F12BECA6E9072BC5909B941DFF574237FE2D039E020D3583A9B65A11C2E85D2A7C93FB50BBFE27EC730FFD3B9BD734A38A30F9455349E1A80DFD42EC6298DA385129ED6FCC591DE05C09E46A1FED65CDE535B347B09AF883E8F35A7515A4AB41</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 0F B3 89 6D B8 D4 F6 4A A3 BF 00 07
0010 | 47 45 01 BB B2 FB 10 D3 78 A3 4B 01 87 44 4E 66
0020 | 1C A0 BC 2D 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 69 00 C2 84 0E 67 BF BB 5D 41 8B 38 23 07 0B 49
0040 | 5E 13 75 D7 B4 A3 2A 36 CA 0D A2 E6 8E 1F 60 95
0050 | 7A 6B F2 62 6D BD 54 25 32 D7 46 A7 38 E1 75 DC
0060 | 1B 33 B9 77 36 D3 DD D6 00 A6 EE 2B 64 D6 EF 89
0070 | A3 55 DD 7E E3 5D C1 FC C7 35 DA D9 38 73 6A 2C
0080 | 6F E6 D2 A9 86 06 BF 32 8A 8D 7D 6C A8 A0 6A 57
0090 | F1 49 48 2F 06 ED 77 A7 1F 8C 8E CA 86 86 01 2D
00A0 | 76 6E 69 4B 26 03 D0 30 82 58 A4 F3 E7 F3 EF ED
00B0 | 9D FB 16 0E 2C F9 CE 8A AA 12 47 84 B2 39 69 B3
00C0 | F1 6C B3 EE 04 DD 27 C4 9C 54 FC 6F 42 F1 A5 BF
00D0 | C2 5F 9F 34 FA FE F6 F5 EA 32 CB 33 5D BE 73 A9
00E0 | B1 DB 2E A4 E3 B2 E5 C0 99 17 99 F8 E9 2C 1C 35
00F0 | 4B 8C 7C F4 11 BB 56 90 39 6B AA 87 22 EB FC 9D
0100 | 9C 00 E6 FE 9A 31 28 E6 BD A6 D8 C8 9E F6 B2 C3
0110 | C7 0C 32 D8 79 D6 C9 32 E9 5B A7 C3 9C C2 D5 5D
0120 | 05 5D 30 0C F5 10 BC 6C B5 84 C5 CD 24 8C ED 54</code></pre>
<pre><code>0000 | 54 B6 43 66 A0 24 D4 6F CE 98 CC 73 F5 2F 67 88
0010 | C0 39 34 50 65 85 87 BB D3 7A 4B F1 58 AA EB B0
0020 | FB 23 DF E8 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 67 6F 45 61 0D 93 63 39 5B 19 8F 7E 2A B5 95 CB
0040 | 12 B2 1D 86 77 4E 10 B7 44 9A B9 78 EE F2 91 32
0050 | 2F 7B 0E F4 9E 7F 1D 7F 78 32 A8 4A DD 79 5E 3D
0060 | 4F 0B BA BD AA D4 EE 9B F6 46 C4 1B 8D 94 DD 2D
0070 | 02 5C 6D 5D B0 7F 08 82 62 15 BB 8E 16 73 1E C4
0080 | 35 4D 4A 07 13 B0 B9 EC 2F 8C FC 89 40 39 7A 6B
0090 | F5 C6 B1 9B 8C 9B CF 54 FE 37 4A 53 4B 07 CC 10
00A0 | 43 F1 78 BE 4B 41 D5 CB 38 9E 1D 2B 68 FC 22 F2
00B0 | 60 1C FB 4C BD 04 45 35 A6 EE 2C 24 4C 2A 78 08
00C0 | EC BD D7 25 FC 8B F6 A1 6F 19 2D 65 C0 DF 27 11
00D0 | F1 2B EC A6 E9 07 2B C5 90 9B 94 1D FF 57 42 37
00E0 | FE 2D 03 9E 02 0D 35 83 A9 B6 5A 11 C2 E8 5D 2A
00F0 | 7C 93 FB 50 BB FE 27 EC 73 0F FD 3B 9B D7 34 A3
0100 | 8A 30 F9 45 53 49 E1 A8 0D FD 42 EC 62 98 DA 38
0110 | 51 29 ED 6F CC 59 1D E0 5C 09 E4 6A 1F ED 65 CD
0120 | E5 35 B3 47 B0 9A F8 83 E8 F3 5A 75 15 A4 AB 41</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 = BA0D89B50FB3896DB8D4F64AA3BF0007474501BBB2FB10D378A34B0187444E661CA0BC2
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>0FB3896DB8D4F64AA3BF0007474501BB</code></td>
<td><code>A024D46FCE98CC73F52F6788C0393450</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>B2FB10D378A34B0187444E661CA0BC2D</code></td>
<td><code>658587BBD37A4BF158AAEBB0FB23DFE8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001006900C2840E67BFBB5D418B38</code> <code>23070B495E1375D7B4A32A36CA0DA2E6</code> <code>8E1F60957A6BF2626DBD542532D746A7</code> <code>38E175DC1B33B97736D3DDD600A6EE2B</code> <code>64D6EF89A355DD7EE35DC1FCC735DAD9</code> <code>38736A2C6FE6D2A98606BF328A8D7D6C</code> <code>A8A06A57F149482F06ED77A71F8C8ECA</code> <code>8686012D766E694B2603D0308258A4F3</code> <code>E7F3EFED9DFB160E2CF9CE8AAA124784</code> <code>B23969B3F16CB3EE04DD27C49C54FC6F</code> <code>42F1A5BFC25F9F34FAFEF6F5EA32CB33</code> <code>5DBE73A9B1DB2EA4E3B2E5C0991799F8</code> <code>E92C1C354B8C7CF411BB5690396BAA87</code> <code>22EBFC9D9C00E6FE9A3128E6BDA6D8C8</code> <code>9EF6B2C3C70C32D879D6C932E95BA7C3</code> <code>9CC2D55D055D300CF510BC6CB584C5CD</code><br> <code>248CED54</code></td>
<td><code>FE000100676F45610D9363395B198F7E</code> <code>2AB595CB12B21D86774E10B7449AB978</code> <code>EEF291322F7B0EF49E7F1D7F7832A84A</code> <code>DD795E3D4F0BBABDAAD4EE9BF646C41B</code> <code>8D94DD2D025C6D5DB07F08826215BB8E</code> <code>16731EC4354D4A0713B0B9EC2F8CFC89</code> <code>40397A6BF5C6B19B8C9BCF54FE374A53</code> <code>4B07CC1043F178BE4B41D5CB389E1D2B</code> <code>68FC22F2601CFB4CBD044535A6EE2C24</code> <code>4C2A7808ECBDD725FC8BF6A16F192D65</code> <code>C0DF2711F12BECA6E9072BC5909B941D</code> <code>FF574237FE2D039E020D3583A9B65A11</code> <code>C2E85D2A7C93FB50BBFE27EC730FFD3B</code> <code>9BD734A38A30F9455349E1A80DFD42EC</code> <code>6298DA385129ED6FCC591DE05C09E46A</code> <code>1FED65CDE535B347B09AF883E8F35A75</code><br> <code>15A4AB41</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 = BA0D89B50FB3896DB8D4F64AA3BF0007474501BBB2FB10D378A34B0187444E661CA0BC2
<!-- 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 = 54B643660FB3896DB8D4F64AA3BF0007474501BBB2FB10D378A34B0187444E661CA0BC2D0000000000000000FE0001006900C2840E67BFBB5D418B3823070B495E1375D7B4A32A36CA0DA2E68E1F60957A6BF2626DBD542532D746A738E175DC1B33B97736D3DDD600A6EE2B64D6EF89A355DD7EE35DC1FCC735DAD938736A2C6FE6D2A98606BF328A8D7D6CA8A06A57F149482F06ED77A71F8C8ECA8686012D766E694B2603D0308258A4F3E7F3EFED9DFB160E2CF9CE8AAA124784B23969B3F16CB3EE04DD27C49C54FC6F42F1A5BFC25F9F34FAFEF6F5EA32CB335DBE73A9B1DB2EA4E3B2E5C0991799F8E92C1C354B8C7CF411BB5690396BAA8722EBFC9D9C00E6FE9A3128E6BDA6D8C89EF6B2C3C70C32D879D6C932E95BA7C39CC2D55D055D300CF510BC6CB584C5CD248CED54
padding = CBC58A6F6911365FC22A9177
tmp_aes_key = 695E5D5073BA35408BB39AC367E613169C326D1FF07AF7431B871C839E5A54ED
tmp_aes_iv = EA681B84941A2E507EE05F6923DCA7B2E0AD5FD9A83859856EE0B6AD9425B619</code></pre>
<pre><code>data = 54B64366A024D46FCE98CC73F52F6788C0393450658587BBD37A4BF158AAEBB0FB23DFE80000000000000000FE000100676F45610D9363395B198F7E2AB595CB12B21D86774E10B7449AB978EEF291322F7B0EF49E7F1D7F7832A84ADD795E3D4F0BBABDAAD4EE9BF646C41B8D94DD2D025C6D5DB07F08826215BB8E16731EC4354D4A0713B0B9EC2F8CFC8940397A6BF5C6B19B8C9BCF54FE374A534B07CC1043F178BE4B41D5CB389E1D2B68FC22F2601CFB4CBD044535A6EE2C244C2A7808ECBDD725FC8BF6A16F192D65C0DF2711F12BECA6E9072BC5909B941DFF574237FE2D039E020D3583A9B65A11C2E85D2A7C93FB50BBFE27EC730FFD3B9BD734A38A30F9455349E1A80DFD42EC6298DA385129ED6FCC591DE05C09E46A1FED65CDE535B347B09AF883E8F35A7515A4AB41
padding = 08BECE26CBD31F7F5FEAAF3F
tmp_aes_key = A06762A725302D99E8973CAB4EC75AC2EBC3692B50DB264CE012BEA7A3F95F9D
tmp_aes_iv = 987E517AE8B10519D6FB7DC24B6A4A3295EEE74E909C38E19E4459FF36A6257B</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 = EFC413BB078845D2CBA59C121502CFFF26BA817B89D172115B803438C82E52861DFF773222C8C754B1F4CFBAF586D65A31BB45DE2B1FD2E36267FD208B5374681A561339A6906C13438B50177927B021B59765698273B16E14DBE3B5D492170B624DFD30AD7A2DC7EE44B6B069056CA69590D58FB63A149AF5FBB491C6945EFCE2E8100F3A1434AA2E3A0CC9B30A038EBDBA436B8C23FF9CAF0D8FD4ABEA97A68BE0775B07BB8C9F30097F26F65A57099615AB31E2DDC844C05F62609C378579A0CE2C564AC31F43664AC9A74549F8AEF9565E79E21A35847799F6B950DCCC6B11CF6B10A53A5DF4167EA4E00151207DA9C48A9D268D070D8F93C12CDA71130C8618744B556712E1977481B2D333F800A0B9EB781D297B888C3BE702EA5E196496F4B13CA2B365670E88A391567B559EDAEC68A1A049F6B3D0AD397C94F34A38C977B768E3EA9529BC5D363246B0B399</code></pre>
<pre><code>encrypted_data = FF329E64761066526C03CB794781ADE181016BA9B95E745EC6C86E83BF5899CEEB3E980AAC72F8D2232947B785D93887A24DB940F07E65C2B1DEFAC813790B837766787ADBB6B53A7268329222DE6E834B1B520FF871E7EA84C98A9D4C24DA61558EE6C683957AC6BA176611ED98A04EDD0869F19B07C8FDAC17A9565778C38B903FC48A64F0A17DA2362BEE57E6F89D33EB764583503D781DEFB23346D60E284ACD6E5B1F940FE4C706147BF059E3743BF88D1FDBAEA8D20610F4738AF027451306298C033C5C77F0F024E879467A5F13ADA426F9E2AF34415E2111879F77DDF61E92E2315A88B742C17ED12BE816E92FF8B198B29768227A24B78813C227713037B1BB63551A4E5127B60F496740C5D079567DDF542A6A1733902AE60C75C659DD6489DA5654072442C3BD4DA370847CE3E8F9CB29309296AF38F57815552D0BDB431B13BEAA86F11C453456F23EE6</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 AC 62 00 00 C1 FB B3 65
0010 | 78 01 00 00 1F 5F 04 F5 0F B3 89 6D B8 D4 F6 4A
0020 | A3 BF 00 07 47 45 01 BB B2 FB 10 D3 78 A3 4B 01
0030 | 87 44 4E 66 1C A0 BC 2D FE 50 01 00 EF C4 13 BB
0040 | 07 88 45 D2 CB A5 9C 12 15 02 CF FF 26 BA 81 7B
0050 | 89 D1 72 11 5B 80 34 38 C8 2E 52 86 1D FF 77 32
0060 | 22 C8 C7 54 B1 F4 CF BA F5 86 D6 5A 31 BB 45 DE
0070 | 2B 1F D2 E3 62 67 FD 20 8B 53 74 68 1A 56 13 39
0080 | A6 90 6C 13 43 8B 50 17 79 27 B0 21 B5 97 65 69
0090 | 82 73 B1 6E 14 DB E3 B5 D4 92 17 0B 62 4D FD 30
00A0 | AD 7A 2D C7 EE 44 B6 B0 69 05 6C A6 95 90 D5 8F
00B0 | B6 3A 14 9A F5 FB B4 91 C6 94 5E FC E2 E8 10 0F
00C0 | 3A 14 34 AA 2E 3A 0C C9 B3 0A 03 8E BD BA 43 6B
00D0 | 8C 23 FF 9C AF 0D 8F D4 AB EA 97 A6 8B E0 77 5B
00E0 | 07 BB 8C 9F 30 09 7F 26 F6 5A 57 09 96 15 AB 31
00F0 | E2 DD C8 44 C0 5F 62 60 9C 37 85 79 A0 CE 2C 56
0100 | 4A C3 1F 43 66 4A C9 A7 45 49 F8 AE F9 56 5E 79
0110 | E2 1A 35 84 77 99 F6 B9 50 DC CC 6B 11 CF 6B 10
0120 | A5 3A 5D F4 16 7E A4 E0 01 51 20 7D A9 C4 8A 9D
0130 | 26 8D 07 0D 8F 93 C1 2C DA 71 13 0C 86 18 74 4B
0140 | 55 67 12 E1 97 74 81 B2 D3 33 F8 00 A0 B9 EB 78
0150 | 1D 29 7B 88 8C 3B E7 02 EA 5E 19 64 96 F4 B1 3C
0160 | A2 B3 65 67 0E 88 A3 91 56 7B 55 9E DA EC 68 A1
0170 | A0 49 F6 B3 D0 AD 39 7C 94 F3 4A 38 C9 77 B7 68
0180 | E3 EA 95 29 BC 5D 36 32 46 B0 B3 99</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 7C 43 09 00 F1 F6 BF 65
0010 | 78 01 00 00 1F 5F 04 F5 A0 24 D4 6F CE 98 CC 73
0020 | F5 2F 67 88 C0 39 34 50 65 85 87 BB D3 7A 4B F1
0030 | 58 AA EB B0 FB 23 DF E8 FE 50 01 00 FF 32 9E 64
0040 | 76 10 66 52 6C 03 CB 79 47 81 AD E1 81 01 6B A9
0050 | B9 5E 74 5E C6 C8 6E 83 BF 58 99 CE EB 3E 98 0A
0060 | AC 72 F8 D2 23 29 47 B7 85 D9 38 87 A2 4D B9 40
0070 | F0 7E 65 C2 B1 DE FA C8 13 79 0B 83 77 66 78 7A
0080 | DB B6 B5 3A 72 68 32 92 22 DE 6E 83 4B 1B 52 0F
0090 | F8 71 E7 EA 84 C9 8A 9D 4C 24 DA 61 55 8E E6 C6
00A0 | 83 95 7A C6 BA 17 66 11 ED 98 A0 4E DD 08 69 F1
00B0 | 9B 07 C8 FD AC 17 A9 56 57 78 C3 8B 90 3F C4 8A
00C0 | 64 F0 A1 7D A2 36 2B EE 57 E6 F8 9D 33 EB 76 45
00D0 | 83 50 3D 78 1D EF B2 33 46 D6 0E 28 4A CD 6E 5B
00E0 | 1F 94 0F E4 C7 06 14 7B F0 59 E3 74 3B F8 8D 1F
00F0 | DB AE A8 D2 06 10 F4 73 8A F0 27 45 13 06 29 8C
0100 | 03 3C 5C 77 F0 F0 24 E8 79 46 7A 5F 13 AD A4 26
0110 | F9 E2 AF 34 41 5E 21 11 87 9F 77 DD F6 1E 92 E2
0120 | 31 5A 88 B7 42 C1 7E D1 2B E8 16 E9 2F F8 B1 98
0130 | B2 97 68 22 7A 24 B7 88 13 C2 27 71 30 37 B1 BB
0140 | 63 55 1A 4E 51 27 B6 0F 49 67 40 C5 D0 79 56 7D
0150 | DF 54 2A 6A 17 33 90 2A E6 0C 75 C6 59 DD 64 89
0160 | DA 56 54 07 24 42 C3 BD 4D A3 70 84 7C E3 E8 F9
0170 | CB 29 30 92 96 AF 38 F5 78 15 55 2D 0B DB 43 1B
0180 | 13 BE AA 86 F1 1C 45 34 56 F2 3E E6</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>AC620000C1FBB365</code></td>
<td><code>7C430900F1F6BF65</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>0FB3896DB8D4F64AA3BF0007474501BB</code></td>
<td><code>A024D46FCE98CC73F52F6788C0393450</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>B2FB10D378A34B0187444E661CA0BC2D</code></td>
<td><code>658587BBD37A4BF158AAEBB0FB23DFE8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE500100EFC413BB078845D2CBA59C12</code> <code>1502CFFF26BA817B89D172115B803438</code> <code>C82E52861DFF773222C8C754B1F4CFBA</code> <code>F586D65A31BB45DE2B1FD2E36267FD20</code> <code>8B5374681A561339A6906C13438B5017</code> <code>7927B021B59765698273B16E14DBE3B5</code> <code>D492170B624DFD30AD7A2DC7EE44B6B0</code> <code>69056CA69590D58FB63A149AF5FBB491</code> <code>C6945EFCE2E8100F3A1434AA2E3A0CC9</code> <code>B30A038EBDBA436B8C23FF9CAF0D8FD4</code> <code>ABEA97A68BE0775B07BB8C9F30097F26</code> <code>F65A57099615AB31E2DDC844C05F6260</code> <code>9C378579A0CE2C564AC31F43664AC9A7</code> <code>4549F8AEF9565E79E21A35847799F6B9</code> <code>50DCCC6B11CF6B10A53A5DF4167EA4E0</code> <code>0151207DA9C48A9D268D070D8F93C12C</code> <code>DA71130C8618744B556712E1977481B2</code> <code>D333F800A0B9EB781D297B888C3BE702</code> <code>EA5E196496F4B13CA2B365670E88A391</code> <code>567B559EDAEC68A1A049F6B3D0AD397C</code> <code>94F34A38C977B768E3EA9529BC5D3632</code><br> <code>46B0B399</code></td>
<td><code>FE500100FF329E64761066526C03CB79</code> <code>4781ADE181016BA9B95E745EC6C86E83</code> <code>BF5899CEEB3E980AAC72F8D2232947B7</code> <code>85D93887A24DB940F07E65C2B1DEFAC8</code> <code>13790B837766787ADBB6B53A72683292</code> <code>22DE6E834B1B520FF871E7EA84C98A9D</code> <code>4C24DA61558EE6C683957AC6BA176611</code> <code>ED98A04EDD0869F19B07C8FDAC17A956</code> <code>5778C38B903FC48A64F0A17DA2362BEE</code> <code>57E6F89D33EB764583503D781DEFB233</code> <code>46D60E284ACD6E5B1F940FE4C706147B</code> <code>F059E3743BF88D1FDBAEA8D20610F473</code> <code>8AF027451306298C033C5C77F0F024E8</code> <code>79467A5F13ADA426F9E2AF34415E2111</code> <code>879F77DDF61E92E2315A88B742C17ED1</code> <code>2BE816E92FF8B198B29768227A24B788</code> <code>13C227713037B1BB63551A4E5127B60F</code> <code>496740C5D079567DDF542A6A1733902A</code> <code>E60C75C659DD6489DA5654072442C3BD</code> <code>4DA370847CE3E8F9CB29309296AF38F5</code> <code>7815552D0BDB431B13BEAA86F11C4534</code><br> <code>56F23EE6</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 = 76050AE4569B3765E53E541207CD161CF3D47AB4BACDE545E6F5356921DC4C90FD11CC1B134A81D316276149E4BB9E47E1AD229FF7E117109304E48DCE192FAED5A41AF091FEBD89CC1AD9F79FB223CB4F7AFC63C4F6E9635DBD44B83A968D7253A84590E04A062201C097F42F40492A62B6E38D9A23F4C81B04EE2113FCABE2BE396C2247CDC500050494188DC5BAFE5A92C07FD051CFC1EAF3C54FEBCCD47655ADEBBB183CFA67EE4B64BDBBE97C4CEC9DBD995861EACDA905ED51CB7E28D2F1872B1F0C4D24ED98638595DA06459EAAC14C47ED8FF72C4F834DC78CE92C1BD5E274FBB62F8B7474A9404FE1F7D09231DABC41009A3BB9C58FED3FE65A2A81</code></pre>
<pre><code>auth_key = 45D092B57C6E3895EE9E5C0B35EFD26DDD0270DA8D3594E004051616A78977CF4BEFE019590B934DC7DC1EBE5DDC442F5B8B67D20293E26A6862412D45C10A36207F1673D4111669F86C1B83E2C771E6F431736C5A6FF53406B2C19FB8711D42B0E94FD04D4597AB056DE54C9EC4501978E2E9C700539DEE17B2F0FE3562DF6EF60AC9348B02FADA16028ADF05BBBED111C5B2E663A02CBA2762C8CDFC33E14A71501874A14A8EC13C8364E1E761813FDA4F131C0FCD1C7D9621C84DB6EEF0D16F8F3A42E842BAC3E9FC03D9422E522A61C9F418EE1631B05A39B4E00059ADCE28C851264B0DED8216E28C40340BF215958BD5751279E56AF51BCE6F3DAABDD4</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 70 F0 45 C2 FB B3 65
0010 | 74 00 00 00 34 F7 CB 3B 0F B3 89 6D B8 D4 F6 4A
0020 | A3 BF 00 07 47 45 01 BB B2 FB 10 D3 78 A3 4B 01
0030 | 87 44 4E 66 1C A0 BC 2D 2A DF 61 64 25 7C 6B B8
0040 | 4B 11 E5 0C 8D 67 A2 DD</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 00 70 AE F2 F6 BF 65
0010 | 90 00 00 00 34 F7 CB 3B A0 24 D4 6F CE 98 CC 73
0020 | F5 2F 67 88 C0 39 34 50 65 85 87 BB D3 7A 4B F1
0030 | 58 AA EB B0 FB 23 DF E8 68 C8 B6 BA A1 86 28 30
0040 | F6 41 B1 28 20 5F AA 12</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>0170F045C2FBB365</code></td>
<td><code>010070AEF2F6BF65</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>74000000</code> (116 in decimal)</td>
<td><code>90000000</code> (144 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>0FB3896DB8D4F64AA3BF0007474501BB</code></td>
<td><code>A024D46FCE98CC73F52F6788C0393450</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>B2FB10D378A34B0187444E661CA0BC2D</code></td>
<td><code>658587BBD37A4BF158AAEBB0FB23DFE8</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>2ADF6164257C6BB84B11E50C8D67A2DD</code></td>
<td><code>68C8B6BAA1862830F641B128205FAA12</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>