Update content of files

This commit is contained in:
GitHub Action 2024-11-16 14:15:08 +00:00
parent 46aac4b082
commit 687b1d2199
11 changed files with 242 additions and 263 deletions

View file

@ -251,7 +251,7 @@
<li>Added <a href="/method/payments.changeStarsSubscription">payments.changeStarsSubscription</a> - Activate or deactivate a <a href="/api/invites#paid-invite-links">Telegram Star subscription »</a>.</li>
<li>Added <a href="/method/payments.fulfillStarsSubscription">payments.fulfillStarsSubscription</a> - Re-join a private channel associated to an active <a href="/api/invites#paid-invite-links">Telegram Star subscription »</a>.</li>
<li>Added <a href="/method/messages.sendPaidReaction">messages.sendPaidReaction</a> - Sends one or more <a href="/api/reactions#paid-reactions">paid Telegram Star reactions »</a>, transferring <a href="/api/stars">Telegram Stars »</a> to a channel's balance.</li>
<li>Added <a href="/method/messages.togglePaidReactionPrivacy">messages.togglePaidReactionPrivacy</a> - </li>
<li>Added <a href="/method/messages.togglePaidReactionPrivacy">messages.togglePaidReactionPrivacy</a> - Changes the privacy of already sent <a href="/api/reactions#paid-reactions">paid reactions</a> on a specific message.</li>
</ul>
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
<ul>
@ -266,7 +266,7 @@
<li>Added <a href="/constructor/inputInvoiceChatInviteSubscription">inputInvoiceChatInviteSubscription</a> - Used to pay for a <a href="/api/stars#star-subscriptions">Telegram Star subscription »</a>.</li>
<li>Added <a href="/constructor/starsSubscriptionPricing">starsSubscriptionPricing</a> - Pricing of a <a href="/api/invites#paid-invite-links">Telegram Star subscription »</a>.</li>
<li>Added <a href="/constructor/starsSubscription">starsSubscription</a> - Represents a <a href="/api/invites#paid-invite-links">Telegram Star subscription »</a>.</li>
<li>Added <a href="/constructor/reactionPaid">reactionPaid</a> - </li>
<li>Added <a href="/constructor/reactionPaid">reactionPaid</a> - Represents a <a href="/api/reactions#paid-reactions">paid Telegram Star reaction »</a>.</li>
<li>Added <a href="/constructor/messageReactor">messageReactor</a> - Info about a user in the <a href="/api/reactions#paid-reactions">paid Star reactions leaderboard</a> for a message.</li>
<li>Added <a href="/constructor/channelAdminLogEventActionToggleSignatureProfiles">channelAdminLogEventActionToggleSignatureProfiles</a> - </li>
</ul>

View file

@ -98,11 +98,14 @@ Use <a href="/method/messages.readReactions">messages.readReactions</a> to mark
---functions---
<a href='/method/messages.setChatAvailableReactions'>messages.setChatAvailableReactions</a>#864b2581 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> available_reactions:<a href='/type/ChatReactions'>ChatReactions</a> reactions_limit:flags.0?<a href='/type/int'>int</a> paid_enabled:flags.1?<a href='/type/Bool'>Bool</a> = <a href='/type/Updates'>Updates</a>;
<a href='/method/messages.sendPaidReaction'>messages.sendPaidReaction</a>#9dd6a67b flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> count:<a href='/type/int'>int</a> random_id:<a href='/type/long'>long</a> private:flags.0?<a href='/type/Bool'>Bool</a> = <a href='/type/Updates'>Updates</a>;
<a href='/method/messages.togglePaidReactionPrivacy'>messages.togglePaidReactionPrivacy</a>#849ad397 peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> private:<a href='/type/Bool'>Bool</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/messages.getMessagesReactions'>messages.getMessagesReactions</a>#8bba90e6 peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/int'>int</a>&gt; = <a href='/type/Updates'>Updates</a>;</code></pre>
<p>Paid reactions (aka Star reactions) may be sent to channel posts by invoking <a href="/method/messages.sendPaidReaction">messages.sendPaidReaction</a>: this will transfer <code>count</code> Telegram Stars to the channel's balance and increment by <code>count</code> the reaction counter of the Star reaction with type <a href="/constructor/reactionPaid">reactionPaid</a>. </p>
<p>To enable paid reactions, channel admins must invoke <a href="/method/messages.setChatAvailableReactions">messages.setChatAvailableReactions</a>, passing <a href="/constructor/boolTrue">boolTrue</a> to <code>paid_enabled</code> and the previously configured reaction set in <code>available_reactions</code> (<code>reactions_limit</code> can be omitted, as omitting the flag will keep the previously configured value). </p>
<p>Each post with star reactions has a leaderboard with the top senders, but users can opt out of appearing there if they prefer more privacy.<br>
If the user explicitly chose to make their paid reaction(s) private, pass <a href="/constructor/boolTrue">boolTrue</a> to <a href="/method/messages.sendPaidReaction">messages.sendPaidReaction</a>.<code>private</code>.<br>
If the user explicitly chose to make their paid reaction(s) private, pass <a href="/constructor/boolTrue">boolFalse</a> to <a href="/method/messages.sendPaidReaction">messages.sendPaidReaction</a>.<code>private</code>.<br>

View file

@ -99,7 +99,7 @@
<tr>
<td><strong>top_reactors</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageReactor">MessageReactor</a>&gt;</td>
<td> </td>
<td><a href="/api/reactions#paid-reactions">Paid Telegram Star reactions leaderboard »</a> for this message.</td>
</tr>
</tbody>
</table>

View file

@ -4,16 +4,10 @@
<meta charset="utf-8">
<title>reactionPaid</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
This constructor does not require any parameters.
Type
Reaction">
<meta property="description" content="Represents a paid Telegram Star reaction ».">
<meta property="og:title" content="reactionPaid">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
This constructor does not require any parameters.
Type
Reaction">
<meta property="og:description" content="Represents a paid Telegram Star reaction ».">
<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">
@ -48,7 +42,8 @@ Reaction">
<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/reactionPaid" >reactionPaid</a></li></ul></div>
<h1 id="dev_page_title">reactionPaid</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Represents a <a href="/api/reactions#paid-reactions">paid Telegram Star reaction »</a>.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 192 <b class="caret"></b></a>
@ -64,7 +59,10 @@ Reaction">
<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/Reaction">Reaction</a></p></div>
<p><a href="/type/Reaction">Reaction</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="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p></div>
</div>

View file

@ -94,7 +94,7 @@
<tr>
<td><strong>reaction</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.11?<a href="/constructor/true">true</a></td>
<td> </td>
<td>This transaction is a <a href="/api/reactions#paid-reactions">paid reaction »</a>.</td>
</tr>
<tr>
<td><strong>id</strong></td>
@ -159,7 +159,7 @@
<tr>
<td><strong>subscription_period</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.12?<a href="/type/int">int</a></td>
<td> </td>
<td>The number of seconds between consecutive Telegram Star debiting for <a href="/api/stars#star-subscriptions">Telegram Star subscriptions »</a>.</td>
</tr>
<tr>
<td><strong>giveaway_post_id</strong></td>
@ -181,17 +181,19 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/StarsTransaction">StarsTransaction</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="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p>
<h4><a class="anchor" href="#inputmediainvoice" id="inputmediainvoice" name="inputmediainvoice"><i class="anchor-icon"></i></a><a href="/constructor/inputMediaInvoice">inputMediaInvoice</a></h4>
<p>Generated invoice of a <a href="/bots/payments">bot payment</a></p>
<h4><a class="anchor" href="#payments-api" id="payments-api" name="payments-api"><i class="anchor-icon"></i></a><a href="/api/payments">Payments API</a></h4>
<p>You can accept payments from Telegram users via Telegram Bots.</p>
<h4><a class="anchor" href="#paid-media" id="paid-media" name="paid-media"><i class="anchor-icon"></i></a><a href="/api/paid-media">Paid media</a></h4>
<p>Content creators can accept Stars by publishing paid photos or videos on their channels. Subscribers will be allowed to view such posts only after paying the author to unlock them.</p>
<h4><a class="anchor" href="#telegram-stars" id="telegram-stars" name="telegram-stars"><i class="anchor-icon"></i></a><a href="/api/stars">Telegram Stars</a></h4>
<p>Telegram Stars are virtual items that allow users to purchase digital goods and services from bots and mini apps inside the Telegram ecosystem, send gifts to content creators on the Telegram platform, and more.</p>
<h4><a class="anchor" href="#bots-faq" id="bots-faq" name="bots-faq"><i class="anchor-icon"></i></a><a href="/bots/faq">Bots FAQ</a></h4>
<h4><a class="anchor" href="#messagessendmessage" id="messagessendmessage" name="messagessendmessage"><i class="anchor-icon"></i></a><a href="/method/messages.sendMessage">messages.sendMessage</a></h4>
<p>Sends a message to a chat</p>
<h4><a class="anchor" href="#telegram-stars" id="telegram-stars" name="telegram-stars"><i class="anchor-icon"></i></a><a href="/api/stars">Telegram Stars</a></h4>
<p>Telegram Stars are virtual items that allow users to purchase digital goods and services from bots and mini apps inside the Telegram ecosystem, send gifts to content creators on the Telegram platform, and more.</p></div>
<p>Sends a message to a chat</p></div>
</div>

View file

