Update content of files

This commit is contained in:
GitHub Action 2024-08-03 16:09:17 +00:00
parent 4719641e92
commit 8099138957
14 changed files with 314 additions and 269 deletions

View file

@ -183,7 +183,7 @@ If the returned <a href="/constructor/webViewResultUrl">webViewResultUrl</a> doe
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/inputMediaPaidMedia">inputMediaPaidMedia</a> - </li>
<li>Added <a href="/constructor/messageMediaPaidMedia">messageMediaPaidMedia</a> - </li>
<li>Added <a href="/constructor/messageMediaPaidMedia">messageMediaPaidMedia</a> - <a href="/api/paid-media">Paid media, see here »</a> for more info.</li>
<li>Added <a href="/constructor/starsTransactionPeerAds">starsTransactionPeerAds</a> - Describes a <a href="/api/stars">Telegram Star</a> transaction used to pay for <a href="/api/stars#paying-for-ads">Telegram ads as specified here »</a>.</li>
<li>Added <a href="/constructor/payments.starsRevenueAdsAccountUrl">payments.starsRevenueAdsAccountUrl</a> - Contains a URL leading to a page where the user will be able to place ads for the channel/bot, paying using <a href="/api/stars#paying-for-ads">Telegram Stars</a>.</li>
<li>Added <a href="/constructor/inputStarsTransaction">inputStarsTransaction</a> - Used to fetch info about a <a href="/api/stars#balance-and-transaction-history">Telegram Star transaction »</a>.</li>

View file

@ -68,6 +68,10 @@ To send albums, do <strong>not</strong> use <a href="/method/messages.sendMultiM
<a href='/constructor/messageMediaPaidMedia'>messageMediaPaidMedia</a>#a8852491 stars_amount:<a href='/type/long'>long</a> extended_media:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/MessageExtendedMedia'>MessageExtendedMedia</a>&gt; = <a href='/type/MessageMedia'>MessageMedia</a>;
<a href='/constructor/inputInvoiceMessage'>inputInvoiceMessage</a>#c5b56859 peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/InputInvoice'>InputInvoice</a>;
<a href='/constructor/inputMediaInvoice'>inputMediaInvoice</a>#405fef0d flags:<a href='/type/%23'>#</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/InputWebDocument'>InputWebDocument</a> invoice:<a href='/type/Invoice'>Invoice</a> payload:<a href='/type/bytes'>bytes</a> provider:flags.3?<a href='/type/string'>string</a> provider_data:<a href='/type/DataJSON'>DataJSON</a> start_param:flags.1?<a href='/type/string'>string</a> extended_media:flags.2?<a href='/type/InputMedia'>InputMedia</a> = <a href='/type/InputMedia'>InputMedia</a>;
<a href='/constructor/updateMessageExtendedMedia'>updateMessageExtendedMedia</a>#d5a41724 peer:<a href='/type/Peer'>Peer</a> msg_id:<a href='/type/int'>int</a> extended_media:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/MessageExtendedMedia'>MessageExtendedMedia</a>&gt; = <a href='/type/Update'>Update</a>;
<a href='/constructor/messageMediaInvoice'>messageMediaInvoice</a>#f6a548d3 flags:<a href='/type/%23'>#</a> shipping_address_requested:flags.1?<a href='/constructor/true'>true</a> test:flags.3?<a href='/constructor/true'>true</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/WebDocument'>WebDocument</a> receipt_msg_id:flags.2?<a href='/type/int'>int</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> start_param:<a href='/type/string'>string</a> extended_media:flags.4?<a href='/type/MessageExtendedMedia'>MessageExtendedMedia</a> = <a href='/type/MessageMedia'>MessageMedia</a>;
@ -76,7 +80,17 @@ To send albums, do <strong>not</strong> use <a href="/method/messages.sendMultiM
---functions---
<a href='/method/messages.getExtendedMedia'>messages.getExtendedMedia</a>#84f80814 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></div>
<a href='/method/messages.getExtendedMedia'>messages.getExtendedMedia</a>#84f80814 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 media is represented by a <a href="/constructor/messageMediaPaidMedia">messageMediaPaidMedia</a> constructor, containing:</p>
<ul>
<li>In <code>stars_amount</code>, the price of the media in <a href="/api/stars">Telegram Stars</a></li>
<li>In <code>extended_media</code>, a vector of <a href="/type/MessageExtendedMedia">MessageExtendedMedia</a> constructors, which will <strong>all</strong> be either:<ul>
<li><a href="/constructor/messageExtendedMediaPreview">messageExtendedMediaPreview</a>, for media the current user hasn't bought yet, <strong>optionally</strong> contains basic info about the media (width, height, <a href="/api/files#stripped-thumbnails">extremely low resolution thumbnail</a>, video duration for videos). </li>
<li><a href="/constructor/messageExtendedMedia">messageExtendedMedia</a>, for media the current user has already purchased, containing the actual <a href="/constructor/messageMediaPhoto">messageMediaPhoto</a>/<a href="/constructor/messageMediaVideo">messageMediaVideo</a> that can be downloaded and viewed <a href="/api/files">as usual »</a>. </li>
</ul>
</li>
</ul>
<p>To purchase paid media, follow the <a href="/api/payments#22-getting-invoice-info-about-the-product">usual payment flow »</a>, passing an <a href="/constructor/inputInvoiceMessage">inputInvoiceMessage</a> with the peer and message ID of the paid media.</p></div>
</div>

View file

@ -130,8 +130,9 @@ The first button of the keyboard will always be a <a href="/constructor/keyboard
<a href='/method/payments.getPaymentForm'>payments.getPaymentForm</a>#37148dbb flags:<a href='/type/%23'>#</a> invoice:<a href='/type/InputInvoice'>InputInvoice</a> theme_params:flags.0?<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre>
<p><a href="/method/payments.getPaymentForm">payments.getPaymentForm</a> is used to return a <a href="/constructor/payments.paymentForm">payment form</a> from an invoice, providing the following <code>invoice</code> parameter:</p>
<ul>
<li><a href="/constructor/inputInvoiceMessage">inputInvoiceMessage</a><ul>
<li>Used if the user clicks on the <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button, contains the message ID of the invoice preview message. </li>
<li><a href="/constructor/inputInvoiceMessage">inputInvoiceMessage</a>, used:<ul>
<li>If the user clicks on the <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button, contains the message ID of the invoice preview message. </li>
<li>When <a href="/api/paid-media">purchasing paid media »</a>.</li>
</ul>
</li>
<li><a href="/constructor/inputInvoiceSlug">inputInvoiceSlug</a><ul>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>inputInvoiceMessage</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="An invoice contained in a messageMediaInvoice message.">
<meta property="description" content="An invoice contained in a messageMediaInvoice message or paid media ».">
<meta property="og:title" content="inputInvoiceMessage">
<meta property="og:image" content="">
<meta property="og:description" content="An invoice contained in a messageMediaInvoice message.">
<meta property="og:description" content="An invoice contained in a messageMediaInvoice message or paid media ».">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -42,7 +42,7 @@
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputInvoiceMessage" >inputInvoiceMessage</a></li></ul></div>
<h1 id="dev_page_title">inputInvoiceMessage</h1>
<div id="dev_page_content"><p>An invoice contained in a <a href="/constructor/messageMediaInvoice">messageMediaInvoice</a> message.</p>
<div id="dev_page_content"><p>An invoice contained in a <a href="/constructor/messageMediaInvoice">messageMediaInvoice</a> message or <a href="/api/paid-media">paid media »</a>.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -69,7 +69,7 @@
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
<td>Chat where the invoice was sent</td>
<td>Chat where the invoice/paid media was sent</td>
</tr>
<tr>
<td><strong>msg_id</strong></td>
@ -82,7 +82,9 @@
<p><a href="/type/InputInvoice">InputInvoice</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="#messagemediainvoice" id="messagemediainvoice" name="messagemediainvoice"><i class="anchor-icon"></i></a><a href="/constructor/messageMediaInvoice">messageMediaInvoice</a></h4>
<p>Invoice</p></div>
<p>Invoice</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 <a href="/api/stars">Stars</a> by publishing <strong>paid photos or videos</strong> on their channels. Subscribers will be allowed to view such posts only after paying the author to unlock them.</p></div>
</div>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>messageExtendedMedia</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Extended media">
<meta property="description" content="Already purchased paid media, see here » for more info.">
<meta property="og:title" content="messageExtendedMedia">
<meta property="og:image" content="">
<meta property="og:description" content="Extended media">
<meta property="og:description" content="Already purchased paid media, see here » for more info.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -42,7 +42,7 @@
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageExtendedMedia" >messageExtendedMedia</a></li></ul></div>
<h1 id="dev_page_title">messageExtendedMedia</h1>
<div id="dev_page_content"><p>Extended media</p>
<div id="dev_page_content"><p>Already purchased paid media, <a href="/api/paid-media">see here »</a> for more info.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -69,12 +69,15 @@
<tr>
<td><strong>media</strong></td>
<td style="text-align: center;"><a href="/type/MessageMedia">MessageMedia</a></td>
<td>Media</td>
<td>The media we purchased.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/MessageExtendedMedia">MessageExtendedMedia</a></p></div>
<p><a href="/type/MessageExtendedMedia">MessageExtendedMedia</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="#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 <a href="/api/stars">Stars</a> by publishing <strong>paid photos or videos</strong> on their channels. Subscribers will be allowed to view such posts only after paying the author to unlock them.</p></div>
</div>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>messageExtendedMediaPreview</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Extended media preview">
<meta property="description" content="Paid media preview for not yet purchased paid media, see here » for more info.">
<meta property="og:title" content="messageExtendedMediaPreview">
<meta property="og:image" content="">
<meta property="og:description" content="Extended media preview">
<meta property="og:description" content="Paid media preview for not yet purchased paid media, see here » for more info.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -42,7 +42,7 @@
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageExtendedMediaPreview" >messageExtendedMediaPreview</a></li></ul></div>
<h1 id="dev_page_title">messageExtendedMediaPreview</h1>
<div id="dev_page_content"><p>Extended media preview</p>
<div id="dev_page_content"><p>Paid media preview for not yet purchased paid media, <a href="/api/paid-media">see here »</a> for more info.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -84,17 +84,22 @@
<tr>
<td><strong>thumb</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/PhotoSize">PhotoSize</a></td>
<td>Thumbnail</td>
<td><a href="/api/files#stripped-thumbnails">Extremely low resolution thumbnail</a>.</td>
</tr>
<tr>
<td><strong>video_duration</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td>
<td>Video duration</td>
<td>Video duration for videos.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/MessageExtendedMedia">MessageExtendedMedia</a></p></div>
<p><a href="/type/MessageExtendedMedia">MessageExtendedMedia</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="#uploading-and-downloading-files" id="uploading-and-downloading-files" name="uploading-and-downloading-files"><i class="anchor-icon"></i></a><a href="/api/files">Uploading and Downloading Files</a></h4>
<p>How to transfer large data batches correctly.</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 <a href="/api/stars">Stars</a> by publishing <strong>paid photos or videos</strong> on their channels. Subscribers will be allowed to view such posts only after paying the author to unlock them.</p></div>
</div>

View file

