Update content of files

This commit is contained in:
GitHub Action 2024-06-24 18:24:10 +00:00
parent 15431f8b1b
commit 1699ec558b
7 changed files with 230 additions and 221 deletions

View file

@ -89,12 +89,12 @@
<tr>
<td><strong>hide_read_marks</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/constructor/true">true</a></td>
<td>If set, users that cannot see <em>our</em> exact last online date due to the current value of the <a href="/constructor/inputPrivacyKeyStatusTimestamp">inputPrivacyKeyStatusTimestamp</a> key will receive a <code>403</code> <code>USER_PRIVACY_RESTRICTED</code> error when invoking <a href="/method/messages.getOutboxReadDate">messages.getOutboxReadDate</a> to fetch the exact read date of one of their messages. <br>The <a href="/constructor/userFull">userFull</a>.<code>read_dates_private</code> flag will be set for users that have this flag enabled.</td>
<td>If set, (only) users that cannot see <em>our</em> exact last online date due to the current value of the <a href="/constructor/inputPrivacyKeyStatusTimestamp">inputPrivacyKeyStatusTimestamp</a> key will receive a <code>403</code> <code>USER_PRIVACY_RESTRICTED</code> error when invoking <a href="/method/messages.getOutboxReadDate">messages.getOutboxReadDate</a> to fetch the exact read date of one of their messages. <br>The <a href="/constructor/userFull">userFull</a>.<code>read_dates_private</code> flag will be set for users that have this flag enabled.</td>
</tr>
<tr>
<td><strong>new_noncontact_peers_require_premium</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/constructor/true">true</a></td>
<td>If set, only users that have a premium account, are in our contact list, or already have a private chat with us can write to us privately; a <code>403</code> <code>PRIVACY_PREMIUM_REQUIRED</code> error will be emitted otherwise. <br>The <a href="/constructor/userFull">userFull</a>.<code>contact_require_premium</code> flag will be set for users that have this flag enabled. <br><a href="/api/premium">Premium</a> users only, non-Premium users will receive a <code>PREMIUM_ACCOUNT_REQUIRED</code> error when trying to enable this flag.</td>
<td>If set, only users that have a premium account, are in our contact list, or already have a private chat with us can write to us privately; a <code>403</code> <code>PRIVACY_PREMIUM_REQUIRED</code> error will be emitted otherwise. <br>The <a href="/constructor/userFull">userFull</a>.<code>contact_require_premium</code> flag will be set for users that have this flag enabled. <br><a href="/api/premium">Premium</a> users only, non-Premium users will receive a <code>PREMIUM_ACCOUNT_REQUIRED</code> error when trying to enable this flag.</td>
</tr>
</tbody>
</table>
@ -104,7 +104,8 @@
<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4>
<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</p>
<h4><a class="anchor" href="#inputprivacykeystatustimestamp" id="inputprivacykeystatustimestamp" name="inputprivacykeystatustimestamp"><i class="anchor-icon"></i></a><a href="/constructor/inputPrivacyKeyStatusTimestamp">inputPrivacyKeyStatusTimestamp</a></h4>
<p>Whether people will be able to see your exact last online timestamp</p>
<p>Whether people will be able to see our exact last online timestamp.</p>
<p>Note that if <em>we</em> decide to hide our exact last online timestamp to someone <strong>and</strong> we do not have a <a href="/api/premium">Premium</a> subscription, we won't be able to see the exact last online timestamp of <em>any</em> user, including those that do share it with us.</p>
<h4><a class="anchor" href="#messagesgetoutboxreaddate" id="messagesgetoutboxreaddate" name="messagesgetoutboxreaddate"><i class="anchor-icon"></i></a><a href="/method/messages.getOutboxReadDate">messages.getOutboxReadDate</a></h4>
<h4><a class="anchor" href="#userfull" id="userfull" name="userfull"><i class="anchor-icon"></i></a><a href="/constructor/userFull">userFull</a></h4>
<p>Extended user info</p>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>inputPrivacyKeyStatusTimestamp</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Whether people will be able to see your exact last online timestamp">
<meta property="description" content="Whether people will be able to see our exact last online timestamp. Note that if we decide to hide our exact last online timestamp to someone and we do not have a Premium subscription, we won&#39;t be able to see the exact last online timestamp of any user, including those that do share it with us.">
<meta property="og:title" content="inputPrivacyKeyStatusTimestamp">
<meta property="og:image" content="">
<meta property="og:description" content="Whether people will be able to see your exact last online timestamp">
<meta property="og:description" content="Whether people will be able to see our exact last online timestamp. Note that if we decide to hide our exact last online timestamp to someone and we do not have a Premium subscription, we won&#39;t be able to see the exact last online timestamp of any user, including those that do share it with us.">
<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,8 +42,8 @@
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputPrivacyKeyStatusTimestamp" >inputPrivacyKeyStatusTimestamp</a></li></ul></div>
<h1 id="dev_page_title">inputPrivacyKeyStatusTimestamp</h1>
<div id="dev_page_content"><p>Whether people will be able to see our exact last online timestamp. </p>
<p>Note that if <em>we</em> decide to hide our exact last online timestamp to someone <strong>and</strong> we do not have a <a href="/api/premium">Premium</a> subscription, we won't be able to see the exact last online timestamp of <em>any</em> user, including those that do share it with us. </p>
<div id="dev_page_content"><p>Whether people will be able to see our exact last online timestamp.</p>
<p>Note that if <em>we</em> decide to hide our exact last online timestamp to someone <strong>and</strong> we do not have a <a href="/api/premium">Premium</a> subscription, we won't be able to see the exact last online timestamp of <em>any</em> user, including those that do share it with us.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -60,7 +60,10 @@
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
<p>This constructor does not require any parameters.</p>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/InputPrivacyKey">InputPrivacyKey</a></p></div>
<p><a href="/type/InputPrivacyKey">InputPrivacyKey</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p></div>
</div>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>privacyKeyStatusTimestamp</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Whether we can see the last online timestamp of this user">
<meta property="description" content="Whether we can see the last online timestamp of this user. Note that if we decide to hide our exact last online timestamp to someone and we do not have a Premium subscription, we won&#39;t be able to see the exact last online timestamp of any user, including those that do share it with us.">
<meta property="og:title" content="privacyKeyStatusTimestamp">
<meta property="og:image" content="">
<meta property="og:description" content="Whether we can see the last online timestamp of this user">
<meta property="og:description" content="Whether we can see the last online timestamp of this user. Note that if we decide to hide our exact last online timestamp to someone and we do not have a Premium subscription, we won&#39;t be able to see the exact last online timestamp of any user, including those that do share it with us.">
<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">
@ -43,7 +43,7 @@
<h1 id="dev_page_title">privacyKeyStatusTimestamp</h1>
<div id="dev_page_content"><p>Whether we can see the last online timestamp of this user.</p>
<p>Note that if <em>we</em> decide to hide our exact last online timestamp to someone <strong>and</strong> we do not have a <a href="/api/premium">Premium</a> subscription, we won't be able to see the exact last online timestamp of <em>any</em> user, including those that do share it with us. </p>
<p>Note that if <em>we</em> decide to hide our exact last online timestamp to someone <strong>and</strong> we do not have a <a href="/api/premium">Premium</a> subscription, we won't be able to see the exact last online timestamp of <em>any</em> user, including those that do share it with us.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -60,7 +60,10 @@
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
<p>This constructor does not require any parameters.</p>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/PrivacyKey">PrivacyKey</a></p></div>
<p><a href="/type/PrivacyKey">PrivacyKey</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p></div>
</div>

View file

