Update content of files

This commit is contained in:
GitHub Action 2024-11-10 13:55:00 +00:00
parent f71c74c1f1
commit bf99bf37f6
56 changed files with 9748 additions and 252 deletions
data/web
corefork.telegram.org
constructor
method
mtproto
type
webappcontent.telegram.org

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -2,12 +2,36 @@
<html class="">
<head>
<meta charset="utf-8">
<title>channels.getSponsoredMessages</title>
<title>payments.convertStarGift</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Get a list of sponsored messages">
<meta property="og:title" content="channels.getSponsoredMessages">
<meta property="description" content="Parameters
Name
Type
Description
user_id
InputUser
 
msg_id
int
 
Result
Bool
Bots can use this method">
<meta property="og:title" content="payments.convertStarGift">
<meta property="og:image" content="">
<meta property="og:description" content="Get a list of sponsored messages">
<meta property="og:description" content="Parameters
Name
Type
Description
user_id
InputUser
 
msg_id
int
 
Result
Bool
Bots can use this method">
<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">
@ -39,11 +63,10 @@
<div class="container clearfix">
<div class="dev_page">
<div id="dev_page_content_wrap" class=" ">
<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="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/channels.getSponsoredMessages" >channels.getSponsoredMessages</a></li></ul></div>
<h1 id="dev_page_title">channels.getSponsoredMessages</h1>
<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="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/payments.convertStarGift" >payments.convertStarGift</a></li></ul></div>
<h1 id="dev_page_title">payments.convertStarGift</h1>
<div id="dev_page_content"><p>Get a list of sponsored messages</p>
<p><div class="clearfix">
<div id="dev_page_content"><p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 192 <b class="caret"></b></a>
@ -55,7 +78,10 @@
</li>
</ul>
</div>
<pre class="page_scheme"> <code>Method schema is available as of layer 192. <a href="?layer=192">Switch »</a></code></pre></p>
<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>;
<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>;
---functions---
<a href="/method/payments.convertStarGift" class="current_page_link" >payments.convertStarGift</a>#421e027 user_id:<a href="/type/InputUser" >InputUser</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</a>;</code></pre></p>
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
<table class="table">
<thead>
@ -67,41 +93,20 @@
</thead>
<tbody>
<tr>
<td><strong>channel</strong></td>
<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td>
<td>Peer</td>
<td><strong>user_id</strong></td>
<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td>
<td> </td>
</tr>
<tr>
<td><strong>msg_id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3>
<p><a href="/type/messages.SponsoredMessages">messages.SponsoredMessages</a></p>
<h3><a class="anchor" href="#possible-errors" id="possible-errors" name="possible-errors"><i class="anchor-icon"></i></a>Possible errors</h3>
<table class="table">
<thead>
<tr>
<th>Code</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>400</td>
<td>CHANNEL_INVALID</td>
<td>The provided channel is invalid.</td>
</tr>
<tr>
<td>400</td>
<td>CHANNEL_PRIVATE</td>
<td>You haven't joined this channel/supergroup.</td>
</tr>
<tr>
<td>400</td>
<td>MSG_ID_INVALID</td>
<td>Invalid message ID provided.</td>
</tr>
</tbody>
</table></div>
<p><a href="/type/Bool">Bool</a></p>
<h3><a class="anchor" href="#bots-can-use-this-method" id="bots-can-use-this-method" name="bots-can-use-this-method"><i class="anchor-icon"></i></a>Bots can use this method</h3></div>
</div>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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 68 BD 06 00 F4 2D F8 66
0010 | 14 00 00 00 F1 8E 7E BE F4 8D 0E 7A 11 34 9A 03
0020 | 3A AC A4 9E 64 75 1C C2</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 24 EE 06 00 B9 B8 30 67
0010 | 14 00 00 00 F1 8E 7E BE 2F AF 63 7D 5B C0 6E B2
0020 | EF 1C 5B 3D 62 04 7E 51</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>68BD0600F42DF866</code></td>
<td><code>24EE0600B9B83067</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>F48D0E7A11349A033AACA49E64751CC2</code></td>
<td><code>2FAF637D5BC06EB2EF1C5B3D62047E51</code></td>
<td>Random number</td>
</tr>
</tbody>
@ -104,13 +104,13 @@
<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 5C CB 4E F4 2D F8 66
0010 | 60 00 00 00 63 24 16 05 F4 8D 0E 7A 11 34 9A 03
0020 | 3A AC A4 9E 64 75 1C C2 20 14 FE 46 29 11 BC 79
0030 | D0 88 9C 60 4D E6 07 04 08 18 C6 49 E3 8F 59 10
0040 | DD 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>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 E4 D4 9F B9 B8 30 67
0010 | 50 00 00 00 63 24 16 05 2F AF 63 7D 5B C0 6E B2
0020 | EF 1C 5B 3D 62 04 7E 51 F6 9E 6A 9C E3 D2 E7 19
0030 | 66 40 68 B0 69 FE 4E 8E 08 20 3D 5A 71 20 24 36
0040 | 21 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
0050 | 85 1D 9D D0 A5 B7 F7 09 35 5F C3 0B 21 6B E8 6C
0060 | 02 2B B4 C3</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>resPQ#05162463 nonce:int128 server_nonce:int128 pq:string server_public_key_fingerprints:Vector&lt;strlong&gt; = ResPQ;</code></pre>
<table class="table">
@ -132,13 +132,13 @@
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>015CCB4EF42DF866</code></td>
<td><code>01E4D49FB9B83067</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>60000000</code> (96 in decimal)</td>
<td><code>50000000</code> (80 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>F48D0E7A11349A033AACA49E64751CC2</code></td>
<td><code>2FAF637D5BC06EB2EF1C5B3D62047E51</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>2014FE462911BC79D0889C604DE60704</code></td>
<td><code>F69E6A9CE3D2E719664068B069FE4E8E</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0818C649E38F5910DD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1785195544010363101</td>
<td><code>08203D5A7120243621000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2323112424710092321</td>
<td>Single-byte prefix denoting length, an 8-byte string, and three bytes of padding</td>
</tr>
<tr>
@ -180,19 +180,19 @@
<tr>
<td>server_public_key_fingerprints[0]</td>
<td>76, 8</td>
<td><code>A5B7F709355FC30B</code></td>
<td><code>85FD64DE851D9DD0</code></td>
<td>64 lower-order bits of <code>SHA1(server_public_key)</code></td>
</tr>
<tr>
<td>server_public_key_fingerprints[1]</td>
<td>84, 8</td>
<td><code>216BE86C022BB4C3</code></td>
<td><code>A5B7F709355FC30B</code></td>
<td>64 lower-order bits of <code>SHA1(server_public_key)</code></td>
</tr>
<tr>
<td>server_public_key_fingerprints[2]</td>
<td>92, 8</td>
<td><code>85FD64DE851D9DD0</code></td>
<td><code>216BE86C022BB4C3</code></td>
<td>64 lower-order bits of <code>SHA1(server_public_key)</code></td>
</tr>
</tbody>
@ -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 = 1785195544010363101</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1785195544010363101 = 1206075373 * 1480169137</code></p>
<pre><code>p = 1206075373
q = 1480169137</code></pre>
<pre><code>pq = 2323112424710092321</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2323112424710092321 = 1230924953 * 1887290057</code></p>
<pre><code>p = 1230924953
q = 1887290057</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 18 C6 49 E3 8F 59 10 DD 00 00 00
0010 | 04 47 E3 3F ED 00 00 00 04 58 39 96 B1 00 00 00
0020 | F4 8D 0E 7A 11 34 9A 03 3A AC A4 9E 64 75 1C C2
0030 | 20 14 FE 46 29 11 BC 79 D0 88 9C 60 4D E6 07 04
0040 | D7 4C 18 34 B3 6B 2D 77 10 DD 5D F5 2A 33 31 4A
0050 | AC C9 6F 4B A5 C4 D7 89 27 15 3E D6 E0 BD E3 DA
<pre><code>0000 | 95 5F F5 A9 08 20 3D 5A 71 20 24 36 21 00 00 00
0010 | 04 49 5E 6C 99 00 00 00 04 70 7D C2 C9 00 00 00
0020 | 2F AF 63 7D 5B C0 6E B2 EF 1C 5B 3D 62 04 7E 51
0030 | F6 9E 6A 9C E3 D2 E7 19 66 40 68 B0 69 FE 4E 8E
0040 | B3 08 1C 99 E5 91 24 5D 97 06 64 58 3A AA F1 59
0050 | 5D E1 AF F3 BB BC 1D 1A 32 27 3F E8 5E 07 1C E5
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 = 1480169137</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0818C649E38F5910DD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1785195544010363101</td>
<td><code>08203D5A7120243621000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2323112424710092321</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>0447E33FED000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1206075373</td>
<td><code>04495E6C99000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1230924953</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>04583996B1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1480169137</td>
<td><code>04707DC2C9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1887290057</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>F48D0E7A11349A033AACA49E64751CC2</code></td>
<td><code>2FAF637D5BC06EB2EF1C5B3D62047E51</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>2014FE462911BC79D0889C604DE60704</code></td>
<td><code>F69E6A9CE3D2E719664068B069FE4E8E</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>D74C1834B36B2D7710DD5DF52A33314A</code> <code>ACC96F4BA5C4D78927153ED6E0BDE3DA</code></td>
<td><code>B3081C99E591245D970664583AAAF159</code> <code>5DE1AFF3BBBC1D1A32273FE85E071CE5</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1480169137</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 = 955FF5A90818C649E38F5910DD0000000447E33FED00000004583996B1000000F48D0E7A11349A033AACA49E64751CC22014FE462911BC79D0889C604DE60704D74C1834B36B2D7710DD5DF52A33314AACC96F4BA5C4D78927153ED6E0BDE3DA02000000
random_padding_bytes = 5BC70897BDB41A498022A604772329410D0501E0C612EB5789D5F27A60B1F08F735E8AA83F8D5C0F6D6DA5A73825E9A1C0F9BFAE46E8EC6E2C1286EDF997DC07C4550CC6A6D78B74645AA434DE4894D3B0C58759D58DDC2116DCB3A7</code></pre>
<pre><code>data = 955FF5A908203D5A712024362100000004495E6C9900000004707DC2C90000002FAF637D5BC06EB2EF1C5B3D62047E51F69E6A9CE3D2E719664068B069FE4E8EB3081C99E591245D970664583AAAF1595DE1AFF3BBBC1D1A32273FE85E071CE502000000
random_padding_bytes = CEA8B0A0A9B4BE1ACB48910B7CC80DA1B83A643D34A6B4AE52B76487C3B9B043AD1C504C7E7C8A8B10D2377707F31AD949B0D6A0B58AE49CDB5F84B3EDB141EDAD492DF34B6087ED3D5C96DDC309D6323FFC1368A2FC945FE57FA8CC</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 = 3EFA30A4F9CE1A69CEC2A3DB7F2663C27F9B3ACD8D6F41DFA6149A16029B18066D7D84EB89258A610821649E4A5411A42BD402BB5CD50AEDA54152C7C8563E041A1DFE8DC519AAE48EC88EAA5CBA62757C0D6542E72C1A5152FA4F36E585DA97142D190F891C9016CC7437A6A265AB7D70D24A3F4B3C2CDF5D0A76F2A50C55A0A09D5BD03F0FD679A08C43DC0CEA3E64590D205F552A353B940E4303D393A00624ABF12B7B0C1ABD65144AA0E3B22863429D4B85BC24B74C9405B22F15D3445208E31A05A0248A8962CADCB4A6FD0912E48581CD33F44934733FA3B1B5EB78F96E6157A5A29994629AD4C54B38049F329B680FB7CF78CF8AE5BE89A470FC11AD</code></pre>
<pre><code>encrypted_data = 5A07310F2E03891001C20F2A6B2BA8D6A123EBBB714119FDE9DD3B8D5812AEB9A6C7B464A97E1435E2E5C7B3323490679CA9D38800B013C9BAAAB9025AAFCA53B88DB3A91F95A54D01959D00CF8E8BD402C9F3995914B974E2C657AD61274BBE0C49B561BD18C194E5062CA225AD0DDF525523D2AAD2F7DE28AA13FF89E1DB38C555CEC068B7A3D2B75535A72B256C91EA1D6B754A872B0A115CC7CF47F983795FB52AD542243E375FD71D4A8BDE4578C2906BDD0FB51E3FE2847E1E36F820499F41112C085379CA4F7B5206EB6BAB73CE246A17E8B6E0214FEF06DA3DFB8E953197ABA4092D2832C6F1786E67EB03EB2D35C209530F2160CE867D925DB89334</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 6C BD 06 00 F4 2D F8 66
0010 | 40 01 00 00 BE E4 12 D7 F4 8D 0E 7A 11 34 9A 03
0020 | 3A AC A4 9E 64 75 1C C2 20 14 FE 46 29 11 BC 79
0030 | D0 88 9C 60 4D E6 07 04 04 47 E3 3F ED 00 00 00
0040 | 04 58 39 96 B1 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 3E FA 30 A4 F9 CE 1A 69 CE C2 A3 DB
0060 | 7F 26 63 C2 7F 9B 3A CD 8D 6F 41 DF A6 14 9A 16
0070 | 02 9B 18 06 6D 7D 84 EB 89 25 8A 61 08 21 64 9E
0080 | 4A 54 11 A4 2B D4 02 BB 5C D5 0A ED A5 41 52 C7
0090 | C8 56 3E 04 1A 1D FE 8D C5 19 AA E4 8E C8 8E AA
00A0 | 5C BA 62 75 7C 0D 65 42 E7 2C 1A 51 52 FA 4F 36
00B0 | E5 85 DA 97 14 2D 19 0F 89 1C 90 16 CC 74 37 A6
00C0 | A2 65 AB 7D 70 D2 4A 3F 4B 3C 2C DF 5D 0A 76 F2
00D0 | A5 0C 55 A0 A0 9D 5B D0 3F 0F D6 79 A0 8C 43 DC
00E0 | 0C EA 3E 64 59 0D 20 5F 55 2A 35 3B 94 0E 43 03
00F0 | D3 93 A0 06 24 AB F1 2B 7B 0C 1A BD 65 14 4A A0
0100 | E3 B2 28 63 42 9D 4B 85 BC 24 B7 4C 94 05 B2 2F
0110 | 15 D3 44 52 08 E3 1A 05 A0 24 8A 89 62 CA DC B4
0120 | A6 FD 09 12 E4 85 81 CD 33 F4 49 34 73 3F A3 B1
0130 | B5 EB 78 F9 6E 61 57 A5 A2 99 94 62 9A D4 C5 4B
0140 | 38 04 9F 32 9B 68 0F B7 CF 78 CF 8A E5 BE 89 A4
0150 | 70 FC 11 AD</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 84 67 0C 00 B9 B8 30 67
0010 | 40 01 00 00 BE E4 12 D7 2F AF 63 7D 5B C0 6E B2
0020 | EF 1C 5B 3D 62 04 7E 51 F6 9E 6A 9C E3 D2 E7 19
0030 | 66 40 68 B0 69 FE 4E 8E 04 49 5E 6C 99 00 00 00
0040 | 04 70 7D C2 C9 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 5A 07 31 0F 2E 03 89 10 01 C2 0F 2A
0060 | 6B 2B A8 D6 A1 23 EB BB 71 41 19 FD E9 DD 3B 8D
0070 | 58 12 AE B9 A6 C7 B4 64 A9 7E 14 35 E2 E5 C7 B3
0080 | 32 34 90 67 9C A9 D3 88 00 B0 13 C9 BA AA B9 02
0090 | 5A AF CA 53 B8 8D B3 A9 1F 95 A5 4D 01 95 9D 00
00A0 | CF 8E 8B D4 02 C9 F3 99 59 14 B9 74 E2 C6 57 AD
00B0 | 61 27 4B BE 0C 49 B5 61 BD 18 C1 94 E5 06 2C A2
00C0 | 25 AD 0D DF 52 55 23 D2 AA D2 F7 DE 28 AA 13 FF
00D0 | 89 E1 DB 38 C5 55 CE C0 68 B7 A3 D2 B7 55 35 A7
00E0 | 2B 25 6C 91 EA 1D 6B 75 4A 87 2B 0A 11 5C C7 CF
00F0 | 47 F9 83 79 5F B5 2A D5 42 24 3E 37 5F D7 1D 4A
0100 | 8B DE 45 78 C2 90 6B DD 0F B5 1E 3F E2 84 7E 1E
0110 | 36 F8 20 49 9F 41 11 2C 08 53 79 CA 4F 7B 52 06
0120 | EB 6B AB 73 CE 24 6A 17 E8 B6 E0 21 4F EF 06 DA
0130 | 3D FB 8E 95 31 97 AB A4 09 2D 28 32 C6 F1 78 6E
0140 | 67 EB 03 EB 2D 35 C2 09 53 0F 21 60 CE 86 7D 92
0150 | 5D B8 93 34</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 = 5BC70897BDB41A498022A604772329410D0501E0C612EB5789D5F27A6
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>6CBD0600F42DF866</code></td>
<td><code>84670C00B9B83067</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 = 5BC70897BDB41A498022A604772329410D0501E0C612EB5789D5F27A6
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>F48D0E7A11349A033AACA49E64751CC2</code></td>
<td><code>2FAF637D5BC06EB2EF1C5B3D62047E51</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>2014FE462911BC79D0889C604DE60704</code></td>
<td><code>F69E6A9CE3D2E719664068B069FE4E8E</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>0447E33FED000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1206075373</td>
<td><code>04495E6C99000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1230924953</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>04583996B1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1480169137</td>
<td><code>04707DC2C9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1887290057</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 = 5BC70897BDB41A498022A604772329410D0501E0C612EB5789D5F27A6
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001003EFA30A4F9CE1A69CEC2A3DB</code> <code>7F2663C27F9B3ACD8D6F41DFA6149A16</code> <code>029B18066D7D84EB89258A610821649E</code> <code>4A5411A42BD402BB5CD50AEDA54152C7</code> <code>C8563E041A1DFE8DC519AAE48EC88EAA</code> <code>5CBA62757C0D6542E72C1A5152FA4F36</code> <code>E585DA97142D190F891C9016CC7437A6</code> <code>A265AB7D70D24A3F4B3C2CDF5D0A76F2</code> <code>A50C55A0A09D5BD03F0FD679A08C43DC</code> <code>0CEA3E64590D205F552A353B940E4303</code> <code>D393A00624ABF12B7B0C1ABD65144AA0</code> <code>E3B22863429D4B85BC24B74C9405B22F</code> <code>15D3445208E31A05A0248A8962CADCB4</code> <code>A6FD0912E48581CD33F44934733FA3B1</code> <code>B5EB78F96E6157A5A29994629AD4C54B</code> <code>38049F329B680FB7CF78CF8AE5BE89A4</code><br> <code>70FC11AD</code></td>
<td><code>FE0001005A07310F2E03891001C20F2A</code> <code>6B2BA8D6A123EBBB714119FDE9DD3B8D</code> <code>5812AEB9A6C7B464A97E1435E2E5C7B3</code> <code>323490679CA9D38800B013C9BAAAB902</code> <code>5AAFCA53B88DB3A91F95A54D01959D00</code> <code>CF8E8BD402C9F3995914B974E2C657AD</code> <code>61274BBE0C49B561BD18C194E5062CA2</code> <code>25AD0DDF525523D2AAD2F7DE28AA13FF</code> <code>89E1DB38C555CEC068B7A3D2B75535A7</code> <code>2B256C91EA1D6B754A872B0A115CC7CF</code> <code>47F983795FB52AD542243E375FD71D4A</code> <code>8BDE4578C2906BDD0FB51E3FE2847E1E</code> <code>36F820499F41112C085379CA4F7B5206</code> <code>EB6BAB73CE246A17E8B6E0214FEF06DA</code> <code>3DFB8E953197ABA4092D2832C6F1786E</code> <code>67EB03EB2D35C209530F2160CE867D92</code><br> <code>5DB89334</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 5BC70897BDB41A498022A604772329410D0501E0C612EB5789D5F27A6
<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 74 4E FA F4 2D F8 66
0010 | E0 02 00 00 5C 07 E8 D0 F4 8D 0E 7A 11 34 9A 03
0020 | 3A AC A4 9E 64 75 1C C2 20 14 FE 46 29 11 BC 79
0030 | D0 88 9C 60 4D E6 07 04 FE 50 02 00 81 39 3B E2
0040 | 2F CB 6D 23 AF 78 17 21 EB C2 20 D4 8E 2A 32 6B
0050 | 53 BC 21 F2 1B A4 55 FF 5E D5 E4 18 14 53 7C C6
0060 | 28 8A E9 98 B3 C7 F4 6B 41 25 F6 84 8C 6E DF 21
0070 | 8C 47 CC 8D 87 6D D0 9C 29 3B 23 68 43 C7 18 00
0080 | 32 D0 12 95 91 B9 56 92 A5 97 FE EE 72 42 FC FB
0090 | 20 AA 1C 83 54 31 3E 45 27 8E FF 98 19 07 58 CD
00A0 | 83 E5 7B 9B B7 01 2E FF 06 6F 17 DE B5 96 63 E3
00B0 | 98 6F 78 5B 7A 6D 3B FE B6 8F 13 79 38 82 35 A4
00C0 | 3E 2F 86 18 D0 6E 08 BB DB 9D 11 0E 38 04 EC 5B
00D0 | E0 62 E0 BD 56 02 DA 1E 52 D9 16 2D 57 E1 1F D6
00E0 | AE E5 65 93 39 6B E1 0F 16 6C 54 10 C2 12 4E C2
00F0 | F4 E8 B7 69 27 42 D5 4E BD DD D1 B0 B3 81 6E DA
0100 | AF B8 42 C8 8A AC C8 29 CD A9 89 E3 CC 1F 4D AB
0110 | 80 93 20 C1 43 9E 5A EE C2 8D A4 5B 20 BF 2A 48
0120 | 40 C4 10 B5 61 EC 3E 2A 9C 97 3B C3 DC E4 C5 A3
0130 | 0D BF 43 D7 2A 44 01 75 A5 93 4E 7D 20 19 76 79
0140 | C3 96 BD 30 23 12 95 51 AE 20 8C 98 3E 6B 78 C8
0150 | B4 BE 4D F5 48 87 54 C4 B0 3F AA E5 D3 FB 4E D3
0160 | 6A BC 87 20 08 4F AF 57 1B 7A D5 B4 8B 55 BD C7
0170 | 24 D0 F5 CD F6 CE 65 A6 EC D0 57 40 82 FB 01 6B
0180 | FA 76 2F 46 65 73 28 2E E4 C7 85 99 65 82 68 7E
0190 | 9A 04 C1 04 47 CB F0 F0 C4 5E C2 5C 14 45 48 EE
01A0 | E3 0F 79 6B B8 B9 49 AA C6 05 34 9F 1D D2 5D 90
01B0 | 33 7A 0E 8E F5 28 A0 9F 17 80 F3 BF DB AF DF 4B
01C0 | A8 A0 6B 47 D7 46 20 21 1B 1F 6D B2 82 D1 EF 87
01D0 | AA 0E F1 0E 2C AD E0 4B 5A 08 F5 79 D3 0B 01 B7
01E0 | CC B8 A3 A3 6E 70 2D 22 0B 45 4A 18 62 43 60 90
01F0 | 0D 02 77 A8 C3 F2 57 F7 48 1D E2 1B 35 0E B2 84
0200 | F4 81 FB 36 8D C1 13 97 1A C8 55 C5 69 BC 54 A2
0210 | A5 DE 60 B8 C3 BB 64 29 D3 25 A7 93 BD 47 A2 2D
0220 | E5 39 07 1D 4A F7 31 F2 94 80 C9 B0 8B 6D 67 56
0230 | F3 7C 93 AC FC D9 D0 CF 36 66 EA 9F 06 62 C1 A5
0240 | BC 0D B7 5B 7B 28 9E 73 B6 7A FA 94 88 3D A8 E5
0250 | 8F 65 42 AB A0 A9 C3 0A 95 C0 95 AE 3D 0B A7 3E
0260 | 2C D2 D7 84 D0 A3 D1 09 95 BB F8 08 BD 8A 47 E8
0270 | E5 8D 6C 9E FA 51 44 05 38 18 62 49 A5 6A 16 A9
0280 | 60 A8 B4 02 A1 19 53 76 CA B8 0E 9A</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 40 D3 B7 B9 B8 30 67
0010 | 78 02 00 00 5C 07 E8 D0 2F AF 63 7D 5B C0 6E B2
0020 | EF 1C 5B 3D 62 04 7E 51 F6 9E 6A 9C E3 D2 E7 19
0030 | 66 40 68 B0 69 FE 4E 8E FE 50 02 00 2C 35 3B 45
0040 | BB 4C 8A 02 86 1B 5D 80 F4 28 60 BF A9 3B 75 CD
0050 | 22 E7 8F 8D 74 32 54 BE 72 8E C2 2A 49 4A 6B 7E
0060 | 51 61 91 6F F9 11 A9 A3 8E DE E3 8C D1 EE 4E 50
0070 | 33 F1 6E 53 99 10 D7 56 CA 82 82 A0 04 B8 AC D8
0080 | 23 F5 B8 17 FC D5 52 E6 51 1E 4C CE 6E F6 17 44
0090 | 00 57 9B 86 EA 86 5F 77 AF 95 D6 E2 1D 6D 08 CA
00A0 | 0A 9A 51 D0 52 8C A3 76 AC 77 86 2D D6 80 A5 98
00B0 | 7C B1 1C 4E 0B 1C DE 61 FA BB 72 F1 D2 4D 3E 7C
00C0 | 80 CA 71 F9 01 75 DC 64 41 E1 36 70 49 2C D9 94
00D0 | A6 7D 01 00 D6 9B AD 71 40 09 38 0D 27 7E F6 A3
00E0 | 79 D7 E5 89 20 75 90 76 A4 53 88 4C 01 0C F9 8B
00F0 | 4F 07 7F 0A 0D 11 2C 35 99 19 D7 10 75 95 DA FB
0100 | 03 BA D7 C6 4B F0 3C E5 36 D7 89 60 D7 AC CD 3B
0110 | DA 50 49 67 63 9A E8 C2 06 CB 37 53 A7 D5 AD 03
0120 | 18 0A 85 57 6D 34 2D 07 0B BB D3 A0 D2 13 12 29
0130 | 82 C2 5E 62 B8 7D DE CA 06 1F A6 8E 97 91 40 74
0140 | 6D 8B 33 17 34 3D E6 BF 75 F0 44 09 C1 9E AD 57
0150 | 68 48 D5 46 E6 F0 D5 F3 23 78 C5 72 F2 8B EA 68
0160 | 53 2D 08 DC E0 FC AF 27 7A 55 3D 87 F2 84 9A D6
0170 | BB B0 8B A2 3E FF 3B 9A C7 50 99 11 7D 8B C3 0F
0180 | A3 B5 04 DB A3 42 42 AA 3F 9F FB C2 0A F8 D6 87
0190 | 74 65 DA 84 13 48 96 70 78 B1 03 73 61 11 68 8D
01A0 | 78 77 5F 63 B6 92 C7 2B EC 94 CC 3C 24 87 03 8D
01B0 | E6 42 A1 8B BF FB DA 1A F5 5F 99 63 0F DD 41 7A
01C0 | 6C 4A 4F 2B A6 D9 FC 77 2C 53 1F 28 6B 0B 84 D9
01D0 | E0 E3 56 96 CD 67 E3 85 C2 E9 74 4A 0F B3 8C 0F
01E0 | 46 A0 A8 40 EE 1B 72 51 1B A8 39 D0 6C 83 C9 55
01F0 | 1B 21 D0 93 52 50 FD CB 01 B9 61 7F D4 0D 6B 45
0200 | 7E 00 F6 C8 26 86 39 F0 5D B0 60 98 08 9E FB 43
0210 | C3 2E D0 F0 13 6E 5C E6 94 56 06 63 A2 16 3E A7
0220 | D8 BC C3 C7 B5 EB 7C E2 64 3B 35 85 71 EF C7 D6
0230 | 8E 1F 03 C3 4C F6 AF 1C 78 21 00 00 5F B2 5E 52
0240 | 69 1A 9D 61 75 62 74 38 BA 4A 21 2B 2C 07 00 6D
0250 | 86 9A FD 8C 3F 74 A5 4D 0B FE 72 05 73 26 E9 FE
0260 | E4 8B 2D 32 9C 7A 0F 18 DF 47 92 AD 07 BF D1 F7
0270 | C1 15 5E 86 4E 79 4C E1 14 EA 67 3B 51 57 F7 9D
0280 | 41 20 87 CB 41 FC 65 BA F3 FB 80 9B</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 = 5BC70897BDB41A498022A604772329410D0501E0C612EB5789D5F27A6
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01744EFAF42DF866</code></td>
<td><code>0140D3B7B9B83067</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>E0020000</code> (736 in decimal)</td>
<td><code>78020000</code> (632 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 5BC70897BDB41A498022A604772329410D0501E0C612EB5789D5F27A6
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>F48D0E7A11349A033AACA49E64751CC2</code></td>
<td><code>2FAF637D5BC06EB2EF1C5B3D62047E51</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>2014FE462911BC79D0889C604DE60704</code></td>
<td><code>F69E6A9CE3D2E719664068B069FE4E8E</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE50020081393BE22FCB6D23AF781721</code> <code>EBC220D48E2A326B53BC21F21BA455FF</code> <code>5ED5E41814537CC6288AE998B3C7F46B</code> <code>4125F6848C6EDF218C47CC8D876DD09C</code> <code>293B236843C7180032D0129591B95692</code> <code>A597FEEE7242FCFB20AA1C8354313E45</code> <code>278EFF98190758CD83E57B9BB7012EFF</code> <code>066F17DEB59663E3986F785B7A6D3BFE</code> <code>B68F1379388235A43E2F8618D06E08BB</code> <code>DB9D110E3804EC5BE062E0BD5602DA1E</code> <code>52D9162D57E11FD6AEE56593396BE10F</code> <code>166C5410C2124EC2F4E8B7692742D54E</code> <code>BDDDD1B0B3816EDAAFB842C88AACC829</code> <code>CDA989E3CC1F4DAB809320C1439E5AEE</code> <code>C28DA45B20BF2A4840C410B561EC3E2A</code> <code>9C973BC3DCE4C5A30DBF43D72A440175</code> <code>A5934E7D20197679C396BD3023129551</code> <code>AE208C983E6B78C8B4BE4DF5488754C4</code> <code>B03FAAE5D3FB4ED36ABC8720084FAF57</code> <code>1B7AD5B48B55BDC724D0F5CDF6CE65A6</code> <code>ECD0574082FB016BFA762F466573282E</code> <code>E4C785996582687E9A04C10447CBF0F0</code> <code>C45EC25C144548EEE30F796BB8B949AA</code> <code>C605349F1DD25D90337A0E8EF528A09F</code> <code>1780F3BFDBAFDF4BA8A06B47D7462021</code> <code>1B1F6DB282D1EF87AA0EF10E2CADE04B</code> <code>5A08F579D30B01B7CCB8A3A36E702D22</code> <code>0B454A18624360900D0277A8C3F257F7</code> <code>481DE21B350EB284F481FB368DC11397</code> <code>1AC855C569BC54A2A5DE60B8C3BB6429</code> <code>D325A793BD47A22DE539071D4AF731F2</code> <code>9480C9B08B6D6756F37C93ACFCD9D0CF</code> <code>3666EA9F0662C1A5BC0DB75B7B289E73</code> <code>B67AFA94883DA8E58F6542ABA0A9C30A</code> <code>95C095AE3D0BA73E2CD2D784D0A3D109</code> <code>95BBF808BD8A47E8E58D6C9EFA514405</code> <code>38186249A56A16A960A8B402A1195376</code><br> <code>CAB80E9A</code></td>
<td><code>FE5002002C353B45BB4C8A02861B5D80</code> <code>F42860BFA93B75CD22E78F8D743254BE</code> <code>728EC22A494A6B7E5161916FF911A9A3</code> <code>8EDEE38CD1EE4E5033F16E539910D756</code> <code>CA8282A004B8ACD823F5B817FCD552E6</code> <code>511E4CCE6EF6174400579B86EA865F77</code> <code>AF95D6E21D6D08CA0A9A51D0528CA376</code> <code>AC77862DD680A5987CB11C4E0B1CDE61</code> <code>FABB72F1D24D3E7C80CA71F90175DC64</code> <code>41E13670492CD994A67D0100D69BAD71</code> <code>4009380D277EF6A379D7E58920759076</code> <code>A453884C010CF98B4F077F0A0D112C35</code> <code>9919D7107595DAFB03BAD7C64BF03CE5</code> <code>36D78960D7ACCD3BDA504967639AE8C2</code> <code>06CB3753A7D5AD03180A85576D342D07</code> <code>0BBBD3A0D213122982C25E62B87DDECA</code> <code>061FA68E979140746D8B3317343DE6BF</code> <code>75F04409C19EAD576848D546E6F0D5F3</code> <code>2378C572F28BEA68532D08DCE0FCAF27</code> <code>7A553D87F2849AD6BBB08BA23EFF3B9A</code> <code>C75099117D8BC30FA3B504DBA34242AA</code> <code>3F9FFBC20AF8D6877465DA8413489670</code> <code>78B103736111688D78775F63B692C72B</code> <code>EC94CC3C2487038DE642A18BBFFBDA1A</code> <code>F55F99630FDD417A6C4A4F2BA6D9FC77</code> <code>2C531F286B0B84D9E0E35696CD67E385</code> <code>C2E9744A0FB38C0F46A0A840EE1B7251</code> <code>1BA839D06C83C9551B21D0935250FDCB</code> <code>01B9617FD40D6B457E00F6C8268639F0</code> <code>5DB06098089EFB43C32ED0F0136E5CE6</code> <code>94560663A2163EA7D8BCC3C7B5EB7CE2</code> <code>643B358571EFC7D68E1F03C34CF6AF1C</code> <code>782100005FB25E52691A9D6175627438</code> <code>BA4A212B2C07006D869AFD8C3F74A54D</code> <code>0BFE72057326E9FEE48B2D329C7A0F18</code> <code>DF4792AD07BFD1F7C1155E864E794CE1</code> <code>14EA673B5157F79D412087CB41FC65BA</code><br> <code>F3FB809B</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 5BC70897BDB41A498022A604772329410D0501E0C612EB5789D5F27A6
<!-- 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 = 81393BE22FCB6D23AF781721EBC220D48E2A326B53BC21F21BA455FF5ED5E41814537CC6288AE998B3C7F46B4125F6848C6EDF218C47CC8D876DD09C293B236843C7180032D0129591B95692A597FEEE7242FCFB20AA1C8354313E45278EFF98190758CD83E57B9BB7012EFF066F17DEB59663E3986F785B7A6D3BFEB68F1379388235A43E2F8618D06E08BBDB9D110E3804EC5BE062E0BD5602DA1E52D9162D57E11FD6AEE56593396BE10F166C5410C2124EC2F4E8B7692742D54EBDDDD1B0B3816EDAAFB842C88AACC829CDA989E3CC1F4DAB809320C1439E5AEEC28DA45B20BF2A4840C410B561EC3E2A9C973BC3DCE4C5A30DBF43D72A440175A5934E7D20197679C396BD3023129551AE208C983E6B78C8B4BE4DF5488754C4B03FAAE5D3FB4ED36ABC8720084FAF571B7AD5B48B55BDC724D0F5CDF6CE65A6ECD0574082FB016BFA762F466573282EE4C785996582687E9A04C10447CBF0F0C45EC25C144548EEE30F796BB8B949AAC605349F1DD25D90337A0E8EF528A09F1780F3BFDBAFDF4BA8A06B47D74620211B1F6DB282D1EF87AA0EF10E2CADE04B5A08F579D30B01B7CCB8A3A36E702D220B454A18624360900D0277A8C3F257F7481DE21B350EB284F481FB368DC113971AC855C569BC54A2A5DE60B8C3BB6429D325A793BD47A22DE539071D4AF731F29480C9B08B6D6756F37C93ACFCD9D0CF3666EA9F0662C1A5BC0DB75B7B289E73B67AFA94883DA8E58F6542ABA0A9C30A95C095AE3D0BA73E2CD2D784D0A3D10995BBF808BD8A47E8E58D6C9EFA51440538186249A56A16A960A8B402A1195376CAB80E9A
tmp_aes_key = 2023941FFF5A2DB7A0C168FCFCFE5DE4DE7F5151A6C2262DB6E18B6D8C1A6BB4
tmp_aes_iv = 56B9A097F20D603B13C624754C821F7547E209B3F02450F58511B25FD74C1834</code></pre>
<pre><code>encrypted_answer = 2C353B45BB4C8A02861B5D80F42860BFA93B75CD22E78F8D743254BE728EC22A494A6B7E5161916FF911A9A38EDEE38CD1EE4E5033F16E539910D756CA8282A004B8ACD823F5B817FCD552E6511E4CCE6EF6174400579B86EA865F77AF95D6E21D6D08CA0A9A51D0528CA376AC77862DD680A5987CB11C4E0B1CDE61FABB72F1D24D3E7C80CA71F90175DC6441E13670492CD994A67D0100D69BAD714009380D277EF6A379D7E58920759076A453884C010CF98B4F077F0A0D112C359919D7107595DAFB03BAD7C64BF03CE536D78960D7ACCD3BDA504967639AE8C206CB3753A7D5AD03180A85576D342D070BBBD3A0D213122982C25E62B87DDECA061FA68E979140746D8B3317343DE6BF75F04409C19EAD576848D546E6F0D5F32378C572F28BEA68532D08DCE0FCAF277A553D87F2849AD6BBB08BA23EFF3B9AC75099117D8BC30FA3B504DBA34242AA3F9FFBC20AF8D6877465DA841348967078B103736111688D78775F63B692C72BEC94CC3C2487038DE642A18BBFFBDA1AF55F99630FDD417A6C4A4F2BA6D9FC772C531F286B0B84D9E0E35696CD67E385C2E9744A0FB38C0F46A0A840EE1B72511BA839D06C83C9551B21D0935250FDCB01B9617FD40D6B457E00F6C8268639F05DB06098089EFB43C32ED0F0136E5CE694560663A2163EA7D8BCC3C7B5EB7CE2643B358571EFC7D68E1F03C34CF6AF1C782100005FB25E52691A9D6175627438BA4A212B2C07006D869AFD8C3F74A54D0BFE72057326E9FEE48B2D329C7A0F18DF4792AD07BFD1F7C1155E864E794CE114EA673B5157F79D412087CB41FC65BAF3FB809B
tmp_aes_key = 91EEAB4AB17C4AF217B52B8A88DCE9BA718F0E0F749A18D608E707A02CB15B83
tmp_aes_iv = E18679D9BC148D5235CBD0A511AC2745B6591852402B750B62C44E63B3081C99</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = E4B8704066E1349B06FC19015AEB17E7DDBC6E8FBA0D89B5F48D0E7A11349A033AACA49E64751CC22014FE462911BC79D0889C604DE6070403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100A52FE320823A15DE9456B7389ECA0A75183D5577A31C5F4CF39C6D465AD774BDA6692473EB6997A60C07469E24E34804707B873E5FC9F2F6ED2C76225B368E35B60E756C2E6EC2910C0B869B736FBAFA53D2B2B23A2F90FFF74D4E4EE4BBA0D98B326E1939F00EF1A07FA5B687893A269BF38DB887A64B7AF1B3EE1B1288AC058A7C92543291D43800045DBCFBCBE4A052B840AE7A6D38EFB7E6832F7E78FE3B824401D811015AE466E78FF7AA935E08888447D2512A572BD5180A05186F333A57DB8D42ED5490A1C5D66E03FE6D8C252445BE663B06ECA53794B21EB51967DA22E0434F5B86EECF4A554BFFDE0ED633E8804E143DEAF67D693AC4B5E239AE51F42DF866F4CBC15C54F7C1AD
answer = BA0D89B5F48D0E7A11349A033AACA49E64751CC22014FE462911BC79D0889C604DE6070403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100A52FE320823A15DE9456B7389ECA0A75183D5577A31C5F4CF39C6D465AD774BDA6692473EB6997A60C07469E24E34804707B873E5FC9F2F6ED2C76225B368E35B60E756C2E6EC2910C0B869B736FBAFA53D2B2B23A2F90FFF74D4E4EE4BBA0D98B326E1939F00EF1A07FA5B687893A269BF38DB887A64B7AF1B3EE1B1288AC058A7C92543291D43800045DBCFBCBE4A052B840AE7A6D38EFB7E6832F7E78FE3B824401D811015AE466E78FF7AA935E08888447D2512A572BD5180A05186F333A57DB8D42ED5490A1C5D66E03FE6D8C252445BE663B06ECA53794B21EB51967DA22E0434F5B86EECF4A554BFFDE0ED633E8804E143DEAF67D693AC4B5E239AE51F42DF866F4CBC15C54F7C1AD</code></pre>
<pre><code>answer_with_hash = 4C127C3A367CB983D98DEBA706C08DF7D7C86D70BA0D89B52FAF637D5BC06EB2EF1C5B3D62047E51F69E6A9CE3D2E719664068B069FE4E8E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001003A76DA32A6D20B3A15D000FE359BA214B48BD4CE0EFC7938999A13E0F265272D488D439D25BD1DBF31BB9F65D1B4B664EBD6882A68764CD363E28BC8D30C9AEF07EFA3C302E96FEFCAD795A5FA6CD3D19A3D54D0C02DF32708E26B63ED747B034DCF2FBA997D52CED31A45F32E89077CB83D3F80F0AB485A8FE79738348BD714EF4C0A95D720758A6533757591A7E28396F54DD4914D19B0D02E2FAF4217B7E6948BE4CE7D7711ACC9A454BEC2E81F1E7C3FF397032246EB197429342E63BCD92F8F6E027CE7068D79304129CBBFF6F58DF9C2156AAF5287428C150BDCF63BFDD3E7693A9035EE34DB4E953A5BDA78264091A07009CF98E03F1F00119CC1FD69B9B830675DCAD3DB6E23E9BE
answer = BA0D89B52FAF637D5BC06EB2EF1C5B3D62047E51F69E6A9CE3D2E719664068B069FE4E8E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001003A76DA32A6D20B3A15D000FE359BA214B48BD4CE0EFC7938999A13E0F265272D488D439D25BD1DBF31BB9F65D1B4B664EBD6882A68764CD363E28BC8D30C9AEF07EFA3C302E96FEFCAD795A5FA6CD3D19A3D54D0C02DF32708E26B63ED747B034DCF2FBA997D52CED31A45F32E89077CB83D3F80F0AB485A8FE79738348BD714EF4C0A95D720758A6533757591A7E28396F54DD4914D19B0D02E2FAF4217B7E6948BE4CE7D7711ACC9A454BEC2E81F1E7C3FF397032246EB197429342E63BCD92F8F6E027CE7068D79304129CBBFF6F58DF9C2156AAF5287428C150BDCF63BFDD3E7693A9035EE34DB4E953A5BDA78264091A07009CF98E03F1F00119CC1FD69B9B830675DCAD3DB6E23E9BE</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 F4 8D 0E 7A 11 34 9A 03 3A AC A4 9E
0010 | 64 75 1C C2 20 14 FE 46 29 11 BC 79 D0 88 9C 60
0020 | 4D E6 07 04 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 2F AF 63 7D 5B C0 6E B2 EF 1C 5B 3D
0010 | 62 04 7E 51 F6 9E 6A 9C E3 D2 E7 19 66 40 68 B0
0020 | 69 FE 4E 8E 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 = BA0D89B5F48D0E7A11349A033AACA49E64751CC22014FE462911BC79D0889C604DE6070
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 | A5 2F E3 20 82 3A 15 DE 94 56 B7 38 9E CA 0A 75
0140 | 18 3D 55 77 A3 1C 5F 4C F3 9C 6D 46 5A D7 74 BD
0150 | A6 69 24 73 EB 69 97 A6 0C 07 46 9E 24 E3 48 04
0160 | 70 7B 87 3E 5F C9 F2 F6 ED 2C 76 22 5B 36 8E 35
0170 | B6 0E 75 6C 2E 6E C2 91 0C 0B 86 9B 73 6F BA FA
0180 | 53 D2 B2 B2 3A 2F 90 FF F7 4D 4E 4E E4 BB A0 D9
0190 | 8B 32 6E 19 39 F0 0E F1 A0 7F A5 B6 87 89 3A 26
01A0 | 9B F3 8D B8 87 A6 4B 7A F1 B3 EE 1B 12 88 AC 05
01B0 | 8A 7C 92 54 32 91 D4 38 00 04 5D BC FB CB E4 A0
01C0 | 52 B8 40 AE 7A 6D 38 EF B7 E6 83 2F 7E 78 FE 3B
01D0 | 82 44 01 D8 11 01 5A E4 66 E7 8F F7 AA 93 5E 08
01E0 | 88 84 47 D2 51 2A 57 2B D5 18 0A 05 18 6F 33 3A
01F0 | 57 DB 8D 42 ED 54 90 A1 C5 D6 6E 03 FE 6D 8C 25
0200 | 24 45 BE 66 3B 06 EC A5 37 94 B2 1E B5 19 67 DA
0210 | 22 E0 43 4F 5B 86 EE CF 4A 55 4B FF DE 0E D6 33
0220 | E8 80 4E 14 3D EA F6 7D 69 3A C4 B5 E2 39 AE 51
0230 | F4 2D F8 66</code></pre>
0130 | 3A 76 DA 32 A6 D2 0B 3A 15 D0 00 FE 35 9B A2 14
0140 | B4 8B D4 CE 0E FC 79 38 99 9A 13 E0 F2 65 27 2D
0150 | 48 8D 43 9D 25 BD 1D BF 31 BB 9F 65 D1 B4 B6 64
0160 | EB D6 88 2A 68 76 4C D3 63 E2 8B C8 D3 0C 9A EF
0170 | 07 EF A3 C3 02 E9 6F EF CA D7 95 A5 FA 6C D3 D1
0180 | 9A 3D 54 D0 C0 2D F3 27 08 E2 6B 63 ED 74 7B 03
0190 | 4D CF 2F BA 99 7D 52 CE D3 1A 45 F3 2E 89 07 7C
01A0 | B8 3D 3F 80 F0 AB 48 5A 8F E7 97 38 34 8B D7 14
01B0 | EF 4C 0A 95 D7 20 75 8A 65 33 75 75 91 A7 E2 83
01C0 | 96 F5 4D D4 91 4D 19 B0 D0 2E 2F AF 42 17 B7 E6
01D0 | 94 8B E4 CE 7D 77 11 AC C9 A4 54 BE C2 E8 1F 1E
01E0 | 7C 3F F3 97 03 22 46 EB 19 74 29 34 2E 63 BC D9
01F0 | 2F 8F 6E 02 7C E7 06 8D 79 30 41 29 CB BF F6 F5
0200 | 8D F9 C2 15 6A AF 52 87 42 8C 15 0B DC F6 3B FD
0210 | D3 E7 69 3A 90 35 EE 34 DB 4E 95 3A 5B DA 78 26
0220 | 40 91 A0 70 09 CF 98 E0 3F 1F 00 11 9C C1 FD 69
0230 | B9 B8 30 67</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 = BA0D89B5F48D0E7A11349A033AACA49E64751CC22014FE462911BC79D0889C604DE6070
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>F48D0E7A11349A033AACA49E64751CC2</code></td>
<td><code>2FAF637D5BC06EB2EF1C5B3D62047E51</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>2014FE462911BC79D0889C604DE60704</code></td>
<td><code>F69E6A9CE3D2E719664068B069FE4E8E</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B5F48D0E7A11349A033AACA49E64751CC22014FE462911BC79D0889C604DE6070
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE000100A52FE320823A15DE9456B738</code> <code>9ECA0A75183D5577A31C5F4CF39C6D46</code> <code>5AD774BDA6692473EB6997A60C07469E</code> <code>24E34804707B873E5FC9F2F6ED2C7622</code> <code>5B368E35B60E756C2E6EC2910C0B869B</code> <code>736FBAFA53D2B2B23A2F90FFF74D4E4E</code> <code>E4BBA0D98B326E1939F00EF1A07FA5B6</code> <code>87893A269BF38DB887A64B7AF1B3EE1B</code> <code>1288AC058A7C92543291D43800045DBC</code> <code>FBCBE4A052B840AE7A6D38EFB7E6832F</code> <code>7E78FE3B824401D811015AE466E78FF7</code> <code>AA935E08888447D2512A572BD5180A05</code> <code>186F333A57DB8D42ED5490A1C5D66E03</code> <code>FE6D8C252445BE663B06ECA53794B21E</code> <code>B51967DA22E0434F5B86EECF4A554BFF</code> <code>DE0ED633E8804E143DEAF67D693AC4B5</code><br> <code>E239AE51</code></td>
<td><code>FE0001003A76DA32A6D20B3A15D000FE</code> <code>359BA214B48BD4CE0EFC7938999A13E0</code> <code>F265272D488D439D25BD1DBF31BB9F65</code> <code>D1B4B664EBD6882A68764CD363E28BC8</code> <code>D30C9AEF07EFA3C302E96FEFCAD795A5</code> <code>FA6CD3D19A3D54D0C02DF32708E26B63</code> <code>ED747B034DCF2FBA997D52CED31A45F3</code> <code>2E89077CB83D3F80F0AB485A8FE79738</code> <code>348BD714EF4C0A95D720758A65337575</code> <code>91A7E28396F54DD4914D19B0D02E2FAF</code> <code>4217B7E6948BE4CE7D7711ACC9A454BE</code> <code>C2E81F1E7C3FF397032246EB19742934</code> <code>2E63BCD92F8F6E027CE7068D79304129</code> <code>CBBFF6F58DF9C2156AAF5287428C150B</code> <code>DCF63BFDD3E7693A9035EE34DB4E953A</code> <code>5BDA78264091A07009CF98E03F1F0011</code><br> <code>9CC1FD69</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>F42DF866</code> (1727540724 in decimal)</td>
<td><code>B9B83067</code> (1731246265 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B5F48D0E7A11349A033AACA49E64751CC22014FE462911BC79D0889C604DE6070
<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 = DDB465BF2B15BB5E590E65AD5119D9A755FAEA5B56272376348FEA06B7272AA740180743B318DDA2FA847276080E749C37B6BCF31AEE36025E38D8D3639409F2E8B603F4FB0362749FDF507CE6E1580421DF2B96B0F0FC7FA07280C28EC5D40DC40BF7E3AC43EE2F403DD2ABE82ADF3567BC33AD734C42415ABDBB902851000F5E42C8B491ACA893B87CFB2F08DFB5149459CDDB704AE6629CF51F4C6B4B5A3F243B1CFC6E7B011ECDE08FB5271BE221AE7F920729A2B78EDD3251AA994F142CC27FE7F4F2CDFBE293CF6C3E4E605F1F214C2CD237F01E7B4DBA48951D6B305C6AE132A5EC418CA0CE4C6A8136145A3B4076D48D7130CB032B0A4B81EC5F5299</code></pre>
<pre><code>b = 98CBA014470F284618197699ABD32699E447FF11FB8EA5F0A9565A18E6B656D23A7F397B27B1EC7B289F775E80317130656FCBD595947BB1DACAE7470B4DFC8EFD720D9CF730E6B97E3335A098F5CE3B79020AD63D4520506EB0F3F691DD3F841D3E011C5D1C7AA29D6321224B7F3BF831A14443D8B7EBE96061BA2194A4BCB9D8B61DB428D8170835611880688CAAE2260D3D77DABE335D3BBC84C0CED8E8097C7231F08F9FBE281201CF3BA7A0D0DBBFA617F69FEC3C9B36F6C19057BE711A247D2555DF10C35F803F09BEEB2A400FED4F4D79638BE775DCD0BAF23BA1963518E460D0BB0040E9C6D09F05CC59E8636C6D457EE1249E377487F3EB9E86BC24</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 = 6EB00018684EC0A4283662EF83A50A51C289FD222B36B426D12EFB77FD6F25E7A6D024B424E819A8D46255F083F847C1CE19FF06CA06EABACD38A0AFB345519D83B7705AEE47EDE37C1FED6CC6EABC5FAACF539D7A0072F0B85C6C57C947C0271B96F6146BE0D98A8B1C743F449CC22F14591403BD0082F82611144E57A946FB2D1381419EF36412776BE932213E79A567D5C18AC66A05577F2638C932A0795AEDAA89616C055B47F6B978670AC407D4C93D048432E20F55588CEA2CD2C945239842917702607406D54E1844933F62531087C1A4D892C31241BC8C7BB2705C13043922D5E20F697CEEC6DAF65C85B34A7ACD41CA181FFC61E4A862EB949FD0FA</code></pre>
<pre><code>g_b = A259648B8D9CC2B1F9BA6AA8F823D84422B5E9C079096845D373EC7D7EAAB4DD5D4EE538FE2FED007A888FE87D4F3732E24341BE1E0D2CCA37CCAAABC823FFCE6C6125F4C834CFC493277F7F2C3D8E4A1D8D2A4DE861395474E670FC78273A1C7CEB8D1A18036DFD88C35598FA481EF1ED1D37D84A307325686D2E1A735ABFF7C7E3FD903FB168CA943F89D034F34B0E4F89BCAB7CF39483D9DA47777F835D6895FEA841719963906EE4B5EC08ACF9E1A77FE13DF860F8B06380A866A0B0FD39D90D819F439E0A79160C9CDCEDBA0250358FFD96EEAA2E13B4DE932A744B79065E509B0C9329AB055C079F15D482F623822361C93A383E571035D9F489118D85</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 F4 8D 0E 7A 11 34 9A 03 3A AC A4 9E
0010 | 64 75 1C C2 20 14 FE 46 29 11 BC 79 D0 88 9C 60
0020 | 4D E6 07 04 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 6E B0 00 18 68 4E C0 A4 28 36 62 EF 83 A5 0A 51
0040 | C2 89 FD 22 2B 36 B4 26 D1 2E FB 77 FD 6F 25 E7
0050 | A6 D0 24 B4 24 E8 19 A8 D4 62 55 F0 83 F8 47 C1
0060 | CE 19 FF 06 CA 06 EA BA CD 38 A0 AF B3 45 51 9D
0070 | 83 B7 70 5A EE 47 ED E3 7C 1F ED 6C C6 EA BC 5F
0080 | AA CF 53 9D 7A 00 72 F0 B8 5C 6C 57 C9 47 C0 27
0090 | 1B 96 F6 14 6B E0 D9 8A 8B 1C 74 3F 44 9C C2 2F
00A0 | 14 59 14 03 BD 00 82 F8 26 11 14 4E 57 A9 46 FB
00B0 | 2D 13 81 41 9E F3 64 12 77 6B E9 32 21 3E 79 A5
00C0 | 67 D5 C1 8A C6 6A 05 57 7F 26 38 C9 32 A0 79 5A
00D0 | ED AA 89 61 6C 05 5B 47 F6 B9 78 67 0A C4 07 D4
00E0 | C9 3D 04 84 32 E2 0F 55 58 8C EA 2C D2 C9 45 23
00F0 | 98 42 91 77 02 60 74 06 D5 4E 18 44 93 3F 62 53
0100 | 10 87 C1 A4 D8 92 C3 12 41 BC 8C 7B B2 70 5C 13
0110 | 04 39 22 D5 E2 0F 69 7C EE C6 DA F6 5C 85 B3 4A
0120 | 7A CD 41 CA 18 1F FC 61 E4 A8 62 EB 94 9F D0 FA</code></pre>
<pre><code>0000 | 54 B6 43 66 2F AF 63 7D 5B C0 6E B2 EF 1C 5B 3D
0010 | 62 04 7E 51 F6 9E 6A 9C E3 D2 E7 19 66 40 68 B0
0020 | 69 FE 4E 8E 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | A2 59 64 8B 8D 9C C2 B1 F9 BA 6A A8 F8 23 D8 44
0040 | 22 B5 E9 C0 79 09 68 45 D3 73 EC 7D 7E AA B4 DD
0050 | 5D 4E E5 38 FE 2F ED 00 7A 88 8F E8 7D 4F 37 32
0060 | E2 43 41 BE 1E 0D 2C CA 37 CC AA AB C8 23 FF CE
0070 | 6C 61 25 F4 C8 34 CF C4 93 27 7F 7F 2C 3D 8E 4A
0080 | 1D 8D 2A 4D E8 61 39 54 74 E6 70 FC 78 27 3A 1C
0090 | 7C EB 8D 1A 18 03 6D FD 88 C3 55 98 FA 48 1E F1
00A0 | ED 1D 37 D8 4A 30 73 25 68 6D 2E 1A 73 5A BF F7
00B0 | C7 E3 FD 90 3F B1 68 CA 94 3F 89 D0 34 F3 4B 0E
00C0 | 4F 89 BC AB 7C F3 94 83 D9 DA 47 77 7F 83 5D 68
00D0 | 95 FE A8 41 71 99 63 90 6E E4 B5 EC 08 AC F9 E1
00E0 | A7 7F E1 3D F8 60 F8 B0 63 80 A8 66 A0 B0 FD 39
00F0 | D9 0D 81 9F 43 9E 0A 79 16 0C 9C DC ED BA 02 50
0100 | 35 8F FD 96 EE AA 2E 13 B4 DE 93 2A 74 4B 79 06
0110 | 5E 50 9B 0C 93 29 AB 05 5C 07 9F 15 D4 82 F6 23
0120 | 82 23 61 C9 3A 38 3E 57 10 35 D9 F4 89 11 8D 85</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 = BA0D89B5F48D0E7A11349A033AACA49E64751CC22014FE462911BC79D0889C604DE6070
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>F48D0E7A11349A033AACA49E64751CC2</code></td>
<td><code>2FAF637D5BC06EB2EF1C5B3D62047E51</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>2014FE462911BC79D0889C604DE60704</code></td>
<td><code>F69E6A9CE3D2E719664068B069FE4E8E</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001006EB00018684EC0A4283662EF</code> <code>83A50A51C289FD222B36B426D12EFB77</code> <code>FD6F25E7A6D024B424E819A8D46255F0</code> <code>83F847C1CE19FF06CA06EABACD38A0AF</code> <code>B345519D83B7705AEE47EDE37C1FED6C</code> <code>C6EABC5FAACF539D7A0072F0B85C6C57</code> <code>C947C0271B96F6146BE0D98A8B1C743F</code> <code>449CC22F14591403BD0082F82611144E</code> <code>57A946FB2D1381419EF36412776BE932</code> <code>213E79A567D5C18AC66A05577F2638C9</code> <code>32A0795AEDAA89616C055B47F6B97867</code> <code>0AC407D4C93D048432E20F55588CEA2C</code> <code>D2C945239842917702607406D54E1844</code> <code>933F62531087C1A4D892C31241BC8C7B</code> <code>B2705C13043922D5E20F697CEEC6DAF6</code> <code>5C85B34A7ACD41CA181FFC61E4A862EB</code><br> <code>949FD0FA</code></td>
<td><code>FE000100A259648B8D9CC2B1F9BA6AA8</code> <code>F823D84422B5E9C079096845D373EC7D</code> <code>7EAAB4DD5D4EE538FE2FED007A888FE8</code> <code>7D4F3732E24341BE1E0D2CCA37CCAAAB</code> <code>C823FFCE6C6125F4C834CFC493277F7F</code> <code>2C3D8E4A1D8D2A4DE861395474E670FC</code> <code>78273A1C7CEB8D1A18036DFD88C35598</code> <code>FA481EF1ED1D37D84A307325686D2E1A</code> <code>735ABFF7C7E3FD903FB168CA943F89D0</code> <code>34F34B0E4F89BCAB7CF39483D9DA4777</code> <code>7F835D6895FEA841719963906EE4B5EC</code> <code>08ACF9E1A77FE13DF860F8B06380A866</code> <code>A0B0FD39D90D819F439E0A79160C9CDC</code> <code>EDBA0250358FFD96EEAA2E13B4DE932A</code> <code>744B79065E509B0C9329AB055C079F15</code> <code>D482F623822361C93A383E571035D9F4</code><br> <code>89118D85</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 = BA0D89B5F48D0E7A11349A033AACA49E64751CC22014FE462911BC79D0889C604DE6070
<!-- 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 = 54B64366F48D0E7A11349A033AACA49E64751CC22014FE462911BC79D0889C604DE607040000000000000000FE0001006EB00018684EC0A4283662EF83A50A51C289FD222B36B426D12EFB77FD6F25E7A6D024B424E819A8D46255F083F847C1CE19FF06CA06EABACD38A0AFB345519D83B7705AEE47EDE37C1FED6CC6EABC5FAACF539D7A0072F0B85C6C57C947C0271B96F6146BE0D98A8B1C743F449CC22F14591403BD0082F82611144E57A946FB2D1381419EF36412776BE932213E79A567D5C18AC66A05577F2638C932A0795AEDAA89616C055B47F6B978670AC407D4C93D048432E20F55588CEA2CD2C945239842917702607406D54E1844933F62531087C1A4D892C31241BC8C7BB2705C13043922D5E20F697CEEC6DAF65C85B34A7ACD41CA181FFC61E4A862EB949FD0FA
padding = 5ED0D63A4F919565BB53FDBD
tmp_aes_key = 2023941FFF5A2DB7A0C168FCFCFE5DE4DE7F5151A6C2262DB6E18B6D8C1A6BB4
tmp_aes_iv = 56B9A097F20D603B13C624754C821F7547E209B3F02450F58511B25FD74C1834</code></pre>
<pre><code>data = 54B643662FAF637D5BC06EB2EF1C5B3D62047E51F69E6A9CE3D2E719664068B069FE4E8E0000000000000000FE000100A259648B8D9CC2B1F9BA6AA8F823D84422B5E9C079096845D373EC7D7EAAB4DD5D4EE538FE2FED007A888FE87D4F3732E24341BE1E0D2CCA37CCAAABC823FFCE6C6125F4C834CFC493277F7F2C3D8E4A1D8D2A4DE861395474E670FC78273A1C7CEB8D1A18036DFD88C35598FA481EF1ED1D37D84A307325686D2E1A735ABFF7C7E3FD903FB168CA943F89D034F34B0E4F89BCAB7CF39483D9DA47777F835D6895FEA841719963906EE4B5EC08ACF9E1A77FE13DF860F8B06380A866A0B0FD39D90D819F439E0A79160C9CDCEDBA0250358FFD96EEAA2E13B4DE932A744B79065E509B0C9329AB055C079F15D482F623822361C93A383E571035D9F489118D85
padding = B7CE3116745C647F117D8ABF
tmp_aes_key = 91EEAB4AB17C4AF217B52B8A88DCE9BA718F0E0F749A18D608E707A02CB15B83
tmp_aes_iv = E18679D9BC148D5235CBD0A511AC2745B6591852402B750B62C44E63B3081C99</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 = 76DC991F1256ADEA1130EF0A9A3F008BD3C9CC710BDD3345470C57A0EB055D0327777FFCD1557F6095667CC188C571796D981B4A8C9B514BCE268EE6C98CC4E4FCA0E0D5F919AC57940EAE92D6F35A466C080DD403C436060169838FA40BD7C45E59C73581BB755F65DB4EB2EF80D81D16442F7C4B7FD390040A533EBA5DDA38D424329DE91F00AE4A304C4A14E0A415EBBD68769121EC2477BC75FBD3ED4B802A61A1557661BDFC69DD2FFEC724F2C46B8F01108B285A9AB5D61ABD0B0C341C3061324510E819B87A5FF977AC2F7A3C5A6582614A2F2E45A013A6A92C1F80E6783CDFB39585A85E2112E57760745857F5DD95C1E7F8CA983FECD9951135B24485F3151CDDED424A44564AF0A29C89843D58794F015E11A6EB7A3F1643747E4A76256569A41DCD2603D7D4DB5CE4B1D95AEE257F93536B5D0103A7BC6D47A8247EE1EFD2FFEBC8DBEC00F4C5F5634ABE</code></pre>
<pre><code>encrypted_data = 516A435DC614F1DE23344C2F119175F514E879A93A05E8989C31817EE3EAB235ABBDDD2ED8A15C3656571D533D0155DBA0DEFC5E8942E36703C6EF2863907D2A2932B7C592018A7338391DAE3ABAFD7268AFAB4569F7872B9EA00370C9DE70B0A48EB82613A0F1618F631D6555DDFAF4CC1FFBC56A2CAA24D788F503821BEF69FB53D510450E2DA50ABDEE509DD4B09EFBEBAEB227257E1721B0961749F697DD1D7CEE0E52A1687D4AAE57A2A202D742DE195AB731D9BFF42D103541EA8735985621202E8D703C7EFD6A2FD78124E148247A2A177AD4FC3CC1D217D63953449F8DFF396F304285CD515B1876643D02FABF4C6281E03B359213085589F2363D8C2DCAED99A4803A80269A513C0F32340CFFD17EE07647306E03537155B034B9CA001493F81E49ED5774DCCDBCF8E08D7EAAA3D60856C0D9721C02BA298F52B3F69274E45A916DD630F669870DD611EE54</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 A4 4C 0D 00 F5 2D F8 66
0010 | 78 01 00 00 1F 5F 04 F5 F4 8D 0E 7A 11 34 9A 03
0020 | 3A AC A4 9E 64 75 1C C2 20 14 FE 46 29 11 BC 79
0030 | D0 88 9C 60 4D E6 07 04 FE 50 01 00 76 DC 99 1F
0040 | 12 56 AD EA 11 30 EF 0A 9A 3F 00 8B D3 C9 CC 71
0050 | 0B DD 33 45 47 0C 57 A0 EB 05 5D 03 27 77 7F FC
0060 | D1 55 7F 60 95 66 7C C1 88 C5 71 79 6D 98 1B 4A
0070 | 8C 9B 51 4B CE 26 8E E6 C9 8C C4 E4 FC A0 E0 D5
0080 | F9 19 AC 57 94 0E AE 92 D6 F3 5A 46 6C 08 0D D4
0090 | 03 C4 36 06 01 69 83 8F A4 0B D7 C4 5E 59 C7 35
00A0 | 81 BB 75 5F 65 DB 4E B2 EF 80 D8 1D 16 44 2F 7C
00B0 | 4B 7F D3 90 04 0A 53 3E BA 5D DA 38 D4 24 32 9D
00C0 | E9 1F 00 AE 4A 30 4C 4A 14 E0 A4 15 EB BD 68 76
00D0 | 91 21 EC 24 77 BC 75 FB D3 ED 4B 80 2A 61 A1 55
00E0 | 76 61 BD FC 69 DD 2F FE C7 24 F2 C4 6B 8F 01 10
00F0 | 8B 28 5A 9A B5 D6 1A BD 0B 0C 34 1C 30 61 32 45
0100 | 10 E8 19 B8 7A 5F F9 77 AC 2F 7A 3C 5A 65 82 61
0110 | 4A 2F 2E 45 A0 13 A6 A9 2C 1F 80 E6 78 3C DF B3
0120 | 95 85 A8 5E 21 12 E5 77 60 74 58 57 F5 DD 95 C1
0130 | E7 F8 CA 98 3F EC D9 95 11 35 B2 44 85 F3 15 1C
0140 | DD ED 42 4A 44 56 4A F0 A2 9C 89 84 3D 58 79 4F
0150 | 01 5E 11 A6 EB 7A 3F 16 43 74 7E 4A 76 25 65 69
0160 | A4 1D CD 26 03 D7 D4 DB 5C E4 B1 D9 5A EE 25 7F
0170 | 93 53 6B 5D 01 03 A7 BC 6D 47 A8 24 7E E1 EF D2
0180 | FF EB C8 DB EC 00 F4 C5 F5 63 4A BE</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 88 67 0C 00 B9 B8 30 67
0010 | 78 01 00 00 1F 5F 04 F5 2F AF 63 7D 5B C0 6E B2
0020 | EF 1C 5B 3D 62 04 7E 51 F6 9E 6A 9C E3 D2 E7 19
0030 | 66 40 68 B0 69 FE 4E 8E FE 50 01 00 51 6A 43 5D
0040 | C6 14 F1 DE 23 34 4C 2F 11 91 75 F5 14 E8 79 A9
0050 | 3A 05 E8 98 9C 31 81 7E E3 EA B2 35 AB BD DD 2E
0060 | D8 A1 5C 36 56 57 1D 53 3D 01 55 DB A0 DE FC 5E
0070 | 89 42 E3 67 03 C6 EF 28 63 90 7D 2A 29 32 B7 C5
0080 | 92 01 8A 73 38 39 1D AE 3A BA FD 72 68 AF AB 45
0090 | 69 F7 87 2B 9E A0 03 70 C9 DE 70 B0 A4 8E B8 26
00A0 | 13 A0 F1 61 8F 63 1D 65 55 DD FA F4 CC 1F FB C5
00B0 | 6A 2C AA 24 D7 88 F5 03 82 1B EF 69 FB 53 D5 10
00C0 | 45 0E 2D A5 0A BD EE 50 9D D4 B0 9E FB EB AE B2
00D0 | 27 25 7E 17 21 B0 96 17 49 F6 97 DD 1D 7C EE 0E
00E0 | 52 A1 68 7D 4A AE 57 A2 A2 02 D7 42 DE 19 5A B7
00F0 | 31 D9 BF F4 2D 10 35 41 EA 87 35 98 56 21 20 2E
0100 | 8D 70 3C 7E FD 6A 2F D7 81 24 E1 48 24 7A 2A 17
0110 | 7A D4 FC 3C C1 D2 17 D6 39 53 44 9F 8D FF 39 6F
0120 | 30 42 85 CD 51 5B 18 76 64 3D 02 FA BF 4C 62 81
0130 | E0 3B 35 92 13 08 55 89 F2 36 3D 8C 2D CA ED 99
0140 | A4 80 3A 80 26 9A 51 3C 0F 32 34 0C FF D1 7E E0
0150 | 76 47 30 6E 03 53 71 55 B0 34 B9 CA 00 14 93 F8
0160 | 1E 49 ED 57 74 DC CD BC F8 E0 8D 7E AA A3 D6 08
0170 | 56 C0 D9 72 1C 02 BA 29 8F 52 B3 F6 92 74 E4 5A
0180 | 91 6D D6 30 F6 69 87 0D D6 11 EE 54</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>A44C0D00F52DF866</code></td>
<td><code>88670C00B9B83067</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>F48D0E7A11349A033AACA49E64751CC2</code></td>
<td><code>2FAF637D5BC06EB2EF1C5B3D62047E51</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>2014FE462911BC79D0889C604DE60704</code></td>
<td><code>F69E6A9CE3D2E719664068B069FE4E8E</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010076DC991F1256ADEA1130EF0A</code> <code>9A3F008BD3C9CC710BDD3345470C57A0</code> <code>EB055D0327777FFCD1557F6095667CC1</code> <code>88C571796D981B4A8C9B514BCE268EE6</code> <code>C98CC4E4FCA0E0D5F919AC57940EAE92</code> <code>D6F35A466C080DD403C436060169838F</code> <code>A40BD7C45E59C73581BB755F65DB4EB2</code> <code>EF80D81D16442F7C4B7FD390040A533E</code> <code>BA5DDA38D424329DE91F00AE4A304C4A</code> <code>14E0A415EBBD68769121EC2477BC75FB</code> <code>D3ED4B802A61A1557661BDFC69DD2FFE</code> <code>C724F2C46B8F01108B285A9AB5D61ABD</code> <code>0B0C341C3061324510E819B87A5FF977</code> <code>AC2F7A3C5A6582614A2F2E45A013A6A9</code> <code>2C1F80E6783CDFB39585A85E2112E577</code> <code>60745857F5DD95C1E7F8CA983FECD995</code> <code>1135B24485F3151CDDED424A44564AF0</code> <code>A29C89843D58794F015E11A6EB7A3F16</code> <code>43747E4A76256569A41DCD2603D7D4DB</code> <code>5CE4B1D95AEE257F93536B5D0103A7BC</code> <code>6D47A8247EE1EFD2FFEBC8DBEC00F4C5</code><br> <code>F5634ABE</code></td>
<td><code>FE500100516A435DC614F1DE23344C2F</code> <code>119175F514E879A93A05E8989C31817E</code> <code>E3EAB235ABBDDD2ED8A15C3656571D53</code> <code>3D0155DBA0DEFC5E8942E36703C6EF28</code> <code>63907D2A2932B7C592018A7338391DAE</code> <code>3ABAFD7268AFAB4569F7872B9EA00370</code> <code>C9DE70B0A48EB82613A0F1618F631D65</code> <code>55DDFAF4CC1FFBC56A2CAA24D788F503</code> <code>821BEF69FB53D510450E2DA50ABDEE50</code> <code>9DD4B09EFBEBAEB227257E1721B09617</code> <code>49F697DD1D7CEE0E52A1687D4AAE57A2</code> <code>A202D742DE195AB731D9BFF42D103541</code> <code>EA8735985621202E8D703C7EFD6A2FD7</code> <code>8124E148247A2A177AD4FC3CC1D217D6</code> <code>3953449F8DFF396F304285CD515B1876</code> <code>643D02FABF4C6281E03B359213085589</code> <code>F2363D8C2DCAED99A4803A80269A513C</code> <code>0F32340CFFD17EE07647306E03537155</code> <code>B034B9CA001493F81E49ED5774DCCDBC</code> <code>F8E08D7EAAA3D60856C0D9721C02BA29</code> <code>8F52B3F69274E45A916DD630F669870D</code><br> <code>D611EE54</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 = A0292E59EC147DB7F4F2AEBD8367F734C7E896F379D4C1C879BE81BA8049D12230EA9DC3020476946ED27249BFBAEE30F7659F8737654EBDC977AE1B6F71261942D40B1D6F8AE95B65432F75A2E86A515A88462C33DFDF866E5810B1068A3D3BF21D414355C8375666C8ECAF53573A6AF24061BE55E268F0350C9B86C19116ED668C2577A82BDC8D6E5453A25DD063DF646F96E0D0510920B6C88722B6203630210AF36301C65AFB466E5028AA4D9D4195950661899DAE59C2DC058FE2A6828E0C5FB4AD35A96733394DABFD50F9A0DEE4A11F2FBB0D526655496678639000165AE58F3C53DF0C1E52D37D7B2253A34FE5338AE084A69E0C2660D609E03DC3C5</code></pre>
<pre><code>auth_key = 771D2DCA207E0C8E10CF07249AA7F92A4A722C03328B95B25322A7C94BFC74122E7722257EBDB2465D8B4173A07118E72A6518874257CC520DF24E91086E19A811B4F4D05DF146D15718F3CF6AE5C41308DAA9336A7A7ACC4DC839A84B3406FCA26A28D5D265EF00F0CA57729FD68C69F05E1DAE4DF0A02BB16DA7F1EB1F2521482558DAC42B6BC2E929CD59774CF3E0FD617919161A0D62B7ECBAC94BADFEB3959C5DE9EB40B7CE02E58EE62DCEFA0D98786134DA6CA7667D17737FCACD184C3836CEB27F8F160C07089111040C547BBAA7DBA08FA6BCD5354CBC77B137BB778DB5797CA6669F713AC489132D38E25E3B21FE0C711DA63E3180C41D098AF65B</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 C0 A2 1F F6 2D F8 66
0010 | 54 00 00 00 34 F7 CB 3B F4 8D 0E 7A 11 34 9A 03
0020 | 3A AC A4 9E 64 75 1C C2 20 14 FE 46 29 11 BC 79
0030 | D0 88 9C 60 4D E6 07 04 DD 5E A1 E0 33 AB BF D6
0040 | C4 30 86 98 60 B8 D9 B2</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 E0 27 E0 BA B8 30 67
0010 | 34 00 00 00 34 F7 CB 3B 2F AF 63 7D 5B C0 6E B2
0020 | EF 1C 5B 3D 62 04 7E 51 F6 9E 6A 9C E3 D2 E7 19
0030 | 66 40 68 B0 69 FE 4E 8E ED 09 73 F6 AA DD F3 96
0040 | BD CE 3E B1 C4 B6 6D E1</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>01C0A21FF62DF866</code></td>
<td><code>01E027E0BAB83067</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>54000000</code> (84 in decimal)</td>
<td><code>34000000</code> (52 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>F48D0E7A11349A033AACA49E64751CC2</code></td>
<td><code>2FAF637D5BC06EB2EF1C5B3D62047E51</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>2014FE462911BC79D0889C604DE60704</code></td>
<td><code>F69E6A9CE3D2E719664068B069FE4E8E</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>DD5EA1E033ABBFD6C430869860B8D9B2</code></td>
<td><code>ED0973F6AADDF396BDCE3EB1C4B66DE1</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>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -102,7 +102,7 @@
</ul>
<ul>
<li><a href="javascript:DemoApp.setEmojiStatus(this, '5213305508034783384');">Set emoji status</a> <span></span></li>
<li><a href="javascript:DemoApp.setEmojiStatus(this, '5213305508034783384', 1731246747);">Set emoji status</a> for 5 min <span></span></li>
<li><a href="javascript:DemoApp.setEmojiStatus(this, '5213305508034783384', 1731247121);">Set emoji status</a> for 5 min <span></span></li>
<li><a href="javascript:DemoApp.setEmojiStatus(this, '123');">Set emoji status</a> (invalid id) <span></span></li>
</ul>
<p>Test permissions:</p>