Update content of files

This commit is contained in:
GitHub Action 2024-06-25 20:48:36 +00:00
parent 8488218497
commit 2dbe6e127f
4 changed files with 218 additions and 218 deletions

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>channels.updateEmojiStatus</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Set an emoji status for a channel.">
<meta property="description" content="Set an emoji status for a channel or supergroup.">
<meta property="og:title" content="channels.updateEmojiStatus">
<meta property="og:image" content="">
<meta property="og:description" content="Set an emoji status for a channel.">
<meta property="og:description" content="Set an emoji status for a channel or supergroup.">
<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="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/channels.updateEmojiStatus" >channels.updateEmojiStatus</a></li></ul></div>
<h1 id="dev_page_title">channels.updateEmojiStatus</h1>
<div id="dev_page_content"><p>Set an <a href="/api/emoji-status">emoji status</a> for a channel.</p>
<div id="dev_page_content"><p>Set an <a href="/api/emoji-status">emoji status</a> for a channel or supergroup.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -77,7 +77,7 @@
<tr>
<td><strong>channel</strong></td>
<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td>
<td>The channel, must have at least <a href="/api/config#channel-emoji-status-level-min"><code>channel_emoji_status_level_min</code> boosts</a>.</td>
<td>The channel/supergroup, must have at least <a href="/api/config#channel-emoji-status-level-min">channel_emoji_status_level_min</a>/<a href="/api/config#group-emoji-status-level-min">group_emoji_status_level_min</a> boosts.</td>
</tr>
<tr>
<td><strong>emoji_status</strong></td>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>premium.getUserBoosts</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Returns the lists of boost that were applied to a channel by a specific user (admins only)">
<meta property="description" content="Returns the lists of boost that were applied to a channel/supergroup by a specific user (admins only)">
<meta property="og:title" content="premium.getUserBoosts">
<meta property="og:image" content="">
<meta property="og:description" content="Returns the lists of boost that were applied to a channel by a specific user (admins only)">
<meta property="og:description" content="Returns the lists of boost that were applied to a channel/supergroup by a specific user (admins only)">
<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="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/premium.getUserBoosts" >premium.getUserBoosts</a></li></ul></div>
<h1 id="dev_page_title">premium.getUserBoosts</h1>
<div id="dev_page_content"><p>Returns the lists of boost that were applied to a channel by a specific user (admins only)</p>
<div id="dev_page_content"><p>Returns the lists of boost that were applied to a channel/supergroup by a specific user (admins only)</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -71,7 +71,7 @@
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
<td>The channel</td>
<td>The channel/supergroup</td>
</tr>
<tr>
<td><strong>user_id</strong></td>

View file

