Update content of files

This commit is contained in:
GitHub Action 2023-12-23 16:10:07 +00:00
parent 36d2fa80e7
commit 7582d19cc1
3 changed files with 211 additions and 211 deletions

View file

@ -209,7 +209,7 @@
<li>Added <a href="/constructor/prepaidGiveaway">prepaidGiveaway</a> - Contains info about a <a href="/api/giveaways">prepaid giveaway »</a>.</li>
<li>Added <a href="/constructor/inputMediaWebPage">inputMediaWebPage</a> - Specifies options that will be used to generate the link preview for the caption, or even a standalone link preview without an attached message.</li>
<li>Added <a href="/constructor/inputBotInlineMessageMediaWebPage">inputBotInlineMessageMediaWebPage</a> - Specifies options that will be used to generate the link preview for the message, or even a standalone link preview without an attached message.</li>
<li>Added <a href="/constructor/botInlineMessageMediaWebPage">botInlineMessageMediaWebPage</a> - Specifies options that will be used to generate the link preview for the message, or even a standalone link preview without an attached message.</li>
<li>Added <a href="/constructor/botInlineMessageMediaWebPage">botInlineMessageMediaWebPage</a> - Specifies options that must be used to generate the link preview for the message, or even a standalone link preview without an attached message.</li>
<li>Added <a href="/constructor/channelAdminLogEventActionChangeColor">channelAdminLogEventActionChangeColor</a> - The <a href="/api/colors">background profile color »</a> of a channel was changed.</li>
<li>Added <a href="/constructor/channelAdminLogEventActionChangeBackgroundEmoji">channelAdminLogEventActionChangeBackgroundEmoji</a> - The <a href="/api/custom-emoji">custom emoji</a> used to generate the pattern of the <a href="/api/colors">background profile color »</a> of a channel was changed.</li>
<li>Added <a href="/constructor/boost">boost</a> - Info about one or more <a href="/api/boost">boosts</a> applied by a specific user.</li>
@ -217,7 +217,7 @@
<li>Added <a href="/constructor/myBoost">myBoost</a> - Contains information about a single <a href="/api/boost">boost slot »</a>.</li>
<li>Added <a href="/constructor/premium.myBoosts">premium.myBoosts</a> - A list of peers we are currently <a href="/api/boost">boosting</a>, and how many <a href="/api/boost">boost slots</a> we have left.</li>
<li>Added <a href="/constructor/premium.boostsStatus">premium.boostsStatus</a> - Contains info about the current <a href="/api/boost">boost status</a> of a peer.</li>
<li>Added <a href="/constructor/updateBotChatBoost">updateBotChatBoost</a> - </li>
<li>Added <a href="/constructor/updateBotChatBoost">updateBotChatBoost</a> - A <a href="/api/boost">channel boost</a> has changed (bots only)</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>botInlineMessageMediaWebPage</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Specifies options that will be used to generate the link preview for the message, or even a standalone link preview without an attached message.">
<meta property="description" content="Specifies options that must be used to generate the link preview for the message, or even a standalone link preview without an attached message.">
<meta property="og:title" content="botInlineMessageMediaWebPage">
<meta property="og:image" content="">
<meta property="og:description" content="Specifies options that will be used to generate the link preview for the message, or even a standalone link preview without an attached message.">
<meta property="og:description" content="Specifies options that must be used to generate the link preview for the message, or even a standalone link preview without an attached message.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -42,7 +42,7 @@
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/botInlineMessageMediaWebPage" >botInlineMessageMediaWebPage</a></li></ul></div>
<h1 id="dev_page_title">botInlineMessageMediaWebPage</h1>
<div id="dev_page_content"><p>Specifies options that will be used to generate the link preview for the message, or even a standalone link preview without an attached message.</p>
<div id="dev_page_content"><p>Specifies options that must be used to generate the link preview for the message, or even a standalone link preview without an attached message.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -94,7 +94,7 @@
<tr>
<td><strong>safe</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.8?<a href="/constructor/true">true</a></td>
<td> </td>
<td>If set, the link can be opened directly without user confirmation.</td>
</tr>
<tr>
<td><strong>message</strong></td>

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 AC 0F 0F 00 D5 F7 85 65
0010 | 14 00 00 00 F1 8E 7E BE F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 64 70 03 00 92 04 87 65
0010 | 14 00 00 00 F1 8E 7E BE CA 3C B3 BE 46 BF BE 4B
0020 | C4 8A 94 6A FB 97 21 54</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>AC0F0F00D5F78565</code></td>
<td><code>6470030092048765</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>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td><code>CA3CB3BE46BFBE4BC48A946AFB972154</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 E4 41 97 D5 F7 85 65
0010 | 88 00 00 00 63 24 16 05 F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
0030 | AD DF BD 26 CA 9A FC C4 08 22 BB A4 9C C9 33 B3
0040 | B5 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 1C E0 C7 92 04 87 65
0010 | 90 00 00 00 63 24 16 05 CA 3C B3 BE 46 BF BE 4B
0020 | C4 8A 94 6A FB 97 21 54 51 13 E1 CE DD 81 B1 3A
0030 | C0 EB 3D B2 61 FA E6 C2 08 13 69 3B F7 41 04 85
0040 | FB 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>01E44197D5F78565</code></td>
<td><code>011CE0C792048765</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>88000000</code> (136 in decimal)</td>
<td><code>90000000</code> (144 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td><code>CA3CB3BE46BFBE4BC48A946AFB972154</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td><code>5113E1CEDD81B13AC0EB3DB261FAE6C2</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0822BBA49CC933B3B5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2502775011231904693</td>
<td><code>0813693BF7410485FB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1398715092409026043</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 = 2502775011231904693</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2502775011231904693 = 1293611899 * 1934718607</code></p>
<pre><code>p = 1293611899
q = 1934718607</code></pre>
<pre><code>pq = 1398715092409026043</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1398715092409026043 = 1115785997 * 1253569319</code></p>
<pre><code>p = 1115785997
q = 1253569319</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 22 BB A4 9C C9 33 B3 B5 00 00 00
0010 | 04 4D 1A F3 7B 00 00 00 04 73 51 76 8F 00 00 00
0020 | F8 65 53 B8 A2 25 70 92 30 49 7E FC 0B CD 9A BC
0030 | 6F EE C6 AF 0E 0E AC F6 AD DF BD 26 CA 9A FC C4
0040 | B0 EF F8 70 F2 98 11 C6 EB 1F 02 70 EB 8C 1A 62
0050 | 89 87 DF 50 A2 3F 0F 0F 01 FD 6B 73 5D 0E 71 84
<pre><code>0000 | 95 5F F5 A9 08 13 69 3B F7 41 04 85 FB 00 00 00
0010 | 04 42 81 8B 0D 00 00 00 04 4A B7 F3 27 00 00 00
0020 | CA 3C B3 BE 46 BF BE 4B C4 8A 94 6A FB 97 21 54
0030 | 51 13 E1 CE DD 81 B1 3A C0 EB 3D B2 61 FA E6 C2
0040 | 8E B5 F8 40 10 A0 D7 CA B5 FD 63 EF 27 46 19 58
0050 | B7 97 E6 38 3C 0C CA 82 19 50 73 B5 EC 0B 5D 54
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 = 1934718607</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0822BBA49CC933B3B5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2502775011231904693</td>
<td><code>0813693BF7410485FB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1398715092409026043</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>044D1AF37B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1293611899</td>
<td><code>0442818B0D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1115785997</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>047351768F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1934718607</td>
<td><code>044AB7F327000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1253569319</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>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td><code>CA3CB3BE46BFBE4BC48A946AFB972154</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td><code>5113E1CEDD81B13AC0EB3DB261FAE6C2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>B0EFF870F29811C6EB1F0270EB8C1A62</code> <code>8987DF50A23F0F0F01FD6B735D0E7184</code></td>
<td><code>8EB5F84010A0D7CAB5FD63EF27461958</code> <code>B797E6383C0CCA82195073B5EC0B5D54</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1934718607</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 = 955FF5A90822BBA49CC933B3B5000000044D1AF37B000000047351768F000000F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4B0EFF870F29811C6EB1F0270EB8C1A628987DF50A23F0F0F01FD6B735D0E718402000000
random_padding_bytes = 57C530F3CB6A2A9A32BAB2A7B71E9E523B95ADD2A0EC7A5BB1072E95188A9C77AA64AEF4E4F6DB16F0A93941719764414939DF702C40E3B509045F4ED647CD7AE1CA8B1FB98994A296ACDDCF5FE4011832681F459F57A5290D8CF702</code></pre>
<pre><code>data = 955FF5A90813693BF7410485FB0000000442818B0D000000044AB7F327000000CA3CB3BE46BFBE4BC48A946AFB9721545113E1CEDD81B13AC0EB3DB261FAE6C28EB5F84010A0D7CAB5FD63EF27461958B797E6383C0CCA82195073B5EC0B5D5402000000
random_padding_bytes = 6A85E15225BF1E9E3125CAC038C6006178BD90B1A53DDE37E51F5AB7E37841DFA26B084E8560E412483E60C49EB345A5D73011785D1C67A25B3DBD1AEE5F8AFADC8BA6C1F2AE2E60313F097F5C439CBC0FDF2157746435C97462C312</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 = A042D464B3FA02364F92263167DDD5160D4C346A3910BC4B17268699BECDD6EBB6056A1F1D0E747FDEB2BE1012280A5374A3E44F10F82AA6138DAF6AB9E4517BF11B83E71BFBAD0FCFBDE44DA0D7AA0D2B0464F6479EAB10C11656B8A40AC2AEF6344F11A7A6DB56319AB33EE6D63C105893189DB643F89C49A2D596BD7AF67BF6C577D1DE1CF3128EA698D324968D0C355020004AC840B08982918002E3A7482606A809D69CA5982106ED1B4AD0F190A599C4BC383BB5ED173A6EF45EEFB17C53F442D2AFF470458539DC0A7199EC50001B7186AB0612A98534BC55E0414E05162757A8FFCCDAA966DAB94F6CF42E61EBA79A952983197065B4F13600DE233E</code></pre>
<pre><code>encrypted_data = 79DD77DB50E0ED4052964B50F551D069639EA1C25B28728D03CE8C723DAC707D6C377DE081CFA27CD75AEC34E90959F498CC061AA5BBD75E516344F1919EA60F2AA9C13827B4A5B27DED555815509D13CAF75DE3BC225A9913FEE0A2ED070348ADCE86AE87B5C4A87144AE76F16389436AE95E96FF14BB36534ED4B5BE7C7B9F7C32847C9282C0BC56669EE02F6EB7B385BD3DF6C7EF1F727A0308C3F57E2566512EB7D7C7A8C0B5EF64E26CAF6BF216500A3842463184071C40425A2EB35440FD4DD789FA08050788C53C9D63F037D980E70A8C05E2FD2DD39C6F2DBAED1B65D7496E850A7851A9B4A056C4091915DBDBD8858C12CA55836312867BAB67A4F7</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 B0 0F 0F 00 D5 F7 85 65
0010 | 40 01 00 00 BE E4 12 D7 F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
0030 | AD DF BD 26 CA 9A FC C4 04 4D 1A F3 7B 00 00 00
0040 | 04 73 51 76 8F 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 A0 42 D4 64 B3 FA 02 36 4F 92 26 31
0060 | 67 DD D5 16 0D 4C 34 6A 39 10 BC 4B 17 26 86 99
0070 | BE CD D6 EB B6 05 6A 1F 1D 0E 74 7F DE B2 BE 10
0080 | 12 28 0A 53 74 A3 E4 4F 10 F8 2A A6 13 8D AF 6A
0090 | B9 E4 51 7B F1 1B 83 E7 1B FB AD 0F CF BD E4 4D
00A0 | A0 D7 AA 0D 2B 04 64 F6 47 9E AB 10 C1 16 56 B8
00B0 | A4 0A C2 AE F6 34 4F 11 A7 A6 DB 56 31 9A B3 3E
00C0 | E6 D6 3C 10 58 93 18 9D B6 43 F8 9C 49 A2 D5 96
00D0 | BD 7A F6 7B F6 C5 77 D1 DE 1C F3 12 8E A6 98 D3
00E0 | 24 96 8D 0C 35 50 20 00 4A C8 40 B0 89 82 91 80
00F0 | 02 E3 A7 48 26 06 A8 09 D6 9C A5 98 21 06 ED 1B
0100 | 4A D0 F1 90 A5 99 C4 BC 38 3B B5 ED 17 3A 6E F4
0110 | 5E EF B1 7C 53 F4 42 D2 AF F4 70 45 85 39 DC 0A
0120 | 71 99 EC 50 00 1B 71 86 AB 06 12 A9 85 34 BC 55
0130 | E0 41 4E 05 16 27 57 A8 FF CC DA A9 66 DA B9 4F
0140 | 6C F4 2E 61 EB A7 9A 95 29 83 19 70 65 B4 F1 36
0150 | 00 DE 23 3E</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 8C DE 09 00 92 04 87 65
0010 | 40 01 00 00 BE E4 12 D7 CA 3C B3 BE 46 BF BE 4B
0020 | C4 8A 94 6A FB 97 21 54 51 13 E1 CE DD 81 B1 3A
0030 | C0 EB 3D B2 61 FA E6 C2 04 42 81 8B 0D 00 00 00
0040 | 04 4A B7 F3 27 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 79 DD 77 DB 50 E0 ED 40 52 96 4B 50
0060 | F5 51 D0 69 63 9E A1 C2 5B 28 72 8D 03 CE 8C 72
0070 | 3D AC 70 7D 6C 37 7D E0 81 CF A2 7C D7 5A EC 34
0080 | E9 09 59 F4 98 CC 06 1A A5 BB D7 5E 51 63 44 F1
0090 | 91 9E A6 0F 2A A9 C1 38 27 B4 A5 B2 7D ED 55 58
00A0 | 15 50 9D 13 CA F7 5D E3 BC 22 5A 99 13 FE E0 A2
00B0 | ED 07 03 48 AD CE 86 AE 87 B5 C4 A8 71 44 AE 76
00C0 | F1 63 89 43 6A E9 5E 96 FF 14 BB 36 53 4E D4 B5
00D0 | BE 7C 7B 9F 7C 32 84 7C 92 82 C0 BC 56 66 9E E0
00E0 | 2F 6E B7 B3 85 BD 3D F6 C7 EF 1F 72 7A 03 08 C3
00F0 | F5 7E 25 66 51 2E B7 D7 C7 A8 C0 B5 EF 64 E2 6C
0100 | AF 6B F2 16 50 0A 38 42 46 31 84 07 1C 40 42 5A
0110 | 2E B3 54 40 FD 4D D7 89 FA 08 05 07 88 C5 3C 9D
0120 | 63 F0 37 D9 80 E7 0A 8C 05 E2 FD 2D D3 9C 6F 2D
0130 | BA ED 1B 65 D7 49 6E 85 0A 78 51 A9 B4 A0 56 C4
0140 | 09 19 15 DB DB D8 85 8C 12 CA 55 83 63 12 86 7B
0150 | AB 67 A4 F7</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 = 57C530F3CB6A2A9A32BAB2A7B71E9E523B95ADD2A0EC7A5BB1072E951
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>B00F0F00D5F78565</code></td>
<td><code>8CDE090092048765</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 = 57C530F3CB6A2A9A32BAB2A7B71E9E523B95ADD2A0EC7A5BB1072E951
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td><code>CA3CB3BE46BFBE4BC48A946AFB972154</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td><code>5113E1CEDD81B13AC0EB3DB261FAE6C2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>044D1AF37B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1293611899</td>
<td><code>0442818B0D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1115785997</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>047351768F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1934718607</td>
<td><code>044AB7F327000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1253569319</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 = 57C530F3CB6A2A9A32BAB2A7B71E9E523B95ADD2A0EC7A5BB1072E951
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE000100A042D464B3FA02364F922631</code> <code>67DDD5160D4C346A3910BC4B17268699</code> <code>BECDD6EBB6056A1F1D0E747FDEB2BE10</code> <code>12280A5374A3E44F10F82AA6138DAF6A</code> <code>B9E4517BF11B83E71BFBAD0FCFBDE44D</code> <code>A0D7AA0D2B0464F6479EAB10C11656B8</code> <code>A40AC2AEF6344F11A7A6DB56319AB33E</code> <code>E6D63C105893189DB643F89C49A2D596</code> <code>BD7AF67BF6C577D1DE1CF3128EA698D3</code> <code>24968D0C355020004AC840B089829180</code> <code>02E3A7482606A809D69CA5982106ED1B</code> <code>4AD0F190A599C4BC383BB5ED173A6EF4</code> <code>5EEFB17C53F442D2AFF470458539DC0A</code> <code>7199EC50001B7186AB0612A98534BC55</code> <code>E0414E05162757A8FFCCDAA966DAB94F</code> <code>6CF42E61EBA79A952983197065B4F136</code><br> <code>00DE233E</code></td>
<td><code>FE00010079DD77DB50E0ED4052964B50</code> <code>F551D069639EA1C25B28728D03CE8C72</code> <code>3DAC707D6C377DE081CFA27CD75AEC34</code> <code>E90959F498CC061AA5BBD75E516344F1</code> <code>919EA60F2AA9C13827B4A5B27DED5558</code> <code>15509D13CAF75DE3BC225A9913FEE0A2</code> <code>ED070348ADCE86AE87B5C4A87144AE76</code> <code>F16389436AE95E96FF14BB36534ED4B5</code> <code>BE7C7B9F7C32847C9282C0BC56669EE0</code> <code>2F6EB7B385BD3DF6C7EF1F727A0308C3</code> <code>F57E2566512EB7D7C7A8C0B5EF64E26C</code> <code>AF6BF216500A3842463184071C40425A</code> <code>2EB35440FD4DD789FA08050788C53C9D</code> <code>63F037D980E70A8C05E2FD2DD39C6F2D</code> <code>BAED1B65D7496E850A7851A9B4A056C4</code> <code>091915DBDBD8858C12CA55836312867B</code><br> <code>AB67A4F7</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 57C530F3CB6A2A9A32BAB2A7B71E9E523B95ADD2A0EC7A5BB1072E951
<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 B8 EC 57 D6 F7 85 65
0010 | 78 02 00 00 5C 07 E8 D0 F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
0030 | AD DF BD 26 CA 9A FC C4 FE 50 02 00 5A 3F 28 85
0040 | 1C 30 5E 8D 8A BF D2 FF 4C 9E 77 E7 FA 2F 20 3C
0050 | F4 A9 6C CC 76 BE 66 84 FC 98 FE 9A 2B B7 7D 06
0060 | 23 F8 CD 76 CF 2A 7B 27 59 F3 69 C6 FB EE 8B AF
0070 | E9 FC 32 0C 2B D3 84 84 E6 7E C8 24 01 88 16 6A
0080 | 23 58 F6 20 06 1A AD B1 91 33 71 40 BC C3 59 D6
0090 | C0 85 DA 74 57 6A A7 DC D9 24 A5 22 AB A7 44 7C
00A0 | 50 4D 19 95 38 73 84 F7 59 9B 11 71 16 1E A5 6B
00B0 | C5 9A 51 DB 50 4F 20 F4 0F 62 0C 70 D9 4A A6 4E
00C0 | B4 6D 41 99 0F BE E4 35 23 41 66 0C E7 E2 59 FD
00D0 | 25 75 18 9C 56 DC 6A F0 FC 89 64 4B 45 19 B9 1C
00E0 | 27 0C 98 D6 DF 1D FD F9 1B D2 B5 CF 07 76 F8 94
00F0 | 95 B3 75 97 86 D0 24 2E 7B D7 79 01 41 BF 7D FD
0100 | 92 CA F7 85 80 BD DE 6C 4F 5B 12 A5 04 FF 3B 02
0110 | 5F 9F 84 40 7F D0 28 C8 6A 85 DF F6 17 0B 39 7D
0120 | E7 3F 0E 68 78 8A 20 C9 E3 57 84 A2 93 D6 B0 E7
0130 | DA 0E B1 9F 5C FB 85 23 13 E6 BC D1 EF 4C 3D C9
0140 | 3A D3 1A 85 AA 70 26 19 7D 07 94 DB A7 C8 A2 02
0150 | EC 6F C3 39 E3 0F 8B AD 95 56 86 43 82 B7 0D 52
0160 | 21 CB 18 36 DB FD 14 04 5C 5E 08 5A 48 FE 13 BD
0170 | 06 25 B9 96 14 F1 3A 16 7D 11 86 25 7C 16 1D A5
0180 | 71 06 CA A8 F6 57 A0 A9 0F 9C 55 E1 F7 FA E5 15
0190 | 78 32 BB 9E 40 8F B1 C0 E0 C8 13 22 F7 C8 DB 7E
01A0 | FB 1B 07 21 66 42 8E B4 69 63 4A 91 C6 AD 82 9B
01B0 | 3F 65 4C A6 46 F7 EF 22 AC 01 18 48 80 3A AD 64
01C0 | FE F7 C0 73 72 4F 03 E9 9F B6 D9 A1 78 09 16 B8
01D0 | 6B 1E 7C 0B 33 38 52 B7 0B 8B 42 40 C0 B7 D0 87
01E0 | 2E B1 2F BF 51 A9 FD F6 83 F9 B5 E0 43 94 5A 49
01F0 | 83 4F 4E E7 80 DC B4 C7 94 AD D9 38 C7 9D 10 9E
0200 | A6 1B BA FE 3A 02 AE 7F BC 3C 74 0E 04 CD A7 72
0210 | B0 71 8A 37 36 A9 5A 4E C0 8F 42 69 72 B1 58 A6
0220 | 8D AC FD 4C BC 24 E3 E1 B8 09 FD 83 59 6C A0 AF
0230 | 28 EF 10 90 A2 35 DC 9F F4 3B BA CA BC DC 0E AC
0240 | 22 08 33 C6 40 74 79 66 96 72 19 5A 76 F4 3A 22
0250 | BE 32 AE 4A FC 28 CC AB 1A EC 79 AE 24 D2 A2 18
0260 | 57 F9 F4 40 C1 8E E3 8C CA 69 0A 7C 94 40 70 66
0270 | E3 C7 39 77 FE EC 7D C9 3D 39 C6 5B 68 D6 8C D4
0280 | D5 13 80 0A 08 DF 2C 4B 63 6C 79 6C</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 F4 CC 88 93 04 87 65
0010 | D0 02 00 00 5C 07 E8 D0 CA 3C B3 BE 46 BF BE 4B
0020 | C4 8A 94 6A FB 97 21 54 51 13 E1 CE DD 81 B1 3A
0030 | C0 EB 3D B2 61 FA E6 C2 FE 50 02 00 43 3C C8 EE
0040 | C7 42 7A 92 B1 A1 69 07 07 75 A0 9A 7D F0 45 CC
0050 | 85 1C E6 F3 4D 34 4F E7 EE 5B B7 F6 E3 4D 8E 48
0060 | A4 34 21 5B 46 5D C2 E2 18 D5 EF 09 6F 24 A4 7C
0070 | 3A 00 A1 BD 1A 90 4E CC 20 80 8A 2C 6E C4 52 BB
0080 | 1F EC E6 98 6A 15 5A DA 13 29 33 72 9F 55 74 7F
0090 | 97 5B 2A 27 5B EC 43 82 F3 FE DC AC 18 F6 15 9C
00A0 | AD 4F 4D F5 EC D5 3B B8 F7 B5 19 DD 46 03 55 32
00B0 | 78 ED 44 08 BD EA 2E 11 89 4F 73 2F 0C 19 BB F3
00C0 | 85 E6 82 19 21 41 92 98 86 6D C1 37 01 42 2E 62
00D0 | D1 53 0E 66 AB 06 84 08 DC 0C BA 66 E7 BB B3 42
00E0 | 2C CA A0 EB 4B 80 DE EF B3 41 54 F2 D3 A4 FF 64
00F0 | 77 18 CA D6 86 46 59 F3 C8 97 42 27 3B 6E 3B 8A
0100 | B5 ED 26 89 3F CE EA 2B 0A DD 3E 9D 2F C3 31 31
0110 | 31 35 02 50 8E 3B 4A 5A 9D B4 C4 47 16 6B FB 59
0120 | 45 E0 DB 2A D7 5D AD A8 BF 30 CE CA A5 F8 F1 55
0130 | E6 A6 B2 2E C3 0B 71 4F 91 26 79 45 A6 6F A1 A8
0140 | EE 33 57 33 AD C5 C4 42 A6 BD 59 3A 74 DD DB 46
0150 | D7 33 27 9E 07 79 23 FF A1 3D B8 B3 B5 72 DF D1
0160 | C1 2B B6 AF FB F1 B5 F6 79 C2 C3 49 80 E4 FD F8
0170 | 6B EF F6 3F 79 4F 73 E5 2A DD E3 57 66 DC AB 85
0180 | BB 4D BB 44 11 73 BE 06 F6 3C 4B BB 06 E4 10 EC
0190 | 01 9C 11 2A 83 45 F9 CB 04 94 36 B9 CF B2 DF E3
01A0 | 8C CD F5 70 05 5E EF 61 F4 F6 0A 22 16 4C F9 F2
01B0 | CD A7 57 83 53 CF 20 0A 3A AD AE 5E 35 E3 0B 29
01C0 | 2F E5 50 65 75 37 51 86 42 79 C0 6F 0F 2D 35 4E
01D0 | 0F 78 6C 9F C0 80 67 23 5F C8 CA F3 A7 45 D0 7A
01E0 | D8 AC 02 92 7C 12 71 79 1D 3E 53 13 C9 10 30 44
01F0 | 28 43 43 9F 54 36 74 90 54 F0 9A E9 65 D3 40 EE
0200 | EB B6 35 5B B5 C2 73 B4 65 A4 F9 16 66 E0 C0 04
0210 | 3E ED A1 CA 20 58 F7 6B 88 BD C9 32 94 CC 37 0C
0220 | 8C 6B F6 1A 85 FF A4 60 23 DB 16 DA CF 92 3B B1
0230 | 25 DB A5 90 AD 80 8B D9 9C 40 4C 1B B6 59 71 B0
0240 | F1 40 30 E6 1D A5 DC 12 90 A8 61 8C 84 EC 67 F0
0250 | 83 76 12 B5 61 66 10 85 21 0F 90 78 A7 BB EB 4C
0260 | 14 EE 10 AC 6A 02 C5 9D AB 2F 12 48 FA 9E F0 5C
0270 | DD 37 C7 2C 40 7E A4 76 5A 8F EB 06 FB BD 48 D1
0280 | 32 B4 2B 0D E4 DB E0 71 8A 8A CA 2A</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 = 57C530F3CB6A2A9A32BAB2A7B71E9E523B95ADD2A0EC7A5BB1072E951
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01B8EC57D6F78565</code></td>
<td><code>01F4CC8893048765</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>78020000</code> (632 in decimal)</td>
<td><code>D0020000</code> (720 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 57C530F3CB6A2A9A32BAB2A7B71E9E523B95ADD2A0EC7A5BB1072E951
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td><code>CA3CB3BE46BFBE4BC48A946AFB972154</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td><code>5113E1CEDD81B13AC0EB3DB261FAE6C2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002005A3F28851C305E8D8ABFD2FF</code> <code>4C9E77E7FA2F203CF4A96CCC76BE6684</code> <code>FC98FE9A2BB77D0623F8CD76CF2A7B27</code> <code>59F369C6FBEE8BAFE9FC320C2BD38484</code> <code>E67EC8240188166A2358F620061AADB1</code> <code>91337140BCC359D6C085DA74576AA7DC</code> <code>D924A522ABA7447C504D1995387384F7</code> <code>599B1171161EA56BC59A51DB504F20F4</code> <code>0F620C70D94AA64EB46D41990FBEE435</code> <code>2341660CE7E259FD2575189C56DC6AF0</code> <code>FC89644B4519B91C270C98D6DF1DFDF9</code> <code>1BD2B5CF0776F89495B3759786D0242E</code> <code>7BD7790141BF7DFD92CAF78580BDDE6C</code> <code>4F5B12A504FF3B025F9F84407FD028C8</code> <code>6A85DFF6170B397DE73F0E68788A20C9</code> <code>E35784A293D6B0E7DA0EB19F5CFB8523</code> <code>13E6BCD1EF4C3DC93AD31A85AA702619</code> <code>7D0794DBA7C8A202EC6FC339E30F8BAD</code> <code>9556864382B70D5221CB1836DBFD1404</code> <code>5C5E085A48FE13BD0625B99614F13A16</code> <code>7D1186257C161DA57106CAA8F657A0A9</code> <code>0F9C55E1F7FAE5157832BB9E408FB1C0</code> <code>E0C81322F7C8DB7EFB1B072166428EB4</code> <code>69634A91C6AD829B3F654CA646F7EF22</code> <code>AC011848803AAD64FEF7C073724F03E9</code> <code>9FB6D9A1780916B86B1E7C0B333852B7</code> <code>0B8B4240C0B7D0872EB12FBF51A9FDF6</code> <code>83F9B5E043945A49834F4EE780DCB4C7</code> <code>94ADD938C79D109EA61BBAFE3A02AE7F</code> <code>BC3C740E04CDA772B0718A3736A95A4E</code> <code>C08F426972B158A68DACFD4CBC24E3E1</code> <code>B809FD83596CA0AF28EF1090A235DC9F</code> <code>F43BBACABCDC0EAC220833C640747966</code> <code>9672195A76F43A22BE32AE4AFC28CCAB</code> <code>1AEC79AE24D2A21857F9F440C18EE38C</code> <code>CA690A7C94407066E3C73977FEEC7DC9</code> <code>3D39C65B68D68CD4D513800A08DF2C4B</code><br> <code>636C796C</code></td>
<td><code>FE500200433CC8EEC7427A92B1A16907</code> <code>0775A09A7DF045CC851CE6F34D344FE7</code> <code>EE5BB7F6E34D8E48A434215B465DC2E2</code> <code>18D5EF096F24A47C3A00A1BD1A904ECC</code> <code>20808A2C6EC452BB1FECE6986A155ADA</code> <code>132933729F55747F975B2A275BEC4382</code> <code>F3FEDCAC18F6159CAD4F4DF5ECD53BB8</code> <code>F7B519DD4603553278ED4408BDEA2E11</code> <code>894F732F0C19BBF385E6821921419298</code> <code>866DC13701422E62D1530E66AB068408</code> <code>DC0CBA66E7BBB3422CCAA0EB4B80DEEF</code> <code>B34154F2D3A4FF647718CAD6864659F3</code> <code>C89742273B6E3B8AB5ED26893FCEEA2B</code> <code>0ADD3E9D2FC33131313502508E3B4A5A</code> <code>9DB4C447166BFB5945E0DB2AD75DADA8</code> <code>BF30CECAA5F8F155E6A6B22EC30B714F</code> <code>91267945A66FA1A8EE335733ADC5C442</code> <code>A6BD593A74DDDB46D733279E077923FF</code> <code>A13DB8B3B572DFD1C12BB6AFFBF1B5F6</code> <code>79C2C34980E4FDF86BEFF63F794F73E5</code> <code>2ADDE35766DCAB85BB4DBB441173BE06</code> <code>F63C4BBB06E410EC019C112A8345F9CB</code> <code>049436B9CFB2DFE38CCDF570055EEF61</code> <code>F4F60A22164CF9F2CDA7578353CF200A</code> <code>3AADAE5E35E30B292FE5506575375186</code> <code>4279C06F0F2D354E0F786C9FC0806723</code> <code>5FC8CAF3A745D07AD8AC02927C127179</code> <code>1D3E5313C91030442843439F54367490</code> <code>54F09AE965D340EEEBB6355BB5C273B4</code> <code>65A4F91666E0C0043EEDA1CA2058F76B</code> <code>88BDC93294CC370C8C6BF61A85FFA460</code> <code>23DB16DACF923BB125DBA590AD808BD9</code> <code>9C404C1BB65971B0F14030E61DA5DC12</code> <code>90A8618C84EC67F0837612B561661085</code> <code>210F9078A7BBEB4C14EE10AC6A02C59D</code> <code>AB2F1248FA9EF05CDD37C72C407EA476</code> <code>5A8FEB06FBBD48D132B42B0DE4DBE071</code><br> <code>8A8ACA2A</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 57C530F3CB6A2A9A32BAB2A7B71E9E523B95ADD2A0EC7A5BB1072E951
<!-- 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 = 5A3F28851C305E8D8ABFD2FF4C9E77E7FA2F203CF4A96CCC76BE6684FC98FE9A2BB77D0623F8CD76CF2A7B2759F369C6FBEE8BAFE9FC320C2BD38484E67EC8240188166A2358F620061AADB191337140BCC359D6C085DA74576AA7DCD924A522ABA7447C504D1995387384F7599B1171161EA56BC59A51DB504F20F40F620C70D94AA64EB46D41990FBEE4352341660CE7E259FD2575189C56DC6AF0FC89644B4519B91C270C98D6DF1DFDF91BD2B5CF0776F89495B3759786D0242E7BD7790141BF7DFD92CAF78580BDDE6C4F5B12A504FF3B025F9F84407FD028C86A85DFF6170B397DE73F0E68788A20C9E35784A293D6B0E7DA0EB19F5CFB852313E6BCD1EF4C3DC93AD31A85AA7026197D0794DBA7C8A202EC6FC339E30F8BAD9556864382B70D5221CB1836DBFD14045C5E085A48FE13BD0625B99614F13A167D1186257C161DA57106CAA8F657A0A90F9C55E1F7FAE5157832BB9E408FB1C0E0C81322F7C8DB7EFB1B072166428EB469634A91C6AD829B3F654CA646F7EF22AC011848803AAD64FEF7C073724F03E99FB6D9A1780916B86B1E7C0B333852B70B8B4240C0B7D0872EB12FBF51A9FDF683F9B5E043945A49834F4EE780DCB4C794ADD938C79D109EA61BBAFE3A02AE7FBC3C740E04CDA772B0718A3736A95A4EC08F426972B158A68DACFD4CBC24E3E1B809FD83596CA0AF28EF1090A235DC9FF43BBACABCDC0EAC220833C6407479669672195A76F43A22BE32AE4AFC28CCAB1AEC79AE24D2A21857F9F440C18EE38CCA690A7C94407066E3C73977FEEC7DC93D39C65B68D68CD4D513800A08DF2C4B636C796C
tmp_aes_key = 45C7AB984F1592CDDE5AF264AFE1C4870D8A34060F9EB956FC7EEDFC8B0E62D3
tmp_aes_iv = D5BC4AF3EEED52FCD483055306E48EFDA96ABCD7B863C04EC5A6BDB6B0EFF870</code></pre>
<pre><code>encrypted_answer = 433CC8EEC7427A92B1A169070775A09A7DF045CC851CE6F34D344FE7EE5BB7F6E34D8E48A434215B465DC2E218D5EF096F24A47C3A00A1BD1A904ECC20808A2C6EC452BB1FECE6986A155ADA132933729F55747F975B2A275BEC4382F3FEDCAC18F6159CAD4F4DF5ECD53BB8F7B519DD4603553278ED4408BDEA2E11894F732F0C19BBF385E6821921419298866DC13701422E62D1530E66AB068408DC0CBA66E7BBB3422CCAA0EB4B80DEEFB34154F2D3A4FF647718CAD6864659F3C89742273B6E3B8AB5ED26893FCEEA2B0ADD3E9D2FC33131313502508E3B4A5A9DB4C447166BFB5945E0DB2AD75DADA8BF30CECAA5F8F155E6A6B22EC30B714F91267945A66FA1A8EE335733ADC5C442A6BD593A74DDDB46D733279E077923FFA13DB8B3B572DFD1C12BB6AFFBF1B5F679C2C34980E4FDF86BEFF63F794F73E52ADDE35766DCAB85BB4DBB441173BE06F63C4BBB06E410EC019C112A8345F9CB049436B9CFB2DFE38CCDF570055EEF61F4F60A22164CF9F2CDA7578353CF200A3AADAE5E35E30B292FE55065753751864279C06F0F2D354E0F786C9FC08067235FC8CAF3A745D07AD8AC02927C1271791D3E5313C91030442843439F5436749054F09AE965D340EEEBB6355BB5C273B465A4F91666E0C0043EEDA1CA2058F76B88BDC93294CC370C8C6BF61A85FFA46023DB16DACF923BB125DBA590AD808BD99C404C1BB65971B0F14030E61DA5DC1290A8618C84EC67F0837612B561661085210F9078A7BBEB4C14EE10AC6A02C59DAB2F1248FA9EF05CDD37C72C407EA4765A8FEB06FBBD48D132B42B0DE4DBE0718A8ACA2A
tmp_aes_key = B737C0FF1F5F66D10FC79BF85AF196E6CE551ED1F7C95F0820904BDD78399F05
tmp_aes_iv = 9D521F3A9D1F9F59A7E832D00746A6DB30271078B445C4ACE53CD8F18EB5F840</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = AA4A7B99B43F4855C91740A36D93C7ED49851BD9BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100608BF52BD3E21BFC441F4749A732F5A86A38F62EBFE2E3505F5AE976B2707D4D4662D94A924892F1C267BCC62E2A6989480DA740E2C2152FB8F4D87D157CFA24D8F810081AD3907B4E7A4B012DC8766A8AB93CA5160E3D9DCF5420C5060630890994D7FC3CA1102BD08BCAF5B43A014BC0E2828DF9EDCC655F133E26BA75DB899BE10DA6CBDAA82D7BADB1193F396EECEABDE3EE4D4AC4AE9186BAB67C687850FF21C6C221555D1696E552D1826E4DF2EC26E5D7F6974B4FD7DE975455D28101E52A346D18FFEED518353FAE35B2F76B5ECD6530A23F8D275748DA7F7A4BE45B22328167FDF960B94BFF35E6721E9E9F87D87DFEDF83D68EDA070986638DF6A1D6F78565A4D74B8AF1D895E3
answer = BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100608BF52BD3E21BFC441F4749A732F5A86A38F62EBFE2E3505F5AE976B2707D4D4662D94A924892F1C267BCC62E2A6989480DA740E2C2152FB8F4D87D157CFA24D8F810081AD3907B4E7A4B012DC8766A8AB93CA5160E3D9DCF5420C5060630890994D7FC3CA1102BD08BCAF5B43A014BC0E2828DF9EDCC655F133E26BA75DB899BE10DA6CBDAA82D7BADB1193F396EECEABDE3EE4D4AC4AE9186BAB67C687850FF21C6C221555D1696E552D1826E4DF2EC26E5D7F6974B4FD7DE975455D28101E52A346D18FFEED518353FAE35B2F76B5ECD6530A23F8D275748DA7F7A4BE45B22328167FDF960B94BFF35E6721E9E9F87D87DFEDF83D68EDA070986638DF6A1D6F78565A4D74B8AF1D895E3</code></pre>
<pre><code>answer_with_hash = EB2CF1723BEA9B28122FFCFCDF9811145C88DBC4BA0D89B5CA3CB3BE46BFBE4BC48A946AFB9721545113E1CEDD81B13AC0EB3DB261FAE6C203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010023DC8DF513A8FC95CAD3AEB05CD826F0883079AFB9E8B38FDE01D82732504F539EB893573D5F24E679C528983A14ECD297AF40336A847A1CECA677B02668094D9945E3D4958EDFB92BA516460825E855781E82DF13C39D2326EC81F5FD907D320B532ECAB643F7061E7A7D9BFCB3A8CB527B907F6CCDEDB5F4682DB7248F0074A4B815A5814B53D7A6A62DB0B4164B068AF9810AE3DF64100BCE4EA19FEDB456EE968FDC7C5ACE5C5906A268C03D2C83FF2BD2F2C48B2886FE4727D8BEBCDDAE4899EB491CB5F1C178901956276540DDCB72E48C3F9B56D84AA24FDFF4A24F6D026228FA18792D1F333D9B188CCF9E921CEC8ECAB9F464A7BCB035430549F7DF930487653CB8702FC7B8DB1D
answer = BA0D89B5CA3CB3BE46BFBE4BC48A946AFB9721545113E1CEDD81B13AC0EB3DB261FAE6C203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010023DC8DF513A8FC95CAD3AEB05CD826F0883079AFB9E8B38FDE01D82732504F539EB893573D5F24E679C528983A14ECD297AF40336A847A1CECA677B02668094D9945E3D4958EDFB92BA516460825E855781E82DF13C39D2326EC81F5FD907D320B532ECAB643F7061E7A7D9BFCB3A8CB527B907F6CCDEDB5F4682DB7248F0074A4B815A5814B53D7A6A62DB0B4164B068AF9810AE3DF64100BCE4EA19FEDB456EE968FDC7C5ACE5C5906A268C03D2C83FF2BD2F2C48B2886FE4727D8BEBCDDAE4899EB491CB5F1C178901956276540DDCB72E48C3F9B56D84AA24FDFF4A24F6D026228FA18792D1F333D9B188CCF9E921CEC8ECAB9F464A7BCB035430549F7DF930487653CB8702FC7B8DB1D</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 F8 65 53 B8 A2 25 70 92 30 49 7E FC
0010 | 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6 AD DF BD 26
0020 | CA 9A FC C4 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 CA 3C B3 BE 46 BF BE 4B C4 8A 94 6A
0010 | FB 97 21 54 51 13 E1 CE DD 81 B1 3A C0 EB 3D B2
0020 | 61 FA E6 C2 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 = BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC
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 | 60 8B F5 2B D3 E2 1B FC 44 1F 47 49 A7 32 F5 A8
0140 | 6A 38 F6 2E BF E2 E3 50 5F 5A E9 76 B2 70 7D 4D
0150 | 46 62 D9 4A 92 48 92 F1 C2 67 BC C6 2E 2A 69 89
0160 | 48 0D A7 40 E2 C2 15 2F B8 F4 D8 7D 15 7C FA 24
0170 | D8 F8 10 08 1A D3 90 7B 4E 7A 4B 01 2D C8 76 6A
0180 | 8A B9 3C A5 16 0E 3D 9D CF 54 20 C5 06 06 30 89
0190 | 09 94 D7 FC 3C A1 10 2B D0 8B CA F5 B4 3A 01 4B
01A0 | C0 E2 82 8D F9 ED CC 65 5F 13 3E 26 BA 75 DB 89
01B0 | 9B E1 0D A6 CB DA A8 2D 7B AD B1 19 3F 39 6E EC
01C0 | EA BD E3 EE 4D 4A C4 AE 91 86 BA B6 7C 68 78 50
01D0 | FF 21 C6 C2 21 55 5D 16 96 E5 52 D1 82 6E 4D F2
01E0 | EC 26 E5 D7 F6 97 4B 4F D7 DE 97 54 55 D2 81 01
01F0 | E5 2A 34 6D 18 FF EE D5 18 35 3F AE 35 B2 F7 6B
0200 | 5E CD 65 30 A2 3F 8D 27 57 48 DA 7F 7A 4B E4 5B
0210 | 22 32 81 67 FD F9 60 B9 4B FF 35 E6 72 1E 9E 9F
0220 | 87 D8 7D FE DF 83 D6 8E DA 07 09 86 63 8D F6 A1
0230 | D6 F7 85 65</code></pre>
0130 | 23 DC 8D F5 13 A8 FC 95 CA D3 AE B0 5C D8 26 F0
0140 | 88 30 79 AF B9 E8 B3 8F DE 01 D8 27 32 50 4F 53
0150 | 9E B8 93 57 3D 5F 24 E6 79 C5 28 98 3A 14 EC D2
0160 | 97 AF 40 33 6A 84 7A 1C EC A6 77 B0 26 68 09 4D
0170 | 99 45 E3 D4 95 8E DF B9 2B A5 16 46 08 25 E8 55
0180 | 78 1E 82 DF 13 C3 9D 23 26 EC 81 F5 FD 90 7D 32
0190 | 0B 53 2E CA B6 43 F7 06 1E 7A 7D 9B FC B3 A8 CB
01A0 | 52 7B 90 7F 6C CD ED B5 F4 68 2D B7 24 8F 00 74
01B0 | A4 B8 15 A5 81 4B 53 D7 A6 A6 2D B0 B4 16 4B 06
01C0 | 8A F9 81 0A E3 DF 64 10 0B CE 4E A1 9F ED B4 56
01D0 | EE 96 8F DC 7C 5A CE 5C 59 06 A2 68 C0 3D 2C 83
01E0 | FF 2B D2 F2 C4 8B 28 86 FE 47 27 D8 BE BC DD AE
01F0 | 48 99 EB 49 1C B5 F1 C1 78 90 19 56 27 65 40 DD
0200 | CB 72 E4 8C 3F 9B 56 D8 4A A2 4F DF F4 A2 4F 6D
0210 | 02 62 28 FA 18 79 2D 1F 33 3D 9B 18 8C CF 9E 92
0220 | 1C EC 8E CA B9 F4 64 A7 BC B0 35 43 05 49 F7 DF
0230 | 93 04 87 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 = BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td><code>CA3CB3BE46BFBE4BC48A946AFB972154</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td><code>5113E1CEDD81B13AC0EB3DB261FAE6C2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE000100608BF52BD3E21BFC441F4749</code> <code>A732F5A86A38F62EBFE2E3505F5AE976</code> <code>B2707D4D4662D94A924892F1C267BCC6</code> <code>2E2A6989480DA740E2C2152FB8F4D87D</code> <code>157CFA24D8F810081AD3907B4E7A4B01</code> <code>2DC8766A8AB93CA5160E3D9DCF5420C5</code> <code>060630890994D7FC3CA1102BD08BCAF5</code> <code>B43A014BC0E2828DF9EDCC655F133E26</code> <code>BA75DB899BE10DA6CBDAA82D7BADB119</code> <code>3F396EECEABDE3EE4D4AC4AE9186BAB6</code> <code>7C687850FF21C6C221555D1696E552D1</code> <code>826E4DF2EC26E5D7F6974B4FD7DE9754</code> <code>55D28101E52A346D18FFEED518353FAE</code> <code>35B2F76B5ECD6530A23F8D275748DA7F</code> <code>7A4BE45B22328167FDF960B94BFF35E6</code> <code>721E9E9F87D87DFEDF83D68EDA070986</code><br> <code>638DF6A1</code></td>
<td><code>FE00010023DC8DF513A8FC95CAD3AEB0</code> <code>5CD826F0883079AFB9E8B38FDE01D827</code> <code>32504F539EB893573D5F24E679C52898</code> <code>3A14ECD297AF40336A847A1CECA677B0</code> <code>2668094D9945E3D4958EDFB92BA51646</code> <code>0825E855781E82DF13C39D2326EC81F5</code> <code>FD907D320B532ECAB643F7061E7A7D9B</code> <code>FCB3A8CB527B907F6CCDEDB5F4682DB7</code> <code>248F0074A4B815A5814B53D7A6A62DB0</code> <code>B4164B068AF9810AE3DF64100BCE4EA1</code> <code>9FEDB456EE968FDC7C5ACE5C5906A268</code> <code>C03D2C83FF2BD2F2C48B2886FE4727D8</code> <code>BEBCDDAE4899EB491CB5F1C178901956</code> <code>276540DDCB72E48C3F9B56D84AA24FDF</code> <code>F4A24F6D026228FA18792D1F333D9B18</code> <code>8CCF9E921CEC8ECAB9F464A7BCB03543</code><br> <code>0549F7DF</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>D6F78565</code> (1703278550 in decimal)</td>
<td><code>93048765</code> (1703347347 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC
<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 = 8B2BC15FD6534001F46FD1EB85CFC5D33CB492BE3A40B04DC83E193C6CC922F1D0C0351D04E6E1E8F8E253E39E38BE0D3D03DAAF1B640E67228E6B891C5F00CF35360C7B3B5DD5685EDD62A0994D220A459F17A5043AF62930078353C6F0F6213008FC5AF639E27AFE40EF4AD3DC52763C27805EF623B5CB2C29F5176746513B5E448AF01DF862C5692D77464D58789E51FEF300A95D4E8F2C2ECBA4AE6680170770B5C9BC56A50A64C96E56364504570EF355A73E134D241CEF52E0EE6FA616A7B3917BC0CE508967FDC21F079F04C3040C76A8EAE7CCE96196DD0FA4AC75F1366723B4A8A1081D743AEC267E1BAED984CF6F8FECFEBFF41D7827B63B1F9951</code></pre>
<pre><code>b = 5A6E9FC81B5A8032C932C753A816D1FAF1E359836B3902D5BB10AC7CB367594718E116644745B5CBA386FAB387E2EC6B913417F185C83BE16AF2E9E216B27796E30895FC59BE1BF06B8D8D53DB2D79C14E8DC0575E08D386EB2785C487E7182D57631B7A3F1E3DB077658322C692CDAC0218D7862636C617B1757BAC7BE9376489AC4E5788982491993BE0A9648475F56E04B53AFF1CB0CCC13AF554F1226626032B30165B3D04332F9DA6B02146C6495821ACE8CFDF52AB38323F2DE3808C7B21147C369F5AD58BB9457C9BDB0E6510DF0E7BBBD2E0341D9A36C641C2D72507577DDD8AD291732772BF4CF9DF239D753F384D6696D21C82C13713D07F23D806</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 = C345BCB613357FFEC162397048AF74E249AAC8A11209D92EF089A4D341D1B6A361943235F98BF48E7E996F3D90DDEC63F26EBB5740EF0C5F7E25FF1A6C79943E0918C49A5E48D4C9EC7A478F222F067DAC227310383CFA05401503EF8C5CA72CD999E4BF24E80554B265E89DBB6590E90B0B4282803681AAC5C6E71AB4A9C1AE582DB03EBB500633DBD8372D2B1D56923E43D8197070DA2C74AD1E0D245C495B353DFC5123BD5957BA5F69EAEA94994304C3487437FC833B9CBA41C2BBFDE2421D2A1693ADBFE65AE62686A5A7E250AF7B3EF69BA29F9EA1D8CB2B410AF106E31975536335A2F32ECC0DE4A83EEB3D7299551ACFF48D25407FF4C29E1645E173</code></pre>
<pre><code>g_b = 8C378DF170A0BD59A6D81640CE292BA73136F79D8D00776C70DE5BA0DEFD09F1A42C18EA71D02A6E3079B294F43751426516E7B40A5B58AEED3AB8FA8B2DBC41A45CA33E37827F15D15AA44375120D243E2E5DB4FD352AC256F5EF096045B8BFEC4C322C5857F232F0BCFF6CAE2220E73BDE716B81E5D147256A409A9494DEB21B30AF3172EDC931DCD3766C58FC3F460191F56BFC62E09C1D23FFC50D3A024CC86BA8E7FAE9CAE8C91DBD4E536F54C4F8218CFB8ECAC2A71C81224267D88663377462F0635DDC03802C2D0F22FB75D99F32A3D911B33C03FD80CA1A5D13BBB3E082BFE67C1DD3D2FB68D2B8A30910ECF18D1BB9E11E4F1288087B97A3E87F83</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 F8 65 53 B8 A2 25 70 92 30 49 7E FC
0010 | 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6 AD DF BD 26
0020 | CA 9A FC C4 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | C3 45 BC B6 13 35 7F FE C1 62 39 70 48 AF 74 E2
0040 | 49 AA C8 A1 12 09 D9 2E F0 89 A4 D3 41 D1 B6 A3
0050 | 61 94 32 35 F9 8B F4 8E 7E 99 6F 3D 90 DD EC 63
0060 | F2 6E BB 57 40 EF 0C 5F 7E 25 FF 1A 6C 79 94 3E
0070 | 09 18 C4 9A 5E 48 D4 C9 EC 7A 47 8F 22 2F 06 7D
0080 | AC 22 73 10 38 3C FA 05 40 15 03 EF 8C 5C A7 2C
0090 | D9 99 E4 BF 24 E8 05 54 B2 65 E8 9D BB 65 90 E9
00A0 | 0B 0B 42 82 80 36 81 AA C5 C6 E7 1A B4 A9 C1 AE
00B0 | 58 2D B0 3E BB 50 06 33 DB D8 37 2D 2B 1D 56 92
00C0 | 3E 43 D8 19 70 70 DA 2C 74 AD 1E 0D 24 5C 49 5B
00D0 | 35 3D FC 51 23 BD 59 57 BA 5F 69 EA EA 94 99 43
00E0 | 04 C3 48 74 37 FC 83 3B 9C BA 41 C2 BB FD E2 42
00F0 | 1D 2A 16 93 AD BF E6 5A E6 26 86 A5 A7 E2 50 AF
0100 | 7B 3E F6 9B A2 9F 9E A1 D8 CB 2B 41 0A F1 06 E3
0110 | 19 75 53 63 35 A2 F3 2E CC 0D E4 A8 3E EB 3D 72
0120 | 99 55 1A CF F4 8D 25 40 7F F4 C2 9E 16 45 E1 73</code></pre>
<pre><code>0000 | 54 B6 43 66 CA 3C B3 BE 46 BF BE 4B C4 8A 94 6A
0010 | FB 97 21 54 51 13 E1 CE DD 81 B1 3A C0 EB 3D B2
0020 | 61 FA E6 C2 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 8C 37 8D F1 70 A0 BD 59 A6 D8 16 40 CE 29 2B A7
0040 | 31 36 F7 9D 8D 00 77 6C 70 DE 5B A0 DE FD 09 F1
0050 | A4 2C 18 EA 71 D0 2A 6E 30 79 B2 94 F4 37 51 42
0060 | 65 16 E7 B4 0A 5B 58 AE ED 3A B8 FA 8B 2D BC 41
0070 | A4 5C A3 3E 37 82 7F 15 D1 5A A4 43 75 12 0D 24
0080 | 3E 2E 5D B4 FD 35 2A C2 56 F5 EF 09 60 45 B8 BF
0090 | EC 4C 32 2C 58 57 F2 32 F0 BC FF 6C AE 22 20 E7
00A0 | 3B DE 71 6B 81 E5 D1 47 25 6A 40 9A 94 94 DE B2
00B0 | 1B 30 AF 31 72 ED C9 31 DC D3 76 6C 58 FC 3F 46
00C0 | 01 91 F5 6B FC 62 E0 9C 1D 23 FF C5 0D 3A 02 4C
00D0 | C8 6B A8 E7 FA E9 CA E8 C9 1D BD 4E 53 6F 54 C4
00E0 | F8 21 8C FB 8E CA C2 A7 1C 81 22 42 67 D8 86 63
00F0 | 37 74 62 F0 63 5D DC 03 80 2C 2D 0F 22 FB 75 D9
0100 | 9F 32 A3 D9 11 B3 3C 03 FD 80 CA 1A 5D 13 BB B3
0110 | E0 82 BF E6 7C 1D D3 D2 FB 68 D2 B8 A3 09 10 EC
0120 | F1 8D 1B B9 E1 1E 4F 12 88 08 7B 97 A3 E8 7F 83</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 = BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td><code>CA3CB3BE46BFBE4BC48A946AFB972154</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td><code>5113E1CEDD81B13AC0EB3DB261FAE6C2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE000100C345BCB613357FFEC1623970</code> <code>48AF74E249AAC8A11209D92EF089A4D3</code> <code>41D1B6A361943235F98BF48E7E996F3D</code> <code>90DDEC63F26EBB5740EF0C5F7E25FF1A</code> <code>6C79943E0918C49A5E48D4C9EC7A478F</code> <code>222F067DAC227310383CFA05401503EF</code> <code>8C5CA72CD999E4BF24E80554B265E89D</code> <code>BB6590E90B0B4282803681AAC5C6E71A</code> <code>B4A9C1AE582DB03EBB500633DBD8372D</code> <code>2B1D56923E43D8197070DA2C74AD1E0D</code> <code>245C495B353DFC5123BD5957BA5F69EA</code> <code>EA94994304C3487437FC833B9CBA41C2</code> <code>BBFDE2421D2A1693ADBFE65AE62686A5</code> <code>A7E250AF7B3EF69BA29F9EA1D8CB2B41</code> <code>0AF106E31975536335A2F32ECC0DE4A8</code> <code>3EEB3D7299551ACFF48D25407FF4C29E</code><br> <code>1645E173</code></td>
<td><code>FE0001008C378DF170A0BD59A6D81640</code> <code>CE292BA73136F79D8D00776C70DE5BA0</code> <code>DEFD09F1A42C18EA71D02A6E3079B294</code> <code>F43751426516E7B40A5B58AEED3AB8FA</code> <code>8B2DBC41A45CA33E37827F15D15AA443</code> <code>75120D243E2E5DB4FD352AC256F5EF09</code> <code>6045B8BFEC4C322C5857F232F0BCFF6C</code> <code>AE2220E73BDE716B81E5D147256A409A</code> <code>9494DEB21B30AF3172EDC931DCD3766C</code> <code>58FC3F460191F56BFC62E09C1D23FFC5</code> <code>0D3A024CC86BA8E7FAE9CAE8C91DBD4E</code> <code>536F54C4F8218CFB8ECAC2A71C812242</code> <code>67D88663377462F0635DDC03802C2D0F</code> <code>22FB75D99F32A3D911B33C03FD80CA1A</code> <code>5D13BBB3E082BFE67C1DD3D2FB68D2B8</code> <code>A30910ECF18D1BB9E11E4F1288087B97</code><br> <code>A3E87F83</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 = BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC
<!-- 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 = 54B64366F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC40000000000000000FE000100C345BCB613357FFEC162397048AF74E249AAC8A11209D92EF089A4D341D1B6A361943235F98BF48E7E996F3D90DDEC63F26EBB5740EF0C5F7E25FF1A6C79943E0918C49A5E48D4C9EC7A478F222F067DAC227310383CFA05401503EF8C5CA72CD999E4BF24E80554B265E89DBB6590E90B0B4282803681AAC5C6E71AB4A9C1AE582DB03EBB500633DBD8372D2B1D56923E43D8197070DA2C74AD1E0D245C495B353DFC5123BD5957BA5F69EAEA94994304C3487437FC833B9CBA41C2BBFDE2421D2A1693ADBFE65AE62686A5A7E250AF7B3EF69BA29F9EA1D8CB2B410AF106E31975536335A2F32ECC0DE4A83EEB3D7299551ACFF48D25407FF4C29E1645E173
padding = 5716BBE199B59207403CDBA3
tmp_aes_key = 45C7AB984F1592CDDE5AF264AFE1C4870D8A34060F9EB956FC7EEDFC8B0E62D3
tmp_aes_iv = D5BC4AF3EEED52FCD483055306E48EFDA96ABCD7B863C04EC5A6BDB6B0EFF870</code></pre>
<pre><code>data = 54B64366CA3CB3BE46BFBE4BC48A946AFB9721545113E1CEDD81B13AC0EB3DB261FAE6C20000000000000000FE0001008C378DF170A0BD59A6D81640CE292BA73136F79D8D00776C70DE5BA0DEFD09F1A42C18EA71D02A6E3079B294F43751426516E7B40A5B58AEED3AB8FA8B2DBC41A45CA33E37827F15D15AA44375120D243E2E5DB4FD352AC256F5EF096045B8BFEC4C322C5857F232F0BCFF6CAE2220E73BDE716B81E5D147256A409A9494DEB21B30AF3172EDC931DCD3766C58FC3F460191F56BFC62E09C1D23FFC50D3A024CC86BA8E7FAE9CAE8C91DBD4E536F54C4F8218CFB8ECAC2A71C81224267D88663377462F0635DDC03802C2D0F22FB75D99F32A3D911B33C03FD80CA1A5D13BBB3E082BFE67C1DD3D2FB68D2B8A30910ECF18D1BB9E11E4F1288087B97A3E87F83
padding = 76FBA780CBAD2F260CAE353C
tmp_aes_key = B737C0FF1F5F66D10FC79BF85AF196E6CE551ED1F7C95F0820904BDD78399F05
tmp_aes_iv = 9D521F3A9D1F9F59A7E832D00746A6DB30271078B445C4ACE53CD8F18EB5F840</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 = F872E0E5AADE91C4BD03457955C88610A80331C3ABA9C60C8FE526D0836088BA4F1DABAC99201FEB86A1860909D61E26885DA3D540A29E09FBA89B2E4DA63E1E1E9795691CFFAD59F9B775000CA77209660324F90B89186DB0632472135D2991953B611693956AC1FE4ED38A030F544F37201C043FF0D12B3A1DCBC8E5FC746E138D7347F430EC9C1288DBED5DFF77D41AF16C732E3C9719720325BC769D9D7B99E4470D9DC4CCF09B17E21231BF18ED0A156705D772760AF38B7B8B49AEBFE3986CF167E754342BF8430B317117229EF6565E9191E78EBCD936A9F96EB6D6ED84ABC76AA13E6BC3494D26C2FFB674603E1C62A4FA3B942C63CBE0D7CD0661081C49CEAC0951AA8E40339E1D87D4DE1908C8CB89E8F28E2AB87C2A082CF504E3F41FD63BF6CCBA2CE89000BF97673C71584A4C416BA2A12C8F781721C3A0271868D4C01495698C6FB62B53D7B02BFE00</code></pre>
<pre><code>encrypted_data = B6BEC353AE06B2BCCC77E6ED00D458B0CE8BD00E48B67E24CBFECE273FABCCA3CDE69CE1CC0FCFCA426A3CB86F12238E36C585AE79DBBB4B08243A505F329B74F708211ADFE5E996DDEA37FD072338A2E69EC92EEF8D8EF358CCF24175F68B8DDEF02048FA8DF4A7A50E952C78FA6800CDB782DF680D75B5FB3657DE066349A836F45051DB4DD81E5F321F9668A14341B419F76E83F2F84BF2AEB3474136B4AD364C5B6227AC5FF1250C6B2145E024055D8AB53AFE668A406114F187DB5FE3C2AB1C3FAF0A0FA6F1E66033EAD6B387B1E0FB118E116C4FDEA18F81E51DA6DEBCCA70B59508B2EC13057EC08A7CB93A4DFC44A34B627184A6A4ACAEC9AEB62B4A0496716FE5C6CEAF3A2D442C23CDD4AB17BE6EEF09C2ACBAD404B0ABCA5709689D64AE76EF1571D138B1D795021F0D9B0FF6382C13C1E214373F4E8D167D4E707A98C5E6D7A7C9C094D82F9AB082C842</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 14 A4 05 00 D6 F7 85 65
0010 | 78 01 00 00 1F 5F 04 F5 F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
0030 | AD DF BD 26 CA 9A FC C4 FE 50 01 00 F8 72 E0 E5
0040 | AA DE 91 C4 BD 03 45 79 55 C8 86 10 A8 03 31 C3
0050 | AB A9 C6 0C 8F E5 26 D0 83 60 88 BA 4F 1D AB AC
0060 | 99 20 1F EB 86 A1 86 09 09 D6 1E 26 88 5D A3 D5
0070 | 40 A2 9E 09 FB A8 9B 2E 4D A6 3E 1E 1E 97 95 69
0080 | 1C FF AD 59 F9 B7 75 00 0C A7 72 09 66 03 24 F9
0090 | 0B 89 18 6D B0 63 24 72 13 5D 29 91 95 3B 61 16
00A0 | 93 95 6A C1 FE 4E D3 8A 03 0F 54 4F 37 20 1C 04
00B0 | 3F F0 D1 2B 3A 1D CB C8 E5 FC 74 6E 13 8D 73 47
00C0 | F4 30 EC 9C 12 88 DB ED 5D FF 77 D4 1A F1 6C 73
00D0 | 2E 3C 97 19 72 03 25 BC 76 9D 9D 7B 99 E4 47 0D
00E0 | 9D C4 CC F0 9B 17 E2 12 31 BF 18 ED 0A 15 67 05
00F0 | D7 72 76 0A F3 8B 7B 8B 49 AE BF E3 98 6C F1 67
0100 | E7 54 34 2B F8 43 0B 31 71 17 22 9E F6 56 5E 91
0110 | 91 E7 8E BC D9 36 A9 F9 6E B6 D6 ED 84 AB C7 6A
0120 | A1 3E 6B C3 49 4D 26 C2 FF B6 74 60 3E 1C 62 A4
0130 | FA 3B 94 2C 63 CB E0 D7 CD 06 61 08 1C 49 CE AC
0140 | 09 51 AA 8E 40 33 9E 1D 87 D4 DE 19 08 C8 CB 89
0150 | E8 F2 8E 2A B8 7C 2A 08 2C F5 04 E3 F4 1F D6 3B
0160 | F6 CC BA 2C E8 90 00 BF 97 67 3C 71 58 4A 4C 41
0170 | 6B A2 A1 2C 8F 78 17 21 C3 A0 27 18 68 D4 C0 14
0180 | 95 69 8C 6F B6 2B 53 D7 B0 2B FE 00</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 BC 01 03 00 93 04 87 65
0010 | 78 01 00 00 1F 5F 04 F5 CA 3C B3 BE 46 BF BE 4B
0020 | C4 8A 94 6A FB 97 21 54 51 13 E1 CE DD 81 B1 3A
0030 | C0 EB 3D B2 61 FA E6 C2 FE 50 01 00 B6 BE C3 53
0040 | AE 06 B2 BC CC 77 E6 ED 00 D4 58 B0 CE 8B D0 0E
0050 | 48 B6 7E 24 CB FE CE 27 3F AB CC A3 CD E6 9C E1
0060 | CC 0F CF CA 42 6A 3C B8 6F 12 23 8E 36 C5 85 AE
0070 | 79 DB BB 4B 08 24 3A 50 5F 32 9B 74 F7 08 21 1A
0080 | DF E5 E9 96 DD EA 37 FD 07 23 38 A2 E6 9E C9 2E
0090 | EF 8D 8E F3 58 CC F2 41 75 F6 8B 8D DE F0 20 48
00A0 | FA 8D F4 A7 A5 0E 95 2C 78 FA 68 00 CD B7 82 DF
00B0 | 68 0D 75 B5 FB 36 57 DE 06 63 49 A8 36 F4 50 51
00C0 | DB 4D D8 1E 5F 32 1F 96 68 A1 43 41 B4 19 F7 6E
00D0 | 83 F2 F8 4B F2 AE B3 47 41 36 B4 AD 36 4C 5B 62
00E0 | 27 AC 5F F1 25 0C 6B 21 45 E0 24 05 5D 8A B5 3A
00F0 | FE 66 8A 40 61 14 F1 87 DB 5F E3 C2 AB 1C 3F AF
0100 | 0A 0F A6 F1 E6 60 33 EA D6 B3 87 B1 E0 FB 11 8E
0110 | 11 6C 4F DE A1 8F 81 E5 1D A6 DE BC CA 70 B5 95
0120 | 08 B2 EC 13 05 7E C0 8A 7C B9 3A 4D FC 44 A3 4B
0130 | 62 71 84 A6 A4 AC AE C9 AE B6 2B 4A 04 96 71 6F
0140 | E5 C6 CE AF 3A 2D 44 2C 23 CD D4 AB 17 BE 6E EF
0150 | 09 C2 AC BA D4 04 B0 AB CA 57 09 68 9D 64 AE 76
0160 | EF 15 71 D1 38 B1 D7 95 02 1F 0D 9B 0F F6 38 2C
0170 | 13 C1 E2 14 37 3F 4E 8D 16 7D 4E 70 7A 98 C5 E6
0180 | D7 A7 C9 C0 94 D8 2F 9A B0 82 C8 42</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>14A40500D6F78565</code></td>
<td><code>BC01030093048765</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>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td><code>CA3CB3BE46BFBE4BC48A946AFB972154</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td><code>5113E1CEDD81B13AC0EB3DB261FAE6C2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE500100F872E0E5AADE91C4BD034579</code> <code>55C88610A80331C3ABA9C60C8FE526D0</code> <code>836088BA4F1DABAC99201FEB86A18609</code> <code>09D61E26885DA3D540A29E09FBA89B2E</code> <code>4DA63E1E1E9795691CFFAD59F9B77500</code> <code>0CA77209660324F90B89186DB0632472</code> <code>135D2991953B611693956AC1FE4ED38A</code> <code>030F544F37201C043FF0D12B3A1DCBC8</code> <code>E5FC746E138D7347F430EC9C1288DBED</code> <code>5DFF77D41AF16C732E3C9719720325BC</code> <code>769D9D7B99E4470D9DC4CCF09B17E212</code> <code>31BF18ED0A156705D772760AF38B7B8B</code> <code>49AEBFE3986CF167E754342BF8430B31</code> <code>7117229EF6565E9191E78EBCD936A9F9</code> <code>6EB6D6ED84ABC76AA13E6BC3494D26C2</code> <code>FFB674603E1C62A4FA3B942C63CBE0D7</code> <code>CD0661081C49CEAC0951AA8E40339E1D</code> <code>87D4DE1908C8CB89E8F28E2AB87C2A08</code> <code>2CF504E3F41FD63BF6CCBA2CE89000BF</code> <code>97673C71584A4C416BA2A12C8F781721</code> <code>C3A0271868D4C01495698C6FB62B53D7</code><br> <code>B02BFE00</code></td>
<td><code>FE500100B6BEC353AE06B2BCCC77E6ED</code> <code>00D458B0CE8BD00E48B67E24CBFECE27</code> <code>3FABCCA3CDE69CE1CC0FCFCA426A3CB8</code> <code>6F12238E36C585AE79DBBB4B08243A50</code> <code>5F329B74F708211ADFE5E996DDEA37FD</code> <code>072338A2E69EC92EEF8D8EF358CCF241</code> <code>75F68B8DDEF02048FA8DF4A7A50E952C</code> <code>78FA6800CDB782DF680D75B5FB3657DE</code> <code>066349A836F45051DB4DD81E5F321F96</code> <code>68A14341B419F76E83F2F84BF2AEB347</code> <code>4136B4AD364C5B6227AC5FF1250C6B21</code> <code>45E024055D8AB53AFE668A406114F187</code> <code>DB5FE3C2AB1C3FAF0A0FA6F1E66033EA</code> <code>D6B387B1E0FB118E116C4FDEA18F81E5</code> <code>1DA6DEBCCA70B59508B2EC13057EC08A</code> <code>7CB93A4DFC44A34B627184A6A4ACAEC9</code> <code>AEB62B4A0496716FE5C6CEAF3A2D442C</code> <code>23CDD4AB17BE6EEF09C2ACBAD404B0AB</code> <code>CA5709689D64AE76EF1571D138B1D795</code> <code>021F0D9B0FF6382C13C1E214373F4E8D</code> <code>167D4E707A98C5E6D7A7C9C094D82F9A</code><br> <code>B082C842</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 = 58ABE6B4D20D52939B1A7D4A066FE9D94B893258701F5F2518EEBE068F33D13E89586194A33C7C6A9C4E17B0DEE95AED5F7B2C0EA20BA0034FAEDA104E17EC75D9FAF5B157E36C13949573AE2AD13A7A00D4087D046ABA8073836847F3B0C60BCA9563F1A630AB351AE48C44BB3147B0D0D09233B5BEDC3C534D7D40BCB16E296114D8C1EC56920CB986E61ECFC782BDD92DC2C0FDD51DFB6A5B4F19B110DF1B8AA21E467BC2C0573AEBD84AFC447618E2124F13A0B38409E8F2E42179196285F5CC50844AA6F2FA30F23914B036D629085CB65FADEA658C80333A3BAE61025A781817BA0015931698BCC04E03B157891966E69BAAAC013477286FBA0627B845</code></pre>
<pre><code>auth_key = BAA343428ED11325DE9066B341F1ED2219D7BE6C0C4462603A14F6029FA105BE1A2F2A0DF743CF9AE78A8B18D335A96A11FEB1CF38D09E50C4F3FD97E0C64C5E39EF859CAEEC41C37C7CBE113FE94487D851D3CF7CA9F9AA07047D5EF077A7097F1DF5F87207B46315B1D5FE7EE5888B358EE9DCEE9D9E88CA30B2E744439EA9512DFF5BB28AA0BF2D0442A9D980D719A33A30529D9AF54876205DE12E89A3EF02577B0F6B3E3513E3D25FF995B5DDD1550E395A5CF15C35537CE94EF468369ED2D8B8CA061C6789FA39269AA234F59C6417085F2B6A9A24A99BAF876816A07FCD11F626131B94829330C78F388836E67E5D040A85F339727B789C3F740A04E7</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 FC 5B AA D6 F7 85 65
0010 | AC 00 00 00 34 F7 CB 3B F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
0030 | AD DF BD 26 CA 9A FC C4 A1 08 F6 6E E0 B5 8C 3A
0040 | E0 85 4D CA BA 23 BF 61</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 D8 29 DE 93 04 87 65
0010 | AC 00 00 00 34 F7 CB 3B CA 3C B3 BE 46 BF BE 4B
0020 | C4 8A 94 6A FB 97 21 54 51 13 E1 CE DD 81 B1 3A
0030 | C0 EB 3D B2 61 FA E6 C2 25 46 18 89 55 6F 9A DB
0040 | 74 A5 A2 EB AA 3A 27 53</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,7 +817,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>01FC5BAAD6F78565</code></td>
<td><code>01D829DE93048765</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>
@ -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>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td><code>CA3CB3BE46BFBE4BC48A946AFB972154</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td><code>5113E1CEDD81B13AC0EB3DB261FAE6C2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>A108F66EE0B58C3AE0854DCABA23BF61</code></td>
<td><code>25461889556F9ADB74A5A2EBAA3A2753</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>