@ -4,32 +4,10 @@
<meta charset="utf-8">
<title>messageMediaPaidMedia</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
stars_amount
long
 
extended_media
Vector&lt;MessageExtendedMedia&gt;
 
Type
MessageMedia">
<meta property="description" content="Paid media, see here » for more info.">
<meta property="og:title" content="messageMediaPaidMedia">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
stars_amount
long
 
extended_media
Vector&lt;MessageExtendedMedia&gt;
 
Type
MessageMedia">
<meta property="og:description" content="Paid media, see here » for more info.">
<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">
@ -64,7 +42,8 @@ MessageMedia">
<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/messageMediaPaidMedia" >messageMediaPaidMedia</a></li></ul></div>
<h1 id="dev_page_title">messageMediaPaidMedia</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p><a href="/api/paid-media">Paid media, see here »</a> for more info.</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 185 <b class="caret"></b></a>
@ -90,17 +69,22 @@ MessageMedia">
<tr>
<td><strong>stars_amount</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td> </td>
<td>The price of the media in <a href="/api/stars">Telegram Stars</a>.</td>
</tr>
<tr>
<td><strong>extended_media</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageExtendedMedia">MessageExtendedMedia</a>&gt;</td>
<td> </td>
<td>Either the paid-for media, or super low resolution media previews if the media wasn't purchased yet, <a href="/api/paid-media#viewing-paid-media">see here »</a> for more info.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/MessageMedia">MessageMedia</a></p></div>
<p><a href="/type/MessageMedia">MessageMedia</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#telegram-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 an in-app currency that allows the user to pay for digital goods and services offered by Telegram bots or Telegram channels.</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 <a href="/api/stars">Stars</a> by publishing <strong>paid photos or videos</strong> on their channels. Subscribers will be allowed to view such posts only after paying the author to unlock them.</p></div>
</div>

View file

@ -4,10 +4,36 @@
<meta charset="utf-8">
<title>updateMessageExtendedMedia</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Extended media update">
<meta property="description" content="Parameters
Name
Type
Description
peer
Peer
Peer
msg_id
int
Message ID
extended_media
Vector&lt;MessageExtendedMedia&gt;
 
Type…">
<meta property="og:title" content="updateMessageExtendedMedia">
<meta property="og:image" content="">
<meta property="og:description" content="Extended media update">
<meta property="og:description" content="Parameters
Name
Type
Description
peer
Peer
Peer
msg_id
int
Message ID
extended_media
Vector&lt;MessageExtendedMedia&gt;
 