@ -134,7 +134,7 @@
<tr>
<td><strong>read_dates_private</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.30?<a href="/constructor/true">true</a></td>
<td>If set, we cannot fetch the exact read date of messages we send to this user using <a href="/method/messages.getOutboxReadDate">messages.getOutboxReadDate</a>. <br>To set this flag for ourselves invoke <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a>, setting the <code>settings.hide_read_marks</code> flag.</td>
<td>If set, we cannot fetch the exact read date of messages we send to this user using <a href="/method/messages.getOutboxReadDate">messages.getOutboxReadDate</a>. <br>The exact read date of messages might still be unavailable for other reasons, see <a href="/constructor/globalPrivacySettings">here »</a> for more info. <br>To set this flag for ourselves invoke <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a>, setting the <code>settings.hide_read_marks</code> flag.</td>
</tr>
<tr>
<td><strong>flags2</strong></td>
@ -305,6 +305,8 @@
<h4><a class="anchor" href="#accountsetglobalprivacysettings" id="accountsetglobalprivacysettings" name="accountsetglobalprivacysettings"><i class="anchor-icon"></i></a><a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a></h4>
<p>Set global privacy settings</p>
<h4><a class="anchor" href="#messagesgetoutboxreaddate" id="messagesgetoutboxreaddate" name="messagesgetoutboxreaddate"><i class="anchor-icon"></i></a><a href="/method/messages.getOutboxReadDate">messages.getOutboxReadDate</a></h4>
<h4><a class="anchor" href="#globalprivacysettings" id="globalprivacysettings" name="globalprivacysettings"><i class="anchor-icon"></i></a><a href="/constructor/globalPrivacySettings">globalPrivacySettings</a></h4>
<p>Global privacy settings</p>
<h4><a class="anchor" href="#pinned-messages" id="pinned-messages" name="pinned-messages"><i class="anchor-icon"></i></a><a href="/api/pin">Pinned messages</a></h4>
<p>Telegram allows pinning multiple messages on top of a specific chat.</p>
<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4>

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 A8 00 05 00 9F AB 79 66
0010 | 14 00 00 00 F1 8E 7E BE DC 03 79 0F D6 11 07 EB
0020 | DA D1 63 40 B3 50 31 08</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 78 F5 04 00 C6 B6 79 66
0010 | 14 00 00 00 F1 8E 7E BE FF 94 B2 49 02 3B A8 8D
0020 | A0 2F D6 95 79 D7 C4 03</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>A80005009FAB7966</code></td>
<td><code>78F50400C6B67966</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>DC03790FD61107EBDAD16340B3503108</code></td>
<td><code>FF94B249023BA88DA02FD69579D7C403</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 50 C2 5B 9F AB 79 66
0010 | CC 00 00 00 63 24 16 05 DC 03 79 0F D6 11 07 EB
0020 | DA D1 63 40 B3 50 31 08 72 4C D0 AA 73 D7 52 78
0030 | 68 1C 2C 3B 5C AD 94 70 08 1A 1B DA FF 6A CD B1
0040 | 9B 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 9C EB C6 C6 B6 79 66
0010 | B0 00 00 00 63 24 16 05 FF 94 B2 49 02 3B A8 8D
0020 | A0 2F D6 95 79 D7 C4 03 C7 A1 D4 5C 25 AF 92 79
0030 | BD 9C 96 D7 14 48 D3 D3 08 32 01 38 70 1C 37 8F
0040 | E7 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>0150C25B9FAB7966</code></td>
<td><code>019CEBC6C6B67966</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>CC000000</code> (204 in decimal)</td>
<td><code>B0000000</code> (176 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>DC03790FD61107EBDAD16340B3503108</code></td>
<td><code>FF94B249023BA88DA02FD69579D7C403</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>724CD0AA73D75278681C2C3B5CAD9470</code></td>
<td><code>C7A1D45C25AF9279BD9C96D71448D3D3</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>081A1BDAFF6ACDB19B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1881338059900694939</td>
<td><code>08320138701C378FE7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3603223231034003431</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 = 1881338059900694939</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1881338059900694939 = 1259433179 * 1493797441</code></p>
<pre><code>p = 1259433179
q = 1493797441</code></pre>
<pre><code>pq = 3603223231034003431</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>3603223231034003431 = 1836149899 * 1962379669</code></p>
<pre><code>p = 1836149899
q = 1962379669</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 1A 1B DA FF 6A CD B1 9B 00 00 00
0010 | 04 4B 11 6C DB 00 00 00 04 59 09 8A 41 00 00 00
0020 | DC 03 79 0F D6 11 07 EB DA D1 63 40 B3 50 31 08
0030 | 72 4C D0 AA 73 D7 52 78 68 1C 2C 3B 5C AD 94 70
0040 | C6 48 77 DB 05 BF 92 BD 5A 36 57 1B 9B D0 13 C7
0050 | C6 1D 5F 42 29 FA 5A 14 84 7F B3 15 1E 80 6E 5F
<pre><code>0000 | 95 5F F5 A9 08 32 01 38 70 1C 37 8F E7 00 00 00
0010 | 04 6D 71 6C 8B 00 00 00 04 74 F7 89 95 00 00 00
0020 | FF 94 B2 49 02 3B A8 8D A0 2F D6 95 79 D7 C4 03
0030 | C7 A1 D4 5C 25 AF 92 79 BD 9C 96 D7 14 48 D3 D3
0040 | 6B C1 60 F4 87 3A 17 B4 41 99 86 B0 8B B5 CF 9D
0050 | 8E 2B FD 9B BC B6 B0 BB BA 79 63 4F 14 4B AA 69
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 = 1493797441</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>081A1BDAFF6ACDB19B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1881338059900694939</td>
<td><code>08320138701C378FE7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3603223231034003431</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>044B116CDB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1259433179</td>
<td><code>046D716C8B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1836149899</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>0459098A41000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1493797441</td>
<td><code>0474F78995000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1962379669</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>DC03790FD61107EBDAD16340B3503108</code></td>
<td><code>FF94B249023BA88DA02FD69579D7C403</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>724CD0AA73D75278681C2C3B5CAD9470</code></td>
<td><code>C7A1D45C25AF9279BD9C96D71448D3D3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>C64877DB05BF92BD5A36571B9BD013C7</code> <code>C61D5F4229FA5A14847FB3151E806E5F</code></td>
<td><code>6BC160F4873A17B4419986B08BB5CF9D</code> <code>8E2BFD9BBCB6B0BBBA79634F144BAA69</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1493797441</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 = 955FF5A9081A1BDAFF6ACDB19B000000044B116CDB0000000459098A41000000DC03790FD61107EBDAD16340B3503108724CD0AA73D75278681C2C3B5CAD9470C64877DB05BF92BD5A36571B9BD013C7C61D5F4229FA5A14847FB3151E806E5F02000000
random_padding_bytes = E69D178D60E6F09242E53331F41319B94357AA58142D9A03D1645C5B9E6AFCFF0E2704CF36BC9BF82F36BD095CE2653FAA34F5CC864A1AE9F9ADF5A66A4E8C156D03DA0F3AC4A9E59FA15B5C417B8DC8BB7C559FA27D40F0D0A669B6</code></pre>
<pre><code>data = 955FF5A908320138701C378FE7000000046D716C8B0000000474F78995000000FF94B249023BA88DA02FD69579D7C403C7A1D45C25AF9279BD9C96D71448D3D36BC160F4873A17B4419986B08BB5CF9D8E2BFD9BBCB6B0BBBA79634F144BAA6902000000
random_padding_bytes = 16AFBBFE92AA5DAD2952669F45527DAEE2CDB5B7DDFCD25E96D30906E70C51606BEF23B8BEE2982D39C5B3E0AA6DCFB66490C8202EE3DC2B7EA96890477C73354A52C01844D5DE73921F1927ED5904B08504BE82A584A790D9EC89A5</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 = 16F9CA56227918A7C8104EA086F7BA3052C9EBCE693D1C173C7825465E9A8A7F10E94781E554DDD5C752EC28F0DFB3922328EF2251B6F61EB2D7639BB36A95B7965C3EDC4BC8D0C49E8A2E364AB8DE1532AE6311F6BB80FBA2B47CDD1B4AB3CFEAC588AE0BED004F610B59BBC3E502E488CC3678DBCD727BC8C472F753D309FCBA73A48F94740C1202764C9DFA68A176326B43125CB57634C5D255CDFD541C769E5A7C82E217BD9ADC8C20D3E414E0030D2329BB6F57D13D318D8D325CA5117433C3C112624080D9B6834D6E8831C3141971DB6CB7A1C23CDFB01E9B8D9CF2ADA5BACA01B7C7B27BD69D8B11989A7D66548CE010390330D3EBEC19E04DD76248</code></pre>
<pre><code>encrypted_data = 31C92146F1B94380574226D5EC6C1BCBC4910E59555579617F895839C7098547752E8CF5ACDBC06FBA43164ACD9C359E17508F7C290C13E53FE3B4DD709BBEED1B48566CDE6D35D34A13B2270FFF7B98E89FF02935E034B6734EC3ACDD74550ADD68B26FC919A738E56A200D5E844C5E365931056FCD04758423124DA67EC19C826D07E6C7559F02C2D2E342E990B1237F1D38ECAAAF048100EEC0CFAC2D0E67B04D3F66FB5D4D0ABF2440E57EEA03FC670311E411ED344B99DC8A9CC06278B994B30FA30A50675E0AEE1BD47D0C3C75862C82781E27D15C29EC342B37AD07F9BF362CC538AD3513C7DF8FD77E828820E924A16EA081C3F5AFB1B79C7E58EE60</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 50 B8 0A 00 9F AB 79 66
0010 | 40 01 00 00 BE E4 12 D7 DC 03 79 0F D6 11 07 EB
0020 | DA D1 63 40 B3 50 31 08 72 4C D0 AA 73 D7 52 78
0030 | 68 1C 2C 3B 5C AD 94 70 04 4B 11 6C DB 00 00 00
0040 | 04 59 09 8A 41 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 16 F9 CA 56 22 79 18 A7 C8 10 4E A0
0060 | 86 F7 BA 30 52 C9 EB CE 69 3D 1C 17 3C 78 25 46
0070 | 5E 9A 8A 7F 10 E9 47 81 E5 54 DD D5 C7 52 EC 28
0080 | F0 DF B3 92 23 28 EF 22 51 B6 F6 1E B2 D7 63 9B
0090 | B3 6A 95 B7 96 5C 3E DC 4B C8 D0 C4 9E 8A 2E 36
00A0 | 4A B8 DE 15 32 AE 63 11 F6 BB 80 FB A2 B4 7C DD
00B0 | 1B 4A B3 CF EA C5 88 AE 0B ED 00 4F 61 0B 59 BB
00C0 | C3 E5 02 E4 88 CC 36 78 DB CD 72 7B C8 C4 72 F7
00D0 | 53 D3 09 FC BA 73 A4 8F 94 74 0C 12 02 76 4C 9D
00E0 | FA 68 A1 76 32 6B 43 12 5C B5 76 34 C5 D2 55 CD
00F0 | FD 54 1C 76 9E 5A 7C 82 E2 17 BD 9A DC 8C 20 D3
0100 | E4 14 E0 03 0D 23 29 BB 6F 57 D1 3D 31 8D 8D 32
0110 | 5C A5 11 74 33 C3 C1 12 62 40 80 D9 B6 83 4D 6E
0120 | 88 31 C3 14 19 71 DB 6C B7 A1 C2 3C DF B0 1E 9B
0130 | 8D 9C F2 AD A5 BA CA 01 B7 C7 B2 7B D6 9D 8B 11
0140 | 98 9A 7D 66 54 8C E0 10 39 03 30 D3 EB EC 19 E0
0150 | 4D D7 62 48</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 F8 52 0D 00 C6 B6 79 66
0010 | 40 01 00 00 BE E4 12 D7 FF 94 B2 49 02 3B A8 8D
0020 | A0 2F D6 95 79 D7 C4 03 C7 A1 D4 5C 25 AF 92 79
0030 | BD 9C 96 D7 14 48 D3 D3 04 6D 71 6C 8B 00 00 00
0040 | 04 74 F7 89 95 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 31 C9 21 46 F1 B9 43 80 57 42 26 D5
0060 | EC 6C 1B CB C4 91 0E 59 55 55 79 61 7F 89 58 39
0070 | C7 09 85 47 75 2E 8C F5 AC DB C0 6F BA 43 16 4A
0080 | CD 9C 35 9E 17 50 8F 7C 29 0C 13 E5 3F E3 B4 DD
0090 | 70 9B BE ED 1B 48 56 6C DE 6D 35 D3 4A 13 B2 27
00A0 | 0F FF 7B 98 E8 9F F0 29 35 E0 34 B6 73 4E C3 AC
00B0 | DD 74 55 0A DD 68 B2 6F C9 19 A7 38 E5 6A 20 0D
00C0 | 5E 84 4C 5E 36 59 31 05 6F CD 04 75 84 23 12 4D
00D0 | A6 7E C1 9C 82 6D 07 E6 C7 55 9F 02 C2 D2 E3 42
00E0 | E9 90 B1 23 7F 1D 38 EC AA AF 04 81 00 EE C0 CF
00F0 | AC 2D 0E 67 B0 4D 3F 66 FB 5D 4D 0A BF 24 40 E5
0100 | 7E EA 03 FC 67 03 11 E4 11 ED 34 4B 99 DC 8A 9C
0110 | C0 62 78 B9 94 B3 0F A3 0A 50 67 5E 0A EE 1B D4
0120 | 7D 0C 3C 75 86 2C 82 78 1E 27 D1 5C 29 EC 34 2B
0130 | 37 AD 07 F9 BF 36 2C C5 38 AD 35 13 C7 DF 8F D7
0140 | 7E 82 88 20 E9 24 A1 6E A0 81 C3 F5 AF B1 B7 9C
0150 | 7E 58 EE 60</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 = E69D178D60E6F09242E53331F41319B94357AA58142D9A03D1645C5B9
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>50B80A009FAB7966</code></td>
<td><code>F8520D00C6B67966</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 = E69D178D60E6F09242E53331F41319B94357AA58142D9A03D1645C5B9
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>DC03790FD61107EBDAD16340B3503108</code></td>
<td><code>FF94B249023BA88DA02FD69579D7C403</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>724CD0AA73D75278681C2C3B5CAD9470</code></td>
<td><code>C7A1D45C25AF9279BD9C96D71448D3D3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>044B116CDB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1259433179</td>
<td><code>046D716C8B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1836149899</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>0459098A41000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1493797441</td>
<td><code>0474F78995000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1962379669</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 = E69D178D60E6F09242E53331F41319B94357AA58142D9A03D1645C5B9
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE00010016F9CA56227918A7C8104EA0</code> <code>86F7BA3052C9EBCE693D1C173C782546</code> <code>5E9A8A7F10E94781E554DDD5C752EC28</code> <code>F0DFB3922328EF2251B6F61EB2D7639B</code> <code>B36A95B7965C3EDC4BC8D0C49E8A2E36</code> <code>4AB8DE1532AE6311F6BB80FBA2B47CDD</code> <code>1B4AB3CFEAC588AE0BED004F610B59BB</code> <code>C3E502E488CC3678DBCD727BC8C472F7</code> <code>53D309FCBA73A48F94740C1202764C9D</code> <code>FA68A176326B43125CB57634C5D255CD</code> <code>FD541C769E5A7C82E217BD9ADC8C20D3</code> <code>E414E0030D2329BB6F57D13D318D8D32</code> <code>5CA5117433C3C112624080D9B6834D6E</code> <code>8831C3141971DB6CB7A1C23CDFB01E9B</code> <code>8D9CF2ADA5BACA01B7C7B27BD69D8B11</code> <code>989A7D66548CE010390330D3EBEC19E0</code><br> <code>4DD76248</code></td>
<td><code>FE00010031C92146F1B94380574226D5</code> <code>EC6C1BCBC4910E59555579617F895839</code> <code>C7098547752E8CF5ACDBC06FBA43164A</code> <code>CD9C359E17508F7C290C13E53FE3B4DD</code> <code>709BBEED1B48566CDE6D35D34A13B227</code> <code>0FFF7B98E89FF02935E034B6734EC3AC</code> <code>DD74550ADD68B26FC919A738E56A200D</code> <code>5E844C5E365931056FCD04758423124D</code> <code>A67EC19C826D07E6C7559F02C2D2E342</code> <code>E990B1237F1D38ECAAAF048100EEC0CF</code> <code>AC2D0E67B04D3F66FB5D4D0ABF2440E5</code> <code>7EEA03FC670311E411ED344B99DC8A9C</code> <code>C06278B994B30FA30A50675E0AEE1BD4</code> <code>7D0C3C75862C82781E27D15C29EC342B</code> <code>37AD07F9BF362CC538AD3513C7DF8FD7</code> <code>7E828820E924A16EA081C3F5AFB1B79C</code><br> <code>7E58EE60</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = E69D178D60E6F09242E53331F41319B94357AA58142D9A03D1645C5B9
<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 E4 D7 22 A0 AB 79 66
0010 | C8 02 00 00 5C 07 E8 D0 DC 03 79 0F D6 11 07 EB
0020 | DA D1 63 40 B3 50 31 08 72 4C D0 AA 73 D7 52 78
0030 | 68 1C 2C 3B 5C AD 94 70 FE 50 02 00 7F C3 E7 70
0040 | 13 CA 10 D2 B2 34 E1 21 9E C1 2B 0B 9B CB 8F A7
0050 | 58 46 41 42 BD 4B FF 46 68 22 0D 25 3E AC E9 44
0060 | EC 81 17 60 15 BC E6 B8 FB 1A C2 C0 9C 99 6B E9
0070 | EE 5D 5B F2 91 BF 51 B4 4A 10 B8 1D 2D 56 57 91
0080 | A8 9E C5 34 A6 A1 53 A4 FF F4 3F 48 39 AE 00 5F
0090 | B8 8B E4 20 53 C7 D8 62 3D 80 01 4C 6F CD E4 06
00A0 | 16 28 67 7E 6F A6 F9 F8 0D 31 EE 28 9D 73 C5 86
00B0 | 05 CF 46 35 94 FB 3A C5 DB 4E 78 B9 57 1C ED 33
00C0 | 8F FE E2 68 EE FB 3D 58 20 B2 E7 92 63 DD 1E F3
00D0 | 0F 31 0B A1 91 56 C8 5E 04 72 61 E5 22 E5 89 D7
00E0 | 10 04 B8 D2 B5 76 C9 A7 8E 82 BF 62 06 28 84 82
00F0 | EB 1D 70 8B 73 91 3F 06 F0 4A 72 58 BA DD 56 7F
0100 | 68 A3 3D 3B 63 FC 60 10 45 8F 69 07 66 87 27 3B
0110 | 8D EF DA CC B7 10 AE 53 BA 1E A5 95 01 AC BD CF
0120 | C2 B8 EC D0 33 8C D3 C6 BF 8B 79 7D 31 1C 49 28
0130 | 27 22 AA 8B AA DC 97 C5 F8 B9 B3 69 C7 B0 D1 B8
0140 | F9 B9 4F 86 75 BE 3B 64 5A 83 DA B8 4D A5 F0 62
0150 | 49 B3 0B A1 48 1E 93 FF 21 6A 09 84 B5 E3 05 2C
0160 | 56 7F 2F 71 6E 4E B0 E7 C9 1B 15 CD 44 1D 70 FB
0170 | D0 B7 38 9A E3 F6 D4 D2 FE 4F 5B 0B E8 83 27 6C
0180 | C3 14 B6 C2 E0 50 D4 DE FE 1C C3 6B 66 BA 2D 87
0190 | 13 9A 85 CC 82 65 B7 73 08 B7 C8 63 2D E9 4C 43
01A0 | 89 08 B7 30 88 0F 71 A9 C6 16 68 74 4A 13 FC 87
01B0 | 69 74 10 40 7B 28 97 F0 A4 65 B0 DD B0 F4 91 77
01C0 | AC 31 35 79 C1 07 9A 56 5E 76 CB 81 23 3F 64 8D
01D0 | D9 89 11 E9 AA B5 C7 6D E2 20 CA DC F3 8C 1A 29
01E0 | 74 3A 4B AC 0E 3F C1 07 CC D6 8D EE 66 EF E4 D1
01F0 | 5C 77 46 82 DC 44 90 A8 61 66 9A 6B 13 0D A9 7B
0200 | 13 32 AE 17 5C 1C 96 B4 77 73 B2 E7 29 73 65 66
0210 | C1 D7 6F 38 F7 AD 1A 93 65 59 74 99 4E 48 5E 9F
0220 | 6D BC 50 09 67 D4 EF 6A CD 05 FF 76 FC EB 4C 41
0230 | DB 3B 3C 78 09 62 E1 5A 6E 84 73 F5 A5 58 93 8D
0240 | 86 CF AF 18 40 A0 AA 5A EB B4 B6 C7 A4 DF 5E 11
0250 | AF CF AD 09 BF E1 5F A4 88 39 72 FA 46 C2 95 9B
0260 | 62 4A 51 8B BF D0 7D 1A E8 2D 29 45 60 D3 23 90
0270 | BA 30 BF C3 CD 0D 2F 3A 26 20 9A C4 67 85 39 48
0280 | F6 FF CA B4 5F EC 0E 29 5E 64 CE B6</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 C4 7C 85 C7 B6 79 66
0010 | 9C 02 00 00 5C 07 E8 D0 FF 94 B2 49 02 3B A8 8D
0020 | A0 2F D6 95 79 D7 C4 03 C7 A1 D4 5C 25 AF 92 79
0030 | BD 9C 96 D7 14 48 D3 D3 FE 50 02 00 AC 77 CB FE
0040 | 83 8D E1 17 44 AE 4F 4F 6A 58 07 51 2D 70 3C 94
0050 | 47 33 A3 2E 97 2A AB 59 60 CA F2 63 73 97 09 AA
0060 | D4 16 E5 5D FF B2 FB CF 33 BC 68 B4 63 33 12 C4
0070 | C7 82 85 04 70 C2 3B 0B 9A 26 B5 13 BA 0D B0 B0
0080 | 96 DB 4F 81 0B E9 02 F5 7D 82 44 8E 55 C5 A2 7B
0090 | FC B1 94 70 9B D9 31 C8 9D 8C 33 69 8C A5 16 1E
00A0 | 56 24 69 45 55 8E 0A C4 59 B4 FD 34 20 13 51 8D
00B0 | A2 F8 4B B7 FC E7 30 CD 9E A9 8C 97 9C E4 00 01
00C0 | 0E 1B 40 99 08 E7 DD 8A 98 B7 50 53 69 F7 22 1A
00D0 | 58 4E 83 15 E7 68 68 44 5C 4B CB 80 4C E8 DE D7
00E0 | DE CF 1F 73 4D 51 F1 96 C9 06 15 DF 6E 28 15 88
00F0 | 48 20 32 A7 39 8B 58 AB 2B 84 3A E2 E1 54 83 AF
0100 | 15 FB 46 16 ED A7 79 21 B1 32 51 91 42 33 10 51
0110 | 11 F3 CE 13 2E AA D7 1A 41 CE F2 F2 BC 46 2F CB
0120 | EC 2E 91 60 FB 7B E0 88 FF 3E 82 17 24 94 21 B7
0130 | 8B 22 4A A8 4D 73 28 3F 0E 0A 6D F7 65 A6 13 C7
0140 | 9D 5C 2B 74 EB 48 D0 DA B5 75 B0 DA 6A 8C EC FC
0150 | 04 6B 74 56 73 98 58 E1 40 87 6D 6D 64 C8 13 46
0160 | BE 8C 62 1A D8 32 C5 79 0B 44 82 AA 99 F9 EC D6
0170 | 39 F2 E1 19 F8 E9 0B 2C FE 3F 25 59 C4 48 90 16
0180 | A7 DC 50 4F 10 90 10 53 E9 EA F8 A7 1E 37 5F 22
0190 | A2 76 2A 17 CA CA 64 7C 5A AE 72 4D EF C7 43 10
01A0 | 30 19 66 4A 26 6B 9C 4B D6 BE D9 D2 9E 8C CC 41
01B0 | BF EC 4E 91 63 9F 12 82 3A 5B 70 9B 1C 94 1A DE
01C0 | BF 2B 07 DB 33 E5 9F E5 17 8B F1 11 DA 78 C3 84
01D0 | 89 C9 F2 1B BF 0B 30 DA C3 9E 34 A0 60 38 8C DC
01E0 | F8 BF A4 02 39 DC A5 1D 4E B4 AD AB 45 E8 93 F9
01F0 | 1B 9B F4 F5 A2 82 39 8F 63 D1 AA DD A7 03 43 19
0200 | EA 83 9A 94 86 A2 77 B1 6C FB CC EB 20 F7 D5 12
0210 | 32 1B 03 C3 32 92 9E 42 2D EF C6 FF 5A 9D 57 62
0220 | 8B 61 D8 F4 11 2F 42 B5 7C 83 8B 64 03 EE 21 4F
0230 | 77 87 6D 85 5D FC 81 F9 4F C4 F7 64 A7 55 86 32
0240 | FA A3 20 DA 1A 66 97 D9 41 C9 D8 3A 06 19 0E 76
0250 | 79 E6 A9 90 6B C2 13 E3 59 6F 14 15 46 71 CD 71
0260 | DE FA BA 89 18 23 55 56 3C 44 38 60 83 D1 8E 90
0270 | F0 AA D2 DD 05 E9 04 A0 E6 0A 2E 0E 6C 5C 88 E6
0280 | CA 48 0E B0 6C 2D 4B 90 05 9B E2 ED</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 = E69D178D60E6F09242E53331F41319B94357AA58142D9A03D1645C5B9
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01E4D722A0AB7966</code></td>
<td><code>01C47C85C7B67966</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>C8020000</code> (712 in decimal)</td>
<td><code>9C020000</code> (668 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = E69D178D60E6F09242E53331F41319B94357AA58142D9A03D1645C5B9
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>DC03790FD61107EBDAD16340B3503108</code></td>
<td><code>FF94B249023BA88DA02FD69579D7C403</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>724CD0AA73D75278681C2C3B5CAD9470</code></td>
<td><code>C7A1D45C25AF9279BD9C96D71448D3D3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002007FC3E77013CA10D2B234E121</code> <code>9EC12B0B9BCB8FA758464142BD4BFF46</code> <code>68220D253EACE944EC81176015BCE6B8</code> <code>FB1AC2C09C996BE9EE5D5BF291BF51B4</code> <code>4A10B81D2D565791A89EC534A6A153A4</code> <code>FFF43F4839AE005FB88BE42053C7D862</code> <code>3D80014C6FCDE4061628677E6FA6F9F8</code> <code>0D31EE289D73C58605CF463594FB3AC5</code> <code>DB4E78B9571CED338FFEE268EEFB3D58</code> <code>20B2E79263DD1EF30F310BA19156C85E</code> <code>047261E522E589D71004B8D2B576C9A7</code> <code>8E82BF6206288482EB1D708B73913F06</code> <code>F04A7258BADD567F68A33D3B63FC6010</code> <code>458F69076687273B8DEFDACCB710AE53</code> <code>BA1EA59501ACBDCFC2B8ECD0338CD3C6</code> <code>BF8B797D311C49282722AA8BAADC97C5</code> <code>F8B9B369C7B0D1B8F9B94F8675BE3B64</code> <code>5A83DAB84DA5F06249B30BA1481E93FF</code> <code>216A0984B5E3052C567F2F716E4EB0E7</code> <code>C91B15CD441D70FBD0B7389AE3F6D4D2</code> <code>FE4F5B0BE883276CC314B6C2E050D4DE</code> <code>FE1CC36B66BA2D87139A85CC8265B773</code> <code>08B7C8632DE94C438908B730880F71A9</code> <code>C61668744A13FC87697410407B2897F0</code> <code>A465B0DDB0F49177AC313579C1079A56</code> <code>5E76CB81233F648DD98911E9AAB5C76D</code> <code>E220CADCF38C1A29743A4BAC0E3FC107</code> <code>CCD68DEE66EFE4D15C774682DC4490A8</code> <code>61669A6B130DA97B1332AE175C1C96B4</code> <code>7773B2E729736566C1D76F38F7AD1A93</code> <code>655974994E485E9F6DBC500967D4EF6A</code> <code>CD05FF76FCEB4C41DB3B3C780962E15A</code> <code>6E8473F5A558938D86CFAF1840A0AA5A</code> <code>EBB4B6C7A4DF5E11AFCFAD09BFE15FA4</code> <code>883972FA46C2959B624A518BBFD07D1A</code> <code>E82D294560D32390BA30BFC3CD0D2F3A</code> <code>26209AC467853948F6FFCAB45FEC0E29</code><br> <code>5E64CEB6</code></td>
<td><code>FE500200AC77CBFE838DE11744AE4F4F</code> <code>6A5807512D703C944733A32E972AAB59</code> <code>60CAF263739709AAD416E55DFFB2FBCF</code> <code>33BC68B4633312C4C782850470C23B0B</code> <code>9A26B513BA0DB0B096DB4F810BE902F5</code> <code>7D82448E55C5A27BFCB194709BD931C8</code> <code>9D8C33698CA5161E56246945558E0AC4</code> <code>59B4FD342013518DA2F84BB7FCE730CD</code> <code>9EA98C979CE400010E1B409908E7DD8A</code> <code>98B7505369F7221A584E8315E7686844</code> <code>5C4BCB804CE8DED7DECF1F734D51F196</code> <code>C90615DF6E281588482032A7398B58AB</code> <code>2B843AE2E15483AF15FB4616EDA77921</code> <code>B13251914233105111F3CE132EAAD71A</code> <code>41CEF2F2BC462FCBEC2E9160FB7BE088</code> <code>FF3E8217249421B78B224AA84D73283F</code> <code>0E0A6DF765A613C79D5C2B74EB48D0DA</code> <code>B575B0DA6A8CECFC046B7456739858E1</code> <code>40876D6D64C81346BE8C621AD832C579</code> <code>0B4482AA99F9ECD639F2E119F8E90B2C</code> <code>FE3F2559C4489016A7DC504F10901053</code> <code>E9EAF8A71E375F22A2762A17CACA647C</code> <code>5AAE724DEFC743103019664A266B9C4B</code> <code>D6BED9D29E8CCC41BFEC4E91639F1282</code> <code>3A5B709B1C941ADEBF2B07DB33E59FE5</code> <code>178BF111DA78C38489C9F21BBF0B30DA</code> <code>C39E34A060388CDCF8BFA40239DCA51D</code> <code>4EB4ADAB45E893F91B9BF4F5A282398F</code> <code>63D1AADDA7034319EA839A9486A277B1</code> <code>6CFBCCEB20F7D512321B03C332929E42</code> <code>2DEFC6FF5A9D57628B61D8F4112F42B5</code> <code>7C838B6403EE214F77876D855DFC81F9</code> <code>4FC4F764A7558632FAA320DA1A6697D9</code> <code>41C9D83A06190E7679E6A9906BC213E3</code> <code>596F14154671CD71DEFABA8918235556</code> <code>3C44386083D18E90F0AAD2DD05E904A0</code> <code>E60A2E0E6C5C88E6CA480EB06C2D4B90</code><br> <code>059BE2ED</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = E69D178D60E6F09242E53331F41319B94357AA58142D9A03D1645C5B9
<!-- 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 = 7FC3E77013CA10D2B234E1219EC12B0B9BCB8FA758464142BD4BFF4668220D253EACE944EC81176015BCE6B8FB1AC2C09C996BE9EE5D5BF291BF51B44A10B81D2D565791A89EC534A6A153A4FFF43F4839AE005FB88BE42053C7D8623D80014C6FCDE4061628677E6FA6F9F80D31EE289D73C58605CF463594FB3AC5DB4E78B9571CED338FFEE268EEFB3D5820B2E79263DD1EF30F310BA19156C85E047261E522E589D71004B8D2B576C9A78E82BF6206288482EB1D708B73913F06F04A7258BADD567F68A33D3B63FC6010458F69076687273B8DEFDACCB710AE53BA1EA59501ACBDCFC2B8ECD0338CD3C6BF8B797D311C49282722AA8BAADC97C5F8B9B369C7B0D1B8F9B94F8675BE3B645A83DAB84DA5F06249B30BA1481E93FF216A0984B5E3052C567F2F716E4EB0E7C91B15CD441D70FBD0B7389AE3F6D4D2FE4F5B0BE883276CC314B6C2E050D4DEFE1CC36B66BA2D87139A85CC8265B77308B7C8632DE94C438908B730880F71A9C61668744A13FC87697410407B2897F0A465B0DDB0F49177AC313579C1079A565E76CB81233F648DD98911E9AAB5C76DE220CADCF38C1A29743A4BAC0E3FC107CCD68DEE66EFE4D15C774682DC4490A861669A6B130DA97B1332AE175C1C96B47773B2E729736566C1D76F38F7AD1A93655974994E485E9F6DBC500967D4EF6ACD05FF76FCEB4C41DB3B3C780962E15A6E8473F5A558938D86CFAF1840A0AA5AEBB4B6C7A4DF5E11AFCFAD09BFE15FA4883972FA46C2959B624A518BBFD07D1AE82D294560D32390BA30BFC3CD0D2F3A26209AC467853948F6FFCAB45FEC0E295E64CEB6
tmp_aes_key = D3626B5D7D1A5A17A8F8C3A1D5639ACD9318ED75A46E81DFC8FCBF33450F3711
tmp_aes_iv = 8346B78BC1A9555AAC572A106176513DB61C5EF161B773F64C0526DCC64877DB</code></pre>
<pre><code>encrypted_answer = AC77CBFE838DE11744AE4F4F6A5807512D703C944733A32E972AAB5960CAF263739709AAD416E55DFFB2FBCF33BC68B4633312C4C782850470C23B0B9A26B513BA0DB0B096DB4F810BE902F57D82448E55C5A27BFCB194709BD931C89D8C33698CA5161E56246945558E0AC459B4FD342013518DA2F84BB7FCE730CD9EA98C979CE400010E1B409908E7DD8A98B7505369F7221A584E8315E76868445C4BCB804CE8DED7DECF1F734D51F196C90615DF6E281588482032A7398B58AB2B843AE2E15483AF15FB4616EDA77921B13251914233105111F3CE132EAAD71A41CEF2F2BC462FCBEC2E9160FB7BE088FF3E8217249421B78B224AA84D73283F0E0A6DF765A613C79D5C2B74EB48D0DAB575B0DA6A8CECFC046B7456739858E140876D6D64C81346BE8C621AD832C5790B4482AA99F9ECD639F2E119F8E90B2CFE3F2559C4489016A7DC504F10901053E9EAF8A71E375F22A2762A17CACA647C5AAE724DEFC743103019664A266B9C4BD6BED9D29E8CCC41BFEC4E91639F12823A5B709B1C941ADEBF2B07DB33E59FE5178BF111DA78C38489C9F21BBF0B30DAC39E34A060388CDCF8BFA40239DCA51D4EB4ADAB45E893F91B9BF4F5A282398F63D1AADDA7034319EA839A9486A277B16CFBCCEB20F7D512321B03C332929E422DEFC6FF5A9D57628B61D8F4112F42B57C838B6403EE214F77876D855DFC81F94FC4F764A7558632FAA320DA1A6697D941C9D83A06190E7679E6A9906BC213E3596F14154671CD71DEFABA89182355563C44386083D18E90F0AAD2DD05E904A0E60A2E0E6C5C88E6CA480EB06C2D4B90059BE2ED
tmp_aes_key = B92981189223E79306ED28A79803166CB9955A23AB1278C4F2C911449BCBA10B
tmp_aes_iv = 72CF3E363A1C6658B900F9427A230DC6EA595327438D5C28EB9287336BC160F4</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = F201B86B3CC1A8EAA4477C0CE8644E7E213BEBBCBA0D89B5DC03790FD61107EBDAD16340B3503108724CD0AA73D75278681C2C3B5CAD947003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100AD87D1D0A512F46D767C302227ED9DBA5D567E2A00B3542C9DD9A37FD05BD8394F63CEC69BD6249C56EEAE6D3A7BA6CBB5770B0F0ED97B7BC883D446C541305D2CA93C03C08E6A830FCEC71168F230B360E7E3AE0242D9A17F8E40279CB2B2A2075B7FC561CB64A101F328B87D319DA02159BFC9F3C3108E17192B3B780B6C605CC414571E349CBE7493D5A3A4EAD873408AA80D8ED8DE22B725AE8A02FA0723001E520096A8AAA9B73D3539A9C09D5DBB67F4F42134576A896FA2561FA0EB821EC70E9E57C26326A68F962C39D2A4D84F87DD9F0335A3AF646BDDF64499949BA4CEA681183221D9B3565AB9AB6CD23B543CD51DDC9ABDBC9D6A15F9CC0DEDC6A0AB79663786B99E051E8031
answer = BA0D89B5DC03790FD61107EBDAD16340B3503108724CD0AA73D75278681C2C3B5CAD947003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100AD87D1D0A512F46D767C302227ED9DBA5D567E2A00B3542C9DD9A37FD05BD8394F63CEC69BD6249C56EEAE6D3A7BA6CBB5770B0F0ED97B7BC883D446C541305D2CA93C03C08E6A830FCEC71168F230B360E7E3AE0242D9A17F8E40279CB2B2A2075B7FC561CB64A101F328B87D319DA02159BFC9F3C3108E17192B3B780B6C605CC414571E349CBE7493D5A3A4EAD873408AA80D8ED8DE22B725AE8A02FA0723001E520096A8AAA9B73D3539A9C09D5DBB67F4F42134576A896FA2561FA0EB821EC70E9E57C26326A68F962C39D2A4D84F87DD9F0335A3AF646BDDF64499949BA4CEA681183221D9B3565AB9AB6CD23B543CD51DDC9ABDBC9D6A15F9CC0DEDC6A0AB79663786B99E051E8031</code></pre>
<pre><code>answer_with_hash = 122F0BCC970E84F81E1B0E7877EFED5B71E1AF95BA0D89B5FF94B249023BA88DA02FD69579D7C403C7A1D45C25AF9279BD9C96D71448D3D303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010062F2AE811E0E1B9DCF3FA2499A356EEC8E942B61E888519CC6309519FA871E75439A28E33CAA3F3E4D8AC20818A5C76633F121D98EFA3BD8250F2D926F310D7E88C205E6092180504C8C4B9027D61492F208B0CF197E4B56067D8FE9F1222D0E3C3C04BE92189932A0AA3A2C910CBBD0C6645FB1972C807D66E012B5FA5EB4A4D8B60E3E59B5F03EB757C5CC4C54ED4E0AD5F07214D70DA97A62A7403B7A32E62B3732501F9B1359230BDF120E4DCF18AB339EE8883E2D800355B0E5F351EAE23FD44B60F649CC293C0039D673ABD9B0708AE9028230BED69DD51DA75C1B8801F597324F3A7CB4683BD609B9BD40DE9D52E0868547C0A9D9F579B6128A62F14EC7B67966AB8328A1388D04BA
answer = BA0D89B5FF94B249023BA88DA02FD69579D7C403C7A1D45C25AF9279BD9C96D71448D3D303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010062F2AE811E0E1B9DCF3FA2499A356EEC8E942B61E888519CC6309519FA871E75439A28E33CAA3F3E4D8AC20818A5C76633F121D98EFA3BD8250F2D926F310D7E88C205E6092180504C8C4B9027D61492F208B0CF197E4B56067D8FE9F1222D0E3C3C04BE92189932A0AA3A2C910CBBD0C6645FB1972C807D66E012B5FA5EB4A4D8B60E3E59B5F03EB757C5CC4C54ED4E0AD5F07214D70DA97A62A7403B7A32E62B3732501F9B1359230BDF120E4DCF18AB339EE8883E2D800355B0E5F351EAE23FD44B60F649CC293C0039D673ABD9B0708AE9028230BED69DD51DA75C1B8801F597324F3A7CB4683BD609B9BD40DE9D52E0868547C0A9D9F579B6128A62F14EC7B67966AB8328A1388D04BA</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 DC 03 79 0F D6 11 07 EB DA D1 63 40
0010 | B3 50 31 08 72 4C D0 AA 73 D7 52 78 68 1C 2C 3B
0020 | 5C AD 94 70 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 FF 94 B2 49 02 3B A8 8D A0 2F D6 95
0010 | 79 D7 C4 03 C7 A1 D4 5C 25 AF 92 79 BD 9C 96 D7
0020 | 14 48 D3 D3 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 = BA0D89B5DC03790FD61107EBDAD16340B3503108724CD0AA73D75278681C2C3B5CAD947
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 | AD 87 D1 D0 A5 12 F4 6D 76 7C 30 22 27 ED 9D BA
0140 | 5D 56 7E 2A 00 B3 54 2C 9D D9 A3 7F D0 5B D8 39
0150 | 4F 63 CE C6 9B D6 24 9C 56 EE AE 6D 3A 7B A6 CB
0160 | B5 77 0B 0F 0E D9 7B 7B C8 83 D4 46 C5 41 30 5D
0170 | 2C A9 3C 03 C0 8E 6A 83 0F CE C7 11 68 F2 30 B3
0180 | 60 E7 E3 AE 02 42 D9 A1 7F 8E 40 27 9C B2 B2 A2
0190 | 07 5B 7F C5 61 CB 64 A1 01 F3 28 B8 7D 31 9D A0
01A0 | 21 59 BF C9 F3 C3 10 8E 17 19 2B 3B 78 0B 6C 60
01B0 | 5C C4 14 57 1E 34 9C BE 74 93 D5 A3 A4 EA D8 73
01C0 | 40 8A A8 0D 8E D8 DE 22 B7 25 AE 8A 02 FA 07 23
01D0 | 00 1E 52 00 96 A8 AA A9 B7 3D 35 39 A9 C0 9D 5D
01E0 | BB 67 F4 F4 21 34 57 6A 89 6F A2 56 1F A0 EB 82
01F0 | 1E C7 0E 9E 57 C2 63 26 A6 8F 96 2C 39 D2 A4 D8
0200 | 4F 87 DD 9F 03 35 A3 AF 64 6B DD F6 44 99 94 9B
0210 | A4 CE A6 81 18 32 21 D9 B3 56 5A B9 AB 6C D2 3B
0220 | 54 3C D5 1D DC 9A BD BC 9D 6A 15 F9 CC 0D ED C6
0230 | A0 AB 79 66</code></pre>
0130 | 62 F2 AE 81 1E 0E 1B 9D CF 3F A2 49 9A 35 6E EC
0140 | 8E 94 2B 61 E8 88 51 9C C6 30 95 19 FA 87 1E 75
0150 | 43 9A 28 E3 3C AA 3F 3E 4D 8A C2 08 18 A5 C7 66
0160 | 33 F1 21 D9 8E FA 3B D8 25 0F 2D 92 6F 31 0D 7E
0170 | 88 C2 05 E6 09 21 80 50 4C 8C 4B 90 27 D6 14 92
0180 | F2 08 B0 CF 19 7E 4B 56 06 7D 8F E9 F1 22 2D 0E
0190 | 3C 3C 04 BE 92 18 99 32 A0 AA 3A 2C 91 0C BB D0
01A0 | C6 64 5F B1 97 2C 80 7D 66 E0 12 B5 FA 5E B4 A4
01B0 | D8 B6 0E 3E 59 B5 F0 3E B7 57 C5 CC 4C 54 ED 4E
01C0 | 0A D5 F0 72 14 D7 0D A9 7A 62 A7 40 3B 7A 32 E6
01D0 | 2B 37 32 50 1F 9B 13 59 23 0B DF 12 0E 4D CF 18
01E0 | AB 33 9E E8 88 3E 2D 80 03 55 B0 E5 F3 51 EA E2
01F0 | 3F D4 4B 60 F6 49 CC 29 3C 00 39 D6 73 AB D9 B0
0200 | 70 8A E9 02 82 30 BE D6 9D D5 1D A7 5C 1B 88 01
0210 | F5 97 32 4F 3A 7C B4 68 3B D6 09 B9 BD 40 DE 9D
0220 | 52 E0 86 85 47 C0 A9 D9 F5 79 B6 12 8A 62 F1 4E
0230 | C7 B6 79 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 = BA0D89B5DC03790FD61107EBDAD16340B3503108724CD0AA73D75278681C2C3B5CAD947
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>DC03790FD61107EBDAD16340B3503108</code></td>
<td><code>FF94B249023BA88DA02FD69579D7C403</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>724CD0AA73D75278681C2C3B5CAD9470</code></td>
<td><code>C7A1D45C25AF9279BD9C96D71448D3D3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B5DC03790FD61107EBDAD16340B3503108724CD0AA73D75278681C2C3B5CAD947
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE000100AD87D1D0A512F46D767C3022</code> <code>27ED9DBA5D567E2A00B3542C9DD9A37F</code> <code>D05BD8394F63CEC69BD6249C56EEAE6D</code> <code>3A7BA6CBB5770B0F0ED97B7BC883D446</code> <code>C541305D2CA93C03C08E6A830FCEC711</code> <code>68F230B360E7E3AE0242D9A17F8E4027</code> <code>9CB2B2A2075B7FC561CB64A101F328B8</code> <code>7D319DA02159BFC9F3C3108E17192B3B</code> <code>780B6C605CC414571E349CBE7493D5A3</code> <code>A4EAD873408AA80D8ED8DE22B725AE8A</code> <code>02FA0723001E520096A8AAA9B73D3539</code> <code>A9C09D5DBB67F4F42134576A896FA256</code> <code>1FA0EB821EC70E9E57C26326A68F962C</code> <code>39D2A4D84F87DD9F0335A3AF646BDDF6</code> <code>4499949BA4CEA681183221D9B3565AB9</code> <code>AB6CD23B543CD51DDC9ABDBC9D6A15F9</code><br> <code>CC0DEDC6</code></td>
<td><code>FE00010062F2AE811E0E1B9DCF3FA249</code> <code>9A356EEC8E942B61E888519CC6309519</code> <code>FA871E75439A28E33CAA3F3E4D8AC208</code> <code>18A5C76633F121D98EFA3BD8250F2D92</code> <code>6F310D7E88C205E6092180504C8C4B90</code> <code>27D61492F208B0CF197E4B56067D8FE9</code> <code>F1222D0E3C3C04BE92189932A0AA3A2C</code> <code>910CBBD0C6645FB1972C807D66E012B5</code> <code>FA5EB4A4D8B60E3E59B5F03EB757C5CC</code> <code>4C54ED4E0AD5F07214D70DA97A62A740</code> <code>3B7A32E62B3732501F9B1359230BDF12</code> <code>0E4DCF18AB339EE8883E2D800355B0E5</code> <code>F351EAE23FD44B60F649CC293C0039D6</code> <code>73ABD9B0708AE9028230BED69DD51DA7</code> <code>5C1B8801F597324F3A7CB4683BD609B9</code> <code>BD40DE9D52E0868547C0A9D9F579B612</code><br> <code>8A62F14E</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>A0AB7966</code> (1719249824 in decimal)</td>
<td><code>C7B67966</code> (1719252679 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B5DC03790FD61107EBDAD16340B3503108724CD0AA73D75278681C2C3B5CAD947
<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 = C82980A4E9C7E68EF82EADCFEE9BAD5DC82B2E1C677109EF51CFBF3A82109187D5D5EC4BAC4A4169520646277193FD315BAAD962ECDC49B3B486D77542DBA5B2EAA34106DCF7DC00EFB68997E9DEAF1331541361C64D66711415485E75E8D934919C6649C2D923DC44CC201B0B72AA1BC4A5F938E26C3E84C3C4E6822C28DBC2D1334FBF8EA1715EAFAB8DD53DF87399C0EF19CDF48E7CF9E44F787741CF0718C37AE54D37C6E66A4719DBD30FB12752EF79051B822BC11F56448C0FC30078CECE51F8A7EB1E80C5AE91F98963BCED042C6D4CEAB37F09F51DEBBAD6E74A8D3BD5AAD4B6E8331641FF06D255F08B4D9F4001CB36ECE29B1A541ADA9334172FD6</code></pre>
<pre><code>b = A54F266C33E710D2AE04BD6E09C07FD1AD4C8EABF98BD4E7F0A48BB3889E563ABF2CE4AE130E1C7BCAD117D743F4F7618B27E9922C8F23207AFFD4A4E1E1D9253CDBB6DEBEA5C674FE95FD55097B14276BC46C90FCCB8DEC0273CCC45BD5FA3B204E8CA52FCDCABC7810FDD4AEB4796F60876FDC4F82F1C08C8A54788440206B4D8638001A47F0BA57576DAA500B7954CA488F97E65C7A4F68B423357F7E1F55C8E5B10C130F074E68117313C62B31468F21C952B2DC519BB5C06CD5970C0EB4EC9F52984EF0E40854F3D0039AD8B33B17920F2F3423DC8CCD3D3076D6CA1DD135E5461A490C3FF437CA4EB537629205BF38A11C84255CFD05098500F15AA9CD</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 = AD3C671E8D244426C393C91D558EFB89797EFBD5C34D9F5267D09CF8156AE456E40C82CB096813C673FD2B6C75D4D8D354060249C74733059E7A667AF66F8ED75D3E23DB8B02A82E1EEA3F19ECDD53A640AC10E7243BAC871C8457398D7D8FC2783A0DBB343E1F9D12062CEE3285909A302E9AA83AD7B10FF53C3CD076D9DECCA8C9DD4AC9288C0A8C3CABD0FEAE92EF5AB6DE5AC50F9E57B3C32E8A6AD2687AA01D6052BFAEFC7CF4E4D7F8E6EFD4CEE9E3E4D4CEC4A405011BE00A11B12CD77D45CE9755CAD6EFBE89ED7C65ED2F9128C8BD29D2564D285B64B89D932B956D667F34557F6B5E26C673322D694C4BAA01F72E2361C6D8EE3DCB080BDBBB6680</code></pre>
<pre><code>g_b = 2812EBAAD2502B9846CA086240815E5CDAAC50FD49CB4A1ACE8D15849913D414068A6EF361A19D94F8758A818F967CCEC13BF05A494EAA2291F8A928592060F0D73A84A29BB66EDD9F734BEEF6F750AD14E4BED67832CDC670022EC1B7C6984E0963CE8252CC73064B8BF1D407CAD64BDDABDC313ED3C349A45992386B9E87C46CDC5257D7E2935DF0F4B10E3A30159EAC7FE6AF6561DCD33AF6F733B2E3EF36CD00C35F907E19334A80954B08F330ACD9684A6561240A785A8C8774FE6078738DB8D6776D6CCAC2BA68EC519C6EBCC8C39ED5B9474B43E7F547320F57F27C33ADF296C48107E64847AEBACB8E69C76CE003C1D6D373DDE80389C79706E8A260</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 DC 03 79 0F D6 11 07 EB DA D1 63 40
0010 | B3 50 31 08 72 4C D0 AA 73 D7 52 78 68 1C 2C 3B
0020 | 5C AD 94 70 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | AD 3C 67 1E 8D 24 44 26 C3 93 C9 1D 55 8E FB 89
0040 | 79 7E FB D5 C3 4D 9F 52 67 D0 9C F8 15 6A E4 56
0050 | E4 0C 82 CB 09 68 13 C6 73 FD 2B 6C 75 D4 D8 D3
0060 | 54 06 02 49 C7 47 33 05 9E 7A 66 7A F6 6F 8E D7
0070 | 5D 3E 23 DB 8B 02 A8 2E 1E EA 3F 19 EC DD 53 A6
0080 | 40 AC 10 E7 24 3B AC 87 1C 84 57 39 8D 7D 8F C2
0090 | 78 3A 0D BB 34 3E 1F 9D 12 06 2C EE 32 85 90 9A
00A0 | 30 2E 9A A8 3A D7 B1 0F F5 3C 3C D0 76 D9 DE CC
00B0 | A8 C9 DD 4A C9 28 8C 0A 8C 3C AB D0 FE AE 92 EF
00C0 | 5A B6 DE 5A C5 0F 9E 57 B3 C3 2E 8A 6A D2 68 7A
00D0 | A0 1D 60 52 BF AE FC 7C F4 E4 D7 F8 E6 EF D4 CE
00E0 | E9 E3 E4 D4 CE C4 A4 05 01 1B E0 0A 11 B1 2C D7
00F0 | 7D 45 CE 97 55 CA D6 EF BE 89 ED 7C 65 ED 2F 91
0100 | 28 C8 BD 29 D2 56 4D 28 5B 64 B8 9D 93 2B 95 6D
0110 | 66 7F 34 55 7F 6B 5E 26 C6 73 32 2D 69 4C 4B AA
0120 | 01 F7 2E 23 61 C6 D8 EE 3D CB 08 0B DB BB 66 80</code></pre>
<pre><code>0000 | 54 B6 43 66 FF 94 B2 49 02 3B A8 8D A0 2F D6 95
0010 | 79 D7 C4 03 C7 A1 D4 5C 25 AF 92 79 BD 9C 96 D7
0020 | 14 48 D3 D3 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 28 12 EB AA D2 50 2B 98 46 CA 08 62 40 81 5E 5C
0040 | DA AC 50 FD 49 CB 4A 1A CE 8D 15 84 99 13 D4 14
0050 | 06 8A 6E F3 61 A1 9D 94 F8 75 8A 81 8F 96 7C CE
0060 | C1 3B F0 5A 49 4E AA 22 91 F8 A9 28 59 20 60 F0
0070 | D7 3A 84 A2 9B B6 6E DD 9F 73 4B EE F6 F7 50 AD
0080 | 14 E4 BE D6 78 32 CD C6 70 02 2E C1 B7 C6 98 4E
0090 | 09 63 CE 82 52 CC 73 06 4B 8B F1 D4 07 CA D6 4B
00A0 | DD AB DC 31 3E D3 C3 49 A4 59 92 38 6B 9E 87 C4
00B0 | 6C DC 52 57 D7 E2 93 5D F0 F4 B1 0E 3A 30 15 9E
00C0 | AC 7F E6 AF 65 61 DC D3 3A F6 F7 33 B2 E3 EF 36
00D0 | CD 00 C3 5F 90 7E 19 33 4A 80 95 4B 08 F3 30 AC
00E0 | D9 68 4A 65 61 24 0A 78 5A 8C 87 74 FE 60 78 73
00F0 | 8D B8 D6 77 6D 6C CA C2 BA 68 EC 51 9C 6E BC C8
0100 | C3 9E D5 B9 47 4B 43 E7 F5 47 32 0F 57 F2 7C 33
0110 | AD F2 96 C4 81 07 E6 48 47 AE BA CB 8E 69 C7 6C
0120 | E0 03 C1 D6 D3 73 DD E8 03 89 C7 97 06 E8 A2 60</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 = BA0D89B5DC03790FD61107EBDAD16340B3503108724CD0AA73D75278681C2C3B5CAD947
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>DC03790FD61107EBDAD16340B3503108</code></td>
<td><code>FF94B249023BA88DA02FD69579D7C403</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>724CD0AA73D75278681C2C3B5CAD9470</code></td>
<td><code>C7A1D45C25AF9279BD9C96D71448D3D3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE000100AD3C671E8D244426C393C91D</code> <code>558EFB89797EFBD5C34D9F5267D09CF8</code> <code>156AE456E40C82CB096813C673FD2B6C</code> <code>75D4D8D354060249C74733059E7A667A</code> <code>F66F8ED75D3E23DB8B02A82E1EEA3F19</code> <code>ECDD53A640AC10E7243BAC871C845739</code> <code>8D7D8FC2783A0DBB343E1F9D12062CEE</code> <code>3285909A302E9AA83AD7B10FF53C3CD0</code> <code>76D9DECCA8C9DD4AC9288C0A8C3CABD0</code> <code>FEAE92EF5AB6DE5AC50F9E57B3C32E8A</code> <code>6AD2687AA01D6052BFAEFC7CF4E4D7F8</code> <code>E6EFD4CEE9E3E4D4CEC4A405011BE00A</code> <code>11B12CD77D45CE9755CAD6EFBE89ED7C</code> <code>65ED2F9128C8BD29D2564D285B64B89D</code> <code>932B956D667F34557F6B5E26C673322D</code> <code>694C4BAA01F72E2361C6D8EE3DCB080B</code><br> <code>DBBB6680</code></td>
<td><code>FE0001002812EBAAD2502B9846CA0862</code> <code>40815E5CDAAC50FD49CB4A1ACE8D1584</code> <code>9913D414068A6EF361A19D94F8758A81</code> <code>8F967CCEC13BF05A494EAA2291F8A928</code> <code>592060F0D73A84A29BB66EDD9F734BEE</code> <code>F6F750AD14E4BED67832CDC670022EC1</code> <code>B7C6984E0963CE8252CC73064B8BF1D4</code> <code>07CAD64BDDABDC313ED3C349A4599238</code> <code>6B9E87C46CDC5257D7E2935DF0F4B10E</code> <code>3A30159EAC7FE6AF6561DCD33AF6F733</code> <code>B2E3EF36CD00C35F907E19334A80954B</code> <code>08F330ACD9684A6561240A785A8C8774</code> <code>FE6078738DB8D6776D6CCAC2BA68EC51</code> <code>9C6EBCC8C39ED5B9474B43E7F547320F</code> <code>57F27C33ADF296C48107E64847AEBACB</code> <code>8E69C76CE003C1D6D373DDE80389C797</code><br> <code>06E8A260</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 = BA0D89B5DC03790FD61107EBDAD16340B3503108724CD0AA73D75278681C2C3B5CAD947
<!-- 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 = 54B64366DC03790FD61107EBDAD16340B3503108724CD0AA73D75278681C2C3B5CAD94700000000000000000FE000100AD3C671E8D244426C393C91D558EFB89797EFBD5C34D9F5267D09CF8156AE456E40C82CB096813C673FD2B6C75D4D8D354060249C74733059E7A667AF66F8ED75D3E23DB8B02A82E1EEA3F19ECDD53A640AC10E7243BAC871C8457398D7D8FC2783A0DBB343E1F9D12062CEE3285909A302E9AA83AD7B10FF53C3CD076D9DECCA8C9DD4AC9288C0A8C3CABD0FEAE92EF5AB6DE5AC50F9E57B3C32E8A6AD2687AA01D6052BFAEFC7CF4E4D7F8E6EFD4CEE9E3E4D4CEC4A405011BE00A11B12CD77D45CE9755CAD6EFBE89ED7C65ED2F9128C8BD29D2564D285B64B89D932B956D667F34557F6B5E26C673322D694C4BAA01F72E2361C6D8EE3DCB080BDBBB6680
padding = 3EC564EAD94B0FF35C130EE2
tmp_aes_key = D3626B5D7D1A5A17A8F8C3A1D5639ACD9318ED75A46E81DFC8FCBF33450F3711
tmp_aes_iv = 8346B78BC1A9555AAC572A106176513DB61C5EF161B773F64C0526DCC64877DB</code></pre>
<pre><code>data = 54B64366FF94B249023BA88DA02FD69579D7C403C7A1D45C25AF9279BD9C96D71448D3D30000000000000000FE0001002812EBAAD2502B9846CA086240815E5CDAAC50FD49CB4A1ACE8D15849913D414068A6EF361A19D94F8758A818F967CCEC13BF05A494EAA2291F8A928592060F0D73A84A29BB66EDD9F734BEEF6F750AD14E4BED67832CDC670022EC1B7C6984E0963CE8252CC73064B8BF1D407CAD64BDDABDC313ED3C349A45992386B9E87C46CDC5257D7E2935DF0F4B10E3A30159EAC7FE6AF6561DCD33AF6F733B2E3EF36CD00C35F907E19334A80954B08F330ACD9684A6561240A785A8C8774FE6078738DB8D6776D6CCAC2BA68EC519C6EBCC8C39ED5B9474B43E7F547320F57F27C33ADF296C48107E64847AEBACB8E69C76CE003C1D6D373DDE80389C79706E8A260
padding = 0FA99B2C4A0BCBC2F585926D
tmp_aes_key = B92981189223E79306ED28A79803166CB9955A23AB1278C4F2C911449BCBA10B
tmp_aes_iv = 72CF3E363A1C6658B900F9427A230DC6EA595327438D5C28EB9287336BC160F4</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 = 96F3D74A4DAC17CD96F8C5EE06FF06C25F80102A4A658A1C63738F39E3C028D24951D392B5A422A60C2C66B0AD851BCF243527132BF856E55E67116CAD296B9F88AA337C6532A319DE51F3B4062BC70E14CEC589628E43797203FDB7AE04CD5E5A0E94305E255AB686D15CFACEDF4045F08B326722333263EECD021BCD6E4D17A9D5A85859AA4CC71D2E93FE951D4217249BE49F503E9A23BBA55D562FC81B7B68C0030F81935E99CAC52AC131082765E0BCC2B276504C65CA17FE9DAE26F691CE00D2DE41ED2A1E1D9027FEBC9EC3876A6FE20B7BF5AEDE46445D34EF8F3FDA7803659010BCEE30E2A59E5268AEB12CAF6745915202C44448A166E9400FD295379FAD8F66B8AA41752B9DC786977CF4B3DCE094B34299C83CFDA86593EAC8CDBD51D6C34A4F08C1BAFE238698B40A09163EC700EF4D417E103ABA92B3E54EF644BE5BE924104897C1C70BA9C09A932F</code></pre>
<pre><code>encrypted_data = 92F33178E8FD0B2503164E4958B30642017D6B3ED097E631790E1A91918986FDC7EEA2375114CE417AFF2BBD1508949A9C516982DA4262E6B3020961D6D2348B1F31B0C04742D8360C14E17289CCE08EC6CDE27BDAB946958AF0CA145431094F6560DDC3C05C03135E11EBFCA46D9D4C925B52905C9DBB6E8331B2EF04A3044BF0E304BA153269246E59C769F047C25D87D3EF13FA9F404F0647B5C3B2D815318C4C07BCBB40A2144DEF9498E28B797EE84F2EA06D261E6294826D16343903D64DE50041EA0C806C120D5F3C9DF63276AD2BB80F96CF96A0B42924F6A0BCF61B2BD107197F253A31E7154C5E15301015A407AB433910F5F6CBC746B620577CA92F1A77B49B17F47A262CE97EBBFDC367E6015FB32AA0D51C21A1640DCA7A3D75443D5D7706FCE4BF755799E5FC1982E7A05D97E594529E31CBCA24DC32B98BBFDB3C6B2C5D87C3C7D5E90423FDAAE254</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 60 5C 05 00 A0 AB 79 66
0010 | 78 01 00 00 1F 5F 04 F5 DC 03 79 0F D6 11 07 EB
0020 | DA D1 63 40 B3 50 31 08 72 4C D0 AA 73 D7 52 78
0030 | 68 1C 2C 3B 5C AD 94 70 FE 50 01 00 96 F3 D7 4A
0040 | 4D AC 17 CD 96 F8 C5 EE 06 FF 06 C2 5F 80 10 2A
0050 | 4A 65 8A 1C 63 73 8F 39 E3 C0 28 D2 49 51 D3 92
0060 | B5 A4 22 A6 0C 2C 66 B0 AD 85 1B CF 24 35 27 13
0070 | 2B F8 56 E5 5E 67 11 6C AD 29 6B 9F 88 AA 33 7C
0080 | 65 32 A3 19 DE 51 F3 B4 06 2B C7 0E 14 CE C5 89
0090 | 62 8E 43 79 72 03 FD B7 AE 04 CD 5E 5A 0E 94 30
00A0 | 5E 25 5A B6 86 D1 5C FA CE DF 40 45 F0 8B 32 67
00B0 | 22 33 32 63 EE CD 02 1B CD 6E 4D 17 A9 D5 A8 58
00C0 | 59 AA 4C C7 1D 2E 93 FE 95 1D 42 17 24 9B E4 9F
00D0 | 50 3E 9A 23 BB A5 5D 56 2F C8 1B 7B 68 C0 03 0F
00E0 | 81 93 5E 99 CA C5 2A C1 31 08 27 65 E0 BC C2 B2
00F0 | 76 50 4C 65 CA 17 FE 9D AE 26 F6 91 CE 00 D2 DE
0100 | 41 ED 2A 1E 1D 90 27 FE BC 9E C3 87 6A 6F E2 0B
0110 | 7B F5 AE DE 46 44 5D 34 EF 8F 3F DA 78 03 65 90
0120 | 10 BC EE 30 E2 A5 9E 52 68 AE B1 2C AF 67 45 91
0130 | 52 02 C4 44 48 A1 66 E9 40 0F D2 95 37 9F AD 8F
0140 | 66 B8 AA 41 75 2B 9D C7 86 97 7C F4 B3 DC E0 94
0150 | B3 42 99 C8 3C FD A8 65 93 EA C8 CD BD 51 D6 C3
0160 | 4A 4F 08 C1 BA FE 23 86 98 B4 0A 09 16 3E C7 00
0170 | EF 4D 41 7E 10 3A BA 92 B3 E5 4E F6 44 BE 5B E9
0180 | 24 10 48 97 C1 C7 0B A9 C0 9A 93 2F</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 A0 47 0A 00 C7 B6 79 66
0010 | 78 01 00 00 1F 5F 04 F5 FF 94 B2 49 02 3B A8 8D
0020 | A0 2F D6 95 79 D7 C4 03 C7 A1 D4 5C 25 AF 92 79
0030 | BD 9C 96 D7 14 48 D3 D3 FE 50 01 00 92 F3 31 78
0040 | E8 FD 0B 25 03 16 4E 49 58 B3 06 42 01 7D 6B 3E
0050 | D0 97 E6 31 79 0E 1A 91 91 89 86 FD C7 EE A2 37
0060 | 51 14 CE 41 7A FF 2B BD 15 08 94 9A 9C 51 69 82
0070 | DA 42 62 E6 B3 02 09 61 D6 D2 34 8B 1F 31 B0 C0
0080 | 47 42 D8 36 0C 14 E1 72 89 CC E0 8E C6 CD E2 7B
0090 | DA B9 46 95 8A F0 CA 14 54 31 09 4F 65 60 DD C3
00A0 | C0 5C 03 13 5E 11 EB FC A4 6D 9D 4C 92 5B 52 90
00B0 | 5C 9D BB 6E 83 31 B2 EF 04 A3 04 4B F0 E3 04 BA
00C0 | 15 32 69 24 6E 59 C7 69 F0 47 C2 5D 87 D3 EF 13
00D0 | FA 9F 40 4F 06 47 B5 C3 B2 D8 15 31 8C 4C 07 BC
00E0 | BB 40 A2 14 4D EF 94 98 E2 8B 79 7E E8 4F 2E A0
00F0 | 6D 26 1E 62 94 82 6D 16 34 39 03 D6 4D E5 00 41
0100 | EA 0C 80 6C 12 0D 5F 3C 9D F6 32 76 AD 2B B8 0F
0110 | 96 CF 96 A0 B4 29 24 F6 A0 BC F6 1B 2B D1 07 19
0120 | 7F 25 3A 31 E7 15 4C 5E 15 30 10 15 A4 07 AB 43
0130 | 39 10 F5 F6 CB C7 46 B6 20 57 7C A9 2F 1A 77 B4
0140 | 9B 17 F4 7A 26 2C E9 7E BB FD C3 67 E6 01 5F B3
0150 | 2A A0 D5 1C 21 A1 64 0D CA 7A 3D 75 44 3D 5D 77
0160 | 06 FC E4 BF 75 57 99 E5 FC 19 82 E7 A0 5D 97 E5
0170 | 94 52 9E 31 CB CA 24 DC 32 B9 8B BF DB 3C 6B 2C
0180 | 5D 87 C3 C7 D5 E9 04 23 FD AA E2 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>605C0500A0AB7966</code></td>
<td><code>A0470A00C7B67966</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>DC03790FD61107EBDAD16340B3503108</code></td>
<td><code>FF94B249023BA88DA02FD69579D7C403</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>724CD0AA73D75278681C2C3B5CAD9470</code></td>
<td><code>C7A1D45C25AF9279BD9C96D71448D3D3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010096F3D74A4DAC17CD96F8C5EE</code> <code>06FF06C25F80102A4A658A1C63738F39</code> <code>E3C028D24951D392B5A422A60C2C66B0</code> <code>AD851BCF243527132BF856E55E67116C</code> <code>AD296B9F88AA337C6532A319DE51F3B4</code> <code>062BC70E14CEC589628E43797203FDB7</code> <code>AE04CD5E5A0E94305E255AB686D15CFA</code> <code>CEDF4045F08B326722333263EECD021B</code> <code>CD6E4D17A9D5A85859AA4CC71D2E93FE</code> <code>951D4217249BE49F503E9A23BBA55D56</code> <code>2FC81B7B68C0030F81935E99CAC52AC1</code> <code>31082765E0BCC2B276504C65CA17FE9D</code> <code>AE26F691CE00D2DE41ED2A1E1D9027FE</code> <code>BC9EC3876A6FE20B7BF5AEDE46445D34</code> <code>EF8F3FDA7803659010BCEE30E2A59E52</code> <code>68AEB12CAF6745915202C44448A166E9</code> <code>400FD295379FAD8F66B8AA41752B9DC7</code> <code>86977CF4B3DCE094B34299C83CFDA865</code> <code>93EAC8CDBD51D6C34A4F08C1BAFE2386</code> <code>98B40A09163EC700EF4D417E103ABA92</code> <code>B3E54EF644BE5BE924104897C1C70BA9</code><br> <code>C09A932F</code></td>
<td><code>FE50010092F33178E8FD0B2503164E49</code> <code>58B30642017D6B3ED097E631790E1A91</code> <code>918986FDC7EEA2375114CE417AFF2BBD</code> <code>1508949A9C516982DA4262E6B3020961</code> <code>D6D2348B1F31B0C04742D8360C14E172</code> <code>89CCE08EC6CDE27BDAB946958AF0CA14</code> <code>5431094F6560DDC3C05C03135E11EBFC</code> <code>A46D9D4C925B52905C9DBB6E8331B2EF</code> <code>04A3044BF0E304BA153269246E59C769</code> <code>F047C25D87D3EF13FA9F404F0647B5C3</code> <code>B2D815318C4C07BCBB40A2144DEF9498</code> <code>E28B797EE84F2EA06D261E6294826D16</code> <code>343903D64DE50041EA0C806C120D5F3C</code> <code>9DF63276AD2BB80F96CF96A0B42924F6</code> <code>A0BCF61B2BD107197F253A31E7154C5E</code> <code>15301015A407AB433910F5F6CBC746B6</code> <code>20577CA92F1A77B49B17F47A262CE97E</code> <code>BBFDC367E6015FB32AA0D51C21A1640D</code> <code>CA7A3D75443D5D7706FCE4BF755799E5</code> <code>FC1982E7A05D97E594529E31CBCA24DC</code> <code>32B98BBFDB3C6B2C5D87C3C7D5E90423</code><br> <code>FDAAE254</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 = 6A67F69248BA4F9B37DC258F29C9394303D2B8212D27DC4D5308A6F97994CDB71FCE4EE5999C56A6A63CCA9EEDF82BDEC56075814447B7E52995DD2DD65E5AC2A68DA21ADBFA1F2F76D1FD9F0119450B616353DB48FE8C8E45527DBF2A5476E4CB190CA7EAF606D504D9565985C4965B6F6BD7499D325A52F51F82BDF095235D8F9413B700C746B0FBE37CB7E02CBDE1539BAA74A94FD03EC8984AFC3D316EEE5B7C7EAE551E3EA6893D4BD06C544178AF72E56DD5FFC399B21A06CCD663C4D870EE75487487D62EEF7BA3583011B12EB8BD6449D71BC3A74EB55DA00B17A7E1F738CB4041317DBF67FB92CBE853C2139B55EEF4A1FF46E4952990DF0B6DC908</code></pre>
<pre><code>auth_key = 8904B87CFFDED98818B2927ABDF5869D8CA8E3F6DBE8B33CAB82916448C5FADB045CD67CDAFF9B9FF02E0516F9AA76A250AB2ACCDDB0EB7ACC6524CB9775BA0CD241F367CD15F914778F0B8CF31DB96A02665047C1CB12D256391C865753B4F4DF36F66F0CAF67F9055D926C8081AE913CE6DC83769525887D28314D63A9F299819F2E7169AE7FD6F0A54D87F7CC75718FC12A7648C8C8AD57B65F0782AF30A506DF4A7659A862CE0F488D9F3949D1389242861C0854E58CE790BAC3DDE9CA070FB6542069A6B5430747A16D28A14512A8FF07B4F7B3D7D35EDFE62EBC58E70C02355B9AEA42D35B85C89745F4DA13D45F97FCBB27FADAB03E3175F300E19530</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 50 69 17 A1 AB 79 66
0010 | A0 00 00 00 34 F7 CB 3B DC 03 79 0F D6 11 07 EB
0020 | DA D1 63 40 B3 50 31 08 72 4C D0 AA 73 D7 52 78
0030 | 68 1C 2C 3B 5C AD 94 70 6D 52 C4 71 1A 59 34 7C
0040 | 0E 01 BF A5 8D 55 08 E8</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 E0 A2 13 C8 B6 79 66
0010 | 64 00 00 00 34 F7 CB 3B FF 94 B2 49 02 3B A8 8D
0020 | A0 2F D6 95 79 D7 C4 03 C7 A1 D4 5C 25 AF 92 79
0030 | BD 9C 96 D7 14 48 D3 D3 69 A3 12 8D CE F2 30 8A
0040 | 1F 7F 3B 8A 3D 5C 7E 37</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>01506917A1AB7966</code></td>
<td><code>01E0A213C8B67966</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>A0000000</code> (160 in decimal)</td>
<td><code>64000000</code> (100 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>DC03790FD61107EBDAD16340B3503108</code></td>
<td><code>FF94B249023BA88DA02FD69579D7C403</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>724CD0AA73D75278681C2C3B5CAD9470</code></td>
<td><code>C7A1D45C25AF9279BD9C96D71448D3D3</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>6D52C4711A59347C0E01BFA58D5508E8</code></td>
<td><code>69A3128DCEF2308A1F7F3B8A3D5C7E37</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>

View file

@ -78,7 +78,7 @@
<tbody>
<tr>
<td><a href="/constructor/inputPrivacyKeyStatusTimestamp">inputPrivacyKeyStatusTimestamp</a></td>
<td>Whether people will be able to see your exact last online timestamp</td>
<td>Whether people will be able to see our exact last online timestamp.<br><br>Note that if <em>we</em> decide to hide our exact last online timestamp to someone <strong>and</strong> we do not have a <a href="/api/premium">Premium</a> subscription, we won't be able to see the exact last online timestamp of <em>any</em> user, including those that do share it with us.</td>
</tr>
<tr>
<td><a href="/constructor/inputPrivacyKeyChatInvite">inputPrivacyKeyChatInvite</a></td>

View file

@ -78,7 +78,7 @@
<tbody>
<tr>
<td><a href="/constructor/privacyKeyStatusTimestamp">privacyKeyStatusTimestamp</a></td>
<td>Whether we can see the last online timestamp of this user</td>
<td>Whether we can see the last online timestamp of this user.<br><br>Note that if <em>we</em> decide to hide our exact last online timestamp to someone <strong>and</strong> we do not have a <a href="/api/premium">Premium</a> subscription, we won't be able to see the exact last online timestamp of <em>any</em> user, including those that do share it with us.</td>
</tr>
<tr>
<td><a href="/constructor/privacyKeyChatInvite">privacyKeyChatInvite</a></td>