@ -571,7 +571,7 @@ Look for updates of telegram&#39;s terms of service…">
<tbody>
<tr>
<td><a href="/method/premium.getBoostsList">premium.getBoostsList</a></td>
<td>Obtains info about the boosts that were applied to a certain channel (admins only)</td>
<td>Obtains info about the boosts that were applied to a certain channel or supergroup (admins only)</td>
</tr>
<tr>
<td><a href="/method/premium.getMyBoosts">premium.getMyBoosts</a></td>
@ -583,11 +583,11 @@ Look for updates of telegram&#39;s terms of service…">
</tr>
<tr>
<td><a href="/method/premium.getBoostsStatus">premium.getBoostsStatus</a></td>
<td>Gets the current <a href="/api/boost">number of boosts</a> of a channel.</td>
<td>Gets the current <a href="/api/boost">number of boosts</a> of a channel/supergroup.</td>
</tr>
<tr>
<td><a href="/method/premium.getUserBoosts">premium.getUserBoosts</a></td>
<td>Returns the lists of boost that were applied to a channel by a specific user (admins only)</td>
<td>Returns the lists of boost that were applied to a channel/supergroup by a specific user (admins only)</td>
</tr>
</tbody>
</table>
@ -1042,7 +1042,7 @@ Look for updates of telegram&#39;s terms of service…">
</tr>
<tr>
<td><a href="/method/channels.updateEmojiStatus">channels.updateEmojiStatus</a></td>
<td>Set an <a href="/api/emoji-status">emoji status</a> for a channel.</td>
<td>Set an <a href="/api/emoji-status">emoji status</a> for a channel or supergroup.</td>
</tr>
<tr>
<td><a href="/method/account.getDefaultEmojiStatuses">account.getDefaultEmojiStatuses</a></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 3C B9 0E 00 73 22 7B 66
0010 | 14 00 00 00 F1 8E 7E BE C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 FC 37 09 00 E9 29 7B 66
0010 | 14 00 00 00 F1 8E 7E BE 2C 22 11 12 85 A5 5F FA
0020 | 5D BF 7A DF B7 C0 C0 44</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>3CB90E0073227B66</code></td>
<td><code>FC370900E9297B66</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>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td><code>2C22111285A55FFA5DBF7ADFB7C0C044</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 E0 CC 03 74 22 7B 66
0010 | A4 00 00 00 63 24 16 05 C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
0030 | FC 98 9D 20 BA 91 C0 BC 08 22 1F 49 3A A2 24 37
0040 | 3F 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 8C AA 62 E9 29 7B 66
0010 | 5C 00 00 00 63 24 16 05 2C 22 11 12 85 A5 5F FA
0020 | 5D BF 7A DF B7 C0 C0 44 A0 A2 EE 29 93 D9 C7 A4
0030 | 75 68 9A C7 B8 F6 7C F3 08 1F 43 95 81 FA E5 38
0040 | CF 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>01E0CC0374227B66</code></td>
<td><code>018CAA62E9297B66</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>A4000000</code> (164 in decimal)</td>
<td><code>5C000000</code> (92 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td><code>2C22111285A55FFA5DBF7ADFB7C0C044</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td><code>A0A2EE2993D9C7A475689AC7B8F67CF3</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>08221F493AA224373F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2458764437744793407</td>
<td><code>081F439581FAE538CF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2252808624108026063</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 = 2458764437744793407</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2458764437744793407 = 1381929973 * 1779225059</code></p>
<pre><code>p = 1381929973
q = 1779225059</code></pre>
<pre><code>pq = 2252808624108026063</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2252808624108026063 = 1198987549 * 1878925787</code></p>
<pre><code>p = 1198987549
q = 1878925787</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 1F 49 3A A2 24 37 3F 00 00 00
0010 | 04 52 5E 93 F5 00 00 00 04 6A 0C D1 E3 00 00 00
0020 | C3 C8 F6 BE 0E 4F 8A 08 AE F2 D4 4C 20 7A CE 47
0030 | A0 F0 D7 BA 6E F0 02 59 FC 98 9D 20 BA 91 C0 BC
0040 | FE 6A AC 3F 30 6D 99 D5 8E 30 76 FD 35 77 65 25
0050 | 54 18 F8 F9 24 5C EB 17 EC 81 B1 67 25 0F 1D F9
<pre><code>0000 | 95 5F F5 A9 08 1F 43 95 81 FA E5 38 CF 00 00 00
0010 | 04 47 77 19 1D 00 00 00 04 6F FE 21 DB 00 00 00
0020 | 2C 22 11 12 85 A5 5F FA 5D BF 7A DF B7 C0 C0 44
0030 | A0 A2 EE 29 93 D9 C7 A4 75 68 9A C7 B8 F6 7C F3
0040 | 7A CF E5 4A 85 8A 75 CF D7 FC EB 54 DB E4 9C 33
0050 | 34 AC DE 42 C9 F5 61 8E 1F 32 DB 2D CF AC 91 2E
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 = 1779225059</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>08221F493AA224373F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2458764437744793407</td>
<td><code>081F439581FAE538CF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2252808624108026063</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>04525E93F5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1381929973</td>
<td><code>044777191D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1198987549</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>046A0CD1E3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1779225059</td>
<td><code>046FFE21DB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1878925787</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>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td><code>2C22111285A55FFA5DBF7ADFB7C0C044</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td><code>A0A2EE2993D9C7A475689AC7B8F67CF3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>FE6AAC3F306D99D58E3076FD35776525</code> <code>5418F8F9245CEB17EC81B167250F1DF9</code></td>
<td><code>7ACFE54A858A75CFD7FCEB54DBE49C33</code> <code>34ACDE42C9F5618E1F32DB2DCFAC912E</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1779225059</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 = 955FF5A908221F493AA224373F00000004525E93F5000000046A0CD1E3000000C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BCFE6AAC3F306D99D58E3076FD357765255418F8F9245CEB17EC81B167250F1DF902000000
random_padding_bytes = FFD48E7D4E05C7D4BEC59DBF341BF5DE797CD466DD7ED015A34B7B08E8DF17901EB0FD196138882D9B68A0643C6F740E6B29971E72983C317A917547E7AF7DBC104F8B90AF2E9FDFFAED06AA5FCCF52779F12FEFCC678ED9B0EAD54C</code></pre>
<pre><code>data = 955FF5A9081F439581FAE538CF000000044777191D000000046FFE21DB0000002C22111285A55FFA5DBF7ADFB7C0C044A0A2EE2993D9C7A475689AC7B8F67CF37ACFE54A858A75CFD7FCEB54DBE49C3334ACDE42C9F5618E1F32DB2DCFAC912E02000000
random_padding_bytes = 6CCE48F774BFB5A7C5E8D1A44DA3568D986E320F8A4A248C01E8556C425474B697D5D6AA7DFFB9837C0A9FE3292EFFBC9FC89AC619868C482DD2E598833893D5837789F7ADB2A09FBD7104B3F1CE746245514CE885DF885D9A77DD51</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 = B9414995450EB67A3067A17A8662ABCF4E40BFEFD972EDA822FF2DE36B9B04AFACA0FB5D1F95C2A55BAB48240811689C99671600428A754734A552FF7D015004D677DFF8855EA0FBBCB13FB7E98ADE47BEC0FF81081913AEA521ADFD6FD2FA1DF394D3E4E377A77CCC4F75EDA14C257BD56DC0978893BA5573350A3FA2996436B8DDBCC210D4BB212C73E43D084C13B85AACB786A2C2A2252494760AF29504CC7BEF2E21244BA7D8D998508294E92F98E3925E4C77E53989DFDA7B97DE1D4A3266000BD004766BC158946A207B3A381195764DEC4D102AA385E08BD225A6F4EF2B48F513AD8115F2AB6343321962247A4B85C37622479BF6140D3AB9E5872FEC</code></pre>
<pre><code>encrypted_data = 10AA0856A0F68268D91ED14DB9837F46D190A2E41C7877F278D7B71AAB04826A20C6A167D23F6BBA860D1462D119DA96513E44E4E36A57F592F4518F9BC3325076A24DF938D2AF4FA1181D65367CF9F5BD2611E31EF33830FCDE657072A7520BB167FD7499AE00C89C49A54B14284B01422D8259DBE8C58D5C74AA740FF1DD68C22613435DDFB5827F798D7F9B5265DF22D584B10B320925550036155A1D9755CDFFA1EA37BBE0B19CF5B82CBAC1DD6D796AC19F7BA21DF1E9107317469DA9A445D6EB1D955F0A60AB8D85AC3D72AA48B99B925A391E85A9623DE2C9AF970B9749CC8B9ED1E61058745E9487891DF060D2637CD1E3984DDD644E48E67DD1193B</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 48 3B 01 00 74 22 7B 66
0010 | 40 01 00 00 BE E4 12 D7 C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
0030 | FC 98 9D 20 BA 91 C0 BC 04 52 5E 93 F5 00 00 00
0040 | 04 6A 0C D1 E3 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 B9 41 49 95 45 0E B6 7A 30 67 A1 7A
0060 | 86 62 AB CF 4E 40 BF EF D9 72 ED A8 22 FF 2D E3
0070 | 6B 9B 04 AF AC A0 FB 5D 1F 95 C2 A5 5B AB 48 24
0080 | 08 11 68 9C 99 67 16 00 42 8A 75 47 34 A5 52 FF
0090 | 7D 01 50 04 D6 77 DF F8 85 5E A0 FB BC B1 3F B7
00A0 | E9 8A DE 47 BE C0 FF 81 08 19 13 AE A5 21 AD FD
00B0 | 6F D2 FA 1D F3 94 D3 E4 E3 77 A7 7C CC 4F 75 ED
00C0 | A1 4C 25 7B D5 6D C0 97 88 93 BA 55 73 35 0A 3F
00D0 | A2 99 64 36 B8 DD BC C2 10 D4 BB 21 2C 73 E4 3D
00E0 | 08 4C 13 B8 5A AC B7 86 A2 C2 A2 25 24 94 76 0A
00F0 | F2 95 04 CC 7B EF 2E 21 24 4B A7 D8 D9 98 50 82
0100 | 94 E9 2F 98 E3 92 5E 4C 77 E5 39 89 DF DA 7B 97
0110 | DE 1D 4A 32 66 00 0B D0 04 76 6B C1 58 94 6A 20
0120 | 7B 3A 38 11 95 76 4D EC 4D 10 2A A3 85 E0 8B D2
0130 | 25 A6 F4 EF 2B 48 F5 13 AD 81 15 F2 AB 63 43 32
0140 | 19 62 24 7A 4B 85 C3 76 22 47 9B F6 14 0D 3A B9
0150 | E5 87 2F EC</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 00 38 09 00 E9 29 7B 66
0010 | 40 01 00 00 BE E4 12 D7 2C 22 11 12 85 A5 5F FA
0020 | 5D BF 7A DF B7 C0 C0 44 A0 A2 EE 29 93 D9 C7 A4
0030 | 75 68 9A C7 B8 F6 7C F3 04 47 77 19 1D 00 00 00
0040 | 04 6F FE 21 DB 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 10 AA 08 56 A0 F6 82 68 D9 1E D1 4D
0060 | B9 83 7F 46 D1 90 A2 E4 1C 78 77 F2 78 D7 B7 1A
0070 | AB 04 82 6A 20 C6 A1 67 D2 3F 6B BA 86 0D 14 62
0080 | D1 19 DA 96 51 3E 44 E4 E3 6A 57 F5 92 F4 51 8F
0090 | 9B C3 32 50 76 A2 4D F9 38 D2 AF 4F A1 18 1D 65
00A0 | 36 7C F9 F5 BD 26 11 E3 1E F3 38 30 FC DE 65 70
00B0 | 72 A7 52 0B B1 67 FD 74 99 AE 00 C8 9C 49 A5 4B
00C0 | 14 28 4B 01 42 2D 82 59 DB E8 C5 8D 5C 74 AA 74
00D0 | 0F F1 DD 68 C2 26 13 43 5D DF B5 82 7F 79 8D 7F
00E0 | 9B 52 65 DF 22 D5 84 B1 0B 32 09 25 55 00 36 15
00F0 | 5A 1D 97 55 CD FF A1 EA 37 BB E0 B1 9C F5 B8 2C
0100 | BA C1 DD 6D 79 6A C1 9F 7B A2 1D F1 E9 10 73 17
0110 | 46 9D A9 A4 45 D6 EB 1D 95 5F 0A 60 AB 8D 85 AC
0120 | 3D 72 AA 48 B9 9B 92 5A 39 1E 85 A9 62 3D E2 C9
0130 | AF 97 0B 97 49 CC 8B 9E D1 E6 10 58 74 5E 94 87
0140 | 89 1D F0 60 D2 63 7C D1 E3 98 4D DD 64 4E 48 E6
0150 | 7D D1 19 3B</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 = FFD48E7D4E05C7D4BEC59DBF341BF5DE797CD466DD7ED015A34B7B08E
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>483B010074227B66</code></td>
<td><code>00380900E9297B66</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 = FFD48E7D4E05C7D4BEC59DBF341BF5DE797CD466DD7ED015A34B7B08E
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td><code>2C22111285A55FFA5DBF7ADFB7C0C044</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td><code>A0A2EE2993D9C7A475689AC7B8F67CF3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>04525E93F5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1381929973</td>
<td><code>044777191D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1198987549</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>046A0CD1E3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1779225059</td>
<td><code>046FFE21DB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1878925787</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 = FFD48E7D4E05C7D4BEC59DBF341BF5DE797CD466DD7ED015A34B7B08E
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE000100B9414995450EB67A3067A17A</code> <code>8662ABCF4E40BFEFD972EDA822FF2DE3</code> <code>6B9B04AFACA0FB5D1F95C2A55BAB4824</code> <code>0811689C99671600428A754734A552FF</code> <code>7D015004D677DFF8855EA0FBBCB13FB7</code> <code>E98ADE47BEC0FF81081913AEA521ADFD</code> <code>6FD2FA1DF394D3E4E377A77CCC4F75ED</code> <code>A14C257BD56DC0978893BA5573350A3F</code> <code>A2996436B8DDBCC210D4BB212C73E43D</code> <code>084C13B85AACB786A2C2A2252494760A</code> <code>F29504CC7BEF2E21244BA7D8D9985082</code> <code>94E92F98E3925E4C77E53989DFDA7B97</code> <code>DE1D4A3266000BD004766BC158946A20</code> <code>7B3A381195764DEC4D102AA385E08BD2</code> <code>25A6F4EF2B48F513AD8115F2AB634332</code> <code>1962247A4B85C37622479BF6140D3AB9</code><br> <code>E5872FEC</code></td>
<td><code>FE00010010AA0856A0F68268D91ED14D</code> <code>B9837F46D190A2E41C7877F278D7B71A</code> <code>AB04826A20C6A167D23F6BBA860D1462</code> <code>D119DA96513E44E4E36A57F592F4518F</code> <code>9BC3325076A24DF938D2AF4FA1181D65</code> <code>367CF9F5BD2611E31EF33830FCDE6570</code> <code>72A7520BB167FD7499AE00C89C49A54B</code> <code>14284B01422D8259DBE8C58D5C74AA74</code> <code>0FF1DD68C22613435DDFB5827F798D7F</code> <code>9B5265DF22D584B10B32092555003615</code> <code>5A1D9755CDFFA1EA37BBE0B19CF5B82C</code> <code>BAC1DD6D796AC19F7BA21DF1E9107317</code> <code>469DA9A445D6EB1D955F0A60AB8D85AC</code> <code>3D72AA48B99B925A391E85A9623DE2C9</code> <code>AF970B9749CC8B9ED1E61058745E9487</code> <code>891DF060D2637CD1E3984DDD644E48E6</code><br> <code>7DD1193B</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = FFD48E7D4E05C7D4BEC59DBF341BF5DE797CD466DD7ED015A34B7B08E
<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 C0 1A B7 74 22 7B 66
0010 | AC 02 00 00 5C 07 E8 D0 C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
0030 | FC 98 9D 20 BA 91 C0 BC FE 50 02 00 74 7C AF 96
0040 | BC A5 3E 0E 25 CB A3 5C B2 79 39 4D B6 F5 85 DA
0050 | 43 39 B7 00 CE 70 31 AE 5A B9 05 F7 7A 8F AE 12
0060 | C8 C3 57 A6 AE C0 68 90 A7 E3 35 45 F9 65 26 1A
0070 | 92 03 81 18 CF 6D 6C F4 5C A7 A5 A7 A2 EA 32 12
0080 | 6A 2F F7 C5 F5 46 BF 19 61 2E 38 A7 A1 3F DA 0B
0090 | 8F 39 4B 8E E2 34 81 EC 51 1F 3C 4A 35 FC 98 A5
00A0 | 9A 5F C2 48 55 47 D1 70 46 03 B9 44 2C 72 64 12
00B0 | 2F E0 EC DE F0 37 BF E9 E1 EE 77 90 BE A1 F2 3B
00C0 | AF 9D 2C 90 07 AD 84 08 36 62 56 DC 69 A1 A0 88
00D0 | 80 CE 4A E7 74 3D DB C0 4E 64 51 E4 1D 04 6E 1C
00E0 | 19 41 61 59 56 A0 5F DC 74 BE 59 A6 23 B4 F8 5A
00F0 | F9 CD 07 DE 76 36 2D 73 59 FA B5 40 93 82 6B 20
0100 | AC FD CB 71 F2 9D 79 9D 2B C1 C4 39 2B 45 B0 D3
0110 | F9 BF F4 0F 88 32 A7 A3 75 FF D8 C5 C6 ED 99 EF
0120 | F0 41 C6 A8 AB 78 AE C5 25 BB 66 AD FB C2 52 CE
0130 | 07 53 9B 2C 2C 2F E7 AF 60 FD 6F 77 FC 4B 2E 1E
0140 | 12 7D 6D C0 CA 61 66 4B 7B FB 2F 39 91 5D 36 D4
0150 | F6 DB 34 83 C8 F4 AE 98 09 79 06 D7 2F A0 AC 72
0160 | 8D 78 B3 B0 2F F1 33 5A AD 5E 49 3B 95 4A 69 DA
0170 | B3 AF A3 95 CD 27 EF 4C 52 46 51 A5 1E 55 0A 9B
0180 | B1 8F 2E 7E 3B 8D C2 AA 38 9D 4A CE E9 1A 8D F9
0190 | 3D BD B6 86 D7 82 EC 84 1D F2 23 3C 06 57 14 94
01A0 | B6 85 3C 81 52 2B 30 23 05 49 D1 F6 33 AF B3 B4
01B0 | F1 90 D7 DA E8 95 8F 89 59 4F 7F C6 C0 AE 7D EC
01C0 | 3C 57 71 E3 24 AE 90 7D 0A 36 CD C4 07 87 D6 1A
01D0 | 13 40 B9 23 D9 60 0D 5A B7 00 77 8E 37 0D 8B 50
01E0 | 08 4E 87 B2 D7 71 40 24 B9 0D B9 7D 2C 05 21 D9
01F0 | 22 8A 26 F6 82 21 0A 96 BE 7E 41 CF 83 3A C6 9D
0200 | 49 FB 41 DF 17 44 B6 B7 06 FD 9B 5B CF 8B 6B 98
0210 | EF 8F 3B 98 61 AF 79 BF 2D 30 77 C5 37 3C E1 B6
0220 | 6F 93 5A DA 66 24 FC DF 51 A3 FE 05 59 16 CF 0C
0230 | D3 19 83 28 91 BA 7B EE 1A 18 4D AB B4 8D EA C8
0240 | DB CE 26 DC 8D D0 2D 4A 2F 74 9B 33 CA 39 4C 93
0250 | 0B DA 52 BC C6 19 B6 49 AD 5C 78 61 7C DD 2D EB
0260 | 57 13 80 13 55 2F D8 5A 22 76 E7 51 E9 68 28 CD
0270 | E3 FE 41 39 DB FA 83 02 BD A0 31 A6 5B D5 E1 7A
0280 | EF 5C 0F 98 FA 29 F5 59 13 BA AA 1B</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 F0 2C 22 EA 29 7B 66
0010 | B4 02 00 00 5C 07 E8 D0 2C 22 11 12 85 A5 5F FA
0020 | 5D BF 7A DF B7 C0 C0 44 A0 A2 EE 29 93 D9 C7 A4
0030 | 75 68 9A C7 B8 F6 7C F3 FE 50 02 00 6F B8 75 96
0040 | A5 61 C2 23 B6 F1 40 5E 13 EC 1D 6B 9B 6D 56 EF
0050 | 53 B6 9D 3A FC AD 71 4F AF 87 23 3A 76 D1 DA 61
0060 | B3 8C 82 1E 77 67 3D FC E2 43 D8 20 49 14 3F F1
0070 | 00 34 13 D2 97 10 7C 7C 62 CE C5 25 9C 13 A1 B5
0080 | 27 7C B5 4B 38 11 FA 26 1C 77 19 6A 90 C7 1D BD
0090 | 97 2D F7 35 F1 F7 F8 E2 36 0B 52 16 7F 91 07 2F
00A0 | 0C 42 91 88 AE 73 D3 63 53 8B AC 43 E0 BB BB 21
00B0 | A6 BA 42 D2 F0 7D 86 76 0D 48 B0 9A 02 ED F0 70
00C0 | 1A AE A5 11 67 4F 66 63 86 EB 16 10 9C CB 50 48
00D0 | 34 63 01 4A E4 8E B5 EC 23 59 96 80 00 5E 9D B6
00E0 | EC FD 8C A2 AE 61 42 1E 1A 6F 9B 4F FF 8D 79 DE
00F0 | B7 B7 6E DB 26 2B 96 74 18 91 85 CB 24 8F DB 38
0100 | DA 8E 19 21 AC EE 84 40 16 73 EA C6 53 DD 08 B9
0110 | 93 86 99 8E 18 4E 15 5D AD 6C D3 46 2F B1 FF 3C
0120 | BB 1C 51 4C AF 4B 98 D5 FB 7B AB E1 13 3E CF 22
0130 | 48 85 77 F4 3E E7 41 6A D9 82 F9 27 00 F0 F7 4D
0140 | 3B 82 1E 38 2C 73 00 66 B3 C5 F3 AE 1F DC 3B AA
0150 | 3D 62 63 92 BB 7A 66 DA A8 17 32 CA 2A E0 B8 5A
0160 | D6 E1 74 1C 59 BC 31 17 63 66 33 85 70 C7 C4 ED
0170 | D4 A2 62 A2 C3 47 25 A4 73 C3 37 43 18 2B BB 8E
0180 | E0 3E 4E 62 36 6E D9 0E B7 20 9B FA A5 ED F7 07
0190 | D5 A0 3F 79 C2 6C 05 AF D4 E8 E2 CB 69 64 57 F3
01A0 | 8F 7E 39 0C 57 06 4A 6F 0B EC CA 0B 2A 80 22 AD
01B0 | B3 15 22 3B F6 87 31 E9 3A 8C 01 C2 A8 4A 10 2D
01C0 | 39 D1 25 1C F4 61 6D D8 6D 4E 15 FE 89 5F D3 A8
01D0 | A7 6C 56 26 71 92 94 66 AF F6 08 A0 2F 2D 07 13
01E0 | 48 FD 02 93 CE 11 00 52 DB F4 D9 A2 4A C9 47 B0
01F0 | D8 60 8D AA A0 1B D0 40 8E 55 AD A4 3C 4C 10 65
0200 | EC 20 15 AE C8 5E E6 19 FB 4D 4A 60 14 BB 51 99
0210 | 7C 6F 46 88 87 ED E2 DB 48 52 DC 60 BE D4 84 2A
0220 | 48 A9 8F 33 56 D2 DE 20 8D 94 31 9C E8 4E 64 14
0230 | FA 44 6B 62 F3 2B 78 87 23 94 3E E5 31 A7 5B E1
0240 | 9E F6 13 00 CE F5 23 91 8B A7 61 4B C2 B3 46 E6
0250 | 08 9B 90 3C A4 1E E0 16 61 B0 00 E2 27 0F EB 46
0260 | D4 7C 43 CC 19 B9 D9 0C 32 C8 E6 DB 4E FF 4F 58
0270 | B6 0E F3 30 75 14 FD 35 64 A3 47 06 E9 D8 BA 29
0280 | E0 D7 4E 4D 86 FB 1E 42 B9 CF 5A B1</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 = FFD48E7D4E05C7D4BEC59DBF341BF5DE797CD466DD7ED015A34B7B08E
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01C01AB774227B66</code></td>
<td><code>01F02C22EA297B66</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>AC020000</code> (684 in decimal)</td>
<td><code>B4020000</code> (692 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = FFD48E7D4E05C7D4BEC59DBF341BF5DE797CD466DD7ED015A34B7B08E
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td><code>2C22111285A55FFA5DBF7ADFB7C0C044</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td><code>A0A2EE2993D9C7A475689AC7B8F67CF3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE500200747CAF96BCA53E0E25CBA35C</code> <code>B279394DB6F585DA4339B700CE7031AE</code> <code>5AB905F77A8FAE12C8C357A6AEC06890</code> <code>A7E33545F965261A92038118CF6D6CF4</code> <code>5CA7A5A7A2EA32126A2FF7C5F546BF19</code> <code>612E38A7A13FDA0B8F394B8EE23481EC</code> <code>511F3C4A35FC98A59A5FC2485547D170</code> <code>4603B9442C7264122FE0ECDEF037BFE9</code> <code>E1EE7790BEA1F23BAF9D2C9007AD8408</code> <code>366256DC69A1A08880CE4AE7743DDBC0</code> <code>4E6451E41D046E1C1941615956A05FDC</code> <code>74BE59A623B4F85AF9CD07DE76362D73</code> <code>59FAB54093826B20ACFDCB71F29D799D</code> <code>2BC1C4392B45B0D3F9BFF40F8832A7A3</code> <code>75FFD8C5C6ED99EFF041C6A8AB78AEC5</code> <code>25BB66ADFBC252CE07539B2C2C2FE7AF</code> <code>60FD6F77FC4B2E1E127D6DC0CA61664B</code> <code>7BFB2F39915D36D4F6DB3483C8F4AE98</code> <code>097906D72FA0AC728D78B3B02FF1335A</code> <code>AD5E493B954A69DAB3AFA395CD27EF4C</code> <code>524651A51E550A9BB18F2E7E3B8DC2AA</code> <code>389D4ACEE91A8DF93DBDB686D782EC84</code> <code>1DF2233C06571494B6853C81522B3023</code> <code>0549D1F633AFB3B4F190D7DAE8958F89</code> <code>594F7FC6C0AE7DEC3C5771E324AE907D</code> <code>0A36CDC40787D61A1340B923D9600D5A</code> <code>B700778E370D8B50084E87B2D7714024</code> <code>B90DB97D2C0521D9228A26F682210A96</code> <code>BE7E41CF833AC69D49FB41DF1744B6B7</code> <code>06FD9B5BCF8B6B98EF8F3B9861AF79BF</code> <code>2D3077C5373CE1B66F935ADA6624FCDF</code> <code>51A3FE055916CF0CD319832891BA7BEE</code> <code>1A184DABB48DEAC8DBCE26DC8DD02D4A</code> <code>2F749B33CA394C930BDA52BCC619B649</code> <code>AD5C78617CDD2DEB57138013552FD85A</code> <code>2276E751E96828CDE3FE4139DBFA8302</code> <code>BDA031A65BD5E17AEF5C0F98FA29F559</code><br> <code>13BAAA1B</code></td>
<td><code>FE5002006FB87596A561C223B6F1405E</code> <code>13EC1D6B9B6D56EF53B69D3AFCAD714F</code> <code>AF87233A76D1DA61B38C821E77673DFC</code> <code>E243D82049143FF1003413D297107C7C</code> <code>62CEC5259C13A1B5277CB54B3811FA26</code> <code>1C77196A90C71DBD972DF735F1F7F8E2</code> <code>360B52167F91072F0C429188AE73D363</code> <code>538BAC43E0BBBB21A6BA42D2F07D8676</code> <code>0D48B09A02EDF0701AAEA511674F6663</code> <code>86EB16109CCB50483463014AE48EB5EC</code> <code>23599680005E9DB6ECFD8CA2AE61421E</code> <code>1A6F9B4FFF8D79DEB7B76EDB262B9674</code> <code>189185CB248FDB38DA8E1921ACEE8440</code> <code>1673EAC653DD08B99386998E184E155D</code> <code>AD6CD3462FB1FF3CBB1C514CAF4B98D5</code> <code>FB7BABE1133ECF22488577F43EE7416A</code> <code>D982F92700F0F74D3B821E382C730066</code> <code>B3C5F3AE1FDC3BAA3D626392BB7A66DA</code> <code>A81732CA2AE0B85AD6E1741C59BC3117</code> <code>6366338570C7C4EDD4A262A2C34725A4</code> <code>73C33743182BBB8EE03E4E62366ED90E</code> <code>B7209BFAA5EDF707D5A03F79C26C05AF</code> <code>D4E8E2CB696457F38F7E390C57064A6F</code> <code>0BECCA0B2A8022ADB315223BF68731E9</code> <code>3A8C01C2A84A102D39D1251CF4616DD8</code> <code>6D4E15FE895FD3A8A76C562671929466</code> <code>AFF608A02F2D071348FD0293CE110052</code> <code>DBF4D9A24AC947B0D8608DAAA01BD040</code> <code>8E55ADA43C4C1065EC2015AEC85EE619</code> <code>FB4D4A6014BB51997C6F468887EDE2DB</code> <code>4852DC60BED4842A48A98F3356D2DE20</code> <code>8D94319CE84E6414FA446B62F32B7887</code> <code>23943EE531A75BE19EF61300CEF52391</code> <code>8BA7614BC2B346E6089B903CA41EE016</code> <code>61B000E2270FEB46D47C43CC19B9D90C</code> <code>32C8E6DB4EFF4F58B60EF3307514FD35</code> <code>64A34706E9D8BA29E0D74E4D86FB1E42</code><br> <code>B9CF5AB1</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = FFD48E7D4E05C7D4BEC59DBF341BF5DE797CD466DD7ED015A34B7B08E
<!-- 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 = 747CAF96BCA53E0E25CBA35CB279394DB6F585DA4339B700CE7031AE5AB905F77A8FAE12C8C357A6AEC06890A7E33545F965261A92038118CF6D6CF45CA7A5A7A2EA32126A2FF7C5F546BF19612E38A7A13FDA0B8F394B8EE23481EC511F3C4A35FC98A59A5FC2485547D1704603B9442C7264122FE0ECDEF037BFE9E1EE7790BEA1F23BAF9D2C9007AD8408366256DC69A1A08880CE4AE7743DDBC04E6451E41D046E1C1941615956A05FDC74BE59A623B4F85AF9CD07DE76362D7359FAB54093826B20ACFDCB71F29D799D2BC1C4392B45B0D3F9BFF40F8832A7A375FFD8C5C6ED99EFF041C6A8AB78AEC525BB66ADFBC252CE07539B2C2C2FE7AF60FD6F77FC4B2E1E127D6DC0CA61664B7BFB2F39915D36D4F6DB3483C8F4AE98097906D72FA0AC728D78B3B02FF1335AAD5E493B954A69DAB3AFA395CD27EF4C524651A51E550A9BB18F2E7E3B8DC2AA389D4ACEE91A8DF93DBDB686D782EC841DF2233C06571494B6853C81522B30230549D1F633AFB3B4F190D7DAE8958F89594F7FC6C0AE7DEC3C5771E324AE907D0A36CDC40787D61A1340B923D9600D5AB700778E370D8B50084E87B2D7714024B90DB97D2C0521D9228A26F682210A96BE7E41CF833AC69D49FB41DF1744B6B706FD9B5BCF8B6B98EF8F3B9861AF79BF2D3077C5373CE1B66F935ADA6624FCDF51A3FE055916CF0CD319832891BA7BEE1A184DABB48DEAC8DBCE26DC8DD02D4A2F749B33CA394C930BDA52BCC619B649AD5C78617CDD2DEB57138013552FD85A2276E751E96828CDE3FE4139DBFA8302BDA031A65BD5E17AEF5C0F98FA29F55913BAAA1B
tmp_aes_key = 11FE8FBEBAF5CD0D44E94C94684E0F579AAD13781558F3EBFE6859BB2EAAB02A
tmp_aes_iv = F7FFAE27F0F5E583A7ED94409F6B07420494B4BBA4CB58DF12214F4FFE6AAC3F</code></pre>
<pre><code>encrypted_answer = 6FB87596A561C223B6F1405E13EC1D6B9B6D56EF53B69D3AFCAD714FAF87233A76D1DA61B38C821E77673DFCE243D82049143FF1003413D297107C7C62CEC5259C13A1B5277CB54B3811FA261C77196A90C71DBD972DF735F1F7F8E2360B52167F91072F0C429188AE73D363538BAC43E0BBBB21A6BA42D2F07D86760D48B09A02EDF0701AAEA511674F666386EB16109CCB50483463014AE48EB5EC23599680005E9DB6ECFD8CA2AE61421E1A6F9B4FFF8D79DEB7B76EDB262B9674189185CB248FDB38DA8E1921ACEE84401673EAC653DD08B99386998E184E155DAD6CD3462FB1FF3CBB1C514CAF4B98D5FB7BABE1133ECF22488577F43EE7416AD982F92700F0F74D3B821E382C730066B3C5F3AE1FDC3BAA3D626392BB7A66DAA81732CA2AE0B85AD6E1741C59BC31176366338570C7C4EDD4A262A2C34725A473C33743182BBB8EE03E4E62366ED90EB7209BFAA5EDF707D5A03F79C26C05AFD4E8E2CB696457F38F7E390C57064A6F0BECCA0B2A8022ADB315223BF68731E93A8C01C2A84A102D39D1251CF4616DD86D4E15FE895FD3A8A76C562671929466AFF608A02F2D071348FD0293CE110052DBF4D9A24AC947B0D8608DAAA01BD0408E55ADA43C4C1065EC2015AEC85EE619FB4D4A6014BB51997C6F468887EDE2DB4852DC60BED4842A48A98F3356D2DE208D94319CE84E6414FA446B62F32B788723943EE531A75BE19EF61300CEF523918BA7614BC2B346E6089B903CA41EE01661B000E2270FEB46D47C43CC19B9D90C32C8E6DB4EFF4F58B60EF3307514FD3564A34706E9D8BA29E0D74E4D86FB1E42B9CF5AB1
tmp_aes_key = 19581A6606A51B4D64B6965A1576485CA19F65F37C34AF91728670A4BE3EEC40
tmp_aes_iv = FF9918EEF27701B049AD105054D9DC0AC33189635D5217C82E11B4AB7ACFE54A</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 71F689E89CAD988B73F321CE4D3811340E213502BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BC03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001005810B14927DC018378E3D61892D117D7CD2B1033A9D78FB68861B8ACC93CE73A4B1E13C97C6E8EB772530F315F60D99A90CAEC61EE1FE8FE3AF215BF8D3ADC5AD1DBAFD0E7362722D0D61371388223D276DF3775AB6A8C0FD9E3C2C302C7CCC08B5330018090938C2BC596E20060F0E2D621F524FEB4C95B39D5F27839E4522BC47CDF06A3BF5CB31DFEA7A6CD9EC7C33D7F2C87FA40587D9E9331CA17CAA6925805238F3E101EC9F3930E4F9E9496A476874F02D3451AC80D442F470885D20746773F71689E6C3414CC26377B75991368DBD4E2A131F053C8B81A7B7215AD1A08D180602D41FE8E7F6AA317D57D3358917EC6F0E350212F87964F3E7694202374227B6622C1BE46AB564D3D
answer = BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BC03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001005810B14927DC018378E3D61892D117D7CD2B1033A9D78FB68861B8ACC93CE73A4B1E13C97C6E8EB772530F315F60D99A90CAEC61EE1FE8FE3AF215BF8D3ADC5AD1DBAFD0E7362722D0D61371388223D276DF3775AB6A8C0FD9E3C2C302C7CCC08B5330018090938C2BC596E20060F0E2D621F524FEB4C95B39D5F27839E4522BC47CDF06A3BF5CB31DFEA7A6CD9EC7C33D7F2C87FA40587D9E9331CA17CAA6925805238F3E101EC9F3930E4F9E9496A476874F02D3451AC80D442F470885D20746773F71689E6C3414CC26377B75991368DBD4E2A131F053C8B81A7B7215AD1A08D180602D41FE8E7F6AA317D57D3358917EC6F0E350212F87964F3E7694202374227B6622C1BE46AB564D3D</code></pre>
<pre><code>answer_with_hash = 6CBDF8247F6DF12109DE6F90719F8CE13D85343CBA0D89B52C22111285A55FFA5DBF7ADFB7C0C044A0A2EE2993D9C7A475689AC7B8F67CF303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010013A776883E6EF3EADE80AB1E49C79E236D8EF659E6A9C4B8985C5BC7E4C11BAF98478F3F3F8CA0535F7A02938EA0FB8CF60B0AB79D469248001DB79705E42D2D79A2845647EE4EC9B617A8E68A54A33F2E5C8F7751AD6FCD1CE232BA6BDFDAD55C5A815E8AB2178FC5ED00325118522BBD07D4C62A44567F3AF8B27F3B4ABB578AE6B6631B2AE48D0DEB1C688FF13C8A60E2369C0782387476FDC76461EFDA24A6BAB9970DB8D7349244F13FBB6D208D92A6BB8518E01A46C87FD78C1898F90F5545BBB1381892F39286A039315C97E4C252D8DCBA8A6395E9FA1BE43B3AE8D94880CC46F45957236650D4B763EFC2AE2AAF296C42854FCDDB68CAFCBF91D6A9EA297B66582169B7E24CBEE9
answer = BA0D89B52C22111285A55FFA5DBF7ADFB7C0C044A0A2EE2993D9C7A475689AC7B8F67CF303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010013A776883E6EF3EADE80AB1E49C79E236D8EF659E6A9C4B8985C5BC7E4C11BAF98478F3F3F8CA0535F7A02938EA0FB8CF60B0AB79D469248001DB79705E42D2D79A2845647EE4EC9B617A8E68A54A33F2E5C8F7751AD6FCD1CE232BA6BDFDAD55C5A815E8AB2178FC5ED00325118522BBD07D4C62A44567F3AF8B27F3B4ABB578AE6B6631B2AE48D0DEB1C688FF13C8A60E2369C0782387476FDC76461EFDA24A6BAB9970DB8D7349244F13FBB6D208D92A6BB8518E01A46C87FD78C1898F90F5545BBB1381892F39286A039315C97E4C252D8DCBA8A6395E9FA1BE43B3AE8D94880CC46F45957236650D4B763EFC2AE2AAF296C42854FCDDB68CAFCBF91D6A9EA297B66582169B7E24CBEE9</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 C3 C8 F6 BE 0E 4F 8A 08 AE F2 D4 4C
0010 | 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59 FC 98 9D 20
0020 | BA 91 C0 BC 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 2C 22 11 12 85 A5 5F FA 5D BF 7A DF
0010 | B7 C0 C0 44 A0 A2 EE 29 93 D9 C7 A4 75 68 9A C7
0020 | B8 F6 7C F3 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 = BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0B
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 | 58 10 B1 49 27 DC 01 83 78 E3 D6 18 92 D1 17 D7
0140 | CD 2B 10 33 A9 D7 8F B6 88 61 B8 AC C9 3C E7 3A
0150 | 4B 1E 13 C9 7C 6E 8E B7 72 53 0F 31 5F 60 D9 9A
0160 | 90 CA EC 61 EE 1F E8 FE 3A F2 15 BF 8D 3A DC 5A
0170 | D1 DB AF D0 E7 36 27 22 D0 D6 13 71 38 82 23 D2
0180 | 76 DF 37 75 AB 6A 8C 0F D9 E3 C2 C3 02 C7 CC C0
0190 | 8B 53 30 01 80 90 93 8C 2B C5 96 E2 00 60 F0 E2
01A0 | D6 21 F5 24 FE B4 C9 5B 39 D5 F2 78 39 E4 52 2B
01B0 | C4 7C DF 06 A3 BF 5C B3 1D FE A7 A6 CD 9E C7 C3
01C0 | 3D 7F 2C 87 FA 40 58 7D 9E 93 31 CA 17 CA A6 92
01D0 | 58 05 23 8F 3E 10 1E C9 F3 93 0E 4F 9E 94 96 A4
01E0 | 76 87 4F 02 D3 45 1A C8 0D 44 2F 47 08 85 D2 07
01F0 | 46 77 3F 71 68 9E 6C 34 14 CC 26 37 7B 75 99 13
0200 | 68 DB D4 E2 A1 31 F0 53 C8 B8 1A 7B 72 15 AD 1A
0210 | 08 D1 80 60 2D 41 FE 8E 7F 6A A3 17 D5 7D 33 58
0220 | 91 7E C6 F0 E3 50 21 2F 87 96 4F 3E 76 94 20 23
0230 | 74 22 7B 66</code></pre>
0130 | 13 A7 76 88 3E 6E F3 EA DE 80 AB 1E 49 C7 9E 23
0140 | 6D 8E F6 59 E6 A9 C4 B8 98 5C 5B C7 E4 C1 1B AF
0150 | 98 47 8F 3F 3F 8C A0 53 5F 7A 02 93 8E A0 FB 8C
0160 | F6 0B 0A B7 9D 46 92 48 00 1D B7 97 05 E4 2D 2D
0170 | 79 A2 84 56 47 EE 4E C9 B6 17 A8 E6 8A 54 A3 3F
0180 | 2E 5C 8F 77 51 AD 6F CD 1C E2 32 BA 6B DF DA D5
0190 | 5C 5A 81 5E 8A B2 17 8F C5 ED 00 32 51 18 52 2B
01A0 | BD 07 D4 C6 2A 44 56 7F 3A F8 B2 7F 3B 4A BB 57
01B0 | 8A E6 B6 63 1B 2A E4 8D 0D EB 1C 68 8F F1 3C 8A
01C0 | 60 E2 36 9C 07 82 38 74 76 FD C7 64 61 EF DA 24
01D0 | A6 BA B9 97 0D B8 D7 34 92 44 F1 3F BB 6D 20 8D
01E0 | 92 A6 BB 85 18 E0 1A 46 C8 7F D7 8C 18 98 F9 0F
01F0 | 55 45 BB B1 38 18 92 F3 92 86 A0 39 31 5C 97 E4
0200 | C2 52 D8 DC BA 8A 63 95 E9 FA 1B E4 3B 3A E8 D9
0210 | 48 80 CC 46 F4 59 57 23 66 50 D4 B7 63 EF C2 AE
0220 | 2A AF 29 6C 42 85 4F CD DB 68 CA FC BF 91 D6 A9
0230 | EA 29 7B 66</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td><code>2C22111285A55FFA5DBF7ADFB7C0C044</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td><code>A0A2EE2993D9C7A475689AC7B8F67CF3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0B
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001005810B14927DC018378E3D618</code> <code>92D117D7CD2B1033A9D78FB68861B8AC</code> <code>C93CE73A4B1E13C97C6E8EB772530F31</code> <code>5F60D99A90CAEC61EE1FE8FE3AF215BF</code> <code>8D3ADC5AD1DBAFD0E7362722D0D61371</code> <code>388223D276DF3775AB6A8C0FD9E3C2C3</code> <code>02C7CCC08B5330018090938C2BC596E2</code> <code>0060F0E2D621F524FEB4C95B39D5F278</code> <code>39E4522BC47CDF06A3BF5CB31DFEA7A6</code> <code>CD9EC7C33D7F2C87FA40587D9E9331CA</code> <code>17CAA6925805238F3E101EC9F3930E4F</code> <code>9E9496A476874F02D3451AC80D442F47</code> <code>0885D20746773F71689E6C3414CC2637</code> <code>7B75991368DBD4E2A131F053C8B81A7B</code> <code>7215AD1A08D180602D41FE8E7F6AA317</code> <code>D57D3358917EC6F0E350212F87964F3E</code><br> <code>76942023</code></td>
<td><code>FE00010013A776883E6EF3EADE80AB1E</code> <code>49C79E236D8EF659E6A9C4B8985C5BC7</code> <code>E4C11BAF98478F3F3F8CA0535F7A0293</code> <code>8EA0FB8CF60B0AB79D469248001DB797</code> <code>05E42D2D79A2845647EE4EC9B617A8E6</code> <code>8A54A33F2E5C8F7751AD6FCD1CE232BA</code> <code>6BDFDAD55C5A815E8AB2178FC5ED0032</code> <code>5118522BBD07D4C62A44567F3AF8B27F</code> <code>3B4ABB578AE6B6631B2AE48D0DEB1C68</code> <code>8FF13C8A60E2369C0782387476FDC764</code> <code>61EFDA24A6BAB9970DB8D7349244F13F</code> <code>BB6D208D92A6BB8518E01A46C87FD78C</code> <code>1898F90F5545BBB1381892F39286A039</code> <code>315C97E4C252D8DCBA8A6395E9FA1BE4</code> <code>3B3AE8D94880CC46F45957236650D4B7</code> <code>63EFC2AE2AAF296C42854FCDDB68CAFC</code><br> <code>BF91D6A9</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>74227B66</code> (1719345780 in decimal)</td>
<td><code>EA297B66</code> (1719347690 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0B
<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 = 4371999EFC8E12CDADD9B755E5323F276E06B2227D354847BAE21C45ABEDC730300DF9D9C4C946D046FA721E1202C9FAA18792D9A35E80A3DD17A37E20957815299D2BE2A1173EFC329A74B75C75EF6DDF791AD27CB51C4491A33BAE153CCCDC6D8457FC1A4C743BFFF0A5780B5D425216B3894472499593E735153557052096674FC01310E012C4C99CE6E7F000B03260C491F15E4277373F5C27BFA5A2C1C438E9C7368E5B1436CC88FA6F9D036154BFB72474C4044C3345EA35E901FBC2163C2A8133666918C5848B64AE5273954AA8E8E4E850BFE7BEF67B3DDAAE37C7834E8EC9D75F4136A598BCA9BB840D4AFCF50DB07ED75942345B2C36414CAC39A9</code></pre>
<pre><code>b = BBE774D3966DF0FB036AFAF8ED130D717A11C2E0B0BFAED55AADF4BDDCBDE72682E8251A8C796E6C8A70E1398F5B13CAFDD51ED3FF63052C2C3DFB4274BB43397BC820CBC8B8592CC23D36437F8B7F57F62952E7A7473ABF09A5648E15F2129FC69C7D4610219202211879F79D0018273195244C3B1BB1ED377CA02BB4BE3D8024EAC492745A08557C824D39EC465C25D93B76BE4CF3AA433DBDEE953E2153F7E1405ECA5F438754FA20A727F1EAC86928B0DCFD2FBCB8C1BAAF185FB315EC4473C4D788DD12B2499F9C1D798D8F3CEF7197C0D1AD7CD4B99CBE109520EFF0A1ED32793B9A502A8DC5298467C594B3ADC57ACC8F8E48A6FBE455AA8BC5CA65DA</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 = 275A685782E5161214E261205ED27F15D103C9D93CDA91A6B3C99548E7271D7E222D42C9941B051981666EC8B7C4892F93EB0B41E176DE7082F6D062B6F7DDEFF57087330E1845C2234124268CE2E19401392493799680971014CFB37162506BD67E92E44C2B8196FFF5DE1AF3ABC01E1A54B02A50046784A5980EB83308D5713A5FB3A442CC10833D70C042465A10958F96D1601EE7909DB4102FEC8A1DEC82C280F4F13EDB8C89B6D2EBBDBE77614973ABBDE2AFA31E94B3A4E6FA3A96E443779C4C317070DF24643A1248509BB440EDE831BEC81CD165939BFCF1DA2D704A3504B8C888E2569E7EB020F3CA04FEF8DC5E4E0907FB495757B44DC908932406</code></pre>
<pre><code>g_b = B0B4090020ECC9906C9A78314F45C0272C4E2783CE9CF7708759BE8D56D991E8A5F2173B3B770A264E937EFF8A5D48F66B51A0708E0FC5D1E614935ECB81D83024B02E4BD41D430A2095447F71FF225A02010F97A617E69B03A48C71291D4ADC53C5AF6503A8634545AC2A2834AD2B585093615473E76FD5E880B0E640A34FB94753ACC7DE65BF55CC999984F266F773F8A44814567EF47C929EFCA309A16D1E2B0F4D7A30F7FB2A2119A2ABE51AA8C780BDC89FE34E34D5C9C88161B6F93C52FAA8BBB3D69F410971D7ED6314793D5A78AFA1D71EFF7430A28EE27AB50859888E0C6B311024F1EC2AF4B83124AAC0778B5014316D20764969FCE8E9D95FCCD5</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 C3 C8 F6 BE 0E 4F 8A 08 AE F2 D4 4C
0010 | 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59 FC 98 9D 20
0020 | BA 91 C0 BC 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 27 5A 68 57 82 E5 16 12 14 E2 61 20 5E D2 7F 15
0040 | D1 03 C9 D9 3C DA 91 A6 B3 C9 95 48 E7 27 1D 7E
0050 | 22 2D 42 C9 94 1B 05 19 81 66 6E C8 B7 C4 89 2F
0060 | 93 EB 0B 41 E1 76 DE 70 82 F6 D0 62 B6 F7 DD EF
0070 | F5 70 87 33 0E 18 45 C2 23 41 24 26 8C E2 E1 94
0080 | 01 39 24 93 79 96 80 97 10 14 CF B3 71 62 50 6B
0090 | D6 7E 92 E4 4C 2B 81 96 FF F5 DE 1A F3 AB C0 1E
00A0 | 1A 54 B0 2A 50 04 67 84 A5 98 0E B8 33 08 D5 71
00B0 | 3A 5F B3 A4 42 CC 10 83 3D 70 C0 42 46 5A 10 95
00C0 | 8F 96 D1 60 1E E7 90 9D B4 10 2F EC 8A 1D EC 82
00D0 | C2 80 F4 F1 3E DB 8C 89 B6 D2 EB BD BE 77 61 49
00E0 | 73 AB BD E2 AF A3 1E 94 B3 A4 E6 FA 3A 96 E4 43
00F0 | 77 9C 4C 31 70 70 DF 24 64 3A 12 48 50 9B B4 40
0100 | ED E8 31 BE C8 1C D1 65 93 9B FC F1 DA 2D 70 4A
0110 | 35 04 B8 C8 88 E2 56 9E 7E B0 20 F3 CA 04 FE F8
0120 | DC 5E 4E 09 07 FB 49 57 57 B4 4D C9 08 93 24 06</code></pre>
<pre><code>0000 | 54 B6 43 66 2C 22 11 12 85 A5 5F FA 5D BF 7A DF
0010 | B7 C0 C0 44 A0 A2 EE 29 93 D9 C7 A4 75 68 9A C7
0020 | B8 F6 7C F3 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | B0 B4 09 00 20 EC C9 90 6C 9A 78 31 4F 45 C0 27
0040 | 2C 4E 27 83 CE 9C F7 70 87 59 BE 8D 56 D9 91 E8
0050 | A5 F2 17 3B 3B 77 0A 26 4E 93 7E FF 8A 5D 48 F6
0060 | 6B 51 A0 70 8E 0F C5 D1 E6 14 93 5E CB 81 D8 30
0070 | 24 B0 2E 4B D4 1D 43 0A 20 95 44 7F 71 FF 22 5A
0080 | 02 01 0F 97 A6 17 E6 9B 03 A4 8C 71 29 1D 4A DC
0090 | 53 C5 AF 65 03 A8 63 45 45 AC 2A 28 34 AD 2B 58
00A0 | 50 93 61 54 73 E7 6F D5 E8 80 B0 E6 40 A3 4F B9
00B0 | 47 53 AC C7 DE 65 BF 55 CC 99 99 84 F2 66 F7 73
00C0 | F8 A4 48 14 56 7E F4 7C 92 9E FC A3 09 A1 6D 1E
00D0 | 2B 0F 4D 7A 30 F7 FB 2A 21 19 A2 AB E5 1A A8 C7
00E0 | 80 BD C8 9F E3 4E 34 D5 C9 C8 81 61 B6 F9 3C 52
00F0 | FA A8 BB B3 D6 9F 41 09 71 D7 ED 63 14 79 3D 5A
0100 | 78 AF A1 D7 1E FF 74 30 A2 8E E2 7A B5 08 59 88
0110 | 8E 0C 6B 31 10 24 F1 EC 2A F4 B8 31 24 AA C0 77
0120 | 8B 50 14 31 6D 20 76 49 69 FC E8 E9 D9 5F CC D5</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 = BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td><code>2C22111285A55FFA5DBF7ADFB7C0C044</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td><code>A0A2EE2993D9C7A475689AC7B8F67CF3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE000100275A685782E5161214E26120</code> <code>5ED27F15D103C9D93CDA91A6B3C99548</code> <code>E7271D7E222D42C9941B051981666EC8</code> <code>B7C4892F93EB0B41E176DE7082F6D062</code> <code>B6F7DDEFF57087330E1845C223412426</code> <code>8CE2E19401392493799680971014CFB3</code> <code>7162506BD67E92E44C2B8196FFF5DE1A</code> <code>F3ABC01E1A54B02A50046784A5980EB8</code> <code>3308D5713A5FB3A442CC10833D70C042</code> <code>465A10958F96D1601EE7909DB4102FEC</code> <code>8A1DEC82C280F4F13EDB8C89B6D2EBBD</code> <code>BE77614973ABBDE2AFA31E94B3A4E6FA</code> <code>3A96E443779C4C317070DF24643A1248</code> <code>509BB440EDE831BEC81CD165939BFCF1</code> <code>DA2D704A3504B8C888E2569E7EB020F3</code> <code>CA04FEF8DC5E4E0907FB495757B44DC9</code><br> <code>08932406</code></td>
<td><code>FE000100B0B4090020ECC9906C9A7831</code> <code>4F45C0272C4E2783CE9CF7708759BE8D</code> <code>56D991E8A5F2173B3B770A264E937EFF</code> <code>8A5D48F66B51A0708E0FC5D1E614935E</code> <code>CB81D83024B02E4BD41D430A2095447F</code> <code>71FF225A02010F97A617E69B03A48C71</code> <code>291D4ADC53C5AF6503A8634545AC2A28</code> <code>34AD2B585093615473E76FD5E880B0E6</code> <code>40A34FB94753ACC7DE65BF55CC999984</code> <code>F266F773F8A44814567EF47C929EFCA3</code> <code>09A16D1E2B0F4D7A30F7FB2A2119A2AB</code> <code>E51AA8C780BDC89FE34E34D5C9C88161</code> <code>B6F93C52FAA8BBB3D69F410971D7ED63</code> <code>14793D5A78AFA1D71EFF7430A28EE27A</code> <code>B50859888E0C6B311024F1EC2AF4B831</code> <code>24AAC0778B5014316D20764969FCE8E9</code><br> <code>D95FCCD5</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 = BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0B
<!-- 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 = 54B64366C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BC0000000000000000FE000100275A685782E5161214E261205ED27F15D103C9D93CDA91A6B3C99548E7271D7E222D42C9941B051981666EC8B7C4892F93EB0B41E176DE7082F6D062B6F7DDEFF57087330E1845C2234124268CE2E19401392493799680971014CFB37162506BD67E92E44C2B8196FFF5DE1AF3ABC01E1A54B02A50046784A5980EB83308D5713A5FB3A442CC10833D70C042465A10958F96D1601EE7909DB4102FEC8A1DEC82C280F4F13EDB8C89B6D2EBBDBE77614973ABBDE2AFA31E94B3A4E6FA3A96E443779C4C317070DF24643A1248509BB440EDE831BEC81CD165939BFCF1DA2D704A3504B8C888E2569E7EB020F3CA04FEF8DC5E4E0907FB495757B44DC908932406
padding = A1B036BFF3AA0739E1586422
tmp_aes_key = 11FE8FBEBAF5CD0D44E94C94684E0F579AAD13781558F3EBFE6859BB2EAAB02A
tmp_aes_iv = F7FFAE27F0F5E583A7ED94409F6B07420494B4BBA4CB58DF12214F4FFE6AAC3F</code></pre>
<pre><code>data = 54B643662C22111285A55FFA5DBF7ADFB7C0C044A0A2EE2993D9C7A475689AC7B8F67CF30000000000000000FE000100B0B4090020ECC9906C9A78314F45C0272C4E2783CE9CF7708759BE8D56D991E8A5F2173B3B770A264E937EFF8A5D48F66B51A0708E0FC5D1E614935ECB81D83024B02E4BD41D430A2095447F71FF225A02010F97A617E69B03A48C71291D4ADC53C5AF6503A8634545AC2A2834AD2B585093615473E76FD5E880B0E640A34FB94753ACC7DE65BF55CC999984F266F773F8A44814567EF47C929EFCA309A16D1E2B0F4D7A30F7FB2A2119A2ABE51AA8C780BDC89FE34E34D5C9C88161B6F93C52FAA8BBB3D69F410971D7ED6314793D5A78AFA1D71EFF7430A28EE27AB50859888E0C6B311024F1EC2AF4B83124AAC0778B5014316D20764969FCE8E9D95FCCD5
padding = C1D4CE31DFAFF631C655A6CC
tmp_aes_key = 19581A6606A51B4D64B6965A1576485CA19F65F37C34AF91728670A4BE3EEC40
tmp_aes_iv = FF9918EEF27701B049AD105054D9DC0AC33189635D5217C82E11B4AB7ACFE54A</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 = 84EA0D2A191290694D445EF398907CDBACB4DD384C142D2B99C5153096F4BC48728DDB6BA33078187E7A8CC810567D44AECBADA7C56075F8D978E9A8BC92D238A7BEB91EB726E521F914A678C5607C8EDF07FE3FA73B330773DFF8F1FAB43951516B142A6231DFE2878B7E6CB9D09D413F65663592B5F0702AFBD13913CEC21331FB97A802CA866561FB6673B7505AFA6DCA65E0A928E133B1BBB8910BB21B7CADEDF07A0CB390F5E3BA7FA3F9E94739ED49C1B1187C7387FCDC24F8F536DA0354C24AF5DDB94EF4264859AA2115A8046CFF2AEB40B064E1EF403E16A1090103A766B12C390C3C31540F46C2A35BF9B4E6786AAA990FC875A95C875B3C17DEC03168CA450B426E8BFFEDFE80C15A70F872C962073C2A05B8E6E0836512BE8ADC18B4CD2746AAF783EF3D1E4210516BB113062DFCFB11B58FF654A1E6454633F116ED380C9A8D51B4838EAAB43F4B5414</code></pre>
<pre><code>encrypted_data = 209DE500B5117602CA83A0FA23E26A693FEF63E38673E7FB427550CBB9BC585971825707D7F369FA4F63512F29636F4F7A4740566D0E388359BBF9162136180467F1EE537A0ECF6BB05F9C91369651D8A1A5B6D0886AE1157CC8464BF7AB57D818AA865561CF8B0A34BE9B33F5C2A27F1F755E083FE7B416255B40488A6776AFE4ADB3E3BD4CC16116CAD25192C25EB761D60B6B18A9905223B160FB79A806634D1B6E98F717D7EB24B3643C303F924C4B65902C45AB84575B8F58627F51BD3A4AE5DCE9E31E5827AD292CFBEFF827F64120F0C90CF0F00681F60B7E1CCD593B78967601A8C1549CEBFE1C80B540861CE64B2F60419A14023B4204FBECB97EE1A43FB390AB1F5AD608EDF73CFDE71F45732051FFD3B516250179591440E86327D5D3B8AE49D6D8FEF0B430843A35A46AE61EB254A34CA93CE21EDBEFE1E6536925552C46D5D65731F47E75D8139AD3E5</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 44 93 0D 00 74 22 7B 66
0010 | 78 01 00 00 1F 5F 04 F5 C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
0030 | FC 98 9D 20 BA 91 C0 BC FE 50 01 00 84 EA 0D 2A
0040 | 19 12 90 69 4D 44 5E F3 98 90 7C DB AC B4 DD 38
0050 | 4C 14 2D 2B 99 C5 15 30 96 F4 BC 48 72 8D DB 6B
0060 | A3 30 78 18 7E 7A 8C C8 10 56 7D 44 AE CB AD A7
0070 | C5 60 75 F8 D9 78 E9 A8 BC 92 D2 38 A7 BE B9 1E
0080 | B7 26 E5 21 F9 14 A6 78 C5 60 7C 8E DF 07 FE 3F
0090 | A7 3B 33 07 73 DF F8 F1 FA B4 39 51 51 6B 14 2A
00A0 | 62 31 DF E2 87 8B 7E 6C B9 D0 9D 41 3F 65 66 35
00B0 | 92 B5 F0 70 2A FB D1 39 13 CE C2 13 31 FB 97 A8
00C0 | 02 CA 86 65 61 FB 66 73 B7 50 5A FA 6D CA 65 E0
00D0 | A9 28 E1 33 B1 BB B8 91 0B B2 1B 7C AD ED F0 7A
00E0 | 0C B3 90 F5 E3 BA 7F A3 F9 E9 47 39 ED 49 C1 B1
00F0 | 18 7C 73 87 FC DC 24 F8 F5 36 DA 03 54 C2 4A F5
0100 | DD B9 4E F4 26 48 59 AA 21 15 A8 04 6C FF 2A EB
0110 | 40 B0 64 E1 EF 40 3E 16 A1 09 01 03 A7 66 B1 2C
0120 | 39 0C 3C 31 54 0F 46 C2 A3 5B F9 B4 E6 78 6A AA
0130 | 99 0F C8 75 A9 5C 87 5B 3C 17 DE C0 31 68 CA 45
0140 | 0B 42 6E 8B FF ED FE 80 C1 5A 70 F8 72 C9 62 07
0150 | 3C 2A 05 B8 E6 E0 83 65 12 BE 8A DC 18 B4 CD 27
0160 | 46 AA F7 83 EF 3D 1E 42 10 51 6B B1 13 06 2D FC
0170 | FB 11 B5 8F F6 54 A1 E6 45 46 33 F1 16 ED 38 0C
0180 | 9A 8D 51 B4 83 8E AA B4 3F 4B 54 14</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 D0 DB 06 00 EA 29 7B 66
0010 | 78 01 00 00 1F 5F 04 F5 2C 22 11 12 85 A5 5F FA
0020 | 5D BF 7A DF B7 C0 C0 44 A0 A2 EE 29 93 D9 C7 A4
0030 | 75 68 9A C7 B8 F6 7C F3 FE 50 01 00 20 9D E5 00
0040 | B5 11 76 02 CA 83 A0 FA 23 E2 6A 69 3F EF 63 E3
0050 | 86 73 E7 FB 42 75 50 CB B9 BC 58 59 71 82 57 07
0060 | D7 F3 69 FA 4F 63 51 2F 29 63 6F 4F 7A 47 40 56
0070 | 6D 0E 38 83 59 BB F9 16 21 36 18 04 67 F1 EE 53
0080 | 7A 0E CF 6B B0 5F 9C 91 36 96 51 D8 A1 A5 B6 D0
0090 | 88 6A E1 15 7C C8 46 4B F7 AB 57 D8 18 AA 86 55
00A0 | 61 CF 8B 0A 34 BE 9B 33 F5 C2 A2 7F 1F 75 5E 08
00B0 | 3F E7 B4 16 25 5B 40 48 8A 67 76 AF E4 AD B3 E3
00C0 | BD 4C C1 61 16 CA D2 51 92 C2 5E B7 61 D6 0B 6B
00D0 | 18 A9 90 52 23 B1 60 FB 79 A8 06 63 4D 1B 6E 98
00E0 | F7 17 D7 EB 24 B3 64 3C 30 3F 92 4C 4B 65 90 2C
00F0 | 45 AB 84 57 5B 8F 58 62 7F 51 BD 3A 4A E5 DC E9
0100 | E3 1E 58 27 AD 29 2C FB EF F8 27 F6 41 20 F0 C9
0110 | 0C F0 F0 06 81 F6 0B 7E 1C CD 59 3B 78 96 76 01
0120 | A8 C1 54 9C EB FE 1C 80 B5 40 86 1C E6 4B 2F 60
0130 | 41 9A 14 02 3B 42 04 FB EC B9 7E E1 A4 3F B3 90
0140 | AB 1F 5A D6 08 ED F7 3C FD E7 1F 45 73 20 51 FF
0150 | D3 B5 16 25 01 79 59 14 40 E8 63 27 D5 D3 B8 AE
0160 | 49 D6 D8 FE F0 B4 30 84 3A 35 A4 6A E6 1E B2 54
0170 | A3 4C A9 3C E2 1E DB EF E1 E6 53 69 25 55 2C 46
0180 | D5 D6 57 31 F4 7E 75 D8 13 9A D3 E5</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>44930D0074227B66</code></td>
<td><code>D0DB0600EA297B66</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>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td><code>2C22111285A55FFA5DBF7ADFB7C0C044</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td><code>A0A2EE2993D9C7A475689AC7B8F67CF3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010084EA0D2A191290694D445EF3</code> <code>98907CDBACB4DD384C142D2B99C51530</code> <code>96F4BC48728DDB6BA33078187E7A8CC8</code> <code>10567D44AECBADA7C56075F8D978E9A8</code> <code>BC92D238A7BEB91EB726E521F914A678</code> <code>C5607C8EDF07FE3FA73B330773DFF8F1</code> <code>FAB43951516B142A6231DFE2878B7E6C</code> <code>B9D09D413F65663592B5F0702AFBD139</code> <code>13CEC21331FB97A802CA866561FB6673</code> <code>B7505AFA6DCA65E0A928E133B1BBB891</code> <code>0BB21B7CADEDF07A0CB390F5E3BA7FA3</code> <code>F9E94739ED49C1B1187C7387FCDC24F8</code> <code>F536DA0354C24AF5DDB94EF4264859AA</code> <code>2115A8046CFF2AEB40B064E1EF403E16</code> <code>A1090103A766B12C390C3C31540F46C2</code> <code>A35BF9B4E6786AAA990FC875A95C875B</code> <code>3C17DEC03168CA450B426E8BFFEDFE80</code> <code>C15A70F872C962073C2A05B8E6E08365</code> <code>12BE8ADC18B4CD2746AAF783EF3D1E42</code> <code>10516BB113062DFCFB11B58FF654A1E6</code> <code>454633F116ED380C9A8D51B4838EAAB4</code><br> <code>3F4B5414</code></td>
<td><code>FE500100209DE500B5117602CA83A0FA</code> <code>23E26A693FEF63E38673E7FB427550CB</code> <code>B9BC585971825707D7F369FA4F63512F</code> <code>29636F4F7A4740566D0E388359BBF916</code> <code>2136180467F1EE537A0ECF6BB05F9C91</code> <code>369651D8A1A5B6D0886AE1157CC8464B</code> <code>F7AB57D818AA865561CF8B0A34BE9B33</code> <code>F5C2A27F1F755E083FE7B416255B4048</code> <code>8A6776AFE4ADB3E3BD4CC16116CAD251</code> <code>92C25EB761D60B6B18A9905223B160FB</code> <code>79A806634D1B6E98F717D7EB24B3643C</code> <code>303F924C4B65902C45AB84575B8F5862</code> <code>7F51BD3A4AE5DCE9E31E5827AD292CFB</code> <code>EFF827F64120F0C90CF0F00681F60B7E</code> <code>1CCD593B78967601A8C1549CEBFE1C80</code> <code>B540861CE64B2F60419A14023B4204FB</code> <code>ECB97EE1A43FB390AB1F5AD608EDF73C</code> <code>FDE71F45732051FFD3B5162501795914</code> <code>40E86327D5D3B8AE49D6D8FEF0B43084</code> <code>3A35A46AE61EB254A34CA93CE21EDBEF</code> <code>E1E6536925552C46D5D65731F47E75D8</code><br> <code>139AD3E5</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 = 6AFCF5F3CF1811729A7BADD937DBF9B661B830B6162E76B92CB6FC183C85D6B62CD9BA1942861A38DB26DC6B55334A2715C43C070B413DC24D71F1A971A31DA260C144A4C94A6E30BD2FD4CB92C070E0A190F2E2CB354971C8D460839561EFBA5A2480017A4D1B4E6F8AC3FCCD3287CB44BE51E2F71E544B3D7F473DE8D26E62E58020FA8E6A8C9A49710322EC463134B9070830B133E2E89388FF65346520E8BAAE7B4CF2CA9EA654A6D0A14E4BDEE3FB05CDD1EE2D70E331E755D11B39776908272FD9CF0E6066B10C448F8FF99231ECBA630DDE7D99730FB9A4433EBF654DD2A388AE75AE9507CCEADBA78B802C0EA5AA5ABEBBBFF830AF196D140546ADA5</code></pre>
<pre><code>auth_key = 2200FD813F2533FCD1AC335388B7B8AEC03C3EE5E774CD1CEFC06254CA14086B8ECC0E1280B9CDB4798F945BC8AE0165D3ECD185E867515EB2ABFFA1470E6B9FE62DE0E944E7A7BE8CAB9F3F365066C47BE9179C2A6099D8E3B1D4FA9206E1196E9EDD667C843A00EC731940FC79AACE38F2337683020BEB736C690EDE09517F522EDFB9E1863D7C1A334A4815D3EC6C27BBE5434969BE76BD0533F78CE2B6EF94C74A96DD8BA02D81992DE47167A25543F45FAB1D470EAB69986A92EB276FBC049325642DA76DF0A3290C887FC44C6C4C456D3943BB1395A294145200DEB13C1FBE1C6BDDD541AEE2433870F936C6CB875BDB69F4C607D47D856FF1778A0906</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 34 15 70 75 22 7B 66
0010 | 90 00 00 00 34 F7 CB 3B C3 C8 F6 BE 0E 4F 8A 08
0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
0030 | FC 98 9D 20 BA 91 C0 BC 45 39 C6 1E B8 8F FC 75
0040 | EA 2F 49 54 F2 94 D1 D4</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 48 7A 86 EA 29 7B 66
0010 | 58 00 00 00 34 F7 CB 3B 2C 22 11 12 85 A5 5F FA
0020 | 5D BF 7A DF B7 C0 C0 44 A0 A2 EE 29 93 D9 C7 A4
0030 | 75 68 9A C7 B8 F6 7C F3 FF 2E 0D 83 FE 87 25 8C
0040 | 80 16 DA 9E A9 19 E1 1C</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>0134157075227B66</code></td>
<td><code>01487A86EA297B66</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>90000000</code> (144 in decimal)</td>
<td><code>58000000</code> (88 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>C3C8F6BE0E4F8A08AEF2D44C207ACE47</code></td>
<td><code>2C22111285A55FFA5DBF7ADFB7C0C044</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>A0F0D7BA6EF00259FC989D20BA91C0BC</code></td>
<td><code>A0A2EE2993D9C7A475689AC7B8F67CF3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>4539C61EB88FFC75EA2F4954F294D1D4</code></td>
<td><code>FF2E0D83FE87258C8016DA9EA919E11C</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>