Type…">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -42,8 +68,7 @@
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateMessageExtendedMedia" >updateMessageExtendedMedia</a></li></ul></div>
<h1 id="dev_page_title">updateMessageExtendedMedia</h1>
<div id="dev_page_content"><p>Extended media update</p>
<p><div class="clearfix">
<div id="dev_page_content"><p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 185 <b class="caret"></b></a>
@ -79,7 +104,7 @@
<tr>
<td><strong>extended_media</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageExtendedMedia">MessageExtendedMedia</a>&gt;</td>
<td>Extended media</td>
<td> </td>
</tr>
</tbody>
</table>

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 B0 B7 09 00 67 4B AE 66
0010 | 14 00 00 00 F1 8E 7E BE 98 6F 64 A7 DD EA 29 51
0020 | 4E 0E 8D 15 D6 F2 76 D2</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 00 EE 08 00 44 50 AE 66
0010 | 14 00 00 00 F1 8E 7E BE AF 92 71 33 BF B0 31 EB
0020 | 62 FE BB E2 C8 9D 60 7C</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>B0B70900674BAE66</code></td>
<td><code>00EE08004450AE66</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>986F64A7DDEA29514E0E8D15D6F276D2</code></td>
<td><code>AF927133BFB031EB62FEBBE2C89D607C</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 30 D3 9B 67 4B AE 66
0010 | A8 00 00 00 63 24 16 05 98 6F 64 A7 DD EA 29 51
0020 | 4E 0E 8D 15 D6 F2 76 D2 A5 02 24 04 0E D5 17 4D
0030 | F5 66 64 9C 15 AE 15 24 08 13 FA F3 8D D9 35 E1
0040 | F5 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 64 32 F3 44 50 AE 66
0010 | A0 00 00 00 63 24 16 05 AF 92 71 33 BF B0 31 EB
0020 | 62 FE BB E2 C8 9D 60 7C 63 96 F1 1C B0 17 84 0F
0030 | A1 06 5D D9 F3 08 DE 8F 08 20 87 1A 67 79 68 6B
0040 | FD 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>0130D39B674BAE66</code></td>
<td><code>016432F34450AE66</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>A8000000</code> (168 in decimal)</td>
<td><code>A0000000</code> (160 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>986F64A7DDEA29514E0E8D15D6F276D2</code></td>
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>A50224040ED5174DF566649C15AE1524</code></td>
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0813FAF38DD935E1F5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1439730821458420213</td>
<td><code>0820871A6779686BFD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2343871162790472701</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 = 1439730821458420213</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1439730821458420213 = 1153968341 * 1247634593</code></p>
<pre><code>p = 1153968341
q = 1247634593</code></pre>
<pre><code>pq = 2343871162790472701</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2343871162790472701 = 1278686611 * 1833030191</code></p>
<pre><code>p = 1278686611
q = 1833030191</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 13 FA F3 8D D9 35 E1 F5 00 00 00
0010 | 04 44 C8 28 D5 00 00 00 04 4A 5D 64 A1 00 00 00
0020 | 98 6F 64 A7 DD EA 29 51 4E 0E 8D 15 D6 F2 76 D2
0030 | A5 02 24 04 0E D5 17 4D F5 66 64 9C 15 AE 15 24
0040 | D0 D6 F4 71 6B F2 EB 1F 40 0D E3 11 C7 A9 5B 06
0050 | E0 DC 0A 00 A1 9C B8 A1 AC 6F 73 3C E8 DB 3E 4F
<pre><code>0000 | 95 5F F5 A9 08 20 87 1A 67 79 68 6B FD 00 00 00
0010 | 04 4C 37 35 93 00 00 00 04 6D 41 D2 2F 00 00 00
0020 | AF 92 71 33 BF B0 31 EB 62 FE BB E2 C8 9D 60 7C
0030 | 63 96 F1 1C B0 17 84 0F A1 06 5D D9 F3 08 DE 8F
0040 | AF 07 B0 E4 A8 B3 FD A6 56 42 5F 66 08 91 11 81
0050 | 4B 52 49 AF B7 9D 3A 6C D7 94 E3 B5 1F 83 3C 85
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 = 1247634593</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0813FAF38DD935E1F5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1439730821458420213</td>
<td><code>0820871A6779686BFD000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2343871162790472701</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>0444C828D5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1153968341</td>
<td><code>044C373593000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1278686611</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>044A5D64A1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1247634593</td>
<td><code>046D41D22F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1833030191</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>986F64A7DDEA29514E0E8D15D6F276D2</code></td>
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>A50224040ED5174DF566649C15AE1524</code></td>
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>D0D6F4716BF2EB1F400DE311C7A95B06</code> <code>E0DC0A00A19CB8A1AC6F733CE8DB3E4F</code></td>
<td><code>AF07B0E4A8B3FDA656425F6608911181</code> <code>4B5249AFB79D3A6CD794E3B51F833C85</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1247634593</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 = 955FF5A90813FAF38DD935E1F50000000444C828D5000000044A5D64A1000000986F64A7DDEA29514E0E8D15D6F276D2A50224040ED5174DF566649C15AE1524D0D6F4716BF2EB1F400DE311C7A95B06E0DC0A00A19CB8A1AC6F733CE8DB3E4F02000000
random_padding_bytes = D7A82E654340BE8EBCE5A3E542BCA740ACD8D1081AA705383236E39CFD0F538AB643964988D5269A5B9C4E3929F6CF83C60C8D46A560E227BD50B7F60449DCD2324FB5A7FCAEAB1068144A9280009D0A16C918350FD5E9C6A8E5AF66</code></pre>
<pre><code>data = 955FF5A90820871A6779686BFD000000044C373593000000046D41D22F000000AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8FAF07B0E4A8B3FDA656425F66089111814B5249AFB79D3A6CD794E3B51F833C8502000000
random_padding_bytes = 904ECC9704579CF9BF3BEB9D73BB49817BE0C56F1B51B2DB7FD8E1FD90C83C277AD7397B35BE0F3B607B19A7475C232F929BE03830BFD739523E074124CE0C218B1E4AB6DEF9BBF2589BD429D072E218912C6781CF779F696684FD2E</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 = 990B0DA1D97893E9E6911475778E7F2B616911D838E11078CB16FB5863F7EED6DFC8FE8B8B76D1FD7A8C25CA3B5CDCD91A8A642891FCFBE6D2B3531AF6B8EF063960F5FE92814FA0CC027C24C26F142FF762AC32690C616D36ABDCA5FE7C37C277E6EA23DC09F1D912F8AF2DBB18B9007EAE21111441DD0C20AACBCF2091C50E5778A2FDD24A5AADF1415BB3753F0B521AD1DCE8E825B100F18E3A593DED86C6FEFC4096733972FBC83969CCACBBEC4A13B57A7A395B56925C823CC5C39CA974D20A7807E0EA9B94E40000893A89CBB9A64C624DF9D005A6505E2B08F581C5ABC226245539971FCE174505A135C80E5B6FD77018DA11BDA529D91E3D35407873</code></pre>
<pre><code>encrypted_data = 7A59D8E5408210928DFA3ABF7D1636575754CFACB3C3E4788EA49DF9519BBBC816F60F7ED4C294C2D72A1E8BC0259EB315DE58F068775890DCC0DA8EE79D900F8677C57EC9BB2FA04FA073BAA502B9356FAD5C8AA70BF66776E11264949853F2887385AA3387E70765C7890DE63704643AC9E4885BC50E160FF298DB7BDA1C64B5F277847BA88F5F0C4DE3E80581C47DAE49A475672D568CCE5819C91D975046816EE81FC72B95079ADCDAF4E09FC6CCF9AC6DA02A230769410F277756AB51659C271A3EB1E00A810AAE6E512DFB0F4B4FF1CAB38DDD1F64D95FC8E5674A357A12AA1BF402F58647EFDC588EC254108E9F7A4E388E98FF8C875A548A2A07E841</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 CC 70 0B 00 67 4B AE 66
0010 | 40 01 00 00 BE E4 12 D7 98 6F 64 A7 DD EA 29 51
0020 | 4E 0E 8D 15 D6 F2 76 D2 A5 02 24 04 0E D5 17 4D
0030 | F5 66 64 9C 15 AE 15 24 04 44 C8 28 D5 00 00 00
0040 | 04 4A 5D 64 A1 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 99 0B 0D A1 D9 78 93 E9 E6 91 14 75
0060 | 77 8E 7F 2B 61 69 11 D8 38 E1 10 78 CB 16 FB 58
0070 | 63 F7 EE D6 DF C8 FE 8B 8B 76 D1 FD 7A 8C 25 CA
0080 | 3B 5C DC D9 1A 8A 64 28 91 FC FB E6 D2 B3 53 1A
0090 | F6 B8 EF 06 39 60 F5 FE 92 81 4F A0 CC 02 7C 24
00A0 | C2 6F 14 2F F7 62 AC 32 69 0C 61 6D 36 AB DC A5
00B0 | FE 7C 37 C2 77 E6 EA 23 DC 09 F1 D9 12 F8 AF 2D
00C0 | BB 18 B9 00 7E AE 21 11 14 41 DD 0C 20 AA CB CF
00D0 | 20 91 C5 0E 57 78 A2 FD D2 4A 5A AD F1 41 5B B3
00E0 | 75 3F 0B 52 1A D1 DC E8 E8 25 B1 00 F1 8E 3A 59
00F0 | 3D ED 86 C6 FE FC 40 96 73 39 72 FB C8 39 69 CC
0100 | AC BB EC 4A 13 B5 7A 7A 39 5B 56 92 5C 82 3C C5
0110 | C3 9C A9 74 D2 0A 78 07 E0 EA 9B 94 E4 00 00 89
0120 | 3A 89 CB B9 A6 4C 62 4D F9 D0 05 A6 50 5E 2B 08
0130 | F5 81 C5 AB C2 26 24 55 39 97 1F CE 17 45 05 A1
0140 | 35 C8 0E 5B 6F D7 70 18 DA 11 BD A5 29 D9 1E 3D
0150 | 35 40 78 73</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 78 99 0C 00 45 50 AE 66
0010 | 40 01 00 00 BE E4 12 D7 AF 92 71 33 BF B0 31 EB
0020 | 62 FE BB E2 C8 9D 60 7C 63 96 F1 1C B0 17 84 0F
0030 | A1 06 5D D9 F3 08 DE 8F 04 4C 37 35 93 00 00 00
0040 | 04 6D 41 D2 2F 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 7A 59 D8 E5 40 82 10 92 8D FA 3A BF
0060 | 7D 16 36 57 57 54 CF AC B3 C3 E4 78 8E A4 9D F9
0070 | 51 9B BB C8 16 F6 0F 7E D4 C2 94 C2 D7 2A 1E 8B
0080 | C0 25 9E B3 15 DE 58 F0 68 77 58 90 DC C0 DA 8E
0090 | E7 9D 90 0F 86 77 C5 7E C9 BB 2F A0 4F A0 73 BA
00A0 | A5 02 B9 35 6F AD 5C 8A A7 0B F6 67 76 E1 12 64
00B0 | 94 98 53 F2 88 73 85 AA 33 87 E7 07 65 C7 89 0D
00C0 | E6 37 04 64 3A C9 E4 88 5B C5 0E 16 0F F2 98 DB
00D0 | 7B DA 1C 64 B5 F2 77 84 7B A8 8F 5F 0C 4D E3 E8
00E0 | 05 81 C4 7D AE 49 A4 75 67 2D 56 8C CE 58 19 C9
00F0 | 1D 97 50 46 81 6E E8 1F C7 2B 95 07 9A DC DA F4
0100 | E0 9F C6 CC F9 AC 6D A0 2A 23 07 69 41 0F 27 77
0110 | 56 AB 51 65 9C 27 1A 3E B1 E0 0A 81 0A AE 6E 51
0120 | 2D FB 0F 4B 4F F1 CA B3 8D DD 1F 64 D9 5F C8 E5
0130 | 67 4A 35 7A 12 AA 1B F4 02 F5 86 47 EF DC 58 8E
0140 | C2 54 10 8E 9F 7A 4E 38 8E 98 FF 8C 87 5A 54 8A
0150 | 2A 07 E8 41</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 = D7A82E654340BE8EBCE5A3E542BCA740ACD8D1081AA705383236E39CF
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>CC700B00674BAE66</code></td>
<td><code>78990C004550AE66</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 = D7A82E654340BE8EBCE5A3E542BCA740ACD8D1081AA705383236E39CF
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>986F64A7DDEA29514E0E8D15D6F276D2</code></td>
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>A50224040ED5174DF566649C15AE1524</code></td>
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>0444C828D5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1153968341</td>
<td><code>044C373593000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1278686611</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>044A5D64A1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1247634593</td>
<td><code>046D41D22F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1833030191</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 = D7A82E654340BE8EBCE5A3E542BCA740ACD8D1081AA705383236E39CF
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE000100990B0DA1D97893E9E6911475</code> <code>778E7F2B616911D838E11078CB16FB58</code> <code>63F7EED6DFC8FE8B8B76D1FD7A8C25CA</code> <code>3B5CDCD91A8A642891FCFBE6D2B3531A</code> <code>F6B8EF063960F5FE92814FA0CC027C24</code> <code>C26F142FF762AC32690C616D36ABDCA5</code> <code>FE7C37C277E6EA23DC09F1D912F8AF2D</code> <code>BB18B9007EAE21111441DD0C20AACBCF</code> <code>2091C50E5778A2FDD24A5AADF1415BB3</code> <code>753F0B521AD1DCE8E825B100F18E3A59</code> <code>3DED86C6FEFC4096733972FBC83969CC</code> <code>ACBBEC4A13B57A7A395B56925C823CC5</code> <code>C39CA974D20A7807E0EA9B94E4000089</code> <code>3A89CBB9A64C624DF9D005A6505E2B08</code> <code>F581C5ABC226245539971FCE174505A1</code> <code>35C80E5B6FD77018DA11BDA529D91E3D</code><br> <code>35407873</code></td>
<td><code>FE0001007A59D8E5408210928DFA3ABF</code> <code>7D1636575754CFACB3C3E4788EA49DF9</code> <code>519BBBC816F60F7ED4C294C2D72A1E8B</code> <code>C0259EB315DE58F068775890DCC0DA8E</code> <code>E79D900F8677C57EC9BB2FA04FA073BA</code> <code>A502B9356FAD5C8AA70BF66776E11264</code> <code>949853F2887385AA3387E70765C7890D</code> <code>E63704643AC9E4885BC50E160FF298DB</code> <code>7BDA1C64B5F277847BA88F5F0C4DE3E8</code> <code>0581C47DAE49A475672D568CCE5819C9</code> <code>1D975046816EE81FC72B95079ADCDAF4</code> <code>E09FC6CCF9AC6DA02A230769410F2777</code> <code>56AB51659C271A3EB1E00A810AAE6E51</code> <code>2DFB0F4B4FF1CAB38DDD1F64D95FC8E5</code> <code>674A357A12AA1BF402F58647EFDC588E</code> <code>C254108E9F7A4E388E98FF8C875A548A</code><br> <code>2A07E841</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = D7A82E654340BE8EBCE5A3E542BCA740ACD8D1081AA705383236E39CF
<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 FC DE 5A 68 4B AE 66
0010 | 84 02 00 00 5C 07 E8 D0 98 6F 64 A7 DD EA 29 51
0020 | 4E 0E 8D 15 D6 F2 76 D2 A5 02 24 04 0E D5 17 4D
0030 | F5 66 64 9C 15 AE 15 24 FE 50 02 00 7C 9C B6 FE
0040 | 47 ED E7 FB C4 2C 21 CD 7E EA D1 01 D0 FE 4B 0B
0050 | 50 89 0C 7C 61 AE 1A 04 E7 B6 67 34 10 3B 89 4E
0060 | 28 80 E1 9D 46 A2 44 52 DD 02 7F 9F E8 BF 41 10
0070 | 3B A2 C4 85 62 62 38 0A 9F CF 1D 86 11 6E 61 20
0080 | E5 90 BC CB BF CA D8 83 E3 2D 6A 57 CA 90 A0 60
0090 | 04 E3 6D FF E9 B8 80 F8 F1 EE 83 F6 6A 66 B0 A2
00A0 | 36 23 66 E8 B7 B7 AC C3 AF 3B 21 15 C1 A5 5C C3
00B0 | 02 0C 86 D1 39 69 9D A3 E2 83 A3 62 5B D8 B1 D4
00C0 | AE 4A 16 56 F0 C6 40 F2 A7 16 18 40 A4 0F C8 D6
00D0 | EF 99 ED 9F 96 4D FF 0D 6C 33 6B DE 1B B2 97 F2
00E0 | 52 17 86 3F 25 53 9B B7 75 76 02 B5 9D F3 4D 50
00F0 | 14 92 0F CF E2 82 20 57 F2 09 FC 60 65 F1 FD 53
0100 | 23 A8 28 9C D8 60 A8 48 71 28 53 25 1E 79 FE B8
0110 | F6 D5 47 44 57 87 29 6E 89 C0 DE 68 49 2A 2F 8B
0120 | BB DB 8D 34 32 D4 D6 AD AA 94 A4 2B 45 13 28 9D
0130 | BC 67 D6 FF 94 47 DB 4D E4 EF D8 BA 85 68 B6 DF
0140 | 1B D8 C1 60 27 7B 20 FB A3 80 00 7E D0 D9 B1 FC
0150 | 61 DF 36 96 77 A5 21 2C 88 E1 E5 08 D1 BF 3B 0C
0160 | 53 00 E4 B6 FE C0 AC AF 46 A9 89 E6 32 06 33 B9
0170 | E1 53 4A 22 8A 5A AA B9 1E 1F D0 8C 52 87 37 6A
0180 | 3E 5F D2 81 52 B2 04 4C 9A AE 2A 87 86 BB A5 90
0190 | 08 C0 4A CF 99 02 00 4B EA F6 77 67 40 AC C6 51
01A0 | 7A 6E FC 21 02 FF 6F 69 11 B0 83 3C 94 6D 91 9C
01B0 | DF 9D AF 04 D7 30 9F D5 0C 9C F3 3B 2B E8 35 1F
01C0 | 18 FD 99 4D F5 EA D2 20 44 EB F6 55 DC 35 DE 98
01D0 | 8E 0B 93 FC D3 EB 21 63 F6 DB 6D 45 75 BA D4 14
01E0 | 8F C8 5E B7 AA E2 C1 B8 21 1A 2D 5F 75 BB 46 1D
01F0 | 38 BD 8A 1F 42 23 34 3B 3B 62 66 5F 28 9C 5A 89
0200 | 12 59 46 56 D9 54 FD BC 97 33 67 F6 17 E9 D7 C0
0210 | B6 6F 3C DE 69 2C DE B3 A7 3E 0C FA 13 C9 CF EC
0220 | 1A EC C1 6E 91 2A 4B 2F 37 8E E0 5A AA 04 CC BE
0230 | 10 AB 8C 7D 6C 0D 72 26 8A 02 D0 F6 1F 02 F0 15
0240 | 68 92 69 81 4B 96 60 8B 27 57 85 E8 4E D9 47 08
0250 | 1D 74 85 DB 60 2E 8B CC 9A 0A A7 02 A3 24 23 B1
0260 | 6C 9E F1 37 6D C6 FC AC 77 A3 F6 9A C1 9A F2 51
0270 | 33 C1 A1 19 89 EF 7C D8 2E 41 26 F1 37 40 06 11
0280 | 96 3F 9E C7 AE 6A C5 BB 89 2E 5F 1D</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 AC 2B C4 45 50 AE 66
0010 | B0 02 00 00 5C 07 E8 D0 AF 92 71 33 BF B0 31 EB
0020 | 62 FE BB E2 C8 9D 60 7C 63 96 F1 1C B0 17 84 0F
0030 | A1 06 5D D9 F3 08 DE 8F FE 50 02 00 19 EC 16 F8
0040 | 80 DB 0B 8F 17 7A 38 68 C4 55 9E 6F 5E AA B5 BB
0050 | 6B 2A 02 74 45 44 F9 D7 4E DA CE 3C 51 22 2E 6B
0060 | 87 90 F1 16 00 49 82 58 B4 F3 40 45 45 E5 E5 81
0070 | 6C 29 7C 81 61 3D 22 F0 F4 36 1E 70 0D 57 4D 44
0080 | 48 78 04 C1 86 46 33 92 F5 07 32 E9 F3 03 01 A1
0090 | F9 37 9C F3 FB 6C 47 03 89 C0 BF 07 94 F1 E7 0B
00A0 | AF 34 B4 F2 0C 90 9B 2E 43 99 AF 12 46 A9 F0 C0
00B0 | BD DC E9 BF B9 8D A2 37 28 F1 DD DF C4 BC 7A 32
00C0 | C1 1F 82 E4 EB C2 21 AB 9E 7B 8A E8 DA 16 65 57
00D0 | DF 63 31 68 37 6F E5 7A 96 65 A8 4C 14 33 9B 90
00E0 | 7E DE 3C 75 C0 B8 55 98 B2 8B B4 30 DC 58 EF B5
00F0 | 06 0B A7 C9 8A F5 0F 42 E6 25 B2 4D F4 AB 65 EF
0100 | 7A D8 89 11 0D 91 47 FC 6C 8F 67 D5 BD 4C 74 00
0110 | BF 9F 99 4F 9F 77 6D 39 A4 59 99 BE 9F F3 7B 18
0120 | B7 52 59 76 C0 C6 0D 5E 1D F8 95 D5 18 09 44 AC
0130 | A9 64 8B 2E BA 57 54 44 86 86 DF A7 E6 FB FA 6F
0140 | 7B 3F 7B 50 D3 48 68 11 19 D8 99 A4 60 91 CF 5A
0150 | E8 6A 00 1D 04 BF 2C CF 61 2E 8D 43 4E C4 2B 96
0160 | 20 4B BF B4 42 C3 30 E3 21 7E D9 CE 03 80 E8 EB
0170 | 30 F2 63 F0 2F 26 1C 7C E5 AB 4B 0D 1D E1 EC DF
0180 | 1A 8B 11 17 32 D7 10 4E EF 8A 7A C6 AF 7E 46 E8
0190 | 4B E5 E2 3D FD ED DA BC E8 1E C6 98 B1 A5 76 B9
01A0 | 15 79 59 1D CD 37 33 AB AC 42 00 D2 0F AF D6 9A
01B0 | D3 50 55 18 63 54 C5 4E 57 60 7C 15 37 39 7F A6
01C0 | 11 55 B8 DF 57 FF 9F C2 F3 2E 45 7F 42 42 9B 48
01D0 | E5 8C C4 F0 07 BF 63 3A DC DE AE 69 1A 9A 89 E2
01E0 | 28 0C D3 E4 0B E0 4A 30 7D 3E 81 3D 07 A6 18 4A
01F0 | 7F 7A C6 D1 5E 9C 29 11 00 7D B4 89 78 C3 8B 6A
0200 | C7 CD CF E8 6D 7E F4 3A 91 33 07 7E 62 6D 8D 58
0210 | 76 87 2C 70 29 B6 3C 99 C2 E5 61 5D 28 4A 8F 0C
0220 | F9 7F 81 D2 BC 89 F5 26 4F ED 1C 67 58 A6 6A FA
0230 | D8 CB 6E 9A 24 58 FA A9 15 D0 C3 29 5D 6F 5C 43
0240 | 2B 2C 25 B2 4F 95 6C 7E 24 8C E5 33 54 2F A2 CA
0250 | D4 C8 F3 31 FC 35 B2 FF EE 02 69 2B 34 AD 1F 9F
0260 | 59 55 45 B3 7D C0 66 F1 16 F7 55 CA FC F8 2B DC
0270 | 2B E4 10 2C 5A 04 2C 1C 78 5B C2 C2 D3 D9 01 19
0280 | 0A A7 E9 2A 8A 8A E7 60 86 EF 43 D5</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 = D7A82E654340BE8EBCE5A3E542BCA740ACD8D1081AA705383236E39CF
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01FCDE5A684BAE66</code></td>
<td><code>01AC2BC44550AE66</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>84020000</code> (644 in decimal)</td>
<td><code>B0020000</code> (688 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = D7A82E654340BE8EBCE5A3E542BCA740ACD8D1081AA705383236E39CF
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>986F64A7DDEA29514E0E8D15D6F276D2</code></td>
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>A50224040ED5174DF566649C15AE1524</code></td>
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002007C9CB6FE47EDE7FBC42C21CD</code> <code>7EEAD101D0FE4B0B50890C7C61AE1A04</code> <code>E7B66734103B894E2880E19D46A24452</code> <code>DD027F9FE8BF41103BA2C4856262380A</code> <code>9FCF1D86116E6120E590BCCBBFCAD883</code> <code>E32D6A57CA90A06004E36DFFE9B880F8</code> <code>F1EE83F66A66B0A2362366E8B7B7ACC3</code> <code>AF3B2115C1A55CC3020C86D139699DA3</code> <code>E283A3625BD8B1D4AE4A1656F0C640F2</code> <code>A7161840A40FC8D6EF99ED9F964DFF0D</code> <code>6C336BDE1BB297F25217863F25539BB7</code> <code>757602B59DF34D5014920FCFE2822057</code> <code>F209FC6065F1FD5323A8289CD860A848</code> <code>712853251E79FEB8F6D547445787296E</code> <code>89C0DE68492A2F8BBBDB8D3432D4D6AD</code> <code>AA94A42B4513289DBC67D6FF9447DB4D</code> <code>E4EFD8BA8568B6DF1BD8C160277B20FB</code> <code>A380007ED0D9B1FC61DF369677A5212C</code> <code>88E1E508D1BF3B0C5300E4B6FEC0ACAF</code> <code>46A989E6320633B9E1534A228A5AAAB9</code> <code>1E1FD08C5287376A3E5FD28152B2044C</code> <code>9AAE2A8786BBA59008C04ACF9902004B</code> <code>EAF6776740ACC6517A6EFC2102FF6F69</code> <code>11B0833C946D919CDF9DAF04D7309FD5</code> <code>0C9CF33B2BE8351F18FD994DF5EAD220</code> <code>44EBF655DC35DE988E0B93FCD3EB2163</code> <code>F6DB6D4575BAD4148FC85EB7AAE2C1B8</code> <code>211A2D5F75BB461D38BD8A1F4223343B</code> <code>3B62665F289C5A8912594656D954FDBC</code> <code>973367F617E9D7C0B66F3CDE692CDEB3</code> <code>A73E0CFA13C9CFEC1AECC16E912A4B2F</code> <code>378EE05AAA04CCBE10AB8C7D6C0D7226</code> <code>8A02D0F61F02F015689269814B96608B</code> <code>275785E84ED947081D7485DB602E8BCC</code> <code>9A0AA702A32423B16C9EF1376DC6FCAC</code> <code>77A3F69AC19AF25133C1A11989EF7CD8</code> <code>2E4126F137400611963F9EC7AE6AC5BB</code><br> <code>892E5F1D</code></td>
<td><code>FE50020019EC16F880DB0B8F177A3868</code> <code>C4559E6F5EAAB5BB6B2A02744544F9D7</code> <code>4EDACE3C51222E6B8790F11600498258</code> <code>B4F3404545E5E5816C297C81613D22F0</code> <code>F4361E700D574D44487804C186463392</code> <code>F50732E9F30301A1F9379CF3FB6C4703</code> <code>89C0BF0794F1E70BAF34B4F20C909B2E</code> <code>4399AF1246A9F0C0BDDCE9BFB98DA237</code> <code>28F1DDDFC4BC7A32C11F82E4EBC221AB</code> <code>9E7B8AE8DA166557DF633168376FE57A</code> <code>9665A84C14339B907EDE3C75C0B85598</code> <code>B28BB430DC58EFB5060BA7C98AF50F42</code> <code>E625B24DF4AB65EF7AD889110D9147FC</code> <code>6C8F67D5BD4C7400BF9F994F9F776D39</code> <code>A45999BE9FF37B18B7525976C0C60D5E</code> <code>1DF895D5180944ACA9648B2EBA575444</code> <code>8686DFA7E6FBFA6F7B3F7B50D3486811</code> <code>19D899A46091CF5AE86A001D04BF2CCF</code> <code>612E8D434EC42B96204BBFB442C330E3</code> <code>217ED9CE0380E8EB30F263F02F261C7C</code> <code>E5AB4B0D1DE1ECDF1A8B111732D7104E</code> <code>EF8A7AC6AF7E46E84BE5E23DFDEDDABC</code> <code>E81EC698B1A576B91579591DCD3733AB</code> <code>AC4200D20FAFD69AD35055186354C54E</code> <code>57607C1537397FA61155B8DF57FF9FC2</code> <code>F32E457F42429B48E58CC4F007BF633A</code> <code>DCDEAE691A9A89E2280CD3E40BE04A30</code> <code>7D3E813D07A6184A7F7AC6D15E9C2911</code> <code>007DB48978C38B6AC7CDCFE86D7EF43A</code> <code>9133077E626D8D5876872C7029B63C99</code> <code>C2E5615D284A8F0CF97F81D2BC89F526</code> <code>4FED1C6758A66AFAD8CB6E9A2458FAA9</code> <code>15D0C3295D6F5C432B2C25B24F956C7E</code> <code>248CE533542FA2CAD4C8F331FC35B2FF</code> <code>EE02692B34AD1F9F595545B37DC066F1</code> <code>16F755CAFCF82BDC2BE4102C5A042C1C</code> <code>785BC2C2D3D901190AA7E92A8A8AE760</code><br> <code>86EF43D5</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = D7A82E654340BE8EBCE5A3E542BCA740ACD8D1081AA705383236E39CF
<!-- 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 = 7C9CB6FE47EDE7FBC42C21CD7EEAD101D0FE4B0B50890C7C61AE1A04E7B66734103B894E2880E19D46A24452DD027F9FE8BF41103BA2C4856262380A9FCF1D86116E6120E590BCCBBFCAD883E32D6A57CA90A06004E36DFFE9B880F8F1EE83F66A66B0A2362366E8B7B7ACC3AF3B2115C1A55CC3020C86D139699DA3E283A3625BD8B1D4AE4A1656F0C640F2A7161840A40FC8D6EF99ED9F964DFF0D6C336BDE1BB297F25217863F25539BB7757602B59DF34D5014920FCFE2822057F209FC6065F1FD5323A8289CD860A848712853251E79FEB8F6D547445787296E89C0DE68492A2F8BBBDB8D3432D4D6ADAA94A42B4513289DBC67D6FF9447DB4DE4EFD8BA8568B6DF1BD8C160277B20FBA380007ED0D9B1FC61DF369677A5212C88E1E508D1BF3B0C5300E4B6FEC0ACAF46A989E6320633B9E1534A228A5AAAB91E1FD08C5287376A3E5FD28152B2044C9AAE2A8786BBA59008C04ACF9902004BEAF6776740ACC6517A6EFC2102FF6F6911B0833C946D919CDF9DAF04D7309FD50C9CF33B2BE8351F18FD994DF5EAD22044EBF655DC35DE988E0B93FCD3EB2163F6DB6D4575BAD4148FC85EB7AAE2C1B8211A2D5F75BB461D38BD8A1F4223343B3B62665F289C5A8912594656D954FDBC973367F617E9D7C0B66F3CDE692CDEB3A73E0CFA13C9CFEC1AECC16E912A4B2F378EE05AAA04CCBE10AB8C7D6C0D72268A02D0F61F02F015689269814B96608B275785E84ED947081D7485DB602E8BCC9A0AA702A32423B16C9EF1376DC6FCAC77A3F69AC19AF25133C1A11989EF7CD82E4126F137400611963F9EC7AE6AC5BB892E5F1D
tmp_aes_key = A44135AA9E8C2BAC86949B14ECA5F27C08B11F0C16B920282C852BF645376715
tmp_aes_iv = FF950162823557628C3C6586D31EC8A3C0A7DDE6AFF79F993B46F855D0D6F471</code></pre>
<pre><code>encrypted_answer = 19EC16F880DB0B8F177A3868C4559E6F5EAAB5BB6B2A02744544F9D74EDACE3C51222E6B8790F11600498258B4F3404545E5E5816C297C81613D22F0F4361E700D574D44487804C186463392F50732E9F30301A1F9379CF3FB6C470389C0BF0794F1E70BAF34B4F20C909B2E4399AF1246A9F0C0BDDCE9BFB98DA23728F1DDDFC4BC7A32C11F82E4EBC221AB9E7B8AE8DA166557DF633168376FE57A9665A84C14339B907EDE3C75C0B85598B28BB430DC58EFB5060BA7C98AF50F42E625B24DF4AB65EF7AD889110D9147FC6C8F67D5BD4C7400BF9F994F9F776D39A45999BE9FF37B18B7525976C0C60D5E1DF895D5180944ACA9648B2EBA5754448686DFA7E6FBFA6F7B3F7B50D348681119D899A46091CF5AE86A001D04BF2CCF612E8D434EC42B96204BBFB442C330E3217ED9CE0380E8EB30F263F02F261C7CE5AB4B0D1DE1ECDF1A8B111732D7104EEF8A7AC6AF7E46E84BE5E23DFDEDDABCE81EC698B1A576B91579591DCD3733ABAC4200D20FAFD69AD35055186354C54E57607C1537397FA61155B8DF57FF9FC2F32E457F42429B48E58CC4F007BF633ADCDEAE691A9A89E2280CD3E40BE04A307D3E813D07A6184A7F7AC6D15E9C2911007DB48978C38B6AC7CDCFE86D7EF43A9133077E626D8D5876872C7029B63C99C2E5615D284A8F0CF97F81D2BC89F5264FED1C6758A66AFAD8CB6E9A2458FAA915D0C3295D6F5C432B2C25B24F956C7E248CE533542FA2CAD4C8F331FC35B2FFEE02692B34AD1F9F595545B37DC066F116F755CAFCF82BDC2BE4102C5A042C1C785BC2C2D3D901190AA7E92A8A8AE76086EF43D5
tmp_aes_key = B95F44958D683B3A8A09C088941CCC6A5CD73B89A57E9BE072534FBA65DF05C2
tmp_aes_iv = 3AA4C62218DE342CE601730DA19A89BAE878CFB77912FF7AC45C512CAF07B0E4</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 6701F663E989B85A8BDDBAFD97757F4F38A074E5BA0D89B5986F64A7DDEA29514E0E8D15D6F276D2A50224040ED5174DF566649C15AE152403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002BBAA01F68318E1CB4DCF61B36930C77E7AB021C9B1B06E42CAB9C1561E30DE1156D5B5504B7B558CFC9A4FDDF61D78AB43562F243CD0791D9BD1E1FB48F5854C42D716EDC49D047E52621FDC447B165DAFE7FC93F8CA53D333686E1170893952A8278901617796656E138CCB3C4FFB7396DF8D730661456361D4B36DBD9A3253A051160B84E3643EBABDC93C1A2975B0BA06DEBA057A9F06279059486CC0726CA7FA8FFFF941035512A063ADD2AEE7839DB9F318B23ADC1FF8A0F1CBFB9EC19C5022721A15713DC05B119EA10C3D4B99FEFCDCFD3871F7949528F60F44529A03B5241E91589610C755FD3F311EB70706A79A799EE65386D43B9BB451A9E507C684BAE6677B14F7FD21E2F51
answer = BA0D89B5986F64A7DDEA29514E0E8D15D6F276D2A50224040ED5174DF566649C15AE152403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002BBAA01F68318E1CB4DCF61B36930C77E7AB021C9B1B06E42CAB9C1561E30DE1156D5B5504B7B558CFC9A4FDDF61D78AB43562F243CD0791D9BD1E1FB48F5854C42D716EDC49D047E52621FDC447B165DAFE7FC93F8CA53D333686E1170893952A8278901617796656E138CCB3C4FFB7396DF8D730661456361D4B36DBD9A3253A051160B84E3643EBABDC93C1A2975B0BA06DEBA057A9F06279059486CC0726CA7FA8FFFF941035512A063ADD2AEE7839DB9F318B23ADC1FF8A0F1CBFB9EC19C5022721A15713DC05B119EA10C3D4B99FEFCDCFD3871F7949528F60F44529A03B5241E91589610C755FD3F311EB70706A79A799EE65386D43B9BB451A9E507C684BAE6677B14F7FD21E2F51</code></pre>
<pre><code>answer_with_hash = 19F30D25A28063FD4B727509378CEBF50978FBC6BA0D89B5AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8F03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004F88F00B50A5BB7C2A5A99BC577C9F998C46963E3591827E8A2C60D4D4D0E475985663FE30D7593FF91121E8AB3FFC5000D1CD57766FD45AA8AA99217D915AA398947080CAF43CCF0BD856B2C0F95D4EF7E48E842B55D710483A155462CC1A40EE1915FA67246D49AA39D56F4736CE16FEE19657DFA49582FDB5871757FA89B6A35AC1126F46BA1915E156EDD78FF80914C01466F34D158A9D2CEA9E3F6A27B8369D10FFACE333D67987507CEA9EC8F9638749E14A09F9F315D20E96C1FC2158C2C16615A8FB18ED7D29F3C17C3FB8CAA09415CBAFA81D34C11761308A9DA00EF90C638A8727E1EB182BE4F0F86C0F575A2B74F78443828C905348F50DF799FE4550AE662C71D3F58C74E5FC
answer = BA0D89B5AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8F03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004F88F00B50A5BB7C2A5A99BC577C9F998C46963E3591827E8A2C60D4D4D0E475985663FE30D7593FF91121E8AB3FFC5000D1CD57766FD45AA8AA99217D915AA398947080CAF43CCF0BD856B2C0F95D4EF7E48E842B55D710483A155462CC1A40EE1915FA67246D49AA39D56F4736CE16FEE19657DFA49582FDB5871757FA89B6A35AC1126F46BA1915E156EDD78FF80914C01466F34D158A9D2CEA9E3F6A27B8369D10FFACE333D67987507CEA9EC8F9638749E14A09F9F315D20E96C1FC2158C2C16615A8FB18ED7D29F3C17C3FB8CAA09415CBAFA81D34C11761308A9DA00EF90C638A8727E1EB182BE4F0F86C0F575A2B74F78443828C905348F50DF799FE4550AE662C71D3F58C74E5FC</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 98 6F 64 A7 DD EA 29 51 4E 0E 8D 15
0010 | D6 F2 76 D2 A5 02 24 04 0E D5 17 4D F5 66 64 9C
0020 | 15 AE 15 24 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 AF 92 71 33 BF B0 31 EB 62 FE BB E2
0010 | C8 9D 60 7C 63 96 F1 1C B0 17 84 0F A1 06 5D D9
0020 | F3 08 DE 8F 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 = BA0D89B5986F64A7DDEA29514E0E8D15D6F276D2A50224040ED5174DF566649C15AE152
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 | 2B BA A0 1F 68 31 8E 1C B4 DC F6 1B 36 93 0C 77
0140 | E7 AB 02 1C 9B 1B 06 E4 2C AB 9C 15 61 E3 0D E1
0150 | 15 6D 5B 55 04 B7 B5 58 CF C9 A4 FD DF 61 D7 8A
0160 | B4 35 62 F2 43 CD 07 91 D9 BD 1E 1F B4 8F 58 54
0170 | C4 2D 71 6E DC 49 D0 47 E5 26 21 FD C4 47 B1 65
0180 | DA FE 7F C9 3F 8C A5 3D 33 36 86 E1 17 08 93 95
0190 | 2A 82 78 90 16 17 79 66 56 E1 38 CC B3 C4 FF B7
01A0 | 39 6D F8 D7 30 66 14 56 36 1D 4B 36 DB D9 A3 25
01B0 | 3A 05 11 60 B8 4E 36 43 EB AB DC 93 C1 A2 97 5B
01C0 | 0B A0 6D EB A0 57 A9 F0 62 79 05 94 86 CC 07 26
01D0 | CA 7F A8 FF FF 94 10 35 51 2A 06 3A DD 2A EE 78
01E0 | 39 DB 9F 31 8B 23 AD C1 FF 8A 0F 1C BF B9 EC 19
01F0 | C5 02 27 21 A1 57 13 DC 05 B1 19 EA 10 C3 D4 B9
0200 | 9F EF CD CF D3 87 1F 79 49 52 8F 60 F4 45 29 A0
0210 | 3B 52 41 E9 15 89 61 0C 75 5F D3 F3 11 EB 70 70
0220 | 6A 79 A7 99 EE 65 38 6D 43 B9 BB 45 1A 9E 50 7C
0230 | 68 4B AE 66</code></pre>
0130 | 4F 88 F0 0B 50 A5 BB 7C 2A 5A 99 BC 57 7C 9F 99
0140 | 8C 46 96 3E 35 91 82 7E 8A 2C 60 D4 D4 D0 E4 75
0150 | 98 56 63 FE 30 D7 59 3F F9 11 21 E8 AB 3F FC 50
0160 | 00 D1 CD 57 76 6F D4 5A A8 AA 99 21 7D 91 5A A3
0170 | 98 94 70 80 CA F4 3C CF 0B D8 56 B2 C0 F9 5D 4E
0180 | F7 E4 8E 84 2B 55 D7 10 48 3A 15 54 62 CC 1A 40
0190 | EE 19 15 FA 67 24 6D 49 AA 39 D5 6F 47 36 CE 16
01A0 | FE E1 96 57 DF A4 95 82 FD B5 87 17 57 FA 89 B6
01B0 | A3 5A C1 12 6F 46 BA 19 15 E1 56 ED D7 8F F8 09
01C0 | 14 C0 14 66 F3 4D 15 8A 9D 2C EA 9E 3F 6A 27 B8
01D0 | 36 9D 10 FF AC E3 33 D6 79 87 50 7C EA 9E C8 F9
01E0 | 63 87 49 E1 4A 09 F9 F3 15 D2 0E 96 C1 FC 21 58
01F0 | C2 C1 66 15 A8 FB 18 ED 7D 29 F3 C1 7C 3F B8 CA
0200 | A0 94 15 CB AF A8 1D 34 C1 17 61 30 8A 9D A0 0E
0210 | F9 0C 63 8A 87 27 E1 EB 18 2B E4 F0 F8 6C 0F 57
0220 | 5A 2B 74 F7 84 43 82 8C 90 53 48 F5 0D F7 99 FE
0230 | 45 50 AE 66</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B5986F64A7DDEA29514E0E8D15D6F276D2A50224040ED5174DF566649C15AE152
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>986F64A7DDEA29514E0E8D15D6F276D2</code></td>
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>A50224040ED5174DF566649C15AE1524</code></td>
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B5986F64A7DDEA29514E0E8D15D6F276D2A50224040ED5174DF566649C15AE152
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001002BBAA01F68318E1CB4DCF61B</code> <code>36930C77E7AB021C9B1B06E42CAB9C15</code> <code>61E30DE1156D5B5504B7B558CFC9A4FD</code> <code>DF61D78AB43562F243CD0791D9BD1E1F</code> <code>B48F5854C42D716EDC49D047E52621FD</code> <code>C447B165DAFE7FC93F8CA53D333686E1</code> <code>170893952A8278901617796656E138CC</code> <code>B3C4FFB7396DF8D730661456361D4B36</code> <code>DBD9A3253A051160B84E3643EBABDC93</code> <code>C1A2975B0BA06DEBA057A9F062790594</code> <code>86CC0726CA7FA8FFFF941035512A063A</code> <code>DD2AEE7839DB9F318B23ADC1FF8A0F1C</code> <code>BFB9EC19C5022721A15713DC05B119EA</code> <code>10C3D4B99FEFCDCFD3871F7949528F60</code> <code>F44529A03B5241E91589610C755FD3F3</code> <code>11EB70706A79A799EE65386D43B9BB45</code><br> <code>1A9E507C</code></td>
<td><code>FE0001004F88F00B50A5BB7C2A5A99BC</code> <code>577C9F998C46963E3591827E8A2C60D4</code> <code>D4D0E475985663FE30D7593FF91121E8</code> <code>AB3FFC5000D1CD57766FD45AA8AA9921</code> <code>7D915AA398947080CAF43CCF0BD856B2</code> <code>C0F95D4EF7E48E842B55D710483A1554</code> <code>62CC1A40EE1915FA67246D49AA39D56F</code> <code>4736CE16FEE19657DFA49582FDB58717</code> <code>57FA89B6A35AC1126F46BA1915E156ED</code> <code>D78FF80914C01466F34D158A9D2CEA9E</code> <code>3F6A27B8369D10FFACE333D67987507C</code> <code>EA9EC8F9638749E14A09F9F315D20E96</code> <code>C1FC2158C2C16615A8FB18ED7D29F3C1</code> <code>7C3FB8CAA09415CBAFA81D34C1176130</code> <code>8A9DA00EF90C638A8727E1EB182BE4F0</code> <code>F86C0F575A2B74F78443828C905348F5</code><br> <code>0DF799FE</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>684BAE66</code> (1722698600 in decimal)</td>
<td><code>4550AE66</code> (1722699845 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B5986F64A7DDEA29514E0E8D15D6F276D2A50224040ED5174DF566649C15AE152
<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 = 54DDBA8398983CC2DBBAA8348BA456295ECA6453F7BDF4AC05542AA16020129894833FACC43208368BB560F1957CAD964DA1E8588B577D2EA0FA435E5BE052C2FF16E31F5AC25C2C288A99ED9BA16A48351018CF24FDAF1CDE50D8B9587CEF1C765DD3A84EB04A3B31022D16BDF9AAFC7C2AA6A284F7A20EF1D59670E2EA1C39F48AD5A9CD87DA28CC9CA2CDBA1D851952AD2527A5C58AB5B45A2448D126AEE29FD4F1D6465C4DA1BCE5E243B943D87B75F1BC2EB6FE79FD45F0B28E57B63D196A6E7CF787F8E9E8411282AC5C4170C731318C365A595AA8CAF91B297D335A6D23B76A74F83D8FD91F3C48613724DDFABDFA72ABF7DFC5F20038673F6CC032CC</code></pre>
<pre><code>b = 9E0F661F51CFCEA725204E0BC8EE07434281C45F0829057E6B54C35954FD88DCFB15191139F03D023A587E5AD19D69CCC714F3B7A45F60DD9470E0E3323ED3C7DEA460C195F2BF4658FDF65581C9252B8A7F2B18E3B5637CB280D90D233B0B898C1FA41106C99D19AA0D9E618329D167D26252BD31F67AB6955B2523242E093709116FB6559051CA49610442415D61DBCE23DA79D03222B7CDB63F6D8602C832F45EF55A910599232FBCF42E6B6CDC5B1A4EC272BC6C4AF08CEEC79E6066AD74DB5017FE805DADBB81736F9F6689A13549449C89136BFAA5E1617C0B5A3CA4BAF6D81015EC69E0FE772E1882189F82D795E7FF870D90102EB149939AB15925F0</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 = 81FAC94270A6CDD90B9AB63F17C7CC192D2CD65F31DCB5A18EC18F206956282A3B2D048F5A9C32FC10AE538D16D12649AE840447AFD19802452BCA28C0447389C063E9E79551B36FAE0EA72E39FDC302412C3FC293DA658B36BC435411793A32CE9125BD310FB517DC59E38EAD664965B900564B7B5EA328E46A132BA637C65B963F5452092FC1121FF8C6C2B9C9CC12FB72D5CB99CD8CDC703CE687715FB6ADCF753FFBAE27956DCD1BB424BCB026D259060C66787A71EFB3BCD566BF6832CC363495083BC72657C5A756D8748464B8E28E8A01CC8C962B06FF234DA3051E9E4824BDCDB7071B2A43E55E663B5A9A9AD4472997F696566B50F4B22516B4082E</code></pre>
<pre><code>g_b = 6EC768DEBBCAFBBEED730BC12F128C848FFAD34D06C4D58D9649F65C797554262AFDDD09A07B03912499D8AF66CB520770DF2B64FDAB3EE527145ED356FE40609E889178EC31195A705A08A21707002B5EA34504805B4072D1165B33A9E2A4B568F922BC1D0B8CB8F4DBDC350939417AE18ADA16CF24B9C221F20BF35F50964D39524F0D73F69BAE714CAB70138C0FC5ACD587EB27049ECC6E46CDBF47AF9EA0B46F5AC839661F7BF27DA27DA24339A0F5FF97F4FC46ACFEA7A64079D6215AC5F85B5AB1F0C69FCF14DCB59E41C01757DE2999020E56143AF7BF8344C58C8F88B1DF349F6025765D6C15ED449D6ABB61E2A0B23D4A56DF1E6A1BFAA2F1337D72</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 98 6F 64 A7 DD EA 29 51 4E 0E 8D 15
0010 | D6 F2 76 D2 A5 02 24 04 0E D5 17 4D F5 66 64 9C
0020 | 15 AE 15 24 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 81 FA C9 42 70 A6 CD D9 0B 9A B6 3F 17 C7 CC 19
0040 | 2D 2C D6 5F 31 DC B5 A1 8E C1 8F 20 69 56 28 2A
0050 | 3B 2D 04 8F 5A 9C 32 FC 10 AE 53 8D 16 D1 26 49
0060 | AE 84 04 47 AF D1 98 02 45 2B CA 28 C0 44 73 89
0070 | C0 63 E9 E7 95 51 B3 6F AE 0E A7 2E 39 FD C3 02
0080 | 41 2C 3F C2 93 DA 65 8B 36 BC 43 54 11 79 3A 32
0090 | CE 91 25 BD 31 0F B5 17 DC 59 E3 8E AD 66 49 65
00A0 | B9 00 56 4B 7B 5E A3 28 E4 6A 13 2B A6 37 C6 5B
00B0 | 96 3F 54 52 09 2F C1 12 1F F8 C6 C2 B9 C9 CC 12
00C0 | FB 72 D5 CB 99 CD 8C DC 70 3C E6 87 71 5F B6 AD
00D0 | CF 75 3F FB AE 27 95 6D CD 1B B4 24 BC B0 26 D2
00E0 | 59 06 0C 66 78 7A 71 EF B3 BC D5 66 BF 68 32 CC
00F0 | 36 34 95 08 3B C7 26 57 C5 A7 56 D8 74 84 64 B8
0100 | E2 8E 8A 01 CC 8C 96 2B 06 FF 23 4D A3 05 1E 9E
0110 | 48 24 BD CD B7 07 1B 2A 43 E5 5E 66 3B 5A 9A 9A
0120 | D4 47 29 97 F6 96 56 6B 50 F4 B2 25 16 B4 08 2E</code></pre>
<pre><code>0000 | 54 B6 43 66 AF 92 71 33 BF B0 31 EB 62 FE BB E2
0010 | C8 9D 60 7C 63 96 F1 1C B0 17 84 0F A1 06 5D D9
0020 | F3 08 DE 8F 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 6E C7 68 DE BB CA FB BE ED 73 0B C1 2F 12 8C 84
0040 | 8F FA D3 4D 06 C4 D5 8D 96 49 F6 5C 79 75 54 26
0050 | 2A FD DD 09 A0 7B 03 91 24 99 D8 AF 66 CB 52 07
0060 | 70 DF 2B 64 FD AB 3E E5 27 14 5E D3 56 FE 40 60
0070 | 9E 88 91 78 EC 31 19 5A 70 5A 08 A2 17 07 00 2B
0080 | 5E A3 45 04 80 5B 40 72 D1 16 5B 33 A9 E2 A4 B5
0090 | 68 F9 22 BC 1D 0B 8C B8 F4 DB DC 35 09 39 41 7A
00A0 | E1 8A DA 16 CF 24 B9 C2 21 F2 0B F3 5F 50 96 4D
00B0 | 39 52 4F 0D 73 F6 9B AE 71 4C AB 70 13 8C 0F C5
00C0 | AC D5 87 EB 27 04 9E CC 6E 46 CD BF 47 AF 9E A0
00D0 | B4 6F 5A C8 39 66 1F 7B F2 7D A2 7D A2 43 39 A0
00E0 | F5 FF 97 F4 FC 46 AC FE A7 A6 40 79 D6 21 5A C5
00F0 | F8 5B 5A B1 F0 C6 9F CF 14 DC B5 9E 41 C0 17 57
0100 | DE 29 99 02 0E 56 14 3A F7 BF 83 44 C5 8C 8F 88
0110 | B1 DF 34 9F 60 25 76 5D 6C 15 ED 44 9D 6A BB 61
0120 | E2 A0 B2 3D 4A 56 DF 1E 6A 1B FA A2 F1 33 7D 72</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 = BA0D89B5986F64A7DDEA29514E0E8D15D6F276D2A50224040ED5174DF566649C15AE152
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>986F64A7DDEA29514E0E8D15D6F276D2</code></td>
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>A50224040ED5174DF566649C15AE1524</code></td>
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE00010081FAC94270A6CDD90B9AB63F</code> <code>17C7CC192D2CD65F31DCB5A18EC18F20</code> <code>6956282A3B2D048F5A9C32FC10AE538D</code> <code>16D12649AE840447AFD19802452BCA28</code> <code>C0447389C063E9E79551B36FAE0EA72E</code> <code>39FDC302412C3FC293DA658B36BC4354</code> <code>11793A32CE9125BD310FB517DC59E38E</code> <code>AD664965B900564B7B5EA328E46A132B</code> <code>A637C65B963F5452092FC1121FF8C6C2</code> <code>B9C9CC12FB72D5CB99CD8CDC703CE687</code> <code>715FB6ADCF753FFBAE27956DCD1BB424</code> <code>BCB026D259060C66787A71EFB3BCD566</code> <code>BF6832CC363495083BC72657C5A756D8</code> <code>748464B8E28E8A01CC8C962B06FF234D</code> <code>A3051E9E4824BDCDB7071B2A43E55E66</code> <code>3B5A9A9AD4472997F696566B50F4B225</code><br> <code>16B4082E</code></td>
<td><code>FE0001006EC768DEBBCAFBBEED730BC1</code> <code>2F128C848FFAD34D06C4D58D9649F65C</code> <code>797554262AFDDD09A07B03912499D8AF</code> <code>66CB520770DF2B64FDAB3EE527145ED3</code> <code>56FE40609E889178EC31195A705A08A2</code> <code>1707002B5EA34504805B4072D1165B33</code> <code>A9E2A4B568F922BC1D0B8CB8F4DBDC35</code> <code>0939417AE18ADA16CF24B9C221F20BF3</code> <code>5F50964D39524F0D73F69BAE714CAB70</code> <code>138C0FC5ACD587EB27049ECC6E46CDBF</code> <code>47AF9EA0B46F5AC839661F7BF27DA27D</code> <code>A24339A0F5FF97F4FC46ACFEA7A64079</code> <code>D6215AC5F85B5AB1F0C69FCF14DCB59E</code> <code>41C01757DE2999020E56143AF7BF8344</code> <code>C58C8F88B1DF349F6025765D6C15ED44</code> <code>9D6ABB61E2A0B23D4A56DF1E6A1BFAA2</code><br> <code>F1337D72</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 = BA0D89B5986F64A7DDEA29514E0E8D15D6F276D2A50224040ED5174DF566649C15AE152
<!-- 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 = 54B64366986F64A7DDEA29514E0E8D15D6F276D2A50224040ED5174DF566649C15AE15240000000000000000FE00010081FAC94270A6CDD90B9AB63F17C7CC192D2CD65F31DCB5A18EC18F206956282A3B2D048F5A9C32FC10AE538D16D12649AE840447AFD19802452BCA28C0447389C063E9E79551B36FAE0EA72E39FDC302412C3FC293DA658B36BC435411793A32CE9125BD310FB517DC59E38EAD664965B900564B7B5EA328E46A132BA637C65B963F5452092FC1121FF8C6C2B9C9CC12FB72D5CB99CD8CDC703CE687715FB6ADCF753FFBAE27956DCD1BB424BCB026D259060C66787A71EFB3BCD566BF6832CC363495083BC72657C5A756D8748464B8E28E8A01CC8C962B06FF234DA3051E9E4824BDCDB7071B2A43E55E663B5A9A9AD4472997F696566B50F4B22516B4082E
padding = 9C866DF39A2B96056D276D7B
tmp_aes_key = A44135AA9E8C2BAC86949B14ECA5F27C08B11F0C16B920282C852BF645376715
tmp_aes_iv = FF950162823557628C3C6586D31EC8A3C0A7DDE6AFF79F993B46F855D0D6F471</code></pre>
<pre><code>data = 54B64366AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8F0000000000000000FE0001006EC768DEBBCAFBBEED730BC12F128C848FFAD34D06C4D58D9649F65C797554262AFDDD09A07B03912499D8AF66CB520770DF2B64FDAB3EE527145ED356FE40609E889178EC31195A705A08A21707002B5EA34504805B4072D1165B33A9E2A4B568F922BC1D0B8CB8F4DBDC350939417AE18ADA16CF24B9C221F20BF35F50964D39524F0D73F69BAE714CAB70138C0FC5ACD587EB27049ECC6E46CDBF47AF9EA0B46F5AC839661F7BF27DA27DA24339A0F5FF97F4FC46ACFEA7A64079D6215AC5F85B5AB1F0C69FCF14DCB59E41C01757DE2999020E56143AF7BF8344C58C8F88B1DF349F6025765D6C15ED449D6ABB61E2A0B23D4A56DF1E6A1BFAA2F1337D72
padding = 180010567E76A8A7704FE13E
tmp_aes_key = B95F44958D683B3A8A09C088941CCC6A5CD73B89A57E9BE072534FBA65DF05C2
tmp_aes_iv = 3AA4C62218DE342CE601730DA19A89BAE878CFB77912FF7AC45C512CAF07B0E4</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 = ABE1B56BE263762EA0D5E710BF0A2AD10C393B30D7AEC4E33C0FDF67A1FF5B6F263B827858AF464E62545D4FC2153DFBF33B8DAB02E361C2772CB266500F688B3827A2AEBCFA6585B66C07B185FF620BECBD28A1958CBB4EEC14229EFD37A110C160AE2EE3388123EAB0025B553C27470DB21C6E6D06CFAE4BDCE6297E6AC2A1FC387AA0FA5D3ABD5B8C8305E0B401B79F40F2E3C7456DBB7F23B324326354C721E88034A6229F5471719C2778A242F46B752A909D30E2EB28654F8EBE53DA516DEE189E199CDC09678B40A65C1D9854B3A4E45188D36D962175125C2781067DE1322E66787E0279B822FFE6BC0CD34B493356F87BCFF15EDE597EA7347E40E5F599C9F6869A77AF6D2F1DA0E8CC26E03EC2535707E56E3D337CCC331FB98C7C66FCE5CD56C5BC6F2D77E0BD42F4CDB72B65A25F0CF01CE147C7D1580C974B6FC3BE4DF316B9D6FE6A1AB87423C3DB7E</code></pre>
<pre><code>encrypted_data = 71FD580C86931377F1FEEC2CFFFD03D71C055AAEB74B6353BE631D25850AB07A8B5A23232E87519E91B54658F0FEEFB5D63DE1A0BEB130BE9A04B9405E5AD01F73586188BE3FD9F0EEF3A74098173E8F74E6BCCCCC7744ADB92C68704E990962E1CA2341577B1EC7DA8D60E5CDCFAE5EC957AF2DED735CA5B8DFC6507EC2F04C144FFA1CA78AE4E02591D18F322901CAE2CE029DB15FA69C8A60E32930675A93F8A2A739B7889167898B430C638B8BCD8874C9AB611EE8A3EDCED8D2714FD6DB7BA23B559A9F9F33BA7F6FDD1E2552E8EBD201F4BFEE014C1D6EF2A8F5BA439C266ADBD84990C51BBBC6077A55368D2E99249CC5A4217EC78C00C20E99510E7781B90438C8059180D6E195B3D99908A3D1443B130A92CD272E24FD7DE7AFB61807AE43E17A252D41E6E6E73B0E601DF70494742AF87588AD824E6443ED12A3C3850F69339FF5DE9A13E8DB10EBE170D0</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 78 A7 06 00 68 4B AE 66
0010 | 78 01 00 00 1F 5F 04 F5 98 6F 64 A7 DD EA 29 51
0020 | 4E 0E 8D 15 D6 F2 76 D2 A5 02 24 04 0E D5 17 4D
0030 | F5 66 64 9C 15 AE 15 24 FE 50 01 00 AB E1 B5 6B
0040 | E2 63 76 2E A0 D5 E7 10 BF 0A 2A D1 0C 39 3B 30
0050 | D7 AE C4 E3 3C 0F DF 67 A1 FF 5B 6F 26 3B 82 78
0060 | 58 AF 46 4E 62 54 5D 4F C2 15 3D FB F3 3B 8D AB
0070 | 02 E3 61 C2 77 2C B2 66 50 0F 68 8B 38 27 A2 AE
0080 | BC FA 65 85 B6 6C 07 B1 85 FF 62 0B EC BD 28 A1
0090 | 95 8C BB 4E EC 14 22 9E FD 37 A1 10 C1 60 AE 2E
00A0 | E3 38 81 23 EA B0 02 5B 55 3C 27 47 0D B2 1C 6E
00B0 | 6D 06 CF AE 4B DC E6 29 7E 6A C2 A1 FC 38 7A A0
00C0 | FA 5D 3A BD 5B 8C 83 05 E0 B4 01 B7 9F 40 F2 E3
00D0 | C7 45 6D BB 7F 23 B3 24 32 63 54 C7 21 E8 80 34
00E0 | A6 22 9F 54 71 71 9C 27 78 A2 42 F4 6B 75 2A 90
00F0 | 9D 30 E2 EB 28 65 4F 8E BE 53 DA 51 6D EE 18 9E
0100 | 19 9C DC 09 67 8B 40 A6 5C 1D 98 54 B3 A4 E4 51
0110 | 88 D3 6D 96 21 75 12 5C 27 81 06 7D E1 32 2E 66
0120 | 78 7E 02 79 B8 22 FF E6 BC 0C D3 4B 49 33 56 F8
0130 | 7B CF F1 5E DE 59 7E A7 34 7E 40 E5 F5 99 C9 F6
0140 | 86 9A 77 AF 6D 2F 1D A0 E8 CC 26 E0 3E C2 53 57
0150 | 07 E5 6E 3D 33 7C CC 33 1F B9 8C 7C 66 FC E5 CD
0160 | 56 C5 BC 6F 2D 77 E0 BD 42 F4 CD B7 2B 65 A2 5F
0170 | 0C F0 1C E1 47 C7 D1 58 0C 97 4B 6F C3 BE 4D F3
0180 | 16 B9 D6 FE 6A 1A B8 74 23 C3 DB 7E</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 7C 99 0C 00 45 50 AE 66
0010 | 78 01 00 00 1F 5F 04 F5 AF 92 71 33 BF B0 31 EB
0020 | 62 FE BB E2 C8 9D 60 7C 63 96 F1 1C B0 17 84 0F
0030 | A1 06 5D D9 F3 08 DE 8F FE 50 01 00 71 FD 58 0C
0040 | 86 93 13 77 F1 FE EC 2C FF FD 03 D7 1C 05 5A AE
0050 | B7 4B 63 53 BE 63 1D 25 85 0A B0 7A 8B 5A 23 23
0060 | 2E 87 51 9E 91 B5 46 58 F0 FE EF B5 D6 3D E1 A0
0070 | BE B1 30 BE 9A 04 B9 40 5E 5A D0 1F 73 58 61 88
0080 | BE 3F D9 F0 EE F3 A7 40 98 17 3E 8F 74 E6 BC CC
0090 | CC 77 44 AD B9 2C 68 70 4E 99 09 62 E1 CA 23 41
00A0 | 57 7B 1E C7 DA 8D 60 E5 CD CF AE 5E C9 57 AF 2D
00B0 | ED 73 5C A5 B8 DF C6 50 7E C2 F0 4C 14 4F FA 1C
00C0 | A7 8A E4 E0 25 91 D1 8F 32 29 01 CA E2 CE 02 9D
00D0 | B1 5F A6 9C 8A 60 E3 29 30 67 5A 93 F8 A2 A7 39
00E0 | B7 88 91 67 89 8B 43 0C 63 8B 8B CD 88 74 C9 AB
00F0 | 61 1E E8 A3 ED CE D8 D2 71 4F D6 DB 7B A2 3B 55
0100 | 9A 9F 9F 33 BA 7F 6F DD 1E 25 52 E8 EB D2 01 F4
0110 | BF EE 01 4C 1D 6E F2 A8 F5 BA 43 9C 26 6A DB D8
0120 | 49 90 C5 1B BB C6 07 7A 55 36 8D 2E 99 24 9C C5
0130 | A4 21 7E C7 8C 00 C2 0E 99 51 0E 77 81 B9 04 38
0140 | C8 05 91 80 D6 E1 95 B3 D9 99 08 A3 D1 44 3B 13
0150 | 0A 92 CD 27 2E 24 FD 7D E7 AF B6 18 07 AE 43 E1
0160 | 7A 25 2D 41 E6 E6 E7 3B 0E 60 1D F7 04 94 74 2A
0170 | F8 75 88 AD 82 4E 64 43 ED 12 A3 C3 85 0F 69 33
0180 | 9F F5 DE 9A 13 E8 DB 10 EB E1 70 D0</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>78A70600684BAE66</code></td>
<td><code>7C990C004550AE66</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>986F64A7DDEA29514E0E8D15D6F276D2</code></td>
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>A50224040ED5174DF566649C15AE1524</code></td>
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE500100ABE1B56BE263762EA0D5E710</code> <code>BF0A2AD10C393B30D7AEC4E33C0FDF67</code> <code>A1FF5B6F263B827858AF464E62545D4F</code> <code>C2153DFBF33B8DAB02E361C2772CB266</code> <code>500F688B3827A2AEBCFA6585B66C07B1</code> <code>85FF620BECBD28A1958CBB4EEC14229E</code> <code>FD37A110C160AE2EE3388123EAB0025B</code> <code>553C27470DB21C6E6D06CFAE4BDCE629</code> <code>7E6AC2A1FC387AA0FA5D3ABD5B8C8305</code> <code>E0B401B79F40F2E3C7456DBB7F23B324</code> <code>326354C721E88034A6229F5471719C27</code> <code>78A242F46B752A909D30E2EB28654F8E</code> <code>BE53DA516DEE189E199CDC09678B40A6</code> <code>5C1D9854B3A4E45188D36D962175125C</code> <code>2781067DE1322E66787E0279B822FFE6</code> <code>BC0CD34B493356F87BCFF15EDE597EA7</code> <code>347E40E5F599C9F6869A77AF6D2F1DA0</code> <code>E8CC26E03EC2535707E56E3D337CCC33</code> <code>1FB98C7C66FCE5CD56C5BC6F2D77E0BD</code> <code>42F4CDB72B65A25F0CF01CE147C7D158</code> <code>0C974B6FC3BE4DF316B9D6FE6A1AB874</code><br> <code>23C3DB7E</code></td>
<td><code>FE50010071FD580C86931377F1FEEC2C</code> <code>FFFD03D71C055AAEB74B6353BE631D25</code> <code>850AB07A8B5A23232E87519E91B54658</code> <code>F0FEEFB5D63DE1A0BEB130BE9A04B940</code> <code>5E5AD01F73586188BE3FD9F0EEF3A740</code> <code>98173E8F74E6BCCCCC7744ADB92C6870</code> <code>4E990962E1CA2341577B1EC7DA8D60E5</code> <code>CDCFAE5EC957AF2DED735CA5B8DFC650</code> <code>7EC2F04C144FFA1CA78AE4E02591D18F</code> <code>322901CAE2CE029DB15FA69C8A60E329</code> <code>30675A93F8A2A739B7889167898B430C</code> <code>638B8BCD8874C9AB611EE8A3EDCED8D2</code> <code>714FD6DB7BA23B559A9F9F33BA7F6FDD</code> <code>1E2552E8EBD201F4BFEE014C1D6EF2A8</code> <code>F5BA439C266ADBD84990C51BBBC6077A</code> <code>55368D2E99249CC5A4217EC78C00C20E</code> <code>99510E7781B90438C8059180D6E195B3</code> <code>D99908A3D1443B130A92CD272E24FD7D</code> <code>E7AFB61807AE43E17A252D41E6E6E73B</code> <code>0E601DF70494742AF87588AD824E6443</code> <code>ED12A3C3850F69339FF5DE9A13E8DB10</code><br> <code>EBE170D0</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 = 29952891DEB88692CDBE7786DF0A8E36BF22842EF5DE2DA64E09811931C660F539C30850E21A95F6039A0F83436EF692E96D9F66A75209DC33935072E531363C5D58BE1F9C2C53C66AA224D612AF301A2E54E6EEFB8AC0A785F6134692100C91508ACAAE31F874C3614FBDF8759B8CA9EABA2B9A07E98FB274738A9D61F99ED1C2665CB44B920DEE33B84DF427240F83C59DEF87211C36BB0A99E69655091A7BD96358F6EFF595CF729471DC9586FB460C5E8854EBBD82CEE228811C432D7E3054CE43652216F74D6EA8AFC0E5589337C23DAA0F5E4EE4ADA2B53DC68511EAA493C4F9740718C7AA69112EFFF6B2644BD509B20C6E3472765ED1476035EC580A</code></pre>
<pre><code>auth_key = 6DF3C5B8246084FC9F2C3492FD3C06910871F7FB5F27E4F826A4F832E4AD5AE313C0D2BB98B20F892EA21FB4ADB494E44A3A95F162341B3C86E47086C0C0D50F768936DF8429B55CEBC066C6D0EF5EB6D247E3018D47203DCF9A5DC0BFC7B89CAA7E05D2466088A805C54462FAFE42E8BE591954B6C267E53845E0859B8BCF84E61411B38B19A039012300192C65B0B210EDB2640D36147722D73ED208C2D2B6EE77637A78C4A739217ADBCD4BEA8869E2DA272BF12919515649DC4C19369FDC129103EA2A61B3B792F5F7DE5E3CD8655C0B96B4E54579D19E79C3EEA2F50552F7DD08F5EE39A1E890CB30E3DF4531C7267A66626472475FD5E3D928A1EA4DF8</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 D0 ED F3 68 4B AE 66
0010 | 94 00 00 00 34 F7 CB 3B 98 6F 64 A7 DD EA 29 51
0020 | 4E 0E 8D 15 D6 F2 76 D2 A5 02 24 04 0E D5 17 4D
0030 | F5 66 64 9C 15 AE 15 24 BF 15 02 47 83 45 01 C5
0040 | 3B 1E E2 0F DC 89 E0 E4</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 10 9A 55 46 50 AE 66
0010 | 70 00 00 00 34 F7 CB 3B AF 92 71 33 BF B0 31 EB
0020 | 62 FE BB E2 C8 9D 60 7C 63 96 F1 1C B0 17 84 0F
0030 | A1 06 5D D9 F3 08 DE 8F CD B9 26 41 D5 19 38 54
0040 | 67 85 AE F3 77 86 62 EE</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>01D0EDF3684BAE66</code></td>
<td><code>01109A554650AE66</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>94000000</code> (148 in decimal)</td>
<td><code>70000000</code> (112 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>986F64A7DDEA29514E0E8D15D6F276D2</code></td>
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>A50224040ED5174DF566649C15AE1524</code></td>
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>BF150247834501C53B1EE20FDC89E0E4</code></td>
<td><code>CDB92641D51938546785AEF3778662EE</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

@ -70,7 +70,7 @@
<tbody>
<tr>
<td><a href="/constructor/inputInvoiceMessage">inputInvoiceMessage</a></td>
<td>An invoice contained in a <a href="/constructor/messageMediaInvoice">messageMediaInvoice</a> message.</td>
<td>An invoice contained in a <a href="/constructor/messageMediaInvoice">messageMediaInvoice</a> message or <a href="/api/paid-media">paid media »</a>.</td>
</tr>
<tr>
<td><a href="/constructor/inputInvoiceSlug">inputInvoiceSlug</a></td>

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>MessageExtendedMedia</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Extended media">
<meta property="description" content="Paid media, see here » for more info.">
<meta property="og:title" content="MessageExtendedMedia">
<meta property="og:image" content="">
<meta property="og:description" content="Extended media">
<meta property="og:description" content="Paid media, see here » for more info.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -42,7 +42,7 @@
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/MessageExtendedMedia" >MessageExtendedMedia</a></li></ul></div>
<h1 id="dev_page_title">MessageExtendedMedia</h1>
<div id="dev_page_content"><p>Extended media</p>
<div id="dev_page_content"><p><a href="/api/paid-media">Paid media, see here »</a> for more info.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -68,14 +68,17 @@
<tbody>
<tr>
<td><a href="/constructor/messageExtendedMediaPreview">messageExtendedMediaPreview</a></td>
<td>Extended media preview</td>
<td>Paid media preview for not yet purchased paid media, <a href="/api/paid-media">see here »</a> for more info.</td>
</tr>
<tr>
<td><a href="/constructor/messageExtendedMedia">messageExtendedMedia</a></td>
<td>Extended media</td>
<td>Already purchased paid media, <a href="/api/paid-media">see here »</a> for more info.</td>
</tr>
</tbody>
</table></div>
</table>
<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="#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 <a href="/api/stars">Stars</a> by publishing <strong>paid photos or videos</strong> on their channels. Subscribers will be allowed to view such posts only after paying the author to unlock them.</p></div>
</div>

View file

@ -153,7 +153,7 @@
</tr>
<tr>
<td><a href="/constructor/messageMediaPaidMedia">messageMediaPaidMedia</a></td>
<td> </td>
<td><a href="/api/paid-media">Paid media, see here »</a> for more info.</td>
</tr>
</tbody>
</table>

View file

@ -629,7 +629,7 @@
</tr>
<tr>
<td><a href="/constructor/updateMessageExtendedMedia">updateMessageExtendedMedia</a></td>
<td>Extended media update</td>
<td> </td>
</tr>
<tr>
<td><a href="/constructor/updateChannelPinnedTopic">updateChannelPinnedTopic</a></td>

View file

@ -587,6 +587,8 @@ i.icon {
right: 0;
top: 0;
z-index: 100;
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
background-color: var(--header-bg-color);
-webkit-backdrop-filter: blur(25px);
backdrop-filter: blur(25px);
@ -937,6 +939,7 @@ a.tm-pagination-item.active:focus {
right: 0;
top: 0;
bottom: 0;
padding-bottom: env(safe-area-inset-bottom);
background: var(--bg-color);
transition: transform var(--def-transition);
}
@ -1135,6 +1138,8 @@ a.tm-menu-link:focus {
}
.tm-footer {
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
background-color: var(--footer-bg-color);
}
.tm-footer-links {
@ -1305,7 +1310,7 @@ a.tm-menu-link:focus {
.tm-main {
margin: 0 auto;
width: 100%;
width: auto;
max-width: 480px;
padding-bottom: 70px;
flex-grow: 1;
@ -3816,6 +3821,9 @@ a.tm-table-action-link:hover {
.tm-main {
max-width: 720px;
box-sizing: content-box;
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
}
.tm-main-premium {
max-width: 480px;