@ -92,12 +92,12 @@
<tr>
<td><strong>reactions_limit</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/int">int</a></td>
<td>This flag may be used to impose a custom limit of unique reactions (i.e. a customizable version of <a href="/api/config#reactions-uniq-max">appConfig.reactions_uniq_max</a>); this field and the other info set by the method will then be available to users in <a href="/constructor/channelFull">channelFull</a> and <a href="/constructor/chatFull">chatFull</a>.</td>
<td>This flag may be used to impose a custom limit of unique reactions (i.e. a customizable version of <a href="/api/config#reactions-uniq-max">appConfig.reactions_uniq_max</a>); this field and the other info set by the method will then be available to users in <a href="/constructor/channelFull">channelFull</a> and <a href="/constructor/chatFull">chatFull</a>. <br>If this flag is not set, the previously configured <code>reactions_limit</code> will not be altered.</td>
</tr>
<tr>
<td><strong>paid_enabled</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/Bool">Bool</a></td>
<td> </td>
<td>If this flag is set and a <a href="/type/Bool">Bool</a> is passed, the method will enable or disable <a href="/api/reactions#paid-reactions">paid message reactions »</a>. If this flag is not set, the previously stored setting will not be changed.</td>
</tr>
</tbody>
</table>
@ -139,6 +139,8 @@
<h4><a class="anchor" href="#chatfull" id="chatfull" name="chatfull"><i class="anchor-icon"></i></a><a href="/constructor/chatFull">chatFull</a></h4>
<p>Full info about a <a href="/api/channel#basic-groups">basic group</a>.</p>
<p>When updating the <a href="/api/peers">local peer database »</a>, all fields from the newly received constructor take priority over the old constructor cached locally (including by removing fields that aren't set in the new constructor).</p>
<h4><a class="anchor" href="#bool" id="bool" name="bool"><i class="anchor-icon"></i></a><a href="/type/Bool">Bool</a></h4>
<p>Boolean type.</p>
<h4><a class="anchor" href="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p></div>

View file

@ -4,40 +4,10 @@
<meta charset="utf-8">
<title>messages.togglePaidReactionPrivacy</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
peer
InputPeer
 
msg_id
int
 
private
Bool
 
Result
Bool
Bots can use this method">
<meta property="description" content="Changes the privacy of already sent paid reactions on a specific message.">
<meta property="og:title" content="messages.togglePaidReactionPrivacy">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
peer
InputPeer
 
msg_id
int
 
private
Bool
 
Result
Bool
Bots can use this method">
<meta property="og:description" content="Changes the privacy of already sent paid reactions on a specific message.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -72,7 +42,8 @@ Bots can use this method">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.togglePaidReactionPrivacy" >messages.togglePaidReactionPrivacy</a></li></ul></div>
<h1 id="dev_page_title">messages.togglePaidReactionPrivacy</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Changes the privacy of already sent <a href="/api/reactions#paid-reactions">paid reactions</a> on a specific message.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 192 <b class="caret"></b></a>
@ -101,23 +72,26 @@ Bots can use this method">
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
<td> </td>
<td>The channel</td>
</tr>
<tr>
<td><strong>msg_id</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>The ID of the message to which we sent the paid reactions</td>
</tr>
<tr>
<td><strong>private</strong></td>
<td style="text-align: center;"><a href="/type/Bool">Bool</a></td>
<td> </td>
<td>If true, makes the current anonymous in the top sender leaderboard for this message; otherwise, does the opposite.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3>
<p><a href="/type/Bool">Bool</a></p>
<h3><a class="anchor" href="#bots-can-use-this-method" id="bots-can-use-this-method" name="bots-can-use-this-method"><i class="anchor-icon"></i></a>Bots can use this method</h3></div>
<h3><a class="anchor" href="#bots-can-use-this-method" id="bots-can-use-this-method" name="bots-can-use-this-method"><i class="anchor-icon"></i></a>Bots can use this method</h3>
<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="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p></div>
</div>

View file

@ -3714,7 +3714,7 @@ Look for updates of telegram&#39;s terms of service…">
</tr>
<tr>
<td><a href="/method/messages.togglePaidReactionPrivacy">messages.togglePaidReactionPrivacy</a></td>
<td> </td>
<td>Changes the privacy of already sent <a href="/api/reactions#paid-reactions">paid reactions</a> on a specific message.</td>
</tr>
<tr>
<td><a href="/method/payments.getStarsGiveawayOptions">payments.getStarsGiveawayOptions</a></td>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 08 EF 08 00 9F A1 38 67
0010 | 14 00 00 00 F1 8E 7E BE F3 C6 F3 84 6F CA 4D 6D
0020 | 5F 17 DC 5D C0 1C 36 7F</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 D8 7F 03 00 DD A6 38 67
0010 | 14 00 00 00 F1 8E 7E BE F2 FF EB DA 55 A0 62 61
0020 | 90 B6 57 AC CD F3 9C 05</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>08EF08009FA13867</code></td>
<td><code>D87F0300DDA63867</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>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</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 D0 30 9F 9F A1 38 67
0010 | 50 00 00 00 63 24 16 05 F3 C6 F3 84 6F CA 4D 6D
0020 | 5F 17 DC 5D C0 1C 36 7F BC D0 94 5F A8 89 89 60
0030 | F8 CD 69 F5 8E 1F 39 63 08 27 55 9F D2 CF 8E 36
0040 | 15 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 30 5D EC DD A6 38 67
0010 | 50 00 00 00 63 24 16 05 F2 FF EB DA 55 A0 62 61
0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
0030 | D9 43 AB 98 93 64 1F B4 08 15 4F 99 C1 AD 76 59
0040 | B7 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
0050 | 85 1D 9D D0 A5 B7 F7 09 35 5F C3 0B 21 6B E8 6C
0060 | 02 2B B4 C3</code></pre>
<p>Payload (de)serialization:</p>
@ -132,7 +132,7 @@
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01D0309F9FA13867</code></td>
<td><code>01305DECDDA63867</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>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0827559FD2CF8E3615000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2834347268273747477</td>
<td><code>08154F99C1AD7659B7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1535615055074580919</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 = 2834347268273747477</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2834347268273747477 = 1503116977 * 1885646501</code></p>
<pre><code>p = 1503116977
q = 1885646501</code></pre>
<pre><code>pq = 1535615055074580919</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1535615055074580919 = 1164798461 * 1318352579</code></p>
<pre><code>p = 1164798461
q = 1318352579</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 27 55 9F D2 CF 8E 36 15 00 00 00
0010 | 04 59 97 BE B1 00 00 00 04 70 64 AE A5 00 00 00
0020 | F3 C6 F3 84 6F CA 4D 6D 5F 17 DC 5D C0 1C 36 7F
0030 | BC D0 94 5F A8 89 89 60 F8 CD 69 F5 8E 1F 39 63
0040 | 61 FF 7B EC 20 C4 17 99 68 13 23 5C EB E6 96 7B
0050 | 22 6D E6 00 C2 92 C2 63 29 C4 F3 C4 BD 52 92 CE
<pre><code>0000 | 95 5F F5 A9 08 15 4F 99 C1 AD 76 59 B7 00 00 00
0010 | 04 45 6D 69 FD 00 00 00 04 4E 94 76 C3 00 00 00
0020 | F2 FF EB DA 55 A0 62 61 90 B6 57 AC CD F3 9C 05
0030 | C8 97 E4 83 8C 1A 47 33 D9 43 AB 98 93 64 1F B4
0040 | 11 83 DF 59 14 4A 45 26 F1 B0 E6 C9 A4 B2 7C 6C
0050 | 80 36 BD EE 0C 5C 7A D7 07 F6 94 1A AE C9 28 8E
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 = 1885646501</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0827559FD2CF8E3615000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2834347268273747477</td>
<td><code>08154F99C1AD7659B7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1535615055074580919</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>045997BEB1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1503116977</td>
<td><code>04456D69FD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1164798461</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>047064AEA5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1885646501</td>
<td><code>044E9476C3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1318352579</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>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>61FF7BEC20C417996813235CEBE6967B</code> <code>226DE600C292C26329C4F3C4BD5292CE</code></td>
<td><code>1183DF59144A4526F1B0E6C9A4B27C6C</code> <code>8036BDEE0C5C7AD707F6941AAEC9288E</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1885646501</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 = 955FF5A90827559FD2CF8E3615000000045997BEB1000000047064AEA5000000F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396361FF7BEC20C417996813235CEBE6967B226DE600C292C26329C4F3C4BD5292CE02000000
random_padding_bytes = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD01196222B40B1A2C2E4F594A36149A2E3E13F52F29CE2258CF974A09D3CD69CF128A4588CA8C12A5ED1389CBB519ECF2DD7F351C5CC4D865428C5416E7F96AF3</code></pre>
<pre><code>data = 955FF5A908154F99C1AD7659B700000004456D69FD000000044E9476C3000000F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB41183DF59144A4526F1B0E6C9A4B27C6C8036BDEE0C5C7AD707F6941AAEC9288E02000000
random_padding_bytes = BE3707A89AE9B01B20AFBF2DFE2469A511655C0B8BC61714EB603611AF1FA618B2943619E8AA74B88439ED0870657660BC1167DFF5A7BBA65DC878A3F677C3E8D9DBCE966EBEADB069E11FCA0DA8EEA1F411182BAE338F54BCE44AE6</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 = 1413B01C2BDE24F106079EF6237383E7BFBE8354664CB7F8832D9EFDE180C882334181021885B5C9612012BCFD851F5E197678A4B0EFADB31EEC781421857814D6B677550B12D17DD0DC11D09367F448E90ABD338A25870AD52F3C992F17BFE9BB3A4BA6555585CD2D936896CA3F2AF9C98FF8794ECE5B7506305A5CB6DCDC50C91BAE3CD2520146807C96F9255455E32E8BCFDE340DDE00B69FF98F83C799F241532FBE70F428C2DB502B99B2CFDDC9F9AA65A8E31CF0964A134498E6A8DF15CDB78D588487A388851D178A2CBB9EC836282C6DE4C18C1714DAF616CF24C8C6154ECA93ACF37ABED5281211EC56FEA50061B47FAB1B2546D34D0456917A3D5A</code></pre>
<pre><code>encrypted_data = 350F55A03139C665B4C03D92B4E02D81AB71F6B7BE05CADBFAE678223B0DBB53192D60A9AD6A9E1A36EC9EE33A69B7ACD965E488C3ECB859DC7DCAF9303F24BA38556EC7584AE5448A979BF70F031EBD219F3795209A2D07A4E09DEF29638458CF1A3798D59483C8F7C8FA0D24FE31676E8AE9D8AB10AA7C0702A16CC2E096C861700D073E5131E716A98FE1051AD58526F1F151ADADD2E19F537E716CD5558330DEDDE1D49BE50AC20CE6A040823EB497037B49FCA16549479A4E7AF3D349B907E71FD32E675B487CB7995833619B8185F1DCDAFD7309302B0829C18B049CC796F4DC7A79CE49D614A92304D67EA44A1B57E70FA89441BDE0DA58484AACB666</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 84 99 0D 00 9F A1 38 67
0010 | 40 01 00 00 BE E4 12 D7 F3 C6 F3 84 6F CA 4D 6D
0020 | 5F 17 DC 5D C0 1C 36 7F BC D0 94 5F A8 89 89 60
0030 | F8 CD 69 F5 8E 1F 39 63 04 59 97 BE B1 00 00 00
0040 | 04 70 64 AE A5 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 14 13 B0 1C 2B DE 24 F1 06 07 9E F6
0060 | 23 73 83 E7 BF BE 83 54 66 4C B7 F8 83 2D 9E FD
0070 | E1 80 C8 82 33 41 81 02 18 85 B5 C9 61 20 12 BC
0080 | FD 85 1F 5E 19 76 78 A4 B0 EF AD B3 1E EC 78 14
0090 | 21 85 78 14 D6 B6 77 55 0B 12 D1 7D D0 DC 11 D0
00A0 | 93 67 F4 48 E9 0A BD 33 8A 25 87 0A D5 2F 3C 99
00B0 | 2F 17 BF E9 BB 3A 4B A6 55 55 85 CD 2D 93 68 96
00C0 | CA 3F 2A F9 C9 8F F8 79 4E CE 5B 75 06 30 5A 5C
00D0 | B6 DC DC 50 C9 1B AE 3C D2 52 01 46 80 7C 96 F9
00E0 | 25 54 55 E3 2E 8B CF DE 34 0D DE 00 B6 9F F9 8F
00F0 | 83 C7 99 F2 41 53 2F BE 70 F4 28 C2 DB 50 2B 99
0100 | B2 CF DD C9 F9 AA 65 A8 E3 1C F0 96 4A 13 44 98
0110 | E6 A8 DF 15 CD B7 8D 58 84 87 A3 88 85 1D 17 8A
0120 | 2C BB 9E C8 36 28 2C 6D E4 C1 8C 17 14 DA F6 16
0130 | CF 24 C8 C6 15 4E CA 93 AC F3 7A BE D5 28 12 11
0140 | EC 56 FE A5 00 61 B4 7F AB 1B 25 46 D3 4D 04 56
0150 | 91 7A 3D 5A</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 B4 9A 03 00 DD A6 38 67
0010 | 40 01 00 00 BE E4 12 D7 F2 FF EB DA 55 A0 62 61
0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
0030 | D9 43 AB 98 93 64 1F B4 04 45 6D 69 FD 00 00 00
0040 | 04 4E 94 76 C3 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 35 0F 55 A0 31 39 C6 65 B4 C0 3D 92
0060 | B4 E0 2D 81 AB 71 F6 B7 BE 05 CA DB FA E6 78 22
0070 | 3B 0D BB 53 19 2D 60 A9 AD 6A 9E 1A 36 EC 9E E3
0080 | 3A 69 B7 AC D9 65 E4 88 C3 EC B8 59 DC 7D CA F9
0090 | 30 3F 24 BA 38 55 6E C7 58 4A E5 44 8A 97 9B F7
00A0 | 0F 03 1E BD 21 9F 37 95 20 9A 2D 07 A4 E0 9D EF
00B0 | 29 63 84 58 CF 1A 37 98 D5 94 83 C8 F7 C8 FA 0D
00C0 | 24 FE 31 67 6E 8A E9 D8 AB 10 AA 7C 07 02 A1 6C
00D0 | C2 E0 96 C8 61 70 0D 07 3E 51 31 E7 16 A9 8F E1
00E0 | 05 1A D5 85 26 F1 F1 51 AD AD D2 E1 9F 53 7E 71
00F0 | 6C D5 55 83 30 DE DD E1 D4 9B E5 0A C2 0C E6 A0
0100 | 40 82 3E B4 97 03 7B 49 FC A1 65 49 47 9A 4E 7A
0110 | F3 D3 49 B9 07 E7 1F D3 2E 67 5B 48 7C B7 99 58
0120 | 33 61 9B 81 85 F1 DC DA FD 73 09 30 2B 08 29 C1
0130 | 8B 04 9C C7 96 F4 DC 7A 79 CE 49 D6 14 A9 23 04
0140 | D6 7E A4 4A 1B 57 E7 0F A8 94 41 BD E0 DA 58 48
0150 | 4A AC B6 66</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 = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>84990D009FA13867</code></td>
<td><code>B49A0300DDA63867</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 = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>045997BEB1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1503116977</td>
<td><code>04456D69FD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1164798461</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>047064AEA5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1885646501</td>
<td><code>044E9476C3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1318352579</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 = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001001413B01C2BDE24F106079EF6</code> <code>237383E7BFBE8354664CB7F8832D9EFD</code> <code>E180C882334181021885B5C9612012BC</code> <code>FD851F5E197678A4B0EFADB31EEC7814</code> <code>21857814D6B677550B12D17DD0DC11D0</code> <code>9367F448E90ABD338A25870AD52F3C99</code> <code>2F17BFE9BB3A4BA6555585CD2D936896</code> <code>CA3F2AF9C98FF8794ECE5B7506305A5C</code> <code>B6DCDC50C91BAE3CD2520146807C96F9</code> <code>255455E32E8BCFDE340DDE00B69FF98F</code> <code>83C799F241532FBE70F428C2DB502B99</code> <code>B2CFDDC9F9AA65A8E31CF0964A134498</code> <code>E6A8DF15CDB78D588487A388851D178A</code> <code>2CBB9EC836282C6DE4C18C1714DAF616</code> <code>CF24C8C6154ECA93ACF37ABED5281211</code> <code>EC56FEA50061B47FAB1B2546D34D0456</code><br> <code>917A3D5A</code></td>
<td><code>FE000100350F55A03139C665B4C03D92</code> <code>B4E02D81AB71F6B7BE05CADBFAE67822</code> <code>3B0DBB53192D60A9AD6A9E1A36EC9EE3</code> <code>3A69B7ACD965E488C3ECB859DC7DCAF9</code> <code>303F24BA38556EC7584AE5448A979BF7</code> <code>0F031EBD219F3795209A2D07A4E09DEF</code> <code>29638458CF1A3798D59483C8F7C8FA0D</code> <code>24FE31676E8AE9D8AB10AA7C0702A16C</code> <code>C2E096C861700D073E5131E716A98FE1</code> <code>051AD58526F1F151ADADD2E19F537E71</code> <code>6CD5558330DEDDE1D49BE50AC20CE6A0</code> <code>40823EB497037B49FCA16549479A4E7A</code> <code>F3D349B907E71FD32E675B487CB79958</code> <code>33619B8185F1DCDAFD7309302B0829C1</code> <code>8B049CC796F4DC7A79CE49D614A92304</code> <code>D67EA44A1B57E70FA89441BDE0DA5848</code><br> <code>4AACB666</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
<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 A4 E4 BB 9F A1 38 67
0010 | 78 02 00 00 5C 07 E8 D0 F3 C6 F3 84 6F CA 4D 6D
0020 | 5F 17 DC 5D C0 1C 36 7F BC D0 94 5F A8 89 89 60
0030 | F8 CD 69 F5 8E 1F 39 63 FE 50 02 00 C3 BE EC 89
0040 | 5C D1 EC 5A D6 54 C7 8E 37 2E 8E 60 76 8D CF 65
0050 | C5 13 22 6C C5 57 D4 8A 9A 4A 2B FB 8F E9 63 38
0060 | C1 85 1C 7C CF 14 3A EC F7 FC 86 3F DF 37 83 FA
0070 | E4 41 35 95 58 6E 16 5A C2 B0 CF AC 10 BC 38 3D
0080 | A0 B7 F3 11 D9 1C B0 D9 5A FD 1F 83 C9 A2 48 E1
0090 | CC 81 09 4C 64 D9 6A C9 32 88 7A E5 02 D1 6A 5C
00A0 | 20 8C 54 FA 7F A5 00 9D 49 41 BA F2 07 BB D2 6A
00B0 | D6 AC 08 6B A6 5E 17 44 A6 AE 63 88 AF 8F BB DD
00C0 | D1 34 BF 74 DB 5A E2 B0 A2 57 59 C3 B0 D7 B9 82
00D0 | 15 BF 67 67 EE B2 7F 05 F6 D5 55 E8 EB EB A3 98
00E0 | 68 E8 2C EE 9C 4C 52 BA 5B 81 D9 98 25 4B 5E 00
00F0 | 98 56 1E 1A 08 D7 AC 46 78 B0 77 8F DD 31 CB A0
0100 | CF 34 19 9F 5B C9 41 CC 32 1F 3E 96 47 49 D1 42
0110 | 88 30 50 90 4B 82 A1 5F 23 AC 1E 96 37 B4 8B 96
0120 | A9 02 B7 0D 6B 98 4A 5D 4F 20 E9 A5 88 8D 89 EE
0130 | 07 E3 A4 4D A0 8D 95 E6 00 76 1D 9C EF 41 27 23
0140 | 51 93 6A A4 D7 1E 23 45 49 9E 83 3A 96 DB FD 14
0150 | C3 0A 46 E7 01 F8 78 76 19 E8 AE 1B 44 EA FB 5A
0160 | 89 1A 28 B0 04 C3 E5 34 E6 FC EF 79 C0 EB 62 A5
0170 | 21 18 DE D1 91 BF 70 E3 4A 2B 3A DE CC FA 58 C0
0180 | 32 B1 3E CF 88 CB 42 DE CA 88 8A AA 1F BF A5 AC
0190 | C7 F4 02 9A A6 D6 11 73 CB 0B DE F1 27 76 9D 1C
01A0 | 10 E3 6A 00 41 F0 35 E6 4A D5 C2 81 8F 6E 3C CE
01B0 | 80 5A F2 29 5D 28 B9 D9 78 89 33 04 3C 40 B2 6A
01C0 | 42 86 96 79 F1 E7 E0 D2 BA C0 92 21 5A 74 A0 84
01D0 | E2 5F 4E 8E 8E 06 01 0D 22 18 F2 10 40 E6 D5 97
01E0 | 38 92 B5 9B 07 77 96 E4 E4 FA AB BE 20 DD 27 9A
01F0 | D7 35 69 D5 06 21 87 1B 4C 21 50 A0 01 2A 94 CC
0200 | FE 8F BD 94 51 51 87 F1 46 57 12 81 28 A4 18 D8
0210 | D2 6A 84 29 60 2A 10 C8 12 D4 25 68 A5 48 D4 63
0220 | 9A 89 CD 3C 26 A4 E2 FD 9D 10 A8 5E 6B E9 73 2E
0230 | C3 3A CF EC 25 74 C0 65 82 49 E1 FF F1 A6 0B 30
0240 | 93 10 AF 70 5A 07 03 25 08 61 C9 D3 D3 85 08 22
0250 | 9A 50 D0 0F 98 D5 58 51 67 C7 BC 56 7E 11 63 60
0260 | B8 E5 E1 77 B3 03 77 43 AB 38 FF 3E DD C3 7C 0B
0270 | 8A E5 A4 F9 03 2C 1F 76 14 9F 9A 2C 9E 50 0E A8
0280 | C0 E9 91 64 90 80 75 2A 94 B8 C7 7C</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 CC BA 07 DE A6 38 67
0010 | 78 02 00 00 5C 07 E8 D0 F2 FF EB DA 55 A0 62 61
0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
0030 | D9 43 AB 98 93 64 1F B4 FE 50 02 00 CC E5 AA 8B
0040 | 5B 16 C7 C7 A2 8D A6 86 A2 FD 61 D3 51 32 D4 B9
0050 | 46 46 84 68 68 C8 E4 6F C7 C7 D5 E6 A2 3F 30 6D
0060 | B5 15 8C 7D D2 F7 FC C0 12 84 12 04 8B D2 90 47
0070 | FD 7C 46 57 09 B5 3E 99 E4 5E 6F 31 46 1B 93 59
0080 | 64 7B AD 71 CA 63 8B 20 56 F5 E7 7F 60 2D 87 74
0090 | 50 CC 8F FD 1D 00 D4 1A CB 77 52 23 CB BB 82 FF
00A0 | B5 2D 1F BB B4 91 81 D7 7A 16 E2 11 18 CB A5 99
00B0 | BD 7B F0 0B 4A 29 6E 70 FF 08 75 A3 BA 02 93 8A
00C0 | 8B 8A ED A7 22 44 2E 97 8F FA C5 E9 1F 0C BA ED
00D0 | 01 4E B0 DF A1 5C 10 A3 90 FE 07 D8 88 F7 3D C0
00E0 | 25 B6 1F 89 D0 B0 23 2E A4 9F CA 25 78 EB 77 99
00F0 | 2F 35 B2 FC 45 8F 50 5D 43 DC 83 5B C3 8A 2C 4B
0100 | 5A FE 0C 72 5B 3B 7C 0E 0D 07 DB 18 D3 F9 C9 A8
0110 | 39 34 9F A9 5F 11 48 1C AD 66 1C 6E 58 85 E5 80
0120 | D2 C7 A1 B7 BF A7 79 C1 4E 09 9C 44 B2 5F 01 63
0130 | F4 87 78 02 6D AF CA 02 1A F8 42 18 3F 02 AB 9E
0140 | 42 3A 76 D4 92 67 83 BA 24 0D 23 42 52 1B CC 48
0150 | D7 BC 7F 95 B3 3E E7 32 FF 2E 90 40 74 86 C4 DA
0160 | 4F 98 B0 A0 65 CF A6 DA BA F7 45 77 D4 2A 4F 12
0170 | 86 13 78 F4 79 9B 5C A7 6C 48 AF 2B DA 6F 4D A4
0180 | 1E 6F 71 03 73 FA 5B 82 99 A9 AC 43 BC 6B 38 DA
0190 | 72 D3 ED CB 09 32 D6 A5 D6 49 E4 D6 14 FA 1D 3F
01A0 | 86 F9 7D 5F 3B D5 5C 10 6C 49 1C C6 8C 37 A8 24
01B0 | 28 78 C5 85 EA E6 1F 66 1D FC 09 5C 9F 15 8B 7A
01C0 | B0 F9 0D 6B A9 70 65 1D 0F E6 86 42 71 18 48 2D
01D0 | 96 30 5A 4D F8 33 F6 6C 3E 2B F9 52 23 4E 31 88
01E0 | D1 A3 B6 30 37 48 19 58 BB 97 DE 43 CA 62 1C 78
01F0 | E1 E2 A0 3D 68 4F AC 4E D9 A5 B2 14 56 F0 B7 BF
0200 | 6C 5A 47 21 9A F9 FA AC D1 00 DD 5B 0B E3 C3 88
0210 | 3E C9 93 72 51 92 B8 97 FF D3 DA 0C 5A B7 75 BE
0220 | FB 83 22 83 A9 02 E6 F6 FF 0D FF 5B 45 1F AB 3C
0230 | 7A 7C F3 A0 47 C1 1F 86 87 39 7B DB 24 BE C9 04
0240 | 53 26 62 74 BC 52 CE A4 59 29 3A 54 99 80 D0 E2
0250 | 55 F4 59 16 BA 91 FB 33 38 C5 0C B1 7F AE E9 C1
0260 | F6 F0 DE 9C 67 68 F9 D3 73 60 DE 5D E4 88 62 BD
0270 | F9 E6 72 54 A2 7C 2D F5 6C D8 86 7A 00 A7 03 E8
0280 | BE 5D 32 8C C7 EE 2B 45 90 54 FA AC</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,7 +464,7 @@ random_padding_bytes = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01A4E4BB9FA13867</code></td>
<td><code>01CCBA07DEA63867</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>
@ -482,19 +482,19 @@ random_padding_bytes = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE500200C3BEEC895CD1EC5AD654C78E</code> <code>372E8E60768DCF65C513226CC557D48A</code> <code>9A4A2BFB8FE96338C1851C7CCF143AEC</code> <code>F7FC863FDF3783FAE4413595586E165A</code> <code>C2B0CFAC10BC383DA0B7F311D91CB0D9</code> <code>5AFD1F83C9A248E1CC81094C64D96AC9</code> <code>32887AE502D16A5C208C54FA7FA5009D</code> <code>4941BAF207BBD26AD6AC086BA65E1744</code> <code>A6AE6388AF8FBBDDD134BF74DB5AE2B0</code> <code>A25759C3B0D7B98215BF6767EEB27F05</code> <code>F6D555E8EBEBA39868E82CEE9C4C52BA</code> <code>5B81D998254B5E0098561E1A08D7AC46</code> <code>78B0778FDD31CBA0CF34199F5BC941CC</code> <code>321F3E964749D142883050904B82A15F</code> <code>23AC1E9637B48B96A902B70D6B984A5D</code> <code>4F20E9A5888D89EE07E3A44DA08D95E6</code> <code>00761D9CEF41272351936AA4D71E2345</code> <code>499E833A96DBFD14C30A46E701F87876</code> <code>19E8AE1B44EAFB5A891A28B004C3E534</code> <code>E6FCEF79C0EB62A52118DED191BF70E3</code> <code>4A2B3ADECCFA58C032B13ECF88CB42DE</code> <code>CA888AAA1FBFA5ACC7F4029AA6D61173</code> <code>CB0BDEF127769D1C10E36A0041F035E6</code> <code>4AD5C2818F6E3CCE805AF2295D28B9D9</code> <code>788933043C40B26A42869679F1E7E0D2</code> <code>BAC092215A74A084E25F4E8E8E06010D</code> <code>2218F21040E6D5973892B59B077796E4</code> <code>E4FAABBE20DD279AD73569D50621871B</code> <code>4C2150A0012A94CCFE8FBD94515187F1</code> <code>4657128128A418D8D26A8429602A10C8</code> <code>12D42568A548D4639A89CD3C26A4E2FD</code> <code>9D10A85E6BE9732EC33ACFEC2574C065</code> <code>8249E1FFF1A60B309310AF705A070325</code> <code>0861C9D3D38508229A50D00F98D55851</code> <code>67C7BC567E116360B8E5E177B3037743</code> <code>AB38FF3EDDC37C0B8AE5A4F9032C1F76</code> <code>149F9A2C9E500EA8C0E991649080752A</code><br> <code>94B8C77C</code></td>
<td><code>FE500200CCE5AA8B5B16C7C7A28DA686</code> <code>A2FD61D35132D4B94646846868C8E46F</code> <code>C7C7D5E6A23F306DB5158C7DD2F7FCC0</code> <code>128412048BD29047FD7C465709B53E99</code> <code>E45E6F31461B9359647BAD71CA638B20</code> <code>56F5E77F602D877450CC8FFD1D00D41A</code> <code>CB775223CBBB82FFB52D1FBBB49181D7</code> <code>7A16E21118CBA599BD7BF00B4A296E70</code> <code>FF0875A3BA02938A8B8AEDA722442E97</code> <code>8FFAC5E91F0CBAED014EB0DFA15C10A3</code> <code>90FE07D888F73DC025B61F89D0B0232E</code> <code>A49FCA2578EB77992F35B2FC458F505D</code> <code>43DC835BC38A2C4B5AFE0C725B3B7C0E</code> <code>0D07DB18D3F9C9A839349FA95F11481C</code> <code>AD661C6E5885E580D2C7A1B7BFA779C1</code> <code>4E099C44B25F0163F48778026DAFCA02</code> <code>1AF842183F02AB9E423A76D4926783BA</code> <code>240D2342521BCC48D7BC7F95B33EE732</code> <code>FF2E90407486C4DA4F98B0A065CFA6DA</code> <code>BAF74577D42A4F12861378F4799B5CA7</code> <code>6C48AF2BDA6F4DA41E6F710373FA5B82</code> <code>99A9AC43BC6B38DA72D3EDCB0932D6A5</code> <code>D649E4D614FA1D3F86F97D5F3BD55C10</code> <code>6C491CC68C37A8242878C585EAE61F66</code> <code>1DFC095C9F158B7AB0F90D6BA970651D</code> <code>0FE686427118482D96305A4DF833F66C</code> <code>3E2BF952234E3188D1A3B63037481958</code> <code>BB97DE43CA621C78E1E2A03D684FAC4E</code> <code>D9A5B21456F0B7BF6C5A47219AF9FAAC</code> <code>D100DD5B0BE3C3883EC993725192B897</code> <code>FFD3DA0C5AB775BEFB832283A902E6F6</code> <code>FF0DFF5B451FAB3C7A7CF3A047C11F86</code> <code>87397BDB24BEC90453266274BC52CEA4</code> <code>59293A549980D0E255F45916BA91FB33</code> <code>38C50CB17FAEE9C1F6F0DE9C6768F9D3</code> <code>7360DE5DE48862BDF9E67254A27C2DF5</code> <code>6CD8867A00A703E8BE5D328CC7EE2B45</code><br> <code>9054FAAC</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
<!-- 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 = C3BEEC895CD1EC5AD654C78E372E8E60768DCF65C513226CC557D48A9A4A2BFB8FE96338C1851C7CCF143AECF7FC863FDF3783FAE4413595586E165AC2B0CFAC10BC383DA0B7F311D91CB0D95AFD1F83C9A248E1CC81094C64D96AC932887AE502D16A5C208C54FA7FA5009D4941BAF207BBD26AD6AC086BA65E1744A6AE6388AF8FBBDDD134BF74DB5AE2B0A25759C3B0D7B98215BF6767EEB27F05F6D555E8EBEBA39868E82CEE9C4C52BA5B81D998254B5E0098561E1A08D7AC4678B0778FDD31CBA0CF34199F5BC941CC321F3E964749D142883050904B82A15F23AC1E9637B48B96A902B70D6B984A5D4F20E9A5888D89EE07E3A44DA08D95E600761D9CEF41272351936AA4D71E2345499E833A96DBFD14C30A46E701F8787619E8AE1B44EAFB5A891A28B004C3E534E6FCEF79C0EB62A52118DED191BF70E34A2B3ADECCFA58C032B13ECF88CB42DECA888AAA1FBFA5ACC7F4029AA6D61173CB0BDEF127769D1C10E36A0041F035E64AD5C2818F6E3CCE805AF2295D28B9D9788933043C40B26A42869679F1E7E0D2BAC092215A74A084E25F4E8E8E06010D2218F21040E6D5973892B59B077796E4E4FAABBE20DD279AD73569D50621871B4C2150A0012A94CCFE8FBD94515187F14657128128A418D8D26A8429602A10C812D42568A548D4639A89CD3C26A4E2FD9D10A85E6BE9732EC33ACFEC2574C0658249E1FFF1A60B309310AF705A0703250861C9D3D38508229A50D00F98D5585167C7BC567E116360B8E5E177B3037743AB38FF3EDDC37C0B8AE5A4F9032C1F76149F9A2C9E500EA8C0E991649080752A94B8C77C
tmp_aes_key = 14444D2E97F2965361A855080116B5B7660CC9B01833A9E65FE174A5D3998EFA
tmp_aes_iv = 1000B78D04D1218EE73281AAACC5043BBF035441C9F231928F9946CD61FF7BEC</code></pre>
<pre><code>encrypted_answer = CCE5AA8B5B16C7C7A28DA686A2FD61D35132D4B94646846868C8E46FC7C7D5E6A23F306DB5158C7DD2F7FCC0128412048BD29047FD7C465709B53E99E45E6F31461B9359647BAD71CA638B2056F5E77F602D877450CC8FFD1D00D41ACB775223CBBB82FFB52D1FBBB49181D77A16E21118CBA599BD7BF00B4A296E70FF0875A3BA02938A8B8AEDA722442E978FFAC5E91F0CBAED014EB0DFA15C10A390FE07D888F73DC025B61F89D0B0232EA49FCA2578EB77992F35B2FC458F505D43DC835BC38A2C4B5AFE0C725B3B7C0E0D07DB18D3F9C9A839349FA95F11481CAD661C6E5885E580D2C7A1B7BFA779C14E099C44B25F0163F48778026DAFCA021AF842183F02AB9E423A76D4926783BA240D2342521BCC48D7BC7F95B33EE732FF2E90407486C4DA4F98B0A065CFA6DABAF74577D42A4F12861378F4799B5CA76C48AF2BDA6F4DA41E6F710373FA5B8299A9AC43BC6B38DA72D3EDCB0932D6A5D649E4D614FA1D3F86F97D5F3BD55C106C491CC68C37A8242878C585EAE61F661DFC095C9F158B7AB0F90D6BA970651D0FE686427118482D96305A4DF833F66C3E2BF952234E3188D1A3B63037481958BB97DE43CA621C78E1E2A03D684FAC4ED9A5B21456F0B7BF6C5A47219AF9FAACD100DD5B0BE3C3883EC993725192B897FFD3DA0C5AB775BEFB832283A902E6F6FF0DFF5B451FAB3C7A7CF3A047C11F8687397BDB24BEC90453266274BC52CEA459293A549980D0E255F45916BA91FB3338C50CB17FAEE9C1F6F0DE9C6768F9D37360DE5DE48862BDF9E67254A27C2DF56CD8867A00A703E8BE5D328CC7EE2B459054FAAC
tmp_aes_key = 594061AE8790464CD895F4EC6E87183395A1D3030D30F301DC4BEA649F715D0E
tmp_aes_iv = 4D77BC1E9C065F093B95359EA200FB0DBB6499A2A2356E2764FA3EC11183DF59</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = C78918986B2D95349961BB0CA1C64A0D4B87493DBA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010064309197ED7E87B825C2A9C5262DD94853F8D3949835A76C6927714E0550929DBA2A8C8CA3013F3626ADEA35D6748C37B49BA1F5A742D656C8BE77293C639C2AD1FE717FC38AAE70D865D51AEEB7C20E1B0751D2FABABA321798C858FCD8E3B36D20959DB6AB20C5FE09E71F4A03EC54B7626BBEF6B3335391F0943F71D32EA39F00194069B160C71245A1D3818D8F1A7855CBE5D701D8FBB9E0DD76FBFF556A076ED396494D93233576FE11889C4428FD12399B1B51A852138306CAAC69F7EF92DE4E36B4FBA5063A649189857358CDB86CAFBFCE39CFB3BAA29191CFCADAADFDC55D4C12375083AAF959695CB6490D1E6CF9BE3BA96C21EED606B63D8A6DEF9FA13867E9B292340D783705
answer = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010064309197ED7E87B825C2A9C5262DD94853F8D3949835A76C6927714E0550929DBA2A8C8CA3013F3626ADEA35D6748C37B49BA1F5A742D656C8BE77293C639C2AD1FE717FC38AAE70D865D51AEEB7C20E1B0751D2FABABA321798C858FCD8E3B36D20959DB6AB20C5FE09E71F4A03EC54B7626BBEF6B3335391F0943F71D32EA39F00194069B160C71245A1D3818D8F1A7855CBE5D701D8FBB9E0DD76FBFF556A076ED396494D93233576FE11889C4428FD12399B1B51A852138306CAAC69F7EF92DE4E36B4FBA5063A649189857358CDB86CAFBFCE39CFB3BAA29191CFCADAADFDC55D4C12375083AAF959695CB6490D1E6CF9BE3BA96C21EED606B63D8A6DEF9FA13867E9B292340D783705</code></pre>
<pre><code>answer_with_hash = 8EC374A6E5C8D1351060184DB3D5F334AD204BE5BA0D89B5F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010047BFBF1B479D5A20E74889EF9CEECE80F9135067904A56B6EF0C4A30374085607A674D2C84C442956816AC2A72F835BAE1DDE4CB1735741A9306529EA3C143B85977FA6E2B2187F1F26ECF6D20281FC0AD417084F3DD54DE11ADE3DB7D3D9260184537FF353F4B0D02421D41B9F10A6DD2025F5637D5AB7A3115B9238F83E1BE9029A0FC444E5F516EC3E4E7508F12209ED9ED543E8BDF86B12F878C7DD35FAF9175234AA78D92A8AA4AD4AB38951F26A7AB03B00B5697C40587D31A320F1A87A8C6F6D5ACC40B04C0D4C927658C40CC014FC2FF678B78F818AA961B4AB61D7ADFD6E68BB3B180027FCF76D164852891E16CDAD45209B9EC8FA7D26E409E75E7DEA63867AEE470C76CBBBB02
answer = BA0D89B5F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010047BFBF1B479D5A20E74889EF9CEECE80F9135067904A56B6EF0C4A30374085607A674D2C84C442956816AC2A72F835BAE1DDE4CB1735741A9306529EA3C143B85977FA6E2B2187F1F26ECF6D20281FC0AD417084F3DD54DE11ADE3DB7D3D9260184537FF353F4B0D02421D41B9F10A6DD2025F5637D5AB7A3115B9238F83E1BE9029A0FC444E5F516EC3E4E7508F12209ED9ED543E8BDF86B12F878C7DD35FAF9175234AA78D92A8AA4AD4AB38951F26A7AB03B00B5697C40587D31A320F1A87A8C6F6D5ACC40B04C0D4C927658C40CC014FC2FF678B78F818AA961B4AB61D7ADFD6E68BB3B180027FCF76D164852891E16CDAD45209B9EC8FA7D26E409E75E7DEA63867AEE470C76CBBBB02</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 F3 C6 F3 84 6F CA 4D 6D 5F 17 DC 5D
0010 | C0 1C 36 7F BC D0 94 5F A8 89 89 60 F8 CD 69 F5
0020 | 8E 1F 39 63 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 F2 FF EB DA 55 A0 62 61 90 B6 57 AC
0010 | CD F3 9C 05 C8 97 E4 83 8C 1A 47 33 D9 43 AB 98
0020 | 93 64 1F B4 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 = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
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 | 64 30 91 97 ED 7E 87 B8 25 C2 A9 C5 26 2D D9 48
0140 | 53 F8 D3 94 98 35 A7 6C 69 27 71 4E 05 50 92 9D
0150 | BA 2A 8C 8C A3 01 3F 36 26 AD EA 35 D6 74 8C 37
0160 | B4 9B A1 F5 A7 42 D6 56 C8 BE 77 29 3C 63 9C 2A
0170 | D1 FE 71 7F C3 8A AE 70 D8 65 D5 1A EE B7 C2 0E
0180 | 1B 07 51 D2 FA BA BA 32 17 98 C8 58 FC D8 E3 B3
0190 | 6D 20 95 9D B6 AB 20 C5 FE 09 E7 1F 4A 03 EC 54
01A0 | B7 62 6B BE F6 B3 33 53 91 F0 94 3F 71 D3 2E A3
01B0 | 9F 00 19 40 69 B1 60 C7 12 45 A1 D3 81 8D 8F 1A
01C0 | 78 55 CB E5 D7 01 D8 FB B9 E0 DD 76 FB FF 55 6A
01D0 | 07 6E D3 96 49 4D 93 23 35 76 FE 11 88 9C 44 28
01E0 | FD 12 39 9B 1B 51 A8 52 13 83 06 CA AC 69 F7 EF
01F0 | 92 DE 4E 36 B4 FB A5 06 3A 64 91 89 85 73 58 CD
0200 | B8 6C AF BF CE 39 CF B3 BA A2 91 91 CF CA DA AD
0210 | FD C5 5D 4C 12 37 50 83 AA F9 59 69 5C B6 49 0D
0220 | 1E 6C F9 BE 3B A9 6C 21 EE D6 06 B6 3D 8A 6D EF
0230 | 9F A1 38 67</code></pre>
0130 | 47 BF BF 1B 47 9D 5A 20 E7 48 89 EF 9C EE CE 80
0140 | F9 13 50 67 90 4A 56 B6 EF 0C 4A 30 37 40 85 60
0150 | 7A 67 4D 2C 84 C4 42 95 68 16 AC 2A 72 F8 35 BA
0160 | E1 DD E4 CB 17 35 74 1A 93 06 52 9E A3 C1 43 B8
0170 | 59 77 FA 6E 2B 21 87 F1 F2 6E CF 6D 20 28 1F C0
0180 | AD 41 70 84 F3 DD 54 DE 11 AD E3 DB 7D 3D 92 60
0190 | 18 45 37 FF 35 3F 4B 0D 02 42 1D 41 B9 F1 0A 6D
01A0 | D2 02 5F 56 37 D5 AB 7A 31 15 B9 23 8F 83 E1 BE
01B0 | 90 29 A0 FC 44 4E 5F 51 6E C3 E4 E7 50 8F 12 20
01C0 | 9E D9 ED 54 3E 8B DF 86 B1 2F 87 8C 7D D3 5F AF
01D0 | 91 75 23 4A A7 8D 92 A8 AA 4A D4 AB 38 95 1F 26
01E0 | A7 AB 03 B0 0B 56 97 C4 05 87 D3 1A 32 0F 1A 87
01F0 | A8 C6 F6 D5 AC C4 0B 04 C0 D4 C9 27 65 8C 40 CC
0200 | 01 4F C2 FF 67 8B 78 F8 18 AA 96 1B 4A B6 1D 7A
0210 | DF D6 E6 8B B3 B1 80 02 7F CF 76 D1 64 85 28 91
0220 | E1 6C DA D4 52 09 B9 EC 8F A7 D2 6E 40 9E 75 E7
0230 | DE A6 38 67</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE00010064309197ED7E87B825C2A9C5</code> <code>262DD94853F8D3949835A76C6927714E</code> <code>0550929DBA2A8C8CA3013F3626ADEA35</code> <code>D6748C37B49BA1F5A742D656C8BE7729</code> <code>3C639C2AD1FE717FC38AAE70D865D51A</code> <code>EEB7C20E1B0751D2FABABA321798C858</code> <code>FCD8E3B36D20959DB6AB20C5FE09E71F</code> <code>4A03EC54B7626BBEF6B3335391F0943F</code> <code>71D32EA39F00194069B160C71245A1D3</code> <code>818D8F1A7855CBE5D701D8FBB9E0DD76</code> <code>FBFF556A076ED396494D93233576FE11</code> <code>889C4428FD12399B1B51A852138306CA</code> <code>AC69F7EF92DE4E36B4FBA5063A649189</code> <code>857358CDB86CAFBFCE39CFB3BAA29191</code> <code>CFCADAADFDC55D4C12375083AAF95969</code> <code>5CB6490D1E6CF9BE3BA96C21EED606B6</code><br> <code>3D8A6DEF</code></td>
<td><code>FE00010047BFBF1B479D5A20E74889EF</code> <code>9CEECE80F9135067904A56B6EF0C4A30</code> <code>374085607A674D2C84C442956816AC2A</code> <code>72F835BAE1DDE4CB1735741A9306529E</code> <code>A3C143B85977FA6E2B2187F1F26ECF6D</code> <code>20281FC0AD417084F3DD54DE11ADE3DB</code> <code>7D3D9260184537FF353F4B0D02421D41</code> <code>B9F10A6DD2025F5637D5AB7A3115B923</code> <code>8F83E1BE9029A0FC444E5F516EC3E4E7</code> <code>508F12209ED9ED543E8BDF86B12F878C</code> <code>7DD35FAF9175234AA78D92A8AA4AD4AB</code> <code>38951F26A7AB03B00B5697C40587D31A</code> <code>320F1A87A8C6F6D5ACC40B04C0D4C927</code> <code>658C40CC014FC2FF678B78F818AA961B</code> <code>4AB61D7ADFD6E68BB3B180027FCF76D1</code> <code>64852891E16CDAD45209B9EC8FA7D26E</code><br> <code>409E75E7</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>9FA13867</code> (1731764639 in decimal)</td>
<td><code>DEA63867</code> (1731765982 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
<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 = 24D6948F069F0692642B2BB1EEE84FAC2DFA2592BA07CBE9043CCD52D46671437DA9E2554F0EB04649B141E8C492133608BC0AB97CE39FC51C35A48D9A0FE08496786BAFC68388218FBB50F71B1224C0D92487EB10B7270D7119FFBCBEE9356B3B7E908EC05723F25791FB167A97E59EDEE611554806337395D58021E2A1A34B5E387B4084357BF2BDCC878E94AEFCC31E4BF2B9A4A0AF79EAA939F085119FDF3170538FE6B5C8C86BD68B829390AC421E8229F280D5CE66537981A5E2DAC46C6B0BD1148949D928FE0D04FAD968ECD29B41BCB4E8048BF3B125F4BE5BDEB2F6E10BE19747DA312F8029BEED224308095B02981B15DA4DF80A45411B4502D435</code></pre>
<pre><code>b = 192B33AF8896B004B5697EC9E8EDAB4C1F3D89312A51FD8FE4768D5B19AB55938FB45F9CDECAC165721285AB40E02100FC8768D54ED0C0AE5C3CEA32985EB22F112FAF76CFFE9CFF737ADEEBA9BC3498B342D6100FDD277D96F677960EDC2215527707ECAC55A1058581DF461948548D9D60714A5ED62F4CB4A1BA8DCAC0209DFA75E17D7AE8F09054442BB3EC20360665EDF5B1D67432F2AF9A761B3338CD6C31B47F78D81BD23E8548E23D5CE8AF796ECCC26D1C24E8CC7D08774C60BB1FCE5ACB3B9B6CC2B99FA72B1B2719E0107AA084FAF9BDC79A18D9B8DDBC101D6FA3C13D7D9E2F5DD127661626DD7A65148ED4135E6A19F1ADC0CA709A8A04603368</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 = 6B8B554F20E59FD2C0F6ECD9038941330F790CA16ECDC221F38AA4E1336A93515E93E42BF2E74F71ECC2BE4BBE3D55757735474D2FC67B334219E0CF20B39CE1035DFC06932FFBA36E2F701FED5C4439700F8B0370DAAE259A4CFB16D39ECCF55EE28DCCB59279064EB69772AAD2EB1F6413A5127E503ABF8A586F07181298551ACC29F91CA011DABA9192188F21A5AE130C31E6E7C47F87052C87AE4598E479AFEAE4234278317AEC386AC8F5C345C15863AB35824560A396202F13477E7320974AB22C176BABC8E7864810F255C7BFFA723AC751CBAE408C7DE15EBFDF7CA4B181CC2EE01313E49FD65AF53935049BE7B4F75404DC243B5C218A37A65D3077</code></pre>
<pre><code>g_b = 35A300F632B557BCF18A927A4DE8AFFCAFF852DB2AB3F43FF3D2CC1B902B1126BD4FA49B87DE3F92184EEC68EBD16345E4D4B33C2816637FA8BECABC99C6028300E6B9304CB0A182916F6D9C865619D3993367E8FF6FC4E797C57E654A673C8712D4E07A9E64C1B4157C2C9624DF295B285BB044A45EC45CBC2A10649E02B2239072393E6AC72068136B884BBC418E024BF8A8DD12DBB534EFFF235B5E78AABB524CED3E2C18C607F9832066AF940BA10E30A299B0AC55E1B45864FA54A587D7ACE194868027A98F69595725E1AC03095E37C04861AE41BE642BB9244619509FB3453CF8325BDB0077AF51AD276D937F8618EEA693C6A116BF05B02AE956AC65</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 F3 C6 F3 84 6F CA 4D 6D 5F 17 DC 5D
0010 | C0 1C 36 7F BC D0 94 5F A8 89 89 60 F8 CD 69 F5
0020 | 8E 1F 39 63 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 6B 8B 55 4F 20 E5 9F D2 C0 F6 EC D9 03 89 41 33
0040 | 0F 79 0C A1 6E CD C2 21 F3 8A A4 E1 33 6A 93 51
0050 | 5E 93 E4 2B F2 E7 4F 71 EC C2 BE 4B BE 3D 55 75
0060 | 77 35 47 4D 2F C6 7B 33 42 19 E0 CF 20 B3 9C E1
0070 | 03 5D FC 06 93 2F FB A3 6E 2F 70 1F ED 5C 44 39
0080 | 70 0F 8B 03 70 DA AE 25 9A 4C FB 16 D3 9E CC F5
0090 | 5E E2 8D CC B5 92 79 06 4E B6 97 72 AA D2 EB 1F
00A0 | 64 13 A5 12 7E 50 3A BF 8A 58 6F 07 18 12 98 55
00B0 | 1A CC 29 F9 1C A0 11 DA BA 91 92 18 8F 21 A5 AE
00C0 | 13 0C 31 E6 E7 C4 7F 87 05 2C 87 AE 45 98 E4 79
00D0 | AF EA E4 23 42 78 31 7A EC 38 6A C8 F5 C3 45 C1
00E0 | 58 63 AB 35 82 45 60 A3 96 20 2F 13 47 7E 73 20
00F0 | 97 4A B2 2C 17 6B AB C8 E7 86 48 10 F2 55 C7 BF
0100 | FA 72 3A C7 51 CB AE 40 8C 7D E1 5E BF DF 7C A4
0110 | B1 81 CC 2E E0 13 13 E4 9F D6 5A F5 39 35 04 9B
0120 | E7 B4 F7 54 04 DC 24 3B 5C 21 8A 37 A6 5D 30 77</code></pre>
<pre><code>0000 | 54 B6 43 66 F2 FF EB DA 55 A0 62 61 90 B6 57 AC
0010 | CD F3 9C 05 C8 97 E4 83 8C 1A 47 33 D9 43 AB 98
0020 | 93 64 1F B4 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 35 A3 00 F6 32 B5 57 BC F1 8A 92 7A 4D E8 AF FC
0040 | AF F8 52 DB 2A B3 F4 3F F3 D2 CC 1B 90 2B 11 26
0050 | BD 4F A4 9B 87 DE 3F 92 18 4E EC 68 EB D1 63 45
0060 | E4 D4 B3 3C 28 16 63 7F A8 BE CA BC 99 C6 02 83
0070 | 00 E6 B9 30 4C B0 A1 82 91 6F 6D 9C 86 56 19 D3
0080 | 99 33 67 E8 FF 6F C4 E7 97 C5 7E 65 4A 67 3C 87
0090 | 12 D4 E0 7A 9E 64 C1 B4 15 7C 2C 96 24 DF 29 5B
00A0 | 28 5B B0 44 A4 5E C4 5C BC 2A 10 64 9E 02 B2 23
00B0 | 90 72 39 3E 6A C7 20 68 13 6B 88 4B BC 41 8E 02
00C0 | 4B F8 A8 DD 12 DB B5 34 EF FF 23 5B 5E 78 AA BB
00D0 | 52 4C ED 3E 2C 18 C6 07 F9 83 20 66 AF 94 0B A1
00E0 | 0E 30 A2 99 B0 AC 55 E1 B4 58 64 FA 54 A5 87 D7
00F0 | AC E1 94 86 80 27 A9 8F 69 59 57 25 E1 AC 03 09
0100 | 5E 37 C0 48 61 AE 41 BE 64 2B B9 24 46 19 50 9F
0110 | B3 45 3C F8 32 5B DB 00 77 AF 51 AD 27 6D 93 7F
0120 | 86 18 EE A6 93 C6 A1 16 BF 05 B0 2A E9 56 AC 65</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 = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001006B8B554F20E59FD2C0F6ECD9</code> <code>038941330F790CA16ECDC221F38AA4E1</code> <code>336A93515E93E42BF2E74F71ECC2BE4B</code> <code>BE3D55757735474D2FC67B334219E0CF</code> <code>20B39CE1035DFC06932FFBA36E2F701F</code> <code>ED5C4439700F8B0370DAAE259A4CFB16</code> <code>D39ECCF55EE28DCCB59279064EB69772</code> <code>AAD2EB1F6413A5127E503ABF8A586F07</code> <code>181298551ACC29F91CA011DABA919218</code> <code>8F21A5AE130C31E6E7C47F87052C87AE</code> <code>4598E479AFEAE4234278317AEC386AC8</code> <code>F5C345C15863AB35824560A396202F13</code> <code>477E7320974AB22C176BABC8E7864810</code> <code>F255C7BFFA723AC751CBAE408C7DE15E</code> <code>BFDF7CA4B181CC2EE01313E49FD65AF5</code> <code>3935049BE7B4F75404DC243B5C218A37</code><br> <code>A65D3077</code></td>
<td><code>FE00010035A300F632B557BCF18A927A</code> <code>4DE8AFFCAFF852DB2AB3F43FF3D2CC1B</code> <code>902B1126BD4FA49B87DE3F92184EEC68</code> <code>EBD16345E4D4B33C2816637FA8BECABC</code> <code>99C6028300E6B9304CB0A182916F6D9C</code> <code>865619D3993367E8FF6FC4E797C57E65</code> <code>4A673C8712D4E07A9E64C1B4157C2C96</code> <code>24DF295B285BB044A45EC45CBC2A1064</code> <code>9E02B2239072393E6AC72068136B884B</code> <code>BC418E024BF8A8DD12DBB534EFFF235B</code> <code>5E78AABB524CED3E2C18C607F9832066</code> <code>AF940BA10E30A299B0AC55E1B45864FA</code> <code>54A587D7ACE194868027A98F69595725</code> <code>E1AC03095E37C04861AE41BE642BB924</code> <code>4619509FB3453CF8325BDB0077AF51AD</code> <code>276D937F8618EEA693C6A116BF05B02A</code><br> <code>E956AC65</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 = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
<!-- 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 = 54B64366F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F39630000000000000000FE0001006B8B554F20E59FD2C0F6ECD9038941330F790CA16ECDC221F38AA4E1336A93515E93E42BF2E74F71ECC2BE4BBE3D55757735474D2FC67B334219E0CF20B39CE1035DFC06932FFBA36E2F701FED5C4439700F8B0370DAAE259A4CFB16D39ECCF55EE28DCCB59279064EB69772AAD2EB1F6413A5127E503ABF8A586F07181298551ACC29F91CA011DABA9192188F21A5AE130C31E6E7C47F87052C87AE4598E479AFEAE4234278317AEC386AC8F5C345C15863AB35824560A396202F13477E7320974AB22C176BABC8E7864810F255C7BFFA723AC751CBAE408C7DE15EBFDF7CA4B181CC2EE01313E49FD65AF53935049BE7B4F75404DC243B5C218A37A65D3077
padding = 805A3652D572D8A00CC641A7
tmp_aes_key = 14444D2E97F2965361A855080116B5B7660CC9B01833A9E65FE174A5D3998EFA
tmp_aes_iv = 1000B78D04D1218EE73281AAACC5043BBF035441C9F231928F9946CD61FF7BEC</code></pre>
<pre><code>data = 54B64366F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB40000000000000000FE00010035A300F632B557BCF18A927A4DE8AFFCAFF852DB2AB3F43FF3D2CC1B902B1126BD4FA49B87DE3F92184EEC68EBD16345E4D4B33C2816637FA8BECABC99C6028300E6B9304CB0A182916F6D9C865619D3993367E8FF6FC4E797C57E654A673C8712D4E07A9E64C1B4157C2C9624DF295B285BB044A45EC45CBC2A10649E02B2239072393E6AC72068136B884BBC418E024BF8A8DD12DBB534EFFF235B5E78AABB524CED3E2C18C607F9832066AF940BA10E30A299B0AC55E1B45864FA54A587D7ACE194868027A98F69595725E1AC03095E37C04861AE41BE642BB9244619509FB3453CF8325BDB0077AF51AD276D937F8618EEA693C6A116BF05B02AE956AC65
padding = BA5BA18ABF32B3EFA400DCBA
tmp_aes_key = 594061AE8790464CD895F4EC6E87183395A1D3030D30F301DC4BEA649F715D0E
tmp_aes_iv = 4D77BC1E9C065F093B95359EA200FB0DBB6499A2A2356E2764FA3EC11183DF59</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 = 8D118132E18810CF952B4E43E22ECCAAEC55ED33F3DC451943AE50CF2BFCA79F824B9DFB106B9DEB170286A51981E37B4C7D0DD42F1E737CD50A510ABD667C81C829DBD6F1B8051051C168C481C88B6533E5E55454D065EF3EE7E0DDCCAA841A0835D01C1E5A881C328F5AB8FC7699109947F112C28F35039A21D79E8029140208ABECAB7EA67C20E644231189B0461933710A89B955B0AC8E5F673ECEEF01E67E11408C7B6CD904505B8A94FF46094EA17DB1F854E5BFE709286FCA084EE6F2DD107BB2AEC2B9C9B22FB84894C235E589F99E5600F70BE8DBC5F6D952C8EE0366D5F8CBB34EDF6DBEC9600606137FE19FDAEB648702832E85D23D0FE0EE74B26C180BAA05BEF38884BB2C6DFFD0C5E15CD1A3251D73CF8108A68E202869811CECBBDC19728C800E911FD860541A3E7E4AFB6BF102CE1734316BC5069C76504E58F5C89A587748ED9B26E710361E7685</code></pre>
<pre><code>encrypted_data = 8DC5EDF4570B333797D9B0A39B2803B5EFDD4DECE3D7305D1A05348C7EF11BAC05FD42853527D56914DDF9D4AA5C2A42CEF5493B67ED45605BB297DB2B2F0AED96B028BA3029F7A3D39C689B271C6B42A124EA9E82B6B473B844F2DC8B40E1589E88FA1AD7CB598904E540C66B1AE111D26C74C0BA4261FBD313144F5106940A417E042B2553A55AD456154AD9F6C49D26D7CC7A853561539AD08A59B1B39D0D89671EABBE294246F1E2D038679D084DB0DFCFD26C4502B217C6EFCA8C66F8AFDE83A65241892CD2B13B4D81328E1A5182502E9E730C4847FFB797D02799FDD268B3D6226198BF87D9558172D4BCFFB4BC54464369A9309488A0C67BB8E99190C66B8E7848E742C8FD5D3491ABDC4B238BCB512E1D56B52B4EB1A8E74C664ABA560C80DF4152243BCCEFE78E51BCCBE29E7BF9867739B97891318C6CE9BAEC007B5B6708DD0C3DFD911AEA5CA552EB03</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 88 99 0D 00 9F A1 38 67
0010 | 78 01 00 00 1F 5F 04 F5 F3 C6 F3 84 6F CA 4D 6D
0020 | 5F 17 DC 5D C0 1C 36 7F BC D0 94 5F A8 89 89 60
0030 | F8 CD 69 F5 8E 1F 39 63 FE 50 01 00 8D 11 81 32
0040 | E1 88 10 CF 95 2B 4E 43 E2 2E CC AA EC 55 ED 33
0050 | F3 DC 45 19 43 AE 50 CF 2B FC A7 9F 82 4B 9D FB
0060 | 10 6B 9D EB 17 02 86 A5 19 81 E3 7B 4C 7D 0D D4
0070 | 2F 1E 73 7C D5 0A 51 0A BD 66 7C 81 C8 29 DB D6
0080 | F1 B8 05 10 51 C1 68 C4 81 C8 8B 65 33 E5 E5 54
0090 | 54 D0 65 EF 3E E7 E0 DD CC AA 84 1A 08 35 D0 1C
00A0 | 1E 5A 88 1C 32 8F 5A B8 FC 76 99 10 99 47 F1 12
00B0 | C2 8F 35 03 9A 21 D7 9E 80 29 14 02 08 AB EC AB
00C0 | 7E A6 7C 20 E6 44 23 11 89 B0 46 19 33 71 0A 89
00D0 | B9 55 B0 AC 8E 5F 67 3E CE EF 01 E6 7E 11 40 8C
00E0 | 7B 6C D9 04 50 5B 8A 94 FF 46 09 4E A1 7D B1 F8
00F0 | 54 E5 BF E7 09 28 6F CA 08 4E E6 F2 DD 10 7B B2
0100 | AE C2 B9 C9 B2 2F B8 48 94 C2 35 E5 89 F9 9E 56
0110 | 00 F7 0B E8 DB C5 F6 D9 52 C8 EE 03 66 D5 F8 CB
0120 | B3 4E DF 6D BE C9 60 06 06 13 7F E1 9F DA EB 64
0130 | 87 02 83 2E 85 D2 3D 0F E0 EE 74 B2 6C 18 0B AA
0140 | 05 BE F3 88 84 BB 2C 6D FF D0 C5 E1 5C D1 A3 25
0150 | 1D 73 CF 81 08 A6 8E 20 28 69 81 1C EC BB DC 19
0160 | 72 8C 80 0E 91 1F D8 60 54 1A 3E 7E 4A FB 6B F1
0170 | 02 CE 17 34 31 6B C5 06 9C 76 50 4E 58 F5 C8 9A
0180 | 58 77 48 ED 9B 26 E7 10 36 1E 76 85</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 1C 48 07 00 DE A6 38 67
0010 | 78 01 00 00 1F 5F 04 F5 F2 FF EB DA 55 A0 62 61
0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
0030 | D9 43 AB 98 93 64 1F B4 FE 50 01 00 8D C5 ED F4
0040 | 57 0B 33 37 97 D9 B0 A3 9B 28 03 B5 EF DD 4D EC
0050 | E3 D7 30 5D 1A 05 34 8C 7E F1 1B AC 05 FD 42 85
0060 | 35 27 D5 69 14 DD F9 D4 AA 5C 2A 42 CE F5 49 3B
0070 | 67 ED 45 60 5B B2 97 DB 2B 2F 0A ED 96 B0 28 BA
0080 | 30 29 F7 A3 D3 9C 68 9B 27 1C 6B 42 A1 24 EA 9E
0090 | 82 B6 B4 73 B8 44 F2 DC 8B 40 E1 58 9E 88 FA 1A
00A0 | D7 CB 59 89 04 E5 40 C6 6B 1A E1 11 D2 6C 74 C0
00B0 | BA 42 61 FB D3 13 14 4F 51 06 94 0A 41 7E 04 2B
00C0 | 25 53 A5 5A D4 56 15 4A D9 F6 C4 9D 26 D7 CC 7A
00D0 | 85 35 61 53 9A D0 8A 59 B1 B3 9D 0D 89 67 1E AB
00E0 | BE 29 42 46 F1 E2 D0 38 67 9D 08 4D B0 DF CF D2
00F0 | 6C 45 02 B2 17 C6 EF CA 8C 66 F8 AF DE 83 A6 52
0100 | 41 89 2C D2 B1 3B 4D 81 32 8E 1A 51 82 50 2E 9E
0110 | 73 0C 48 47 FF B7 97 D0 27 99 FD D2 68 B3 D6 22
0120 | 61 98 BF 87 D9 55 81 72 D4 BC FF B4 BC 54 46 43
0130 | 69 A9 30 94 88 A0 C6 7B B8 E9 91 90 C6 6B 8E 78
0140 | 48 E7 42 C8 FD 5D 34 91 AB DC 4B 23 8B CB 51 2E
0150 | 1D 56 B5 2B 4E B1 A8 E7 4C 66 4A BA 56 0C 80 DF
0160 | 41 52 24 3B CC EF E7 8E 51 BC CB E2 9E 7B F9 86
0170 | 77 39 B9 78 91 31 8C 6C E9 BA EC 00 7B 5B 67 08
0180 | DD 0C 3D FD 91 1A EA 5C A5 52 EB 03</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>88990D009FA13867</code></td>
<td><code>1C480700DEA63867</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>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE5001008D118132E18810CF952B4E43</code> <code>E22ECCAAEC55ED33F3DC451943AE50CF</code> <code>2BFCA79F824B9DFB106B9DEB170286A5</code> <code>1981E37B4C7D0DD42F1E737CD50A510A</code> <code>BD667C81C829DBD6F1B8051051C168C4</code> <code>81C88B6533E5E55454D065EF3EE7E0DD</code> <code>CCAA841A0835D01C1E5A881C328F5AB8</code> <code>FC7699109947F112C28F35039A21D79E</code> <code>8029140208ABECAB7EA67C20E6442311</code> <code>89B0461933710A89B955B0AC8E5F673E</code> <code>CEEF01E67E11408C7B6CD904505B8A94</code> <code>FF46094EA17DB1F854E5BFE709286FCA</code> <code>084EE6F2DD107BB2AEC2B9C9B22FB848</code> <code>94C235E589F99E5600F70BE8DBC5F6D9</code> <code>52C8EE0366D5F8CBB34EDF6DBEC96006</code> <code>06137FE19FDAEB648702832E85D23D0F</code> <code>E0EE74B26C180BAA05BEF38884BB2C6D</code> <code>FFD0C5E15CD1A3251D73CF8108A68E20</code> <code>2869811CECBBDC19728C800E911FD860</code> <code>541A3E7E4AFB6BF102CE1734316BC506</code> <code>9C76504E58F5C89A587748ED9B26E710</code><br> <code>361E7685</code></td>
<td><code>FE5001008DC5EDF4570B333797D9B0A3</code> <code>9B2803B5EFDD4DECE3D7305D1A05348C</code> <code>7EF11BAC05FD42853527D56914DDF9D4</code> <code>AA5C2A42CEF5493B67ED45605BB297DB</code> <code>2B2F0AED96B028BA3029F7A3D39C689B</code> <code>271C6B42A124EA9E82B6B473B844F2DC</code> <code>8B40E1589E88FA1AD7CB598904E540C6</code> <code>6B1AE111D26C74C0BA4261FBD313144F</code> <code>5106940A417E042B2553A55AD456154A</code> <code>D9F6C49D26D7CC7A853561539AD08A59</code> <code>B1B39D0D89671EABBE294246F1E2D038</code> <code>679D084DB0DFCFD26C4502B217C6EFCA</code> <code>8C66F8AFDE83A65241892CD2B13B4D81</code> <code>328E1A5182502E9E730C4847FFB797D0</code> <code>2799FDD268B3D6226198BF87D9558172</code> <code>D4BCFFB4BC54464369A9309488A0C67B</code> <code>B8E99190C66B8E7848E742C8FD5D3491</code> <code>ABDC4B238BCB512E1D56B52B4EB1A8E7</code> <code>4C664ABA560C80DF4152243BCCEFE78E</code> <code>51BCCBE29E7BF9867739B97891318C6C</code> <code>E9BAEC007B5B6708DD0C3DFD911AEA5C</code><br> <code>A552EB03</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 = 918EF0F9DCE0F0683826A7F9D24AE2C030AB787C0D3470DF5CBCDC6DB18972A570B191CA02C10D35534861D429B65D2467ED0DE42EA40C27B204AB97F462176B32462B4717FCC82792082B7201323E5CED8FEA6B516C88BE88DFAFA5C3C93B90E61ED63B4F62FFE845B192DCB85F3397FB631CEB240860EE6FE09DC06846899BE78AA8144416CF4743C1CF9B32FB769665979E85CFC8C6A6E96A687FBA1B41D6006F461F30E3435761C370C4E30B5DFCD35C880326CADFDDCBDE404C95E6EDECF4D1C75117F06E9381DC030B68E48D93C41A8ED5CD946D1226256A36B6FCBB75351CF201612D42525431B7C92FD2AA1366E708617758C27F95C529FEDFABF0BE</code></pre>
<pre><code>auth_key = 86E1807DB45ED838284D01E5DF7DE333F35B5B65F70D86204C06FC16442F50CBCFB749AFD9FED3234BBA4C997BEC0AA5761F08125569623021B67DE2811E9892A7D928C517BC678A3169CF3FBCD082A2AD5BA0B3AD667C7290F9361FF85D8C3EB1F404E54540154A56CCBAFBFFDDAD2E700C0B5E92A5274EFA27B825882EB21CEE9CF380CFD7BFD881EC7F20BD65F5022F77A84F0604A70FC3518A4A61E1EE9FFDE9677685C903428128251FAA7A99ADDC490ECE12B4C03055B8DE35B9F5E62F0A64923E3AD8CC7FC5F9B79098D35C5DE38A13C4D69A2BD8DE2EBB0854F533B7164C876DA5C4E804D9F8DCDD9CCC678E7C0F20B9DE86C012CA55A84A3955AFB6</code></pre>
<!-- end auth_key -->
<h5><a class="anchor" href="#9-final-server-reply" id="9-final-server-reply" name="9-final-server-reply"><i class="anchor-icon"></i></a>9) Final server reply</h5>
<p>The server verifies and confirms that auth_key_hash is unique: since it's unique, it replies with the following:</p>
<!-- start dh_gen_ok -->
<p>Received payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 C0 EE 08 A1 A1 38 67
0010 | 34 00 00 00 34 F7 CB 3B F3 C6 F3 84 6F CA 4D 6D
0020 | 5F 17 DC 5D C0 1C 36 7F BC D0 94 5F A8 89 89 60
0030 | F8 CD 69 F5 8E 1F 39 63 72 B9 66 1F DB 86 E9 F0
0040 | 49 C9 31 A9 01 6F 6C 39</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 E0 1A CE DE A6 38 67
0010 | 34 00 00 00 34 F7 CB 3B F2 FF EB DA 55 A0 62 61
0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
0030 | D9 43 AB 98 93 64 1F B4 14 D2 0C 61 FB F8 BC D0
0040 | DF E5 90 21 13 41 D6 1D</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;</code></pre>
<table class="table">
@ -817,7 +817,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01C0EE08A1A13867</code></td>
<td><code>01E01ACEDEA63867</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>72B9661FDB86E9F049C931A9016F6C39</code></td>
<td><code>14D20C61FBF8BCD0DFE590211341D61D</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

@ -989,7 +989,7 @@
</tr>
<tr>
<td><a href="/method/messages.togglePaidReactionPrivacy">messages.togglePaidReactionPrivacy</a></td>
<td> </td>
<td>Changes the privacy of already sent <a href="/api/reactions#paid-reactions">paid reactions</a> on a specific message.</td>
</tr>
<tr>
<td><a href="/method/payments.saveStarGift">payments.saveStarGift</a></td>

View file

@ -82,7 +82,7 @@
</tr>
<tr>
<td><a href="/constructor/reactionPaid">reactionPaid</a></td>
<td> </td>
<td>Represents a <a href="/api/reactions#paid-reactions">paid Telegram Star reaction »</a>.</td>
</tr>
</tbody>
</table>