Update content of files

This commit is contained in:
GitHub Action 2023-11-23 18:39:52 +00:00
parent b37d87fca5
commit ee3a839ecd
2 changed files with 286 additions and 279 deletions
data/web/corefork.telegram.org

View file

@ -4,10 +4,18 @@
<meta charset="utf-8">
<title>Methods</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Full list of MTProto API methods">
<meta property="description" content="Accepting the Terms of Service
Name
Description
help.getTermsOfServiceUpdate
Look for updates of telegram&#39;s terms of service…">
<meta property="og:title" content="Methods">
<meta property="og:image" content="">
<meta property="og:description" content="Full list of MTProto API methods">
<meta property="og:description" content="Accepting the Terms of Service
Name
Description
help.getTermsOfServiceUpdate
Look for updates of telegram&#39;s terms of service…">
<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">
@ -264,7 +272,7 @@
</tr>
<tr>
<td><a href="/method/account.changeAuthorizationSettings">account.changeAuthorizationSettings</a></td>
<td>Change settings related to the current session.</td>
<td>Change settings related to a session.</td>
</tr>
<tr>
<td><a href="/method/account.setAuthorizationTTL">account.setAuthorizationTTL</a></td>
@ -310,6 +318,10 @@
<td><a href="/method/auth.importWebTokenAuthorization">auth.importWebTokenAuthorization</a></td>
<td>Login by importing an authorization token</td>
</tr>
<tr>
<td><a href="/method/account.invalidateSignInCodes">account.invalidateSignInCodes</a></td>
<td>Invalidate the specified login codes, see <a href="/api/auth#invalidating-login-codes">here »</a> for more info.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#working-with-gdpr-export" id="working-with-gdpr-export" name="working-with-gdpr-export"><i class="anchor-icon"></i></a>Working with GDPR export</h3>
@ -556,6 +568,33 @@
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#working-with-channel-boosts" id="working-with-channel-boosts" name="working-with-channel-boosts"><i class="anchor-icon"></i></a>Working with <a href="/api/boost">channel boosts</a></h3>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/method/stories.getBoostsStatus">stories.getBoostsStatus</a></td>
<td>Get the current <a href="/api/boost">boost status</a> of a channel, see <a href="/api/boost">here »</a> for more info on boosts.</td>
</tr>
<tr>
<td><a href="/method/stories.getBoostersList">stories.getBoostersList</a></td>
<td>Obtain info about the users currently <a href="/api/boost">boosting</a> a channel, see <a href="/api/boost">here »</a> for more info about boosts.</td>
</tr>
<tr>
<td><a href="/method/stories.canApplyBoost">stories.canApplyBoost</a></td>
<td>Check whether a channel can be <a href="/api/boost">boosted, see here for more info »</a>.</td>
</tr>
<tr>
<td><a href="/method/stories.applyBoost">stories.applyBoost</a></td>
<td><a href="/api/boost">Boost »</a> a <a href="/api/channel">channel</a>, leveling it up and granting it permission to post <a href="/api/stories">stories »</a>.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#working-with-channels-supergroups-geogroups" id="working-with-channels-supergroups-geogroups" name="working-with-channels-supergroups-geogroups"><i class="anchor-icon"></i></a>Working with <a href="/api/channel">channels/supergroups/geogroups</a></h3>
<table class="table">
<thead>
@ -603,7 +642,7 @@
</tr>
<tr>
<td><a href="/method/channels.editLocation">channels.editLocation</a></td>
<td>Edit location of geogroup</td>
<td>Edit location of geogroup, see <a href="/api/nearby">here »</a> for more info on geogroups.</td>
</tr>
<tr>
<td><a href="/method/channels.editPhoto">channels.editPhoto</a></td>
@ -1435,7 +1474,7 @@
<tbody>
<tr>
<td><a href="/method/stories.canSendStory">stories.canSendStory</a></td>
<td> </td>
<td>Check whether we can post stories as the specified peer.</td>
</tr>
<tr>
<td><a href="/method/stories.sendStory">stories.sendStory</a></td>
@ -1443,7 +1482,7 @@
</tr>
<tr>
<td><a href="/method/stories.editStory">stories.editStory</a></td>
<td> </td>
<td>Edit an uploaded <a href="/api/stories">story</a></td>
</tr>
<tr>
<td><a href="/method/stories.deleteStories">stories.deleteStories</a></td>
@ -1451,31 +1490,31 @@
</tr>
<tr>
<td><a href="/method/stories.togglePinned">stories.togglePinned</a></td>
<td> </td>
<td>Pin or unpin one or more stories</td>
</tr>
<tr>
<td><a href="/method/stories.getAllStories">stories.getAllStories</a></td>
<td> </td>
<td>Fetch the List of active (or active and hidden) stories, see <a href="/api/stories#watching-stories">here »</a> for more info on watching stories.</td>
</tr>
<tr>
<td><a href="/method/stories.getPinnedStories">stories.getPinnedStories</a></td>
<td> </td>
<td>Fetch the <a href="/api/stories#pinnedarchived-stories">stories</a> pinned on a peer's profile.</td>
</tr>
<tr>
<td><a href="/method/stories.getStoriesArchive">stories.getStoriesArchive</a></td>
<td> </td>
<td>Fetch the <a href="/api/stories#pinnedarchived-stories">story archive »</a> of a peer we control.</td>
</tr>
<tr>
<td><a href="/method/stories.getStoriesByID">stories.getStoriesByID</a></td>
<td> </td>
<td>Obtain full info about a set of <a href="/api/stories">stories</a> by their IDs.</td>
</tr>
<tr>
<td><a href="/method/stories.toggleAllStoriesHidden">stories.toggleAllStoriesHidden</a></td>
<td> </td>
<td>Hide the active stories of a specific peer, preventing them from being displayed on the action bar on the homescreen.</td>
</tr>
<tr>
<td><a href="/method/stories.readStories">stories.readStories</a></td>
<td> </td>
<td>Mark all stories up to a certain ID as read, for a given peer; will emit an <a href="/constructor/updateReadStories">updateReadStories</a> update to all logged-in sessions.</td>
</tr>
<tr>
<td><a href="/method/stories.incrementStoryViews">stories.incrementStoryViews</a></td>
@ -1483,15 +1522,15 @@
</tr>
<tr>
<td><a href="/method/stories.getStoryViewsList">stories.getStoryViewsList</a></td>
<td> </td>
<td>Obtain the list of users that have viewed a specific <a href="/api/stories">story we posted</a></td>
</tr>
<tr>
<td><a href="/method/stories.getStoriesViews">stories.getStoriesViews</a></td>
<td> </td>
<td>Obtain info about the view count, forward count, reactions and recent viewers of one or more <a href="/api/stories">stories</a>.</td>
</tr>
<tr>
<td><a href="/method/stories.exportStoryLink">stories.exportStoryLink</a></td>
<td> </td>
<td>Generate a <a href="/api/links#story-links">story deep link</a> for a specific story</td>
</tr>
<tr>
<td><a href="/method/stories.report">stories.report</a></td>
@ -1499,15 +1538,15 @@
</tr>
<tr>
<td><a href="/method/stories.activateStealthMode">stories.activateStealthMode</a></td>
<td> </td>
<td>Activates <a href="/api/stories#stealth-mode">stories stealth mode</a>, see <a href="/api/stories#stealth-mode">here »</a> for more info.<br><br>Will return an <a href="/constructor/updateStoriesStealthMode">updateStoriesStealthMode</a>.</td>
</tr>
<tr>
<td><a href="/method/stories.getPeerStories">stories.getPeerStories</a></td>
<td> </td>
<td>Fetch the full active <a href="/api/stories#watching-stories">story list</a> of a specific peer.</td>
</tr>
<tr>
<td><a href="/method/stories.getAllReadPeerStories">stories.getAllReadPeerStories</a></td>
<td> </td>
<td>Obtain the latest read story ID for all peers when first logging in, returned as a list of <a href="/constructor/updateReadStories">updateReadStories</a> updates, see <a href="/api/stories#watching-stories">here »</a> for more info.</td>
</tr>
<tr>
<td><a href="/method/stories.getPeerMaxIDs">stories.getPeerMaxIDs</a></td>
@ -1515,31 +1554,15 @@
</tr>
<tr>
<td><a href="/method/stories.getChatsToSend">stories.getChatsToSend</a></td>
<td> </td>
<td>Obtain a list of channels where the user can post <a href="/api/stories">stories</a></td>
</tr>
<tr>
<td><a href="/method/stories.togglePeerStoriesHidden">stories.togglePeerStoriesHidden</a></td>
<td> </td>
</tr>
<tr>
<td><a href="/method/stories.getBoostsStatus">stories.getBoostsStatus</a></td>
<td> </td>
</tr>
<tr>
<td><a href="/method/stories.getBoostersList">stories.getBoostersList</a></td>
<td> </td>
</tr>
<tr>
<td><a href="/method/stories.canApplyBoost">stories.canApplyBoost</a></td>
<td> </td>
</tr>
<tr>
<td><a href="/method/stories.applyBoost">stories.applyBoost</a></td>
<td> </td>
<td>Hide the active stories of a user, preventing them from being displayed on the action bar on the homescreen, see <a href="/api/stories#hiding-stories-of-other-users">here »</a> for more info.</td>
</tr>
<tr>
<td><a href="/method/stories.sendReaction">stories.sendReaction</a></td>
<td> </td>
<td>React to a story.</td>
</tr>
</tbody>
</table>
@ -1872,7 +1895,7 @@
</tr>
<tr>
<td><a href="/method/contacts.acceptContact">contacts.acceptContact</a></td>
<td>If the <a href="/constructor/peerSettings">peer settings</a> of a new user allow us to add them as contact, add that user as contact</td>
<td>If the <a href="/api/action-bar#add-contact">add contact action bar is active</a>, add that user as contact</td>
</tr>
<tr>
<td><a href="/method/contacts.addContact">contacts.addContact</a></td>
@ -1880,7 +1903,7 @@
</tr>
<tr>
<td><a href="/method/contacts.block">contacts.block</a></td>
<td>Adds the user to the blacklist.</td>
<td>Adds a peer to a blocklist, see <a href="/api/block">here »</a> for more info.</td>
</tr>
<tr>
<td><a href="/method/contacts.deleteByPhones">contacts.deleteByPhones</a></td>
@ -1904,7 +1927,7 @@
</tr>
<tr>
<td><a href="/method/contacts.getLocated">contacts.getLocated</a></td>
<td>Get contacts near you</td>
<td>Get users and geochats near you, see <a href="/api/nearby">here »</a> for more info.</td>
</tr>
<tr>
<td><a href="/method/contacts.getSaved">contacts.getSaved</a></td>
@ -1940,7 +1963,15 @@
</tr>
<tr>
<td><a href="/method/contacts.unblock">contacts.unblock</a></td>
<td>Deletes the user from the blacklist.</td>
<td>Deletes a peer from a blocklist, see <a href="/api/block">here »</a> for more info.</td>
</tr>
<tr>
<td><a href="/method/contacts.setBlocked">contacts.setBlocked</a></td>
<td>Replace the contents of an entire <a href="/api/contacts">blocklist, see here for more info »</a>.</td>
</tr>
<tr>
<td><a href="/method/contacts.editCloseFriends">contacts.editCloseFriends</a></td>
<td>Edit the <a href="/api/privacy">close friends list, see here »</a> for more info.</td>
</tr>
</tbody>
</table>
@ -2002,7 +2033,7 @@
</tr>
<tr>
<td><a href="/method/messages.hidePeerSettingsBar">messages.hidePeerSettingsBar</a></td>
<td>Should be called after the user hides the report spam/add as contact bar of a new chat, effectively prevents the user from executing the actions specified in the <a href="/constructor/peerSettings">peer's settings</a>.</td>
<td>Should be called after the user hides the <a href="/api/action-bar">report spam/add as contact bar</a> of a new chat, effectively prevents the user from executing the actions specified in the <a href="/api/action-bar">action bar »</a>.</td>
</tr>
<tr>
<td><a href="/method/messages.getOnlines">messages.getOnlines</a></td>
@ -2147,7 +2178,7 @@
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#working-with-group-calls--live-streaming" id="working-with-group-calls--live-streaming" name="working-with-group-calls--live-streaming"><i class="anchor-icon"></i></a>Working with group calls &amp; live streaming</h3>
<h3><a class="anchor" href="#working-with-group-calls-amp-live-streaming" id="working-with-group-calls-amp-live-streaming" name="working-with-group-calls-amp-live-streaming"><i class="anchor-icon"></i></a>Working with group calls &amp; live streaming</h3>
<table class="table">
<thead>
<tr>
@ -2718,6 +2749,10 @@
<td><a href="/method/channels.viewSponsoredMessage">channels.viewSponsoredMessage</a></td>
<td>Mark a specific sponsored message as read</td>
</tr>
<tr>
<td><a href="/method/channels.clickSponsoredMessage">channels.clickSponsoredMessage</a></td>
<td>Informs the server that the user has either:<br><br>- Clicked on a link in the sponsored message<br>- Has opened a sponsored chat or a sponsored website via the associated button<br>- Has opened the sponsored chat via the sponsored message name, the sponsored message photo, or a mention in the sponsored message</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#working-with-statistics" id="working-with-statistics" name="working-with-statistics"><i class="anchor-icon"></i></a>Working with statistics</h3>
@ -2959,22 +2994,6 @@
</thead>
<tbody>
<tr>
<td><a href="/method/account.invalidateSignInCodes">account.invalidateSignInCodes</a></td>
<td> </td>
</tr>
<tr>
<td><a href="/method/channels.clickSponsoredMessage">channels.clickSponsoredMessage</a></td>
<td> </td>
</tr>
<tr>
<td><a href="/method/contacts.editCloseFriends">contacts.editCloseFriends</a></td>
<td> </td>
</tr>
<tr>
<td><a href="/method/contacts.setBlocked">contacts.setBlocked</a></td>
<td> </td>
</tr>
<tr>
<td><a href="/method/bots.canSendMessage">bots.canSendMessage</a></td>
<td> </td>
</tr>
@ -2987,19 +3006,7 @@
<td> </td>
</tr>
</tbody>
</table>
<p>ndMessage](/method/bots.canSendMessage) |   |
| <a href="/method/bots.allowSendMessage">bots.allowSendMessage</a> |   |
| <a href="/method/bots.invokeWebViewCustomMethod">bots.invokeWebViewCustomMethod</a> |   |</p>
<p>|   |
| <a href="/method/bots.canSendMessage">bots.canSendMessage</a> |   |
| <a href="/method/bots.allowSendMessage">bots.allowSendMessage</a> |   |
| <a href="/method/bots.invokeWebViewCustomMethod">bots.invokeWebViewCustomMethod</a> |   |</p>
<p>locked) |   |
| <a href="/method/bots.canSendMessage">bots.canSendMessage</a> |   |
| <a href="/method/bots.allowSendMessage">bots.allowSendMessage</a> |   |
| <a href="/method/bots.invokeWebViewCustomMethod">bots.invokeWebViewCustomMethod</a> |   |</p>
<p>ethod/bots.invokeWebViewCustomMethod) |   |</p></div>
</table></div>
</div>

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 CC D8 0D 00 0C 97 5F 65
0010 | 14 00 00 00 F1 8E 7E BE FE CF AF C7 1E D1 E8 36
0020 | B5 B3 D2 B7 40 AD 28 99</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 54 62 0A 00 CE 97 5F 65
0010 | 14 00 00 00 F1 8E 7E BE 9A 34 B2 BA F3 FF F7 F1
0020 | C3 31 F2 31 91 49 DF 0F</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>CCD80D000C975F65</code></td>
<td><code>54620A00CE975F65</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>FECFAFC71ED1E836B5B3D2B740AD2899</code></td>
<td><code>9A34B2BAF3FFF7F1C331F2319149DF0F</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 C0 95 6F 0C 97 5F 65
0010 | A0 00 00 00 63 24 16 05 FE CF AF C7 1E D1 E8 36
0020 | B5 B3 D2 B7 40 AD 28 99 5C 66 80 D5 0D 08 F9 29
0030 | 6D 31 D9 0F D2 54 EF 34 08 20 9D 09 AF 53 FE 2B
0040 | B5 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 20 6E C1 CE 97 5F 65
0010 | 5C 00 00 00 63 24 16 05 9A 34 B2 BA F3 FF F7 F1
0020 | C3 31 F2 31 91 49 DF 0F EE 52 4C B3 9F 67 CF EF
0030 | A6 71 47 6A 74 13 E8 55 08 1E 14 EA 0E 80 3B 6D
0040 | 49 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>01C0956F0C975F65</code></td>
<td><code>01206EC1CE975F65</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>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>FECFAFC71ED1E836B5B3D2B740AD2899</code></td>
<td><code>9A34B2BAF3FFF7F1C331F2319149DF0F</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>5C6680D50D08F9296D31D90FD254EF34</code></td>
<td><code>EE524CB39F67CFEFA671476A7413E855</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>08209D09AF53FE2BB5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2350045229190359989</td>
<td><code>081E14EA0E803B6D49000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2167614668673871177</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 = 2350045229190359989</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2350045229190359989 = 1404945239 * 1672695251</code></p>
<pre><code>p = 1404945239
q = 1672695251</code></pre>
<pre><code>pq = 2167614668673871177</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2167614668673871177 = 1358494177 * 1595601001</code></p>
<pre><code>p = 1358494177
q = 1595601001</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 20 9D 09 AF 53 FE 2B B5 00 00 00
0010 | 04 53 BD C3 57 00 00 00 04 63 B3 4D D3 00 00 00
0020 | FE CF AF C7 1E D1 E8 36 B5 B3 D2 B7 40 AD 28 99
0030 | 5C 66 80 D5 0D 08 F9 29 6D 31 D9 0F D2 54 EF 34
0040 | 73 BF 1F 9D 04 9C EF AF 79 8B 07 75 5C 4B 8F 5D
0050 | 39 D5 3F 0A 27 80 5F E9 29 15 F0 AF 07 65 06 BD
<pre><code>0000 | 95 5F F5 A9 08 1E 14 EA 0E 80 3B 6D 49 00 00 00
0010 | 04 50 F8 F9 E1 00 00 00 04 5F 1A F0 69 00 00 00
0020 | 9A 34 B2 BA F3 FF F7 F1 C3 31 F2 31 91 49 DF 0F
0030 | EE 52 4C B3 9F 67 CF EF A6 71 47 6A 74 13 E8 55
0040 | 2E A9 3C 55 A6 9B 21 26 00 7B EE CF 09 39 A7 7D
0050 | 32 32 60 FB 68 C8 DF 67 D3 20 49 70 11 51 32 1C
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 = 1672695251</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>08209D09AF53FE2BB5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2350045229190359989</td>
<td><code>081E14EA0E803B6D49000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2167614668673871177</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>0453BDC357000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1404945239</td>
<td><code>0450F8F9E1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1358494177</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>0463B34DD3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1672695251</td>
<td><code>045F1AF069000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1595601001</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>FECFAFC71ED1E836B5B3D2B740AD2899</code></td>
<td><code>9A34B2BAF3FFF7F1C331F2319149DF0F</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>5C6680D50D08F9296D31D90FD254EF34</code></td>
<td><code>EE524CB39F67CFEFA671476A7413E855</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>73BF1F9D049CEFAF798B07755C4B8F5D</code> <code>39D53F0A27805FE92915F0AF076506BD</code></td>
<td><code>2EA93C55A69B2126007BEECF0939A77D</code> <code>323260FB68C8DF67D32049701151321C</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1672695251</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 = 955FF5A908209D09AF53FE2BB50000000453BDC3570000000463B34DD3000000FECFAFC71ED1E836B5B3D2B740AD28995C6680D50D08F9296D31D90FD254EF3473BF1F9D049CEFAF798B07755C4B8F5D39D53F0A27805FE92915F0AF076506BD02000000
random_padding_bytes = 55BACCCEED34076313515571FD9E5D27FC04FD51D6152B4DD5F0A69A7D238D8B7D72F5D742B840BAB2CEC5E737349D070947A71B80BC8625B3FBB495F698E89F30049708257128E862149581463675330BB6D170CBCF8220BE5DDE23</code></pre>
<pre><code>data = 955FF5A9081E14EA0E803B6D490000000450F8F9E1000000045F1AF0690000009A34B2BAF3FFF7F1C331F2319149DF0FEE524CB39F67CFEFA671476A7413E8552EA93C55A69B2126007BEECF0939A77D323260FB68C8DF67D32049701151321C02000000
random_padding_bytes = 441AD8C99CE5A2AB3F1DF851330024CEE71186EC20A16CC06E5756A596F8439DCFE0C706927E1483D8F95B089AA5575ADF5917018AFD7192D3DFD481F3D036D9545898FA3B92B47D85AF0DC1497FF8D785D00DE958A25301433E532B</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 = 8F8AB2FB044B9289C686D4B83E478BF4D04F897842BA19FB797261075E233A74BCFE60C3BD15536C51625209D57BCF92ED5AACC2C6C30C3ACD2A2AFD23DCA779DCB8EEF2BA5B9424D922D5BBB3F113C3DC6C40FEB6178E11F44B08333EC7EC164BD4CD9F0A064957A8335DD075C3344ECC20CCBC97DF9D20CC31DA3CDC2E06A5F26DD881452F9AC3F5D405D6845203E623669AA21B98794587E6181497D47B6F16B02A0B6E9F8BA8DE13BD3E800E6F74A38B4B23156039D0D46AFBD16E921F6743C08CEE19593C0C0F69F8323C4D9F82532161488E79F53C0FD8413C63DB199C9A0BB7153914C29F36E832498E84E15E7B0A154D1424B6BA3D7E73E0119C5113</code></pre>
<pre><code>encrypted_data = CAF6728D3ED9D3C91FDD6F60DA1D298A516E8234AC876CF715341E74E6670B6F5168A4D79C025A05265280540C260D3945CE1CB1EE4D27800D681CFFB572FFAA42A9BAAC3474CAEC86B44B4D41ED09864CD4A43419DF12A7CB984ADA2E3987A993925D9DA258E8975B9CA795591803A2C73AF1B2BB2A3121B35A6BF13763FFC04F21046876942DA6084B36DC857C874F318B076BD083FDD056C897C6428695C5D3C284CDC858BB479B92376F75EEE68715D3C35F7E19CC1196E853AEC2FA4891DE206A1F3CF4F728A35753C8C2B394D8CD28D2CC8874AC300CAD30D2098A8DFE232902E11635291ACB23EFA07C521209B27C53BAC41916EDA3EA3816361D169A</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 D0 D8 0D 00 0C 97 5F 65
0010 | 40 01 00 00 BE E4 12 D7 FE CF AF C7 1E D1 E8 36
0020 | B5 B3 D2 B7 40 AD 28 99 5C 66 80 D5 0D 08 F9 29
0030 | 6D 31 D9 0F D2 54 EF 34 04 53 BD C3 57 00 00 00
0040 | 04 63 B3 4D D3 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 8F 8A B2 FB 04 4B 92 89 C6 86 D4 B8
0060 | 3E 47 8B F4 D0 4F 89 78 42 BA 19 FB 79 72 61 07
0070 | 5E 23 3A 74 BC FE 60 C3 BD 15 53 6C 51 62 52 09
0080 | D5 7B CF 92 ED 5A AC C2 C6 C3 0C 3A CD 2A 2A FD
0090 | 23 DC A7 79 DC B8 EE F2 BA 5B 94 24 D9 22 D5 BB
00A0 | B3 F1 13 C3 DC 6C 40 FE B6 17 8E 11 F4 4B 08 33
00B0 | 3E C7 EC 16 4B D4 CD 9F 0A 06 49 57 A8 33 5D D0
00C0 | 75 C3 34 4E CC 20 CC BC 97 DF 9D 20 CC 31 DA 3C
00D0 | DC 2E 06 A5 F2 6D D8 81 45 2F 9A C3 F5 D4 05 D6
00E0 | 84 52 03 E6 23 66 9A A2 1B 98 79 45 87 E6 18 14
00F0 | 97 D4 7B 6F 16 B0 2A 0B 6E 9F 8B A8 DE 13 BD 3E
0100 | 80 0E 6F 74 A3 8B 4B 23 15 60 39 D0 D4 6A FB D1
0110 | 6E 92 1F 67 43 C0 8C EE 19 59 3C 0C 0F 69 F8 32
0120 | 3C 4D 9F 82 53 21 61 48 8E 79 F5 3C 0F D8 41 3C
0130 | 63 DB 19 9C 9A 0B B7 15 39 14 C2 9F 36 E8 32 49
0140 | 8E 84 E1 5E 7B 0A 15 4D 14 24 B6 BA 3D 7E 73 E0
0150 | 11 9C 51 13</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 58 62 0A 00 CE 97 5F 65
0010 | 40 01 00 00 BE E4 12 D7 9A 34 B2 BA F3 FF F7 F1
0020 | C3 31 F2 31 91 49 DF 0F EE 52 4C B3 9F 67 CF EF
0030 | A6 71 47 6A 74 13 E8 55 04 50 F8 F9 E1 00 00 00
0040 | 04 5F 1A F0 69 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 CA F6 72 8D 3E D9 D3 C9 1F DD 6F 60
0060 | DA 1D 29 8A 51 6E 82 34 AC 87 6C F7 15 34 1E 74
0070 | E6 67 0B 6F 51 68 A4 D7 9C 02 5A 05 26 52 80 54
0080 | 0C 26 0D 39 45 CE 1C B1 EE 4D 27 80 0D 68 1C FF
0090 | B5 72 FF AA 42 A9 BA AC 34 74 CA EC 86 B4 4B 4D
00A0 | 41 ED 09 86 4C D4 A4 34 19 DF 12 A7 CB 98 4A DA
00B0 | 2E 39 87 A9 93 92 5D 9D A2 58 E8 97 5B 9C A7 95
00C0 | 59 18 03 A2 C7 3A F1 B2 BB 2A 31 21 B3 5A 6B F1
00D0 | 37 63 FF C0 4F 21 04 68 76 94 2D A6 08 4B 36 DC
00E0 | 85 7C 87 4F 31 8B 07 6B D0 83 FD D0 56 C8 97 C6
00F0 | 42 86 95 C5 D3 C2 84 CD C8 58 BB 47 9B 92 37 6F
0100 | 75 EE E6 87 15 D3 C3 5F 7E 19 CC 11 96 E8 53 AE
0110 | C2 FA 48 91 DE 20 6A 1F 3C F4 F7 28 A3 57 53 C8
0120 | C2 B3 94 D8 CD 28 D2 CC 88 74 AC 30 0C AD 30 D2
0130 | 09 8A 8D FE 23 29 02 E1 16 35 29 1A CB 23 EF A0
0140 | 7C 52 12 09 B2 7C 53 BA C4 19 16 ED A3 EA 38 16
0150 | 36 1D 16 9A</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 = 55BACCCEED34076313515571FD9E5D27FC04FD51D6152B4DD5F0A69A7
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>D0D80D000C975F65</code></td>
<td><code>58620A00CE975F65</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 = 55BACCCEED34076313515571FD9E5D27FC04FD51D6152B4DD5F0A69A7
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>FECFAFC71ED1E836B5B3D2B740AD2899</code></td>
<td><code>9A34B2BAF3FFF7F1C331F2319149DF0F</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>5C6680D50D08F9296D31D90FD254EF34</code></td>
<td><code>EE524CB39F67CFEFA671476A7413E855</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>0453BDC357000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1404945239</td>
<td><code>0450F8F9E1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1358494177</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>0463B34DD3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1672695251</td>
<td><code>045F1AF069000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1595601001</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 = 55BACCCEED34076313515571FD9E5D27FC04FD51D6152B4DD5F0A69A7
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001008F8AB2FB044B9289C686D4B8</code> <code>3E478BF4D04F897842BA19FB79726107</code> <code>5E233A74BCFE60C3BD15536C51625209</code> <code>D57BCF92ED5AACC2C6C30C3ACD2A2AFD</code> <code>23DCA779DCB8EEF2BA5B9424D922D5BB</code> <code>B3F113C3DC6C40FEB6178E11F44B0833</code> <code>3EC7EC164BD4CD9F0A064957A8335DD0</code> <code>75C3344ECC20CCBC97DF9D20CC31DA3C</code> <code>DC2E06A5F26DD881452F9AC3F5D405D6</code> <code>845203E623669AA21B98794587E61814</code> <code>97D47B6F16B02A0B6E9F8BA8DE13BD3E</code> <code>800E6F74A38B4B23156039D0D46AFBD1</code> <code>6E921F6743C08CEE19593C0C0F69F832</code> <code>3C4D9F82532161488E79F53C0FD8413C</code> <code>63DB199C9A0BB7153914C29F36E83249</code> <code>8E84E15E7B0A154D1424B6BA3D7E73E0</code><br> <code>119C5113</code></td>
<td><code>FE000100CAF6728D3ED9D3C91FDD6F60</code> <code>DA1D298A516E8234AC876CF715341E74</code> <code>E6670B6F5168A4D79C025A0526528054</code> <code>0C260D3945CE1CB1EE4D27800D681CFF</code> <code>B572FFAA42A9BAAC3474CAEC86B44B4D</code> <code>41ED09864CD4A43419DF12A7CB984ADA</code> <code>2E3987A993925D9DA258E8975B9CA795</code> <code>591803A2C73AF1B2BB2A3121B35A6BF1</code> <code>3763FFC04F21046876942DA6084B36DC</code> <code>857C874F318B076BD083FDD056C897C6</code> <code>428695C5D3C284CDC858BB479B92376F</code> <code>75EEE68715D3C35F7E19CC1196E853AE</code> <code>C2FA4891DE206A1F3CF4F728A35753C8</code> <code>C2B394D8CD28D2CC8874AC300CAD30D2</code> <code>098A8DFE232902E11635291ACB23EFA0</code> <code>7C521209B27C53BAC41916EDA3EA3816</code><br> <code>361D169A</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 55BACCCEED34076313515571FD9E5D27FC04FD51D6152B4DD5F0A69A7
<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 5C 42 25 0D 97 5F 65
0010 | F4 02 00 00 5C 07 E8 D0 FE CF AF C7 1E D1 E8 36
0020 | B5 B3 D2 B7 40 AD 28 99 5C 66 80 D5 0D 08 F9 29
0030 | 6D 31 D9 0F D2 54 EF 34 FE 50 02 00 2F 4B 9E 6B
0040 | 92 89 CD BC 7A 27 25 02 AF B5 A5 77 79 8E 62 BD
0050 | FD 06 B4 0E 78 0C C6 F6 D4 E5 20 F4 79 F5 80 3C
0060 | 88 5B 2D EA 72 62 4F 77 33 45 71 C3 99 2F BB 59
0070 | 98 E6 54 6B 68 1D 05 F6 F9 5A 7D 5E 5C 31 54 EF
0080 | 6B 39 BD B7 F2 72 6C A9 4E 9A 5F 1C BA 92 DA 3B
0090 | 48 16 37 9F 3C 42 4E D6 A3 EB CB D7 87 4A C9 DC
00A0 | 15 CD 1F A2 D4 D5 26 B3 CE 86 35 05 34 BA 85 51
00B0 | D2 CD 65 AA A4 E3 A5 2E 3D C8 88 45 D5 22 3D 9A
00C0 | B0 20 62 D1 46 29 CD FB 95 AE 3F 9A 60 B0 27 54
00D0 | E9 AA 1B C7 E0 E3 A1 0D C8 F5 34 F0 11 C0 82 78
00E0 | 6F D9 E8 F2 6D 01 52 1B A0 99 7D F5 DD BE E1 F6
00F0 | 9B 20 12 3D 7D 46 EF B1 BF F6 8D B9 92 5D 19 B0
0100 | CC 6E 30 1B 7D D1 81 39 93 CC E7 0B 60 BF 1E 2E
0110 | AB 84 9B 6C 87 EE F5 51 5C B0 6A 46 7D 11 F1 28
0120 | 3E CB 00 FF 3B 16 76 F3 16 F4 97 C1 92 8C 68 75
0130 | E9 4D 0D 2B DC 89 57 96 4F 70 44 E7 3D E9 BD C5
0140 | 8A E6 3C FE 7A B7 82 8A ED 80 B2 3E DA 16 37 D9
0150 | 14 2B 00 44 F8 99 EB 9E 4B B3 B1 EB CD A2 F4 DF
0160 | 12 7F 51 50 5F 5D 2C 06 6B 9B 85 12 00 C6 B4 B8
0170 | 43 67 E8 E6 F4 78 CA 34 C6 A5 F6 99 BC C6 3E 1F
0180 | D9 C8 90 3A 42 2E 4E 8F 66 2F A9 2C 0B 45 5B CA
0190 | 29 90 42 6F 1E 36 80 DC E9 01 77 76 BD 0F D3 0B
01A0 | B6 CD 08 DD B3 A4 AD 51 F4 B5 1B 98 1E B9 F7 8C
01B0 | AC 8A 4C 72 D8 91 60 E9 72 ED F9 A5 1B 89 7E 9C
01C0 | F7 A8 2D EB 65 8E 57 DB B8 CA CF 95 21 1E 0B 60
01D0 | 1B 67 C3 AB 5E D9 1A BF 1E CD 27 C3 71 E5 8B 2F
01E0 | 7D ED 9E 2C F4 F4 6F CF FB 11 14 58 97 A0 C7 36
01F0 | A6 F0 8E 45 2F F4 ED F1 94 22 B5 17 4B 48 5F 59
0200 | 54 FC D7 DA E0 C2 EB 2F 62 4D 98 90 D5 0D 11 43
0210 | 0B C7 98 19 74 EF FC F5 A7 1B 1F F0 FF 1A E4 7C
0220 | 49 5C E6 16 4E 25 65 EF 73 55 1F 03 8F E1 F6 27
0230 | C9 0E 2D 75 50 08 5F 00 80 D6 09 F8 4A 2F 97 B6
0240 | 22 5B 24 6F A3 B6 62 D9 56 98 EF AB EE 2A D8 DE
0250 | A6 86 A6 F9 43 BB E4 6C 39 07 94 A9 B7 AB B6 F7
0260 | B3 6C 01 CD 17 07 B9 24 26 B4 2E 5C 54 A1 F1 E9
0270 | 75 D4 BD 09 0C 5C 23 E9 B8 0D 24 C6 08 D8 5F BC
0280 | 73 8D 7D 76 12 41 C8 F1 46 82 F3 19</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 FC 45 6F CF 97 5F 65
0010 | 78 02 00 00 5C 07 E8 D0 9A 34 B2 BA F3 FF F7 F1
0020 | C3 31 F2 31 91 49 DF 0F EE 52 4C B3 9F 67 CF EF
0030 | A6 71 47 6A 74 13 E8 55 FE 50 02 00 41 10 93 8E
0040 | AC B0 EC C6 4A 25 8E F4 17 3B CB 5F 9C B2 7B 36
0050 | 5F 11 A9 17 2B 44 FC 4B 4E 1E 08 83 9B D0 97 D3
0060 | 5F C5 72 0F 4F 9E AE F9 45 7D 05 A3 25 76 B5 CB
0070 | 8F 99 7A 1E A2 E2 08 7C 32 1F B1 BF A2 1A 5E D2
0080 | A0 BC 87 AF FB 68 FB E0 60 D3 19 6B 30 DC 1E BC
0090 | 22 6D B9 16 8E 47 1D 60 0E A7 5E 59 CC D7 3E 9A
00A0 | 26 63 E3 82 94 22 FD 22 5A 0C 3A 80 3D 49 9A 52
00B0 | F5 DF E0 D9 F6 CA 25 2D 97 22 C8 76 E9 AA FE 46
00C0 | CD 79 2D 85 2F 73 46 46 18 3A 7B 47 39 2D E9 C0
00D0 | 9C 6B 29 4B 23 D1 B8 76 5E 72 6D B1 BC 13 80 D0
00E0 | 24 0E A5 96 B0 DE AF C1 19 27 3C CA B9 50 C9 61
00F0 | 47 1E 9C 78 57 AB AE DD 86 13 8E A2 AA 9E 37 F1
0100 | AB 1E DE 96 48 9F 03 82 8A D0 E1 E4 57 1B 4E 63
0110 | 06 BF F4 F1 9A 64 B7 6D 74 CC 61 C5 8C 13 EC 15
0120 | 2E FE EC 9F A0 E1 49 F4 7B E9 8E 42 43 56 92 09
0130 | 6C 4F 21 47 A7 CC CC A6 C6 C4 40 FD C2 FA D9 D9
0140 | EB CE 03 22 92 B2 AA 84 D0 D9 25 4D 33 77 8B 0B
0150 | 84 AF 4D 2E B9 5B 79 4A E9 B7 5F 0C BD 10 46 6F
0160 | 33 A8 5B 3B CC B6 82 02 47 B2 89 FA CE CF A6 A1
0170 | 23 ED 59 B8 50 DB 9F 99 45 AC 02 F1 7B 6C 1E 0B
0180 | 11 EA 2E AA 0C 51 2B 7A 45 F1 0D A9 2A 6B 85 3E
0190 | 1E 31 3B A7 25 0B FD ED 89 88 D4 55 E3 2D A0 6F
01A0 | 72 E3 5D B2 A6 6E 4F FA E2 09 77 74 8D A3 A3 EC
01B0 | 30 0C 27 5F 88 33 E3 78 50 C4 65 84 5A 7C 6C 9E
01C0 | 07 C5 AE 95 FB 70 5D 8F DE F6 33 80 A2 0D 72 7E
01D0 | 8A F7 FF 7A 40 C1 74 B1 27 AC 11 8A 46 D1 5D 7F
01E0 | 07 D6 D7 2F 55 4C B3 D8 F0 67 45 BE 72 BF DC 55
01F0 | 47 05 0A 33 8D 9E 14 B6 56 C9 E4 33 18 9D 29 42
0200 | 18 A0 73 3B 12 05 22 E6 9C 8A 33 A2 DA C7 E4 0F
0210 | 8A 7D 10 38 A8 72 5F E0 8F 54 3B 14 0F FB EE BA
0220 | A3 56 4D F0 B1 0D 82 F9 CF 9A DF D7 89 70 E5 73
0230 | 15 01 A6 31 AE 13 BE 8A DD 44 A4 77 92 BE 57 C2
0240 | 4F 6F 27 2D BE 87 87 C5 2B AD 8E D5 38 25 AA C9
0250 | B0 83 6B 95 3E 17 B4 83 91 B8 3E 92 E3 56 23 8E
0260 | 36 01 93 7C DD E5 33 0D 6B 6B FB E6 34 77 26 37
0270 | 32 A3 75 CF 97 80 1A CF 71 75 00 58 16 9A 66 E9
0280 | EF B9 46 88 BE D1 95 C0 8A 76 F0 1A</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 = 55BACCCEED34076313515571FD9E5D27FC04FD51D6152B4DD5F0A69A7
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>015C42250D975F65</code></td>
<td><code>01FC456FCF975F65</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>F4020000</code> (756 in decimal)</td>
<td><code>78020000</code> (632 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 55BACCCEED34076313515571FD9E5D27FC04FD51D6152B4DD5F0A69A7
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>FECFAFC71ED1E836B5B3D2B740AD2899</code></td>
<td><code>9A34B2BAF3FFF7F1C331F2319149DF0F</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>5C6680D50D08F9296D31D90FD254EF34</code></td>
<td><code>EE524CB39F67CFEFA671476A7413E855</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002002F4B9E6B9289CDBC7A272502</code> <code>AFB5A577798E62BDFD06B40E780CC6F6</code> <code>D4E520F479F5803C885B2DEA72624F77</code> <code>334571C3992FBB5998E6546B681D05F6</code> <code>F95A7D5E5C3154EF6B39BDB7F2726CA9</code> <code>4E9A5F1CBA92DA3B4816379F3C424ED6</code> <code>A3EBCBD7874AC9DC15CD1FA2D4D526B3</code> <code>CE86350534BA8551D2CD65AAA4E3A52E</code> <code>3DC88845D5223D9AB02062D14629CDFB</code> <code>95AE3F9A60B02754E9AA1BC7E0E3A10D</code> <code>C8F534F011C082786FD9E8F26D01521B</code> <code>A0997DF5DDBEE1F69B20123D7D46EFB1</code> <code>BFF68DB9925D19B0CC6E301B7DD18139</code> <code>93CCE70B60BF1E2EAB849B6C87EEF551</code> <code>5CB06A467D11F1283ECB00FF3B1676F3</code> <code>16F497C1928C6875E94D0D2BDC895796</code> <code>4F7044E73DE9BDC58AE63CFE7AB7828A</code> <code>ED80B23EDA1637D9142B0044F899EB9E</code> <code>4BB3B1EBCDA2F4DF127F51505F5D2C06</code> <code>6B9B851200C6B4B84367E8E6F478CA34</code> <code>C6A5F699BCC63E1FD9C8903A422E4E8F</code> <code>662FA92C0B455BCA2990426F1E3680DC</code> <code>E9017776BD0FD30BB6CD08DDB3A4AD51</code> <code>F4B51B981EB9F78CAC8A4C72D89160E9</code> <code>72EDF9A51B897E9CF7A82DEB658E57DB</code> <code>B8CACF95211E0B601B67C3AB5ED91ABF</code> <code>1ECD27C371E58B2F7DED9E2CF4F46FCF</code> <code>FB11145897A0C736A6F08E452FF4EDF1</code> <code>9422B5174B485F5954FCD7DAE0C2EB2F</code> <code>624D9890D50D11430BC7981974EFFCF5</code> <code>A71B1FF0FF1AE47C495CE6164E2565EF</code> <code>73551F038FE1F627C90E2D7550085F00</code> <code>80D609F84A2F97B6225B246FA3B662D9</code> <code>5698EFABEE2AD8DEA686A6F943BBE46C</code> <code>390794A9B7ABB6F7B36C01CD1707B924</code> <code>26B42E5C54A1F1E975D4BD090C5C23E9</code> <code>B80D24C608D85FBC738D7D761241C8F1</code><br> <code>4682F319</code></td>
<td><code>FE5002004110938EACB0ECC64A258EF4</code> <code>173BCB5F9CB27B365F11A9172B44FC4B</code> <code>4E1E08839BD097D35FC5720F4F9EAEF9</code> <code>457D05A32576B5CB8F997A1EA2E2087C</code> <code>321FB1BFA21A5ED2A0BC87AFFB68FBE0</code> <code>60D3196B30DC1EBC226DB9168E471D60</code> <code>0EA75E59CCD73E9A2663E3829422FD22</code> <code>5A0C3A803D499A52F5DFE0D9F6CA252D</code> <code>9722C876E9AAFE46CD792D852F734646</code> <code>183A7B47392DE9C09C6B294B23D1B876</code> <code>5E726DB1BC1380D0240EA596B0DEAFC1</code> <code>19273CCAB950C961471E9C7857ABAEDD</code> <code>86138EA2AA9E37F1AB1EDE96489F0382</code> <code>8AD0E1E4571B4E6306BFF4F19A64B76D</code> <code>74CC61C58C13EC152EFEEC9FA0E149F4</code> <code>7BE98E42435692096C4F2147A7CCCCA6</code> <code>C6C440FDC2FAD9D9EBCE032292B2AA84</code> <code>D0D9254D33778B0B84AF4D2EB95B794A</code> <code>E9B75F0CBD10466F33A85B3BCCB68202</code> <code>47B289FACECFA6A123ED59B850DB9F99</code> <code>45AC02F17B6C1E0B11EA2EAA0C512B7A</code> <code>45F10DA92A6B853E1E313BA7250BFDED</code> <code>8988D455E32DA06F72E35DB2A66E4FFA</code> <code>E20977748DA3A3EC300C275F8833E378</code> <code>50C465845A7C6C9E07C5AE95FB705D8F</code> <code>DEF63380A20D727E8AF7FF7A40C174B1</code> <code>27AC118A46D15D7F07D6D72F554CB3D8</code> <code>F06745BE72BFDC5547050A338D9E14B6</code> <code>56C9E433189D294218A0733B120522E6</code> <code>9C8A33A2DAC7E40F8A7D1038A8725FE0</code> <code>8F543B140FFBEEBAA3564DF0B10D82F9</code> <code>CF9ADFD78970E5731501A631AE13BE8A</code> <code>DD44A47792BE57C24F6F272DBE8787C5</code> <code>2BAD8ED53825AAC9B0836B953E17B483</code> <code>91B83E92E356238E3601937CDDE5330D</code> <code>6B6BFBE63477263732A375CF97801ACF</code> <code>71750058169A66E9EFB94688BED195C0</code><br> <code>8A76F01A</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 55BACCCEED34076313515571FD9E5D27FC04FD51D6152B4DD5F0A69A7
<!-- 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 = 2F4B9E6B9289CDBC7A272502AFB5A577798E62BDFD06B40E780CC6F6D4E520F479F5803C885B2DEA72624F77334571C3992FBB5998E6546B681D05F6F95A7D5E5C3154EF6B39BDB7F2726CA94E9A5F1CBA92DA3B4816379F3C424ED6A3EBCBD7874AC9DC15CD1FA2D4D526B3CE86350534BA8551D2CD65AAA4E3A52E3DC88845D5223D9AB02062D14629CDFB95AE3F9A60B02754E9AA1BC7E0E3A10DC8F534F011C082786FD9E8F26D01521BA0997DF5DDBEE1F69B20123D7D46EFB1BFF68DB9925D19B0CC6E301B7DD1813993CCE70B60BF1E2EAB849B6C87EEF5515CB06A467D11F1283ECB00FF3B1676F316F497C1928C6875E94D0D2BDC8957964F7044E73DE9BDC58AE63CFE7AB7828AED80B23EDA1637D9142B0044F899EB9E4BB3B1EBCDA2F4DF127F51505F5D2C066B9B851200C6B4B84367E8E6F478CA34C6A5F699BCC63E1FD9C8903A422E4E8F662FA92C0B455BCA2990426F1E3680DCE9017776BD0FD30BB6CD08DDB3A4AD51F4B51B981EB9F78CAC8A4C72D89160E972EDF9A51B897E9CF7A82DEB658E57DBB8CACF95211E0B601B67C3AB5ED91ABF1ECD27C371E58B2F7DED9E2CF4F46FCFFB11145897A0C736A6F08E452FF4EDF19422B5174B485F5954FCD7DAE0C2EB2F624D9890D50D11430BC7981974EFFCF5A71B1FF0FF1AE47C495CE6164E2565EF73551F038FE1F627C90E2D7550085F0080D609F84A2F97B6225B246FA3B662D95698EFABEE2AD8DEA686A6F943BBE46C390794A9B7ABB6F7B36C01CD1707B92426B42E5C54A1F1E975D4BD090C5C23E9B80D24C608D85FBC738D7D761241C8F14682F319
tmp_aes_key = 78042BB79FF94CA039702A70F572B40EA8C26481F1E8B92FFEC986C9F2504B8F
tmp_aes_iv = E19A6A6DBC669E581E0719B1B73A515176656A86275C8A760DD2278E73BF1F9D</code></pre>
<pre><code>encrypted_answer = 4110938EACB0ECC64A258EF4173BCB5F9CB27B365F11A9172B44FC4B4E1E08839BD097D35FC5720F4F9EAEF9457D05A32576B5CB8F997A1EA2E2087C321FB1BFA21A5ED2A0BC87AFFB68FBE060D3196B30DC1EBC226DB9168E471D600EA75E59CCD73E9A2663E3829422FD225A0C3A803D499A52F5DFE0D9F6CA252D9722C876E9AAFE46CD792D852F734646183A7B47392DE9C09C6B294B23D1B8765E726DB1BC1380D0240EA596B0DEAFC119273CCAB950C961471E9C7857ABAEDD86138EA2AA9E37F1AB1EDE96489F03828AD0E1E4571B4E6306BFF4F19A64B76D74CC61C58C13EC152EFEEC9FA0E149F47BE98E42435692096C4F2147A7CCCCA6C6C440FDC2FAD9D9EBCE032292B2AA84D0D9254D33778B0B84AF4D2EB95B794AE9B75F0CBD10466F33A85B3BCCB6820247B289FACECFA6A123ED59B850DB9F9945AC02F17B6C1E0B11EA2EAA0C512B7A45F10DA92A6B853E1E313BA7250BFDED8988D455E32DA06F72E35DB2A66E4FFAE20977748DA3A3EC300C275F8833E37850C465845A7C6C9E07C5AE95FB705D8FDEF63380A20D727E8AF7FF7A40C174B127AC118A46D15D7F07D6D72F554CB3D8F06745BE72BFDC5547050A338D9E14B656C9E433189D294218A0733B120522E69C8A33A2DAC7E40F8A7D1038A8725FE08F543B140FFBEEBAA3564DF0B10D82F9CF9ADFD78970E5731501A631AE13BE8ADD44A47792BE57C24F6F272DBE8787C52BAD8ED53825AAC9B0836B953E17B48391B83E92E356238E3601937CDDE5330D6B6BFBE63477263732A375CF97801ACF71750058169A66E9EFB94688BED195C08A76F01A
tmp_aes_key = DB2F34B706C1F015EF12A76AD1A6D824D5C4EBA7CA8DD56DF50B61B7A9536C80
tmp_aes_iv = 0B108CEA9A57852932D4DF2C472DD80227154011C4EDB6BA8D1E18682EA93C55</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 72A6211AFB558CD7CF0F96EE538AB8F0C2553319BA0D89B5FECFAFC71ED1E836B5B3D2B740AD28995C6680D50D08F9296D31D90FD254EF3403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010022A6640FF8305EF05EA6FD25001A11C7659E1949BCF4583491F62B60A402C7E1F7A33EFEF4ADE0482006CC89EEB95605BAE5CB11BE79F1CEEA1206821CCFCC96FAE48ADA17093D7A0605EA561DDD03820FE03BED2CF1C05C2742C6E492ACE30065C71135CA0B24238F37EF36EC8C82E888B97465DFA892437391370233C30D3B7BE0B1377A6A69CDF2E354702410C0D63FC33D763308AC12E0CBDA79B521F522F35C72CC41E5D573431A7740D3C39D08D6613FBCA7277B243B4DCD181283F3D4B4D3BACBDFD68FE6171F7DA5147D372616C70C3ADDC4E798D8F0CFDE8FE84E6F1998061BADD6D935D2D4E0FB1E7941DEBC47553099981A62482AF983488AA5520D975F65FEF5340A158C513D
answer = BA0D89B5FECFAFC71ED1E836B5B3D2B740AD28995C6680D50D08F9296D31D90FD254EF3403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010022A6640FF8305EF05EA6FD25001A11C7659E1949BCF4583491F62B60A402C7E1F7A33EFEF4ADE0482006CC89EEB95605BAE5CB11BE79F1CEEA1206821CCFCC96FAE48ADA17093D7A0605EA561DDD03820FE03BED2CF1C05C2742C6E492ACE30065C71135CA0B24238F37EF36EC8C82E888B97465DFA892437391370233C30D3B7BE0B1377A6A69CDF2E354702410C0D63FC33D763308AC12E0CBDA79B521F522F35C72CC41E5D573431A7740D3C39D08D6613FBCA7277B243B4DCD181283F3D4B4D3BACBDFD68FE6171F7DA5147D372616C70C3ADDC4E798D8F0CFDE8FE84E6F1998061BADD6D935D2D4E0FB1E7941DEBC47553099981A62482AF983488AA5520D975F65FEF5340A158C513D</code></pre>
<pre><code>answer_with_hash = FFD741ADB59CFD08046C78EEC6486E798865444CBA0D89B59A34B2BAF3FFF7F1C331F2319149DF0FEE524CB39F67CFEFA671476A7413E85503000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010079241B5C80B4C81FED0BAF2D4C892B0124D2CD962C2C09CBB117D6E8D4541C56E1902CD0330601647E56C20DB73C55659D8B97F5BEC0DF0D652130B969F6F1C6B72566B68852C8C831B72FF864390C2B0AA0083053FB88CF3D47F08E05EF7AF9057367EE44511540C561B5BA21B7D12AB50ECBECFB85CE1FDCE5654ED90A086B816606EC948399B262748C8732A630633D888B644D2B584622F9DA08294F307DD43E655C5A0687EA568291AAB091D9F6D57D861E75CD4CE8E68B1A69CCE29A4857E570141C53062633339BAB64FC96A28723523975BD7670DB616D2D1C1FAD08D29C781E866B2BA05AEA4F9C90AD55897DBA1077A7FCEBC34C33A43A5E7DBAA7CF975F65167DF1F4851834AB
answer = BA0D89B59A34B2BAF3FFF7F1C331F2319149DF0FEE524CB39F67CFEFA671476A7413E85503000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010079241B5C80B4C81FED0BAF2D4C892B0124D2CD962C2C09CBB117D6E8D4541C56E1902CD0330601647E56C20DB73C55659D8B97F5BEC0DF0D652130B969F6F1C6B72566B68852C8C831B72FF864390C2B0AA0083053FB88CF3D47F08E05EF7AF9057367EE44511540C561B5BA21B7D12AB50ECBECFB85CE1FDCE5654ED90A086B816606EC948399B262748C8732A630633D888B644D2B584622F9DA08294F307DD43E655C5A0687EA568291AAB091D9F6D57D861E75CD4CE8E68B1A69CCE29A4857E570141C53062633339BAB64FC96A28723523975BD7670DB616D2D1C1FAD08D29C781E866B2BA05AEA4F9C90AD55897DBA1077A7FCEBC34C33A43A5E7DBAA7CF975F65167DF1F4851834AB</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 FE CF AF C7 1E D1 E8 36 B5 B3 D2 B7
0010 | 40 AD 28 99 5C 66 80 D5 0D 08 F9 29 6D 31 D9 0F
0020 | D2 54 EF 34 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 9A 34 B2 BA F3 FF F7 F1 C3 31 F2 31
0010 | 91 49 DF 0F EE 52 4C B3 9F 67 CF EF A6 71 47 6A
0020 | 74 13 E8 55 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 = BA0D89B5FECFAFC71ED1E836B5B3D2B740AD28995C6680D50D08F9296D31D90FD254EF3
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 | 22 A6 64 0F F8 30 5E F0 5E A6 FD 25 00 1A 11 C7
0140 | 65 9E 19 49 BC F4 58 34 91 F6 2B 60 A4 02 C7 E1
0150 | F7 A3 3E FE F4 AD E0 48 20 06 CC 89 EE B9 56 05
0160 | BA E5 CB 11 BE 79 F1 CE EA 12 06 82 1C CF CC 96
0170 | FA E4 8A DA 17 09 3D 7A 06 05 EA 56 1D DD 03 82
0180 | 0F E0 3B ED 2C F1 C0 5C 27 42 C6 E4 92 AC E3 00
0190 | 65 C7 11 35 CA 0B 24 23 8F 37 EF 36 EC 8C 82 E8
01A0 | 88 B9 74 65 DF A8 92 43 73 91 37 02 33 C3 0D 3B
01B0 | 7B E0 B1 37 7A 6A 69 CD F2 E3 54 70 24 10 C0 D6
01C0 | 3F C3 3D 76 33 08 AC 12 E0 CB DA 79 B5 21 F5 22
01D0 | F3 5C 72 CC 41 E5 D5 73 43 1A 77 40 D3 C3 9D 08
01E0 | D6 61 3F BC A7 27 7B 24 3B 4D CD 18 12 83 F3 D4
01F0 | B4 D3 BA CB DF D6 8F E6 17 1F 7D A5 14 7D 37 26
0200 | 16 C7 0C 3A DD C4 E7 98 D8 F0 CF DE 8F E8 4E 6F
0210 | 19 98 06 1B AD D6 D9 35 D2 D4 E0 FB 1E 79 41 DE
0220 | BC 47 55 30 99 98 1A 62 48 2A F9 83 48 8A A5 52
0230 | 0D 97 5F 65</code></pre>
0130 | 79 24 1B 5C 80 B4 C8 1F ED 0B AF 2D 4C 89 2B 01
0140 | 24 D2 CD 96 2C 2C 09 CB B1 17 D6 E8 D4 54 1C 56
0150 | E1 90 2C D0 33 06 01 64 7E 56 C2 0D B7 3C 55 65
0160 | 9D 8B 97 F5 BE C0 DF 0D 65 21 30 B9 69 F6 F1 C6
0170 | B7 25 66 B6 88 52 C8 C8 31 B7 2F F8 64 39 0C 2B
0180 | 0A A0 08 30 53 FB 88 CF 3D 47 F0 8E 05 EF 7A F9
0190 | 05 73 67 EE 44 51 15 40 C5 61 B5 BA 21 B7 D1 2A
01A0 | B5 0E CB EC FB 85 CE 1F DC E5 65 4E D9 0A 08 6B
01B0 | 81 66 06 EC 94 83 99 B2 62 74 8C 87 32 A6 30 63
01C0 | 3D 88 8B 64 4D 2B 58 46 22 F9 DA 08 29 4F 30 7D
01D0 | D4 3E 65 5C 5A 06 87 EA 56 82 91 AA B0 91 D9 F6
01E0 | D5 7D 86 1E 75 CD 4C E8 E6 8B 1A 69 CC E2 9A 48
01F0 | 57 E5 70 14 1C 53 06 26 33 33 9B AB 64 FC 96 A2
0200 | 87 23 52 39 75 BD 76 70 DB 61 6D 2D 1C 1F AD 08
0210 | D2 9C 78 1E 86 6B 2B A0 5A EA 4F 9C 90 AD 55 89
0220 | 7D BA 10 77 A7 FC EB C3 4C 33 A4 3A 5E 7D BA A7
0230 | CF 97 5F 65</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B5FECFAFC71ED1E836B5B3D2B740AD28995C6680D50D08F9296D31D90FD254EF3
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>FECFAFC71ED1E836B5B3D2B740AD2899</code></td>
<td><code>9A34B2BAF3FFF7F1C331F2319149DF0F</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>5C6680D50D08F9296D31D90FD254EF34</code></td>
<td><code>EE524CB39F67CFEFA671476A7413E855</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B5FECFAFC71ED1E836B5B3D2B740AD28995C6680D50D08F9296D31D90FD254EF3
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE00010022A6640FF8305EF05EA6FD25</code> <code>001A11C7659E1949BCF4583491F62B60</code> <code>A402C7E1F7A33EFEF4ADE0482006CC89</code> <code>EEB95605BAE5CB11BE79F1CEEA120682</code> <code>1CCFCC96FAE48ADA17093D7A0605EA56</code> <code>1DDD03820FE03BED2CF1C05C2742C6E4</code> <code>92ACE30065C71135CA0B24238F37EF36</code> <code>EC8C82E888B97465DFA8924373913702</code> <code>33C30D3B7BE0B1377A6A69CDF2E35470</code> <code>2410C0D63FC33D763308AC12E0CBDA79</code> <code>B521F522F35C72CC41E5D573431A7740</code> <code>D3C39D08D6613FBCA7277B243B4DCD18</code> <code>1283F3D4B4D3BACBDFD68FE6171F7DA5</code> <code>147D372616C70C3ADDC4E798D8F0CFDE</code> <code>8FE84E6F1998061BADD6D935D2D4E0FB</code> <code>1E7941DEBC47553099981A62482AF983</code><br> <code>488AA552</code></td>
<td><code>FE00010079241B5C80B4C81FED0BAF2D</code> <code>4C892B0124D2CD962C2C09CBB117D6E8</code> <code>D4541C56E1902CD0330601647E56C20D</code> <code>B73C55659D8B97F5BEC0DF0D652130B9</code> <code>69F6F1C6B72566B68852C8C831B72FF8</code> <code>64390C2B0AA0083053FB88CF3D47F08E</code> <code>05EF7AF9057367EE44511540C561B5BA</code> <code>21B7D12AB50ECBECFB85CE1FDCE5654E</code> <code>D90A086B816606EC948399B262748C87</code> <code>32A630633D888B644D2B584622F9DA08</code> <code>294F307DD43E655C5A0687EA568291AA</code> <code>B091D9F6D57D861E75CD4CE8E68B1A69</code> <code>CCE29A4857E570141C53062633339BAB</code> <code>64FC96A28723523975BD7670DB616D2D</code> <code>1C1FAD08D29C781E866B2BA05AEA4F9C</code> <code>90AD55897DBA1077A7FCEBC34C33A43A</code><br> <code>5E7DBAA7</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>0D975F65</code> (1700763405 in decimal)</td>
<td><code>CF975F65</code> (1700763599 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B5FECFAFC71ED1E836B5B3D2B740AD28995C6680D50D08F9296D31D90FD254EF3
<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 = 3279D36C8A1D56AC230D918CFDE958079961FAB4638E5099D1949F9DC3F4B757F88FCA5F174B561EE6496E2A0C82466367EB5B552931F7656EB24EA00E8BB62CDD5E8487322B237CA6DB72AC5806C72D627F7614C0DDF1C0410D447B35BAE64F74D880E72E41A7C0038C44BD643D7E87AFBA94E640538084692280AA1DADB4A0EFFF6A111061EA7D3C6DAC44AEA74BFA71DD5E416502182F47EA428F006023FC2876C45DBA50190F234762BB503916AF6EFCF9DCCB7559B31D5ABEF0019BD6BA4518F096B57100D62FF1EFCFF2B9BD68753A6E19C7AF426E9940602A7FE4468B3FE3E70B9B7E7599FC0D435F04C00E70B0C1E7ADE33CAA660AEDBC7B26DA64BD</code></pre>
<pre><code>b = B94B19F4663965D3475834E9594CE260D9E75DBA771A518EBFF7826310821ED0140E73DAEED7D995D00D1707F83B95D7B3BED5FB02E907C8DAF8874529D3D6F59954F6E371F62E1D9C0BFD3C9B37BFF4ACF8F364038F8BE4E3CEF93C6AA75FE01F79C47FDB9F898AAB104027B59B029FC356D21637338E5A2A02324A10895C885E1D84B0673FFD7F309DC3CD538AFB85335A9E6E5B2C24FF80DDFECF7F8E07935DBBEEE3125DC748348312C162DFD2EB355FCBFDE963C8A9756B52B0FA53EADAE0C5C4208AF988316F78F87A31EB8F52ECD6FEC107286D9C5B9B1B521A08BD39A041BBA65C1474A2CB765A8AC2006B03E2F2E931D741B50FBFEA07CB22189BFB</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 = 96902699CC27003803510B24CC9F178CA238F49D0200C686606043090C844B79D9B273FF4CF70EC2859696D4F44201172590BF43BE5ED5C85458FD2839EB807A2B06DF62B00B25B2EBF0E82D43DE058E7C577756FE6970071811188F6E9B142DE42F65EAA4B8000A9026E980C078FBC1FFB77D4AE0FDBCBC45476C612FF033137A62EAAE0671DEEAC0DA11016B2DA887B0F407A23635AF78373432B380359EEBBDF92F642B5C72FA28690227CBB88E9669A2D50D63F021A8E0E444170DE6B34B84527F35488AF779E0A0D5DAAB8829DA977B16F0679BBC31071CA675A47F65DD6EFB2C45FBDDFB781331533C29024B8E3EEDFAC5C7A4AEE4A0885F3517071D37</code></pre>
<pre><code>g_b = B03B9954067464ABDF175BADDFCC201F0B7E7971DCC88DB4150BD2AEB28A4A93F4D41E5F2B10E5408046F584714511196614524F66E681191F1F7B48C71DD519EDE29A0686D8E7B7BD60D4C276AACE8D6825C79740541A32012589B0FA4FA45632A579F8B962A17850086DA30715DBC9B8F1636A1D04743A542773FEB7F785E47C5DA93B4CBF935DC762245ED7D1448DFBF0C3CD86EF34DF3966FE5A677976026DFF0244EB5822A85AF94C4B17102653239533CA14C9366A486371911B75C4C2A93448F0C6A70F72AE4D3075FC6CC70CCB1D4CC4D64C57D4436DBA65A8DCC93E455770789A3572A636CC8AB107B86B9D7E5596D5FBC71C26D5AAD6AF58290E64</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 FE CF AF C7 1E D1 E8 36 B5 B3 D2 B7
0010 | 40 AD 28 99 5C 66 80 D5 0D 08 F9 29 6D 31 D9 0F
0020 | D2 54 EF 34 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 96 90 26 99 CC 27 00 38 03 51 0B 24 CC 9F 17 8C
0040 | A2 38 F4 9D 02 00 C6 86 60 60 43 09 0C 84 4B 79
0050 | D9 B2 73 FF 4C F7 0E C2 85 96 96 D4 F4 42 01 17
0060 | 25 90 BF 43 BE 5E D5 C8 54 58 FD 28 39 EB 80 7A
0070 | 2B 06 DF 62 B0 0B 25 B2 EB F0 E8 2D 43 DE 05 8E
0080 | 7C 57 77 56 FE 69 70 07 18 11 18 8F 6E 9B 14 2D
0090 | E4 2F 65 EA A4 B8 00 0A 90 26 E9 80 C0 78 FB C1
00A0 | FF B7 7D 4A E0 FD BC BC 45 47 6C 61 2F F0 33 13
00B0 | 7A 62 EA AE 06 71 DE EA C0 DA 11 01 6B 2D A8 87
00C0 | B0 F4 07 A2 36 35 AF 78 37 34 32 B3 80 35 9E EB
00D0 | BD F9 2F 64 2B 5C 72 FA 28 69 02 27 CB B8 8E 96
00E0 | 69 A2 D5 0D 63 F0 21 A8 E0 E4 44 17 0D E6 B3 4B
00F0 | 84 52 7F 35 48 8A F7 79 E0 A0 D5 DA AB 88 29 DA
0100 | 97 7B 16 F0 67 9B BC 31 07 1C A6 75 A4 7F 65 DD
0110 | 6E FB 2C 45 FB DD FB 78 13 31 53 3C 29 02 4B 8E
0120 | 3E ED FA C5 C7 A4 AE E4 A0 88 5F 35 17 07 1D 37</code></pre>
<pre><code>0000 | 54 B6 43 66 9A 34 B2 BA F3 FF F7 F1 C3 31 F2 31
0010 | 91 49 DF 0F EE 52 4C B3 9F 67 CF EF A6 71 47 6A
0020 | 74 13 E8 55 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | B0 3B 99 54 06 74 64 AB DF 17 5B AD DF CC 20 1F
0040 | 0B 7E 79 71 DC C8 8D B4 15 0B D2 AE B2 8A 4A 93
0050 | F4 D4 1E 5F 2B 10 E5 40 80 46 F5 84 71 45 11 19
0060 | 66 14 52 4F 66 E6 81 19 1F 1F 7B 48 C7 1D D5 19
0070 | ED E2 9A 06 86 D8 E7 B7 BD 60 D4 C2 76 AA CE 8D
0080 | 68 25 C7 97 40 54 1A 32 01 25 89 B0 FA 4F A4 56
0090 | 32 A5 79 F8 B9 62 A1 78 50 08 6D A3 07 15 DB C9
00A0 | B8 F1 63 6A 1D 04 74 3A 54 27 73 FE B7 F7 85 E4
00B0 | 7C 5D A9 3B 4C BF 93 5D C7 62 24 5E D7 D1 44 8D
00C0 | FB F0 C3 CD 86 EF 34 DF 39 66 FE 5A 67 79 76 02
00D0 | 6D FF 02 44 EB 58 22 A8 5A F9 4C 4B 17 10 26 53
00E0 | 23 95 33 CA 14 C9 36 6A 48 63 71 91 1B 75 C4 C2
00F0 | A9 34 48 F0 C6 A7 0F 72 AE 4D 30 75 FC 6C C7 0C
0100 | CB 1D 4C C4 D6 4C 57 D4 43 6D BA 65 A8 DC C9 3E
0110 | 45 57 70 78 9A 35 72 A6 36 CC 8A B1 07 B8 6B 9D
0120 | 7E 55 96 D5 FB C7 1C 26 D5 AA D6 AF 58 29 0E 64</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 = BA0D89B5FECFAFC71ED1E836B5B3D2B740AD28995C6680D50D08F9296D31D90FD254EF3
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>FECFAFC71ED1E836B5B3D2B740AD2899</code></td>
<td><code>9A34B2BAF3FFF7F1C331F2319149DF0F</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>5C6680D50D08F9296D31D90FD254EF34</code></td>
<td><code>EE524CB39F67CFEFA671476A7413E855</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE00010096902699CC27003803510B24</code> <code>CC9F178CA238F49D0200C68660604309</code> <code>0C844B79D9B273FF4CF70EC2859696D4</code> <code>F44201172590BF43BE5ED5C85458FD28</code> <code>39EB807A2B06DF62B00B25B2EBF0E82D</code> <code>43DE058E7C577756FE6970071811188F</code> <code>6E9B142DE42F65EAA4B8000A9026E980</code> <code>C078FBC1FFB77D4AE0FDBCBC45476C61</code> <code>2FF033137A62EAAE0671DEEAC0DA1101</code> <code>6B2DA887B0F407A23635AF78373432B3</code> <code>80359EEBBDF92F642B5C72FA28690227</code> <code>CBB88E9669A2D50D63F021A8E0E44417</code> <code>0DE6B34B84527F35488AF779E0A0D5DA</code> <code>AB8829DA977B16F0679BBC31071CA675</code> <code>A47F65DD6EFB2C45FBDDFB781331533C</code> <code>29024B8E3EEDFAC5C7A4AEE4A0885F35</code><br> <code>17071D37</code></td>
<td><code>FE000100B03B9954067464ABDF175BAD</code> <code>DFCC201F0B7E7971DCC88DB4150BD2AE</code> <code>B28A4A93F4D41E5F2B10E5408046F584</code> <code>714511196614524F66E681191F1F7B48</code> <code>C71DD519EDE29A0686D8E7B7BD60D4C2</code> <code>76AACE8D6825C79740541A32012589B0</code> <code>FA4FA45632A579F8B962A17850086DA3</code> <code>0715DBC9B8F1636A1D04743A542773FE</code> <code>B7F785E47C5DA93B4CBF935DC762245E</code> <code>D7D1448DFBF0C3CD86EF34DF3966FE5A</code> <code>677976026DFF0244EB5822A85AF94C4B</code> <code>17102653239533CA14C9366A48637191</code> <code>1B75C4C2A93448F0C6A70F72AE4D3075</code> <code>FC6CC70CCB1D4CC4D64C57D4436DBA65</code> <code>A8DCC93E455770789A3572A636CC8AB1</code> <code>07B86B9D7E5596D5FBC71C26D5AAD6AF</code><br> <code>58290E64</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 = BA0D89B5FECFAFC71ED1E836B5B3D2B740AD28995C6680D50D08F9296D31D90FD254EF3
<!-- 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 = 54B64366FECFAFC71ED1E836B5B3D2B740AD28995C6680D50D08F9296D31D90FD254EF340000000000000000FE00010096902699CC27003803510B24CC9F178CA238F49D0200C686606043090C844B79D9B273FF4CF70EC2859696D4F44201172590BF43BE5ED5C85458FD2839EB807A2B06DF62B00B25B2EBF0E82D43DE058E7C577756FE6970071811188F6E9B142DE42F65EAA4B8000A9026E980C078FBC1FFB77D4AE0FDBCBC45476C612FF033137A62EAAE0671DEEAC0DA11016B2DA887B0F407A23635AF78373432B380359EEBBDF92F642B5C72FA28690227CBB88E9669A2D50D63F021A8E0E444170DE6B34B84527F35488AF779E0A0D5DAAB8829DA977B16F0679BBC31071CA675A47F65DD6EFB2C45FBDDFB781331533C29024B8E3EEDFAC5C7A4AEE4A0885F3517071D37
padding = C3F4DA891DDE75923E86D403
tmp_aes_key = 78042BB79FF94CA039702A70F572B40EA8C26481F1E8B92FFEC986C9F2504B8F
tmp_aes_iv = E19A6A6DBC669E581E0719B1B73A515176656A86275C8A760DD2278E73BF1F9D</code></pre>
<pre><code>data = 54B643669A34B2BAF3FFF7F1C331F2319149DF0FEE524CB39F67CFEFA671476A7413E8550000000000000000FE000100B03B9954067464ABDF175BADDFCC201F0B7E7971DCC88DB4150BD2AEB28A4A93F4D41E5F2B10E5408046F584714511196614524F66E681191F1F7B48C71DD519EDE29A0686D8E7B7BD60D4C276AACE8D6825C79740541A32012589B0FA4FA45632A579F8B962A17850086DA30715DBC9B8F1636A1D04743A542773FEB7F785E47C5DA93B4CBF935DC762245ED7D1448DFBF0C3CD86EF34DF3966FE5A677976026DFF0244EB5822A85AF94C4B17102653239533CA14C9366A486371911B75C4C2A93448F0C6A70F72AE4D3075FC6CC70CCB1D4CC4D64C57D4436DBA65A8DCC93E455770789A3572A636CC8AB107B86B9D7E5596D5FBC71C26D5AAD6AF58290E64
padding = 20107E428F635BE3D5AC0F63
tmp_aes_key = DB2F34B706C1F015EF12A76AD1A6D824D5C4EBA7CA8DD56DF50B61B7A9536C80
tmp_aes_iv = 0B108CEA9A57852932D4DF2C472DD80227154011C4EDB6BA8D1E18682EA93C55</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 = 56C6A2EAAA030AECC70CEB882F2BDE2B54704B0B77C280BFE3EEA15AC50C9660A775B61849700613AF786419C98097292D497673CA9750E53DA7CE2A777C34C1484D7B6BE34F14994E1C05FB577215A643BD6075326956B1CE354A2C4D59E990203EF74BF35C18ABC9409DDB57F09529F568449C8D15ED912BAA1C1691DD8B2166CA77172897CFEFA1F2652C3CA9DCDD1E4A769FE83D4C85214A4A97891061A0B8F397C496B57512227F86BB7542C4DB0FE048836EA6CF9C28035F9B80AADB56B7B33870A6DB350BE052C36482DB1073151516C73DA076FAEAE26A61D9D4C353D99BCD4F589A128EE60FA49CFC6E0849CC88181AFA424A9DBA541A9C7EC27C75B8CC12DA41475BBA1458576FA38CF7DAA6FBDAE2F62DA6407F0EBF30BBF64C83D3F2E268DEA92A1517E4483A544B0DDDD78CBF4290241DC691DC889464F72BA78A12377802D7AFF565E2021EDA27E9B7</code></pre>
<pre><code>encrypted_data = FF6551BB89A52E6E84591FFD97A0B9B04287F5DF2C9DD99981BF339DA80E67F776348AD9182D2B0E62D021B2013DB21FC5631F96F0BFADF9EC2EAA77256247AECBD46E6453C672DE7E96B6C1F0D3A3A93DB290A939B63A0E9756566ED63D80E4A621065B3AC71BF537FA9DE8345363DB25BE0622B24EE43FF4765A609739BE0612C4F6852AD998A2D5EE66A19A48C5C2F049CB606AECD4FB68B14BE28E9CC8CAEDEFC599501039C9E61E333B6487FB64145D26BC53BD0EC357CE6CC22D901043EEC24B7940F92C04253513FF16C711039DA3C1E6EE9BA19707845D7055FEB077383C80253E852F4699A493417E8E078BA432846553008B6F88C5D92048C014ABE942B5D785C622EA7277B8C24422471611009604EE51FC9F6ABA96A6A724A83398CF3EBDFC9268A56A1271DCF337D765E134E2F132B089858573F13A1F18F1968FC110EE978EC3360661FF127D97E2AC</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 2C 0C 00 0D 97 5F 65
0010 | 78 01 00 00 1F 5F 04 F5 FE CF AF C7 1E D1 E8 36
0020 | B5 B3 D2 B7 40 AD 28 99 5C 66 80 D5 0D 08 F9 29
0030 | 6D 31 D9 0F D2 54 EF 34 FE 50 01 00 56 C6 A2 EA
0040 | AA 03 0A EC C7 0C EB 88 2F 2B DE 2B 54 70 4B 0B
0050 | 77 C2 80 BF E3 EE A1 5A C5 0C 96 60 A7 75 B6 18
0060 | 49 70 06 13 AF 78 64 19 C9 80 97 29 2D 49 76 73
0070 | CA 97 50 E5 3D A7 CE 2A 77 7C 34 C1 48 4D 7B 6B
0080 | E3 4F 14 99 4E 1C 05 FB 57 72 15 A6 43 BD 60 75
0090 | 32 69 56 B1 CE 35 4A 2C 4D 59 E9 90 20 3E F7 4B
00A0 | F3 5C 18 AB C9 40 9D DB 57 F0 95 29 F5 68 44 9C
00B0 | 8D 15 ED 91 2B AA 1C 16 91 DD 8B 21 66 CA 77 17
00C0 | 28 97 CF EF A1 F2 65 2C 3C A9 DC DD 1E 4A 76 9F
00D0 | E8 3D 4C 85 21 4A 4A 97 89 10 61 A0 B8 F3 97 C4
00E0 | 96 B5 75 12 22 7F 86 BB 75 42 C4 DB 0F E0 48 83
00F0 | 6E A6 CF 9C 28 03 5F 9B 80 AA DB 56 B7 B3 38 70
0100 | A6 DB 35 0B E0 52 C3 64 82 DB 10 73 15 15 16 C7
0110 | 3D A0 76 FA EA E2 6A 61 D9 D4 C3 53 D9 9B CD 4F
0120 | 58 9A 12 8E E6 0F A4 9C FC 6E 08 49 CC 88 18 1A
0130 | FA 42 4A 9D BA 54 1A 9C 7E C2 7C 75 B8 CC 12 DA
0140 | 41 47 5B BA 14 58 57 6F A3 8C F7 DA A6 FB DA E2
0150 | F6 2D A6 40 7F 0E BF 30 BB F6 4C 83 D3 F2 E2 68
0160 | DE A9 2A 15 17 E4 48 3A 54 4B 0D DD D7 8C BF 42
0170 | 90 24 1D C6 91 DC 88 94 64 F7 2B A7 8A 12 37 78
0180 | 02 D7 AF F5 65 E2 02 1E DA 27 E9 B7</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 44 14 05 00 CF 97 5F 65
0010 | 78 01 00 00 1F 5F 04 F5 9A 34 B2 BA F3 FF F7 F1
0020 | C3 31 F2 31 91 49 DF 0F EE 52 4C B3 9F 67 CF EF
0030 | A6 71 47 6A 74 13 E8 55 FE 50 01 00 FF 65 51 BB
0040 | 89 A5 2E 6E 84 59 1F FD 97 A0 B9 B0 42 87 F5 DF
0050 | 2C 9D D9 99 81 BF 33 9D A8 0E 67 F7 76 34 8A D9
0060 | 18 2D 2B 0E 62 D0 21 B2 01 3D B2 1F C5 63 1F 96
0070 | F0 BF AD F9 EC 2E AA 77 25 62 47 AE CB D4 6E 64
0080 | 53 C6 72 DE 7E 96 B6 C1 F0 D3 A3 A9 3D B2 90 A9
0090 | 39 B6 3A 0E 97 56 56 6E D6 3D 80 E4 A6 21 06 5B
00A0 | 3A C7 1B F5 37 FA 9D E8 34 53 63 DB 25 BE 06 22
00B0 | B2 4E E4 3F F4 76 5A 60 97 39 BE 06 12 C4 F6 85
00C0 | 2A D9 98 A2 D5 EE 66 A1 9A 48 C5 C2 F0 49 CB 60
00D0 | 6A EC D4 FB 68 B1 4B E2 8E 9C C8 CA ED EF C5 99
00E0 | 50 10 39 C9 E6 1E 33 3B 64 87 FB 64 14 5D 26 BC
00F0 | 53 BD 0E C3 57 CE 6C C2 2D 90 10 43 EE C2 4B 79
0100 | 40 F9 2C 04 25 35 13 FF 16 C7 11 03 9D A3 C1 E6
0110 | EE 9B A1 97 07 84 5D 70 55 FE B0 77 38 3C 80 25
0120 | 3E 85 2F 46 99 A4 93 41 7E 8E 07 8B A4 32 84 65
0130 | 53 00 8B 6F 88 C5 D9 20 48 C0 14 AB E9 42 B5 D7
0140 | 85 C6 22 EA 72 77 B8 C2 44 22 47 16 11 00 96 04
0150 | EE 51 FC 9F 6A BA 96 A6 A7 24 A8 33 98 CF 3E BD
0160 | FC 92 68 A5 6A 12 71 DC F3 37 D7 65 E1 34 E2 F1
0170 | 32 B0 89 85 85 73 F1 3A 1F 18 F1 96 8F C1 10 EE
0180 | 97 8E C3 36 06 61 FF 12 7D 97 E2 AC</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>442C0C000D975F65</code></td>
<td><code>44140500CF975F65</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>FECFAFC71ED1E836B5B3D2B740AD2899</code></td>
<td><code>9A34B2BAF3FFF7F1C331F2319149DF0F</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>5C6680D50D08F9296D31D90FD254EF34</code></td>
<td><code>EE524CB39F67CFEFA671476A7413E855</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010056C6A2EAAA030AECC70CEB88</code> <code>2F2BDE2B54704B0B77C280BFE3EEA15A</code> <code>C50C9660A775B61849700613AF786419</code> <code>C98097292D497673CA9750E53DA7CE2A</code> <code>777C34C1484D7B6BE34F14994E1C05FB</code> <code>577215A643BD6075326956B1CE354A2C</code> <code>4D59E990203EF74BF35C18ABC9409DDB</code> <code>57F09529F568449C8D15ED912BAA1C16</code> <code>91DD8B2166CA77172897CFEFA1F2652C</code> <code>3CA9DCDD1E4A769FE83D4C85214A4A97</code> <code>891061A0B8F397C496B57512227F86BB</code> <code>7542C4DB0FE048836EA6CF9C28035F9B</code> <code>80AADB56B7B33870A6DB350BE052C364</code> <code>82DB1073151516C73DA076FAEAE26A61</code> <code>D9D4C353D99BCD4F589A128EE60FA49C</code> <code>FC6E0849CC88181AFA424A9DBA541A9C</code> <code>7EC27C75B8CC12DA41475BBA1458576F</code> <code>A38CF7DAA6FBDAE2F62DA6407F0EBF30</code> <code>BBF64C83D3F2E268DEA92A1517E4483A</code> <code>544B0DDDD78CBF4290241DC691DC8894</code> <code>64F72BA78A12377802D7AFF565E2021E</code><br> <code>DA27E9B7</code></td>
<td><code>FE500100FF6551BB89A52E6E84591FFD</code> <code>97A0B9B04287F5DF2C9DD99981BF339D</code> <code>A80E67F776348AD9182D2B0E62D021B2</code> <code>013DB21FC5631F96F0BFADF9EC2EAA77</code> <code>256247AECBD46E6453C672DE7E96B6C1</code> <code>F0D3A3A93DB290A939B63A0E9756566E</code> <code>D63D80E4A621065B3AC71BF537FA9DE8</code> <code>345363DB25BE0622B24EE43FF4765A60</code> <code>9739BE0612C4F6852AD998A2D5EE66A1</code> <code>9A48C5C2F049CB606AECD4FB68B14BE2</code> <code>8E9CC8CAEDEFC599501039C9E61E333B</code> <code>6487FB64145D26BC53BD0EC357CE6CC2</code> <code>2D901043EEC24B7940F92C04253513FF</code> <code>16C711039DA3C1E6EE9BA19707845D70</code> <code>55FEB077383C80253E852F4699A49341</code> <code>7E8E078BA432846553008B6F88C5D920</code> <code>48C014ABE942B5D785C622EA7277B8C2</code> <code>4422471611009604EE51FC9F6ABA96A6</code> <code>A724A83398CF3EBDFC9268A56A1271DC</code> <code>F337D765E134E2F132B089858573F13A</code> <code>1F18F1968FC110EE978EC3360661FF12</code><br> <code>7D97E2AC</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 = 9BCB32B6277D8A9E003FB2852D8B71EC068B7D102A9BF10B9CD9145E1493EF316DB0CF699BB8D80EE04B3414A3C0FE0B89DE08D0DF8EC7B31E66CA451BD2ACD81346E5C78928C155AA9F3696E87972D8C10F08FB09D50678575E9E80D5012F56A7D7EA5C28A0D326D693E5F08F2BC315043FF5363BE3507362B30301037A5518CC9D42C0DADF7424ACE74EF3C4C8640E52FEC4326901796B5C0B721253E2081852B32D5BA0F918D5C55E8EFBCBF6AF04C60A5C4C3036BFD580B0B85FCE56638AAB8B557BED2C1AA2AF3079BCBB822679E7D8DFD52E396AAE401803E3D712A0FE798D77165A4AAD290B984D6CBCF1F6796E2DEC6EC385EF5D702EE459E866415C</code></pre>
<pre><code>auth_key = 68C607FBF732686328AE0C9C39DA9D914C386228BF7FBE1891A24C99167A35B3586593272E4EF007588229042E8035599C21731D959E408B0CF9842AE25F1715E3F58CFAA3737061AAAD1D1C4195F2502C3AAB56C2FFEA4C2CA0A5443F4C4A74FDBF5CA5CC6E254B301DC3262B52FDD0E92E9FB7406E6E9953A028D2CF4BEE3D7C34C8910C03D041AED65FC90A0BFFC5D52718D7D0C6AF7B8C624B967F8BF06201EB64009F1C191E250A81E1261B2BD0C22075D3CFECDE990C857AD9CBCB180DE9AA3211C34D140D67D6778F209A0FA96742D3D05EBDB8A993CF2C40EF44F4B190DAC0A7B9A9766EFF33C60457ABEB765DAF5F75F5EDA564F78AB4DBFD571E03</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 BC 96 A7 0D 97 5F 65
0010 | 40 00 00 00 34 F7 CB 3B FE CF AF C7 1E D1 E8 36
0020 | B5 B3 D2 B7 40 AD 28 99 5C 66 80 D5 0D 08 F9 29
0030 | 6D 31 D9 0F D2 54 EF 34 90 80 E4 4D 95 8C F0 53
0040 | 85 90 F2 61 76 6A 3D 24</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 68 BC C8 CF 97 5F 65
0010 | 4C 00 00 00 34 F7 CB 3B 9A 34 B2 BA F3 FF F7 F1
0020 | C3 31 F2 31 91 49 DF 0F EE 52 4C B3 9F 67 CF EF
0030 | A6 71 47 6A 74 13 E8 55 6C 0F 3C 63 0E 46 CC AE
0040 | B0 6F 9F 7D 3C 57 80 43</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>01BC96A70D975F65</code></td>
<td><code>0168BCC8CF975F65</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>40000000</code> (64 in decimal)</td>
<td><code>4C000000</code> (76 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>FECFAFC71ED1E836B5B3D2B740AD2899</code></td>
<td><code>9A34B2BAF3FFF7F1C331F2319149DF0F</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>5C6680D50D08F9296D31D90FD254EF34</code></td>
<td><code>EE524CB39F67CFEFA671476A7413E855</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>9080E44D958CF0538590F261766A3D24</code></td>
<td><code>6C0F3C630E46CCAEB06F9F7D3C578043</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>