Update content of files

This commit is contained in:
GitHub Action 2024-07-17 18:19:12 +00:00
parent 1a209144ee
commit 57765b2beb
12 changed files with 278 additions and 351 deletions

View file

@ -75,6 +75,8 @@ The first username in the <code>usernames</code> vector must be shown in-UI as t
Note that you can't mark as inactive the basic (non-collectible) username, if any. </p>
<p><a href="/method/channels.deactivateAllUsernames">channels.deactivateAllUsernames</a> may also be used to mark as inactive all collectible usernames associated to a certain supergroup or channel: useful for example when making a group or channel private, by first invoking <a href="/method/channels.updateUsername">channels.updateUsername</a> with an empty username to remove the editable username (if present), and then invoking this method to remove all associated collectible usernames. </p>
<p>Use <a href="/method/account.reorderUsernames">account.reorderUsernames</a>/<a href="/method/bots.reorderUsernames">bots.reorderUsernames</a>/<a href="/method/channels.reorderUsernames">channels.reorderUsernames</a> to change the order of the usernames associated to an account, channel or supergroup: all currently active usernames must be specified. </p>
<h3><a class="anchor" href="#collectible-phone-numbers" id="collectible-phone-numbers" name="collectible-phone-numbers"><i class="anchor-icon"></i></a>Collectible phone numbers</h3>
<p><a href="https://fragment.com">Fragment</a> collectible phone numbers can only be used to create Telegram accounts, using the usual <a href="/api/auth">sign up/login flow »</a>.</p>
<h3><a class="anchor" href="#fetching-info-about-fragment-collectibles" id="fetching-info-about-fragment-collectibles" name="fetching-info-about-fragment-collectibles"><i class="anchor-icon"></i></a>Fetching info about Fragment collectibles</h3>
<p>Schema:</p>
<pre><code><a href='/constructor/inputCollectibleUsername'>inputCollectibleUsername</a>#e39460a9 username:<a href='/type/string'>string</a> = <a href='/type/InputCollectible'>InputCollectible</a>;

View file

@ -67,7 +67,7 @@
<li>Added <a href="/constructor/starsTransactionPeerPremiumBot">starsTransactionPeerPremiumBot</a> - </li>
<li>Added <a href="/constructor/starsTransactionPeerFragment">starsTransactionPeerFragment</a> - Describes a <a href="/api/stars">Telegram Star</a> transaction with <a href="https://fragment.com">Fragment</a>, used when purchasing Telegram Stars through <a href="https://fragment.com">Fragment</a>.</li>
<li>Added <a href="/constructor/starsTransactionPeer">starsTransactionPeer</a> - Describes a <a href="/api/stars">Telegram Star</a> transaction with another peer (usually a bot or a channel).</li>
<li>Added <a href="/constructor/inputStorePaymentStars">inputStorePaymentStars</a> - </li>
<li>Added <a href="/constructor/inputStorePaymentStars">inputStorePaymentStars</a> - Used to top up the <a href="/api/stars">Telegram Stars balance</a> using the Play Store/App Store flow (official apps only).</li>
<li>Added <a href="/constructor/starsTopupOption">starsTopupOption</a> - <a href="/api/stars">Telegram Stars topup option</a>.</li>
<li>Added <a href="/constructor/inputInvoiceStars">inputInvoiceStars</a> - Used to top up the current account's <a href="/api/stars">Telegram Stars</a> balance.</li>
<li>Added <a href="/constructor/starsTransaction">starsTransaction</a> - Represents a <a href="/api/stars">Telegram Stars transaction »</a>.</li>
@ -303,9 +303,9 @@
<li>Added <a href="/constructor/inputBusinessIntro">inputBusinessIntro</a> - <a href="/api/business#business-introduction">Telegram Business introduction »</a>.</li>
<li>Added <a href="/constructor/businessIntro">businessIntro</a> - <a href="/api/business#business-introduction">Telegram Business introduction »</a>.</li>
<li>Added <a href="/constructor/messages.myStickers">messages.myStickers</a> - </li>
<li>Added <a href="/constructor/inputCollectibleUsername">inputCollectibleUsername</a> - </li>
<li>Added <a href="/constructor/inputCollectiblePhone">inputCollectiblePhone</a> - </li>
<li>Added <a href="/constructor/fragment.collectibleInfo">fragment.collectibleInfo</a> - </li>
<li>Added <a href="/constructor/inputCollectibleUsername">inputCollectibleUsername</a> - Represents a <a href="/api/fragment">username fragment collectible</a></li>
<li>Added <a href="/constructor/inputCollectiblePhone">inputCollectiblePhone</a> - Represents a <a href="/api/fragment">phone number fragment collectible</a></li>
<li>Added <a href="/constructor/fragment.collectibleInfo">fragment.collectibleInfo</a> - Info about a <a href="/api/fragment">fragment collectible</a>.</li>
<li>Added <a href="/constructor/inputBusinessBotRecipients">inputBusinessBotRecipients</a> - Specifies the private chats that a <a href="/api/business#connected-bots">connected business bot »</a> may interact with.</li>
<li>Added <a href="/constructor/businessBotRecipients">businessBotRecipients</a> - Specifies the private chats that a <a href="/api/business#connected-bots">connected business bot »</a> may receive messages and interact with.</li>
<li>Added <a href="/constructor/contactBirthday">contactBirthday</a> - Birthday information of a contact.</li>

View file

@ -233,6 +233,8 @@ Use <a href="/method/messages.getEmojiStickers">messages.getEmojiStickers</a> to
<a href='/constructor/messages.stickerSet'>messages.stickerSet</a>#6e153f16 set:<a href='/type/StickerSet'>StickerSet</a> packs:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/StickerPack'>StickerPack</a>&gt; keywords:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/StickerKeyword'>StickerKeyword</a>&gt; documents:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Document'>Document</a>&gt; = <a href='/type/messages.StickerSet'>messages.StickerSet</a>;
<a href='/constructor/messages.stickerSetNotModified'>messages.stickerSetNotModified</a>#d3f924eb = <a href='/type/messages.StickerSet'>messages.StickerSet</a>;
<a href='/constructor/messages.myStickers'>messages.myStickers</a>#faff629d count:<a href='/type/int'>int</a> sets:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/StickerSetCovered'>StickerSetCovered</a>&gt; = <a href='/type/messages.MyStickers'>messages.MyStickers</a>;
<a href='/constructor/stickers.suggestedShortName'>stickers.suggestedShortName</a>#85fea03f short_name:<a href='/type/string'>string</a> = <a href='/type/stickers.SuggestedShortName'>stickers.SuggestedShortName</a>;
---functions---
@ -244,6 +246,8 @@ Use <a href="/method/messages.getEmojiStickers">messages.getEmojiStickers</a> to
<a href='/method/stickers.createStickerSet'>stickers.createStickerSet</a>#9021ab67 flags:<a href='/type/%23'>#</a> masks:flags.0?<a href='/constructor/true'>true</a> emojis:flags.5?<a href='/constructor/true'>true</a> text_color:flags.6?<a href='/constructor/true'>true</a> user_id:<a href='/type/InputUser'>InputUser</a> title:<a href='/type/string'>string</a> short_name:<a href='/type/string'>string</a> thumb:flags.2?<a href='/type/InputDocument'>InputDocument</a> stickers:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/InputStickerSetItem'>InputStickerSetItem</a>&gt; software:flags.3?<a href='/type/string'>string</a> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>;
<a href='/method/messages.getMyStickers'>messages.getMyStickers</a>#d0b5e1fc offset_id:<a href='/type/long'>long</a> limit:<a href='/type/int'>int</a> = <a href='/type/messages.MyStickers'>messages.MyStickers</a>;
<a href='/method/stickers.addStickerToSet'>stickers.addStickerToSet</a>#8653febe stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> sticker:<a href='/type/InputStickerSetItem'>InputStickerSetItem</a> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>;
<a href='/method/stickers.replaceSticker'>stickers.replaceSticker</a>#4696459a sticker:<a href='/type/InputDocument'>InputDocument</a> new_sticker:<a href='/type/InputStickerSetItem'>InputStickerSetItem</a> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>;
<a href='/method/stickers.removeStickerFromSet'>stickers.removeStickerFromSet</a>#f7760f51 sticker:<a href='/type/InputDocument'>InputDocument</a> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>;
@ -257,6 +261,7 @@ Also note that users can't directly modify stickersets created using <a href="/m
<p>Use <a href="/method/stickers.checkShortName">stickers.checkShortName</a> to check if a given short name is available, and <a href="/method/stickers.suggestShortName">stickers.suggestShortName</a> to let the server suggest a short name, given the stickerset title.</p>
<p>Use <a href="/method/stickers.createStickerSet">stickers.createStickerSet</a> to create normal, <a href="#animated-stickers">animated</a>, <a href="#video-stickers">video</a> or <a href="#mask-stickers">mask</a> stickersets.<br>
<a href="/api/custom-emoji">Custom emoji</a> stickersets can only be created using the <a href="https://t.me/stickers">@stickers</a> bot for now. </p>
<p>Use <a href="/method/messages.getMyStickers">messages.getMyStickers</a> to fetch the stickersets created by the current account. </p>
<p>Use <a href="/method/stickers.addStickerToSet">stickers.addStickerToSet</a> to add stickers to the stickerset.<br>
Use <a href="/method/stickers.replaceSticker">stickers.replaceSticker</a> to replace a sticker in a stickerset (no need to pass the actual stickerset ID here).<br>
Use <a href="/method/stickers.addStickerToSet">stickers.setStickerSetThumb</a> to edit the stickerset thumbnail after creation.<br>

View file

@ -4,42 +4,10 @@
<meta charset="utf-8">
<title>fragment.collectibleInfo</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
purchase_date
int
 
currency
string
 
amount
long
 
crypto_currency
string
 
crypto_amount…">
<meta property="description" content="Info about a fragment collectible.">
<meta property="og:title" content="fragment.collectibleInfo">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
purchase_date
int
 
currency
string
 
amount
long
 
crypto_currency
string
 
crypto_amount…">
<meta property="og:description" content="Info about a fragment collectible.">
<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">
@ -74,7 +42,8 @@ crypto_amount…">
<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/fragment.collectibleInfo" >fragment.collectibleInfo</a></li></ul></div>
<h1 id="dev_page_title">fragment.collectibleInfo</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Info about a <a href="/api/fragment">fragment collectible</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 181 <b class="caret"></b></a>
@ -100,37 +69,41 @@ crypto_amount…">
<tr>
<td><strong>purchase_date</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Purchase date (unixtime)</td>
</tr>
<tr>
<td><strong>currency</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code for <code>amount</code></td>
</tr>
<tr>
<td><strong>amount</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td> </td>
<td>Total price in the smallest units of the currency (integer, not float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the exp parameter in <a href="/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td>
</tr>
<tr>
<td><strong>crypto_currency</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Cryptocurrency name.</td>
</tr>
<tr>
<td><strong>crypto_amount</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td> </td>
<td>Price, in the smallest units of the cryptocurrency.</td>
</tr>
<tr>
<td><strong>url</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td><a href="https://fragment.com">Fragment</a> URL with more info about the collectible</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/fragment.CollectibleInfo">fragment.CollectibleInfo</a></p></div>
<p><a href="/type/fragment.CollectibleInfo">fragment.CollectibleInfo</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="#bot-payments-api" id="bot-payments-api" name="bot-payments-api"><i class="anchor-icon"></i></a><a href="/bots/payments">Bot Payments API</a></h4>
<h4><a class="anchor" href="#collectibles" id="collectibles" name="collectibles"><i class="anchor-icon"></i></a><a href="/api/fragment">Collectibles</a></h4>
<p>Telegram users can make it easy for others to contact them or find their public groups and channels via <a href="https://telegram.org/faq#usernames-and-t-me">usernames</a>: clients can also assign multiple <a href="https://fragment.com">Fragment »</a> <strong>collectible usernames</strong> to accounts, supergroups and channels they own; <a href="https://fragment.com">Fragment »</a> also allows purchasing phone number collectibles that can be used to register Telegram accounts.</p></div>
</div>

View file

@ -4,26 +4,10 @@
<meta charset="utf-8">
<title>inputCollectiblePhone</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
phone
string
 
Type
InputCollectible">
<meta property="description" content="Represents a phone number fragment collectible">
<meta property="og:title" content="inputCollectiblePhone">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
phone
string
 
Type
InputCollectible">
<meta property="og:description" content="Represents a phone number fragment collectible">
<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">
@ -58,7 +42,8 @@ InputCollectible">
<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/inputCollectiblePhone" >inputCollectiblePhone</a></li></ul></div>
<h1 id="dev_page_title">inputCollectiblePhone</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Represents a <a href="/api/fragment">phone number fragment collectible</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 181 <b class="caret"></b></a>
@ -84,12 +69,15 @@ InputCollectible">
<tr>
<td><strong>phone</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Phone number</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/InputCollectible">InputCollectible</a></p></div>
<p><a href="/type/InputCollectible">InputCollectible</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="#collectibles" id="collectibles" name="collectibles"><i class="anchor-icon"></i></a><a href="/api/fragment">Collectibles</a></h4>
<p>Telegram users can make it easy for others to contact them or find their public groups and channels via <a href="https://telegram.org/faq#usernames-and-t-me">usernames</a>: clients can also assign multiple <a href="https://fragment.com">Fragment »</a> <strong>collectible usernames</strong> to accounts, supergroups and channels they own; <a href="https://fragment.com">Fragment »</a> also allows purchasing phone number collectibles that can be used to register Telegram accounts.</p></div>
</div>

View file

@ -4,26 +4,10 @@
<meta charset="utf-8">
<title>inputCollectibleUsername</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
username
string
 
Type
InputCollectible">
<meta property="description" content="Represents a username fragment collectible">
<meta property="og:title" content="inputCollectibleUsername">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
username
string
 
Type
InputCollectible">
<meta property="og:description" content="Represents a username fragment collectible">
<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">
@ -58,7 +42,8 @@ InputCollectible">
<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/inputCollectibleUsername" >inputCollectibleUsername</a></li></ul></div>
<h1 id="dev_page_title">inputCollectibleUsername</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Represents a <a href="/api/fragment">username fragment collectible</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 181 <b class="caret"></b></a>
@ -84,12 +69,15 @@ InputCollectible">
<tr>
<td><strong>username</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Username</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/InputCollectible">InputCollectible</a></p></div>
<p><a href="/type/InputCollectible">InputCollectible</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="#collectibles" id="collectibles" name="collectibles"><i class="anchor-icon"></i></a><a href="/api/fragment">Collectibles</a></h4>
<p>Telegram users can make it easy for others to contact them or find their public groups and channels via <a href="https://telegram.org/faq#usernames-and-t-me">usernames</a>: clients can also assign multiple <a href="https://fragment.com">Fragment »</a> <strong>collectible usernames</strong> to accounts, supergroups and channels they own; <a href="https://fragment.com">Fragment »</a> also allows purchasing phone number collectibles that can be used to register Telegram accounts.</p></div>
</div>

View file

@ -4,40 +4,10 @@
<meta charset="utf-8">
<title>inputStorePaymentStars</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
stars
long
 
currency
string
 
amount
long
 …">
<meta property="description" content="Used to top up the Telegram Stars balance using the Play Store/App Store flow (official apps only).">
<meta property="og:title" content="inputStorePaymentStars">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
stars
long
 
currency
string
 
amount
long
 …">
<meta property="og:description" content="Used to top up the Telegram Stars balance using the Play Store/App Store flow (official apps only).">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -72,7 +42,8 @@ long
<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/inputStorePaymentStars" >inputStorePaymentStars</a></li></ul></div>
<h1 id="dev_page_title">inputStorePaymentStars</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Used to top up the <a href="/api/stars">Telegram Stars balance</a> using the Play Store/App Store flow (official apps only).</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 181 <b class="caret"></b></a>
@ -103,22 +74,26 @@ long
<tr>
<td><strong>stars</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td> </td>
<td>Amount of stars to topup</td>
</tr>
<tr>
<td><strong>currency</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td>
</tr>
<tr>
<td><strong>amount</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td> </td>
<td>Total price in the smallest units of the currency (integer, not float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the exp parameter in <a href="/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</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/InputStorePaymentPurpose">InputStorePaymentPurpose</a></p></div>
<p><a href="/type/InputStorePaymentPurpose">InputStorePaymentPurpose</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="#bot-payments-api" id="bot-payments-api" name="bot-payments-api"><i class="anchor-icon"></i></a><a href="/bots/payments">Bot Payments API</a></h4>
<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 <a href="https://telegram.org/blog/telegram-stars">Telegram bots</a> or <a href="https://telegram.org/blog/mini-app-bar-paid-media-and-more#pay-for-content-with-telegram-stars">Telegram channels</a>.</p></div>
</div>

View file

@ -1927,6 +1927,10 @@ Look for updates of telegram&#39;s terms of service…">
<td>Deletes a stickerset we created, bots only.</td>
</tr>
<tr>
<td><a href="/method/messages.getMyStickers">messages.getMyStickers</a></td>
<td> </td>
</tr>
<tr>
<td><a href="/method/stickers.removeStickerFromSet">stickers.removeStickerFromSet</a></td>
<td>Remove a sticker from the set where it belongs, bots only. The sticker set must have been created by the bot.</td>
</tr>
@ -3630,10 +3634,6 @@ Look for updates of telegram&#39;s terms of service…">
<td><a href="/method/stickers.replaceSticker">stickers.replaceSticker</a></td>
<td>Replace a sticker in a <a href="/api/stickers">stickerset »</a>.</td>
</tr>
<tr>
<td><a href="/method/messages.getMyStickers">messages.getMyStickers</a></td>
<td> </td>
</tr>
</tbody>
</table></div>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 10 B2 07 00 60 01 98 66
0010 | 14 00 00 00 F1 8E 7E BE 05 FE F5 95 9C 0D 66 54
0020 | 3D F2 34 62 04 81 AD 6F</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 C4 D0 01 00 5D 09 98 66
0010 | 14 00 00 00 F1 8E 7E BE 6A 7C BA 77 6C DF 92 4D
0020 | F7 1F C0 C9 6F 16 DB 7D</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>10B2070060019866</code></td>
<td><code>C4D001005D099866</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>05FEF5959C0D66543DF234620481AD6F</code></td>
<td><code>6A7CBA776CDF924DF71FC0C96F16DB7D</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 0C 00 F3 60 01 98 66
0010 | 78 00 00 00 63 24 16 05 05 FE F5 95 9C 0D 66 54
0020 | 3D F2 34 62 04 81 AD 6F 52 D1 9F 8A FF 7B 28 65
0030 | 5B 12 6D F4 E6 40 2E CC 08 1C D1 1D 49 17 71 8E
0040 | EF 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 A0 A4 CA 5D 09 98 66
0010 | 64 00 00 00 63 24 16 05 6A 7C BA 77 6C DF 92 4D
0020 | F7 1F C0 C9 6F 16 DB 7D F6 F6 2F 29 D7 2E F7 08
0030 | 30 00 91 24 F7 63 6A A9 08 14 A4 53 42 3E C8 5D
0040 | AF 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>010C00F360019866</code></td>
<td><code>01A0A4CA5D099866</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>78000000</code> (120 in decimal)</td>
<td><code>64000000</code> (100 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>05FEF5959C0D66543DF234620481AD6F</code></td>
<td><code>6A7CBA776CDF924DF71FC0C96F16DB7D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>52D19F8AFF7B28655B126DF4E6402ECC</code></td>
<td><code>F6F62F29D72EF70830009124F7636AA9</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>081CD11D4917718EEF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2076473102957645551</td>
<td><code>0814A453423EC85DAF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1487405320925371823</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 = 2076473102957645551</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2076473102957645551 = 1132256093 * 1833925307</code></p>
<pre><code>p = 1132256093
q = 1833925307</code></pre>
<pre><code>pq = 1487405320925371823</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1487405320925371823 = 1088038111 * 1367052593</code></p>
<pre><code>p = 1088038111
q = 1367052593</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 1C D1 1D 49 17 71 8E EF 00 00 00
0010 | 04 43 7C DB 5D 00 00 00 04 6D 4F 7A BB 00 00 00
0020 | 05 FE F5 95 9C 0D 66 54 3D F2 34 62 04 81 AD 6F
0030 | 52 D1 9F 8A FF 7B 28 65 5B 12 6D F4 E6 40 2E CC
0040 | 39 64 AE A8 7F 37 AD 6B D2 1A 62 D9 30 67 97 F0
0050 | 46 BE F9 A1 7F C1 E0 C3 C3 F6 91 C4 64 8C 86 8D
<pre><code>0000 | 95 5F F5 A9 08 14 A4 53 42 3E C8 5D AF 00 00 00
0010 | 04 40 DA 24 DF 00 00 00 04 51 7B 91 31 00 00 00
0020 | 6A 7C BA 77 6C DF 92 4D F7 1F C0 C9 6F 16 DB 7D
0030 | F6 F6 2F 29 D7 2E F7 08 30 00 91 24 F7 63 6A A9
0040 | E5 54 4E F5 6D 1C D7 79 C3 70 A1 00 7C A1 26 E8
0050 | 00 7F EC 35 5B B0 51 6A 66 61 6F 66 F4 87 0F 2D
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 = 1833925307</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>081CD11D4917718EEF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2076473102957645551</td>
<td><code>0814A453423EC85DAF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1487405320925371823</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>04437CDB5D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1132256093</td>
<td><code>0440DA24DF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1088038111</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>046D4F7ABB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1833925307</td>
<td><code>04517B9131000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1367052593</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>05FEF5959C0D66543DF234620481AD6F</code></td>
<td><code>6A7CBA776CDF924DF71FC0C96F16DB7D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>52D19F8AFF7B28655B126DF4E6402ECC</code></td>
<td><code>F6F62F29D72EF70830009124F7636AA9</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>3964AEA87F37AD6BD21A62D9306797F0</code> <code>46BEF9A17FC1E0C3C3F691C4648C868D</code></td>
<td><code>E5544EF56D1CD779C370A1007CA126E8</code> <code>007FEC355BB0516A66616F66F4870F2D</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1833925307</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 = 955FF5A9081CD11D4917718EEF00000004437CDB5D000000046D4F7ABB00000005FEF5959C0D66543DF234620481AD6F52D19F8AFF7B28655B126DF4E6402ECC3964AEA87F37AD6BD21A62D9306797F046BEF9A17FC1E0C3C3F691C4648C868D02000000
random_padding_bytes = E235ADC313C2D6B78F9F496C518EE93AF2FB16102D1AFCCB745990AEF1AA0CFF74C899DB648D406F9291B960A4CE3684BE1598CD3947492488CB268178774E2BFBF93292EE6B0F0A04D9980C7339088EE35C86A8B61AE2D9FACBDD29</code></pre>
<pre><code>data = 955FF5A90814A453423EC85DAF0000000440DA24DF00000004517B91310000006A7CBA776CDF924DF71FC0C96F16DB7DF6F62F29D72EF70830009124F7636AA9E5544EF56D1CD779C370A1007CA126E8007FEC355BB0516A66616F66F4870F2D02000000
random_padding_bytes = 5025FACE526009736DFA33F195AEEB2A7B17F2F2133A4FEBEA9FFD0E667FA8D6DBABADB84C74E2612EADCD78387ED842EC8CA8E15834A432F300CD5DBFD9EC278F975957AF2004DEF3EFDEF5D8281911F871F8669E2B50C0E376EEB1</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 = 3C845A07E15588991F5B395380C2F53E9CC623F36EA0BA66C3B54E36EBC23741C6B3AEDD77701B7A646388D42484FB6511844CE20981D0085114821106DB3F154796BE2DB059843EFD4EDF74624011F34B63DB68F00E76FAC85944148F5D3DC40469DB7B446B14F28364CE50954C341B7D41F87ABF4674380BB0DAAA848260A7616E4C7813C0D8DD07EE7852A021E6A1FB67CC4EF60A1953CAC853AA56C4A2D2575B2C3F89F77E9FDAE7D5796B41587E86892366942C959218EF87CEE1F752A34E359CCC382F10D73F5193CA5A2322A64B0B8522FEEF93EA646E8A438A508131D464C87701D109F8E4DC35264A89D59B9A31298A411DE8524063F9BFE4B43CB9</code></pre>
<pre><code>encrypted_data = 905B422FF07C827F453B0EE9164C0CE1BD9C17588362ACBD24BB5397C7887608AA1A5B3D90189EACFE5C3F33153F4998184B44AAB1C1DBD98B4DDE7D1DFDCA8E4A626C667B09A4E59CC524DA1647F864E5DFAD7973417662A890E2A9D1558A65BF1482C085ACE12A61A841EC242165D417A7B571AE2E476CC4DF0D11C8B0F8B6EE4D705F6EA672B1DBEBF227B69189B909F0BAE353C3252A98AC133F96A362DDB53829339A9731A5B7344A86EDE794DDFC4A37F350ADB72153FE1130F2EBC7DCA689BE1772E30145A126197D1487954AB621CBA66BFE7C0F7FC4E7A40F3939013439A8C7643E4193B030B4FCFF3E2B77A95227B4A54899668CA5FE7A1ED24722</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 00 9A 0A 00 61 01 98 66
0010 | 40 01 00 00 BE E4 12 D7 05 FE F5 95 9C 0D 66 54
0020 | 3D F2 34 62 04 81 AD 6F 52 D1 9F 8A FF 7B 28 65
0030 | 5B 12 6D F4 E6 40 2E CC 04 43 7C DB 5D 00 00 00
0040 | 04 6D 4F 7A BB 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 3C 84 5A 07 E1 55 88 99 1F 5B 39 53
0060 | 80 C2 F5 3E 9C C6 23 F3 6E A0 BA 66 C3 B5 4E 36
0070 | EB C2 37 41 C6 B3 AE DD 77 70 1B 7A 64 63 88 D4
0080 | 24 84 FB 65 11 84 4C E2 09 81 D0 08 51 14 82 11
0090 | 06 DB 3F 15 47 96 BE 2D B0 59 84 3E FD 4E DF 74
00A0 | 62 40 11 F3 4B 63 DB 68 F0 0E 76 FA C8 59 44 14
00B0 | 8F 5D 3D C4 04 69 DB 7B 44 6B 14 F2 83 64 CE 50
00C0 | 95 4C 34 1B 7D 41 F8 7A BF 46 74 38 0B B0 DA AA
00D0 | 84 82 60 A7 61 6E 4C 78 13 C0 D8 DD 07 EE 78 52
00E0 | A0 21 E6 A1 FB 67 CC 4E F6 0A 19 53 CA C8 53 AA
00F0 | 56 C4 A2 D2 57 5B 2C 3F 89 F7 7E 9F DA E7 D5 79
0100 | 6B 41 58 7E 86 89 23 66 94 2C 95 92 18 EF 87 CE
0110 | E1 F7 52 A3 4E 35 9C CC 38 2F 10 D7 3F 51 93 CA
0120 | 5A 23 22 A6 4B 0B 85 22 FE EF 93 EA 64 6E 8A 43
0130 | 8A 50 81 31 D4 64 C8 77 01 D1 09 F8 E4 DC 35 26
0140 | 4A 89 D5 9B 9A 31 29 8A 41 1D E8 52 40 63 F9 BF
0150 | E4 B4 3C B9</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 40 73 03 00 5D 09 98 66
0010 | 40 01 00 00 BE E4 12 D7 6A 7C BA 77 6C DF 92 4D
0020 | F7 1F C0 C9 6F 16 DB 7D F6 F6 2F 29 D7 2E F7 08
0030 | 30 00 91 24 F7 63 6A A9 04 40 DA 24 DF 00 00 00
0040 | 04 51 7B 91 31 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 90 5B 42 2F F0 7C 82 7F 45 3B 0E E9
0060 | 16 4C 0C E1 BD 9C 17 58 83 62 AC BD 24 BB 53 97
0070 | C7 88 76 08 AA 1A 5B 3D 90 18 9E AC FE 5C 3F 33
0080 | 15 3F 49 98 18 4B 44 AA B1 C1 DB D9 8B 4D DE 7D
0090 | 1D FD CA 8E 4A 62 6C 66 7B 09 A4 E5 9C C5 24 DA
00A0 | 16 47 F8 64 E5 DF AD 79 73 41 76 62 A8 90 E2 A9
00B0 | D1 55 8A 65 BF 14 82 C0 85 AC E1 2A 61 A8 41 EC
00C0 | 24 21 65 D4 17 A7 B5 71 AE 2E 47 6C C4 DF 0D 11
00D0 | C8 B0 F8 B6 EE 4D 70 5F 6E A6 72 B1 DB EB F2 27
00E0 | B6 91 89 B9 09 F0 BA E3 53 C3 25 2A 98 AC 13 3F
00F0 | 96 A3 62 DD B5 38 29 33 9A 97 31 A5 B7 34 4A 86
0100 | ED E7 94 DD FC 4A 37 F3 50 AD B7 21 53 FE 11 30
0110 | F2 EB C7 DC A6 89 BE 17 72 E3 01 45 A1 26 19 7D
0120 | 14 87 95 4A B6 21 CB A6 6B FE 7C 0F 7F C4 E7 A4
0130 | 0F 39 39 01 34 39 A8 C7 64 3E 41 93 B0 30 B4 FC
0140 | FF 3E 2B 77 A9 52 27 B4 A5 48 99 66 8C A5 FE 7A
0150 | 1E D2 47 22</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 = E235ADC313C2D6B78F9F496C518EE93AF2FB16102D1AFCCB745990AEF
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>009A0A0061019866</code></td>
<td><code>407303005D099866</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 = E235ADC313C2D6B78F9F496C518EE93AF2FB16102D1AFCCB745990AEF
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>05FEF5959C0D66543DF234620481AD6F</code></td>
<td><code>6A7CBA776CDF924DF71FC0C96F16DB7D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>52D19F8AFF7B28655B126DF4E6402ECC</code></td>
<td><code>F6F62F29D72EF70830009124F7636AA9</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>04437CDB5D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1132256093</td>
<td><code>0440DA24DF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1088038111</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>046D4F7ABB000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1833925307</td>
<td><code>04517B9131000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1367052593</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 = E235ADC313C2D6B78F9F496C518EE93AF2FB16102D1AFCCB745990AEF
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001003C845A07E15588991F5B3953</code> <code>80C2F53E9CC623F36EA0BA66C3B54E36</code> <code>EBC23741C6B3AEDD77701B7A646388D4</code> <code>2484FB6511844CE20981D00851148211</code> <code>06DB3F154796BE2DB059843EFD4EDF74</code> <code>624011F34B63DB68F00E76FAC8594414</code> <code>8F5D3DC40469DB7B446B14F28364CE50</code> <code>954C341B7D41F87ABF4674380BB0DAAA</code> <code>848260A7616E4C7813C0D8DD07EE7852</code> <code>A021E6A1FB67CC4EF60A1953CAC853AA</code> <code>56C4A2D2575B2C3F89F77E9FDAE7D579</code> <code>6B41587E86892366942C959218EF87CE</code> <code>E1F752A34E359CCC382F10D73F5193CA</code> <code>5A2322A64B0B8522FEEF93EA646E8A43</code> <code>8A508131D464C87701D109F8E4DC3526</code> <code>4A89D59B9A31298A411DE8524063F9BF</code><br> <code>E4B43CB9</code></td>
<td><code>FE000100905B422FF07C827F453B0EE9</code> <code>164C0CE1BD9C17588362ACBD24BB5397</code> <code>C7887608AA1A5B3D90189EACFE5C3F33</code> <code>153F4998184B44AAB1C1DBD98B4DDE7D</code> <code>1DFDCA8E4A626C667B09A4E59CC524DA</code> <code>1647F864E5DFAD7973417662A890E2A9</code> <code>D1558A65BF1482C085ACE12A61A841EC</code> <code>242165D417A7B571AE2E476CC4DF0D11</code> <code>C8B0F8B6EE4D705F6EA672B1DBEBF227</code> <code>B69189B909F0BAE353C3252A98AC133F</code> <code>96A362DDB53829339A9731A5B7344A86</code> <code>EDE794DDFC4A37F350ADB72153FE1130</code> <code>F2EBC7DCA689BE1772E30145A126197D</code> <code>1487954AB621CBA66BFE7C0F7FC4E7A4</code> <code>0F3939013439A8C7643E4193B030B4FC</code> <code>FF3E2B77A95227B4A54899668CA5FE7A</code><br> <code>1ED24722</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = E235ADC313C2D6B78F9F496C518EE93AF2FB16102D1AFCCB745990AEF
<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 64 6C CE 61 01 98 66
0010 | 90 02 00 00 5C 07 E8 D0 05 FE F5 95 9C 0D 66 54
0020 | 3D F2 34 62 04 81 AD 6F 52 D1 9F 8A FF 7B 28 65
0030 | 5B 12 6D F4 E6 40 2E CC FE 50 02 00 56 ED 54 EA
0040 | 55 AE DF 24 96 1A 6F 97 AD 31 32 E6 8D 0C 4F B7
0050 | 85 9A DD BB 89 F4 DF A5 37 B5 E4 19 6A C5 2E BA
0060 | BF BF EE F8 37 24 AD C7 43 FF 51 DC 4E 88 F4 39
0070 | EB D7 04 02 FA A3 FF EF 90 28 54 6E C8 78 EB 18
0080 | FD 7C 64 C2 00 FA D5 E5 00 0A F1 AA 4A 7C 0C B5
0090 | 83 84 C4 4E 77 71 FE 87 5B 07 18 B7 58 AB EF 08
00A0 | 8D 8D 3A 28 78 4C 37 C5 D3 00 B2 49 11 DA 68 DB
00B0 | 80 32 1F 76 3B 0F DD 04 29 3E 5F 37 EA 6C 61 D6
00C0 | 75 ED C3 CD 13 2D 5B 81 90 17 10 75 DC 48 3B E5
00D0 | E9 04 5E 2F CE F0 C6 DF 11 C4 25 DF 86 5B 42 21
00E0 | DE 55 7B 97 EF 21 DF 2C 96 FB B9 92 14 8E B9 45
00F0 | 19 01 B6 B7 44 D4 08 B8 A6 7B E9 84 36 7B 68 5B
0100 | 3C E6 A3 2B 88 5D 58 CA 83 A5 31 0D 4F 44 A6 ED
0110 | 2E 07 27 0D 03 D2 EC F0 C7 F0 10 03 B6 11 3C BD
0120 | 37 9F E3 B4 F1 8C 1A D4 55 A3 31 DC 61 D6 96 DA
0130 | FD 1C 2F 34 0E A2 61 02 EB EC 2B 84 E7 4D 7F 74
0140 | 0A 81 93 A5 83 BD 31 00 1E 6E CF 2F EB 4B 3B A8
0150 | F4 6C 12 C4 E7 CD 2C EA 90 0C CD F5 06 52 06 B4
0160 | 78 5C 99 61 C2 88 17 67 36 72 37 8F D0 BA A3 1D
0170 | 36 BB AF BE 8F 65 6B 09 16 44 94 9C 40 14 A2 84
0180 | 5F 7A 09 65 03 25 EB 3A 3C 92 67 7A 67 07 CC FE
0190 | 00 0E 40 15 FF E4 BB 9B 3D E5 92 AF CC 7C 07 30
01A0 | 36 3A AC 2F 3F FF 16 E5 99 A6 76 91 FB A1 8E 54
01B0 | 6E F7 6F 6F 6F 3C 80 E0 42 89 B7 09 AE E1 3E 3B
01C0 | CA 32 20 14 E6 FB 4A C5 85 89 98 E5 A7 3D AA 35
01D0 | 5F 63 F3 11 F9 47 8C 82 41 1C 3D 2D 72 8B EF 20
01E0 | 50 6C 82 DA 17 BB 2B 00 D7 BA 44 2A 19 8D 9F A4
01F0 | 7C DE 21 51 17 A6 B7 E4 DB E4 3F 3B 4A 57 7D DF
0200 | 19 11 0E 68 71 0D 05 78 3A DE 02 A4 0A B1 D0 74
0210 | C1 E0 80 62 80 1A 80 1C 3D 4E 7D 5D 3A 16 1A 64
0220 | 65 31 45 8C 58 2C A6 74 F7 7D 16 65 83 63 3B 28
0230 | 0B E2 8A B3 D0 F0 56 50 7C FD F6 18 B6 9A 9C 42
0240 | C9 60 24 F7 39 C9 63 90 54 7C 75 4D 29 41 BA 1F
0250 | 58 A5 38 BC AB 4F 02 DF AE 5F AD 68 AD 6D 64 C3
0260 | 92 1B 3E 4E AF E1 63 1C F0 7C 5B A5 F6 09 04 A1
0270 | AD A4 33 AB 7F E3 B9 5C 6B 5F 0F 93 1D 95 94 9C
0280 | 91 6F C8 8E 65 DA AB 0F 0B 26 E9 4A</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 68 22 8A 5E 09 98 66
0010 | E0 02 00 00 5C 07 E8 D0 6A 7C BA 77 6C DF 92 4D
0020 | F7 1F C0 C9 6F 16 DB 7D F6 F6 2F 29 D7 2E F7 08
0030 | 30 00 91 24 F7 63 6A A9 FE 50 02 00 85 AB 24 21
0040 | 83 DC 7D 1E DC B9 EC 61 DA E9 97 D7 12 C2 79 88
0050 | 6C FC B0 48 90 C5 D3 97 DB 2E 98 0C 28 D8 7B 65
0060 | 32 BD 31 3F BD F7 29 F8 30 21 8F 6F BE 38 F1 45
0070 | F1 25 5E F1 5D 9A 96 DB A5 E3 3B 11 8D DC A9 98
0080 | 77 1E 9B DC 4A BD 7F 5E AF 81 74 FE 17 95 52 6D
0090 | 8A D4 2F CE B3 48 6D 8C 91 EB BF 65 A3 AA 2E 7E
00A0 | B4 55 C7 8B 6D 06 18 78 3B 4D 81 B3 BA 01 F8 F3
00B0 | CB BE 12 08 19 BD 14 C9 2B DE EB 1A 25 36 49 8A
00C0 | 60 29 88 19 0C E1 94 1E 4F 7C 44 05 3F BB B2 77
00D0 | E7 F7 02 F4 9F E4 61 9D 19 36 50 7A AF 2E 74 67
00E0 | 5E AE DE 18 74 15 C4 F4 61 C9 86 87 C9 FC 8B D3
00F0 | 3B 06 FA 54 4E 3A 8E EB F2 95 F3 1B 2D D1 B1 57
0100 | 2E B1 19 A0 31 7A C1 AC 99 B3 E2 78 A8 77 52 9A
0110 | 84 C8 EF FB 30 B4 00 6E 1B BD A7 5B E4 51 DE 02
0120 | D0 AC 46 E7 C3 C7 CC 56 E9 C5 29 EF D6 6C 27 B0
0130 | ED 3E C8 87 56 2D F2 FA 55 FC 8F 88 DF BC 4A 8F
0140 | 18 3B AF BA AA 46 1B 8C 07 34 1B 05 4A 61 17 C9
0150 | 7E 61 F9 6E 22 B7 4A AC 3E 71 8E F5 89 2D B5 3B
0160 | 52 B6 5B 93 93 BA 3F DF EE 05 0A 2E 5E 83 02 0F
0170 | 7C F1 7A 76 BD E5 13 48 5E 5C 6C FB FA CB E7 1C
0180 | A0 90 D5 A6 99 26 CF 1E BA 5A 45 FE 77 6B 75 1B
0190 | 6B 74 77 0A 0F 5A 46 32 C2 F8 06 2C B6 BE 7B 31
01A0 | 19 81 B7 59 72 6A 64 A0 6D 25 A4 DD 2C BE 04 4B
01B0 | 64 9D 6F FA 29 86 C1 B0 41 0A 7D 4C 34 F6 63 A5
01C0 | C8 B1 A3 FC 80 84 EE 8D 38 84 A7 01 40 3A 6E 28
01D0 | 3B 47 39 A1 BB 3A 80 21 33 FD A3 14 2E C7 E2 35
01E0 | 81 BA 66 C0 B2 7C C4 DD 19 2E F0 B2 05 0C 04 CC
01F0 | 37 3D 3E 25 FF 27 76 5A B7 DF D6 99 2C E5 0D 52
0200 | FF 75 B6 2E 1D BF B4 1B 76 41 B5 D0 0C F7 41 BF
0210 | 27 D2 3E 25 82 94 40 3D 92 DA 8C 16 1E 82 F6 55
0220 | 8F DF DE BF 02 69 ED 56 AC 8B EC CA 7E 42 B4 3E
0230 | D4 AB 51 14 3B 43 EC F4 18 DF 82 5E D6 D6 5C ED
0240 | DE 3C 9F 35 84 88 54 11 7A 5A BC C7 CD 60 23 7C
0250 | A5 B0 10 8B 45 E4 BE 29 01 F8 86 C3 66 1B A3 C0
0260 | 45 8A 95 52 48 B0 70 2A 38 38 77 DB 0A 34 CB B9
0270 | D5 C8 B7 7C 41 DB 58 28 B3 2E EE 45 D5 5D 0A 48
0280 | DC E9 19 0E AF 18 12 1E 58 79 22 59</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 = E235ADC313C2D6B78F9F496C518EE93AF2FB16102D1AFCCB745990AEF
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01646CCE61019866</code></td>
<td><code>0168228A5E099866</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>90020000</code> (656 in decimal)</td>
<td><code>E0020000</code> (736 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = E235ADC313C2D6B78F9F496C518EE93AF2FB16102D1AFCCB745990AEF
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>05FEF5959C0D66543DF234620481AD6F</code></td>
<td><code>6A7CBA776CDF924DF71FC0C96F16DB7D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>52D19F8AFF7B28655B126DF4E6402ECC</code></td>
<td><code>F6F62F29D72EF70830009124F7636AA9</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE50020056ED54EA55AEDF24961A6F97</code> <code>AD3132E68D0C4FB7859ADDBB89F4DFA5</code> <code>37B5E4196AC52EBABFBFEEF83724ADC7</code> <code>43FF51DC4E88F439EBD70402FAA3FFEF</code> <code>9028546EC878EB18FD7C64C200FAD5E5</code> <code>000AF1AA4A7C0CB58384C44E7771FE87</code> <code>5B0718B758ABEF088D8D3A28784C37C5</code> <code>D300B24911DA68DB80321F763B0FDD04</code> <code>293E5F37EA6C61D675EDC3CD132D5B81</code> <code>90171075DC483BE5E9045E2FCEF0C6DF</code> <code>11C425DF865B4221DE557B97EF21DF2C</code> <code>96FBB992148EB9451901B6B744D408B8</code> <code>A67BE984367B685B3CE6A32B885D58CA</code> <code>83A5310D4F44A6ED2E07270D03D2ECF0</code> <code>C7F01003B6113CBD379FE3B4F18C1AD4</code> <code>55A331DC61D696DAFD1C2F340EA26102</code> <code>EBEC2B84E74D7F740A8193A583BD3100</code> <code>1E6ECF2FEB4B3BA8F46C12C4E7CD2CEA</code> <code>900CCDF5065206B4785C9961C2881767</code> <code>3672378FD0BAA31D36BBAFBE8F656B09</code> <code>1644949C4014A2845F7A09650325EB3A</code> <code>3C92677A6707CCFE000E4015FFE4BB9B</code> <code>3DE592AFCC7C0730363AAC2F3FFF16E5</code> <code>99A67691FBA18E546EF76F6F6F3C80E0</code> <code>4289B709AEE13E3BCA322014E6FB4AC5</code> <code>858998E5A73DAA355F63F311F9478C82</code> <code>411C3D2D728BEF20506C82DA17BB2B00</code> <code>D7BA442A198D9FA47CDE215117A6B7E4</code> <code>DBE43F3B4A577DDF19110E68710D0578</code> <code>3ADE02A40AB1D074C1E08062801A801C</code> <code>3D4E7D5D3A161A646531458C582CA674</code> <code>F77D166583633B280BE28AB3D0F05650</code> <code>7CFDF618B69A9C42C96024F739C96390</code> <code>547C754D2941BA1F58A538BCAB4F02DF</code> <code>AE5FAD68AD6D64C3921B3E4EAFE1631C</code> <code>F07C5BA5F60904A1ADA433AB7FE3B95C</code> <code>6B5F0F931D95949C916FC88E65DAAB0F</code><br> <code>0B26E94A</code></td>
<td><code>FE50020085AB242183DC7D1EDCB9EC61</code> <code>DAE997D712C279886CFCB04890C5D397</code> <code>DB2E980C28D87B6532BD313FBDF729F8</code> <code>30218F6FBE38F145F1255EF15D9A96DB</code> <code>A5E33B118DDCA998771E9BDC4ABD7F5E</code> <code>AF8174FE1795526D8AD42FCEB3486D8C</code> <code>91EBBF65A3AA2E7EB455C78B6D061878</code> <code>3B4D81B3BA01F8F3CBBE120819BD14C9</code> <code>2BDEEB1A2536498A602988190CE1941E</code> <code>4F7C44053FBBB277E7F702F49FE4619D</code> <code>1936507AAF2E74675EAEDE187415C4F4</code> <code>61C98687C9FC8BD33B06FA544E3A8EEB</code> <code>F295F31B2DD1B1572EB119A0317AC1AC</code> <code>99B3E278A877529A84C8EFFB30B4006E</code> <code>1BBDA75BE451DE02D0AC46E7C3C7CC56</code> <code>E9C529EFD66C27B0ED3EC887562DF2FA</code> <code>55FC8F88DFBC4A8F183BAFBAAA461B8C</code> <code>07341B054A6117C97E61F96E22B74AAC</code> <code>3E718EF5892DB53B52B65B9393BA3FDF</code> <code>EE050A2E5E83020F7CF17A76BDE51348</code> <code>5E5C6CFBFACBE71CA090D5A69926CF1E</code> <code>BA5A45FE776B751B6B74770A0F5A4632</code> <code>C2F8062CB6BE7B311981B759726A64A0</code> <code>6D25A4DD2CBE044B649D6FFA2986C1B0</code> <code>410A7D4C34F663A5C8B1A3FC8084EE8D</code> <code>3884A701403A6E283B4739A1BB3A8021</code> <code>33FDA3142EC7E23581BA66C0B27CC4DD</code> <code>192EF0B2050C04CC373D3E25FF27765A</code> <code>B7DFD6992CE50D52FF75B62E1DBFB41B</code> <code>7641B5D00CF741BF27D23E258294403D</code> <code>92DA8C161E82F6558FDFDEBF0269ED56</code> <code>AC8BECCA7E42B43ED4AB51143B43ECF4</code> <code>18DF825ED6D65CEDDE3C9F3584885411</code> <code>7A5ABCC7CD60237CA5B0108B45E4BE29</code> <code>01F886C3661BA3C0458A955248B0702A</code> <code>383877DB0A34CBB9D5C8B77C41DB5828</code> <code>B32EEE45D55D0A48DCE9190EAF18121E</code><br> <code>58792259</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = E235ADC313C2D6B78F9F496C518EE93AF2FB16102D1AFCCB745990AEF
<!-- 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 = 56ED54EA55AEDF24961A6F97AD3132E68D0C4FB7859ADDBB89F4DFA537B5E4196AC52EBABFBFEEF83724ADC743FF51DC4E88F439EBD70402FAA3FFEF9028546EC878EB18FD7C64C200FAD5E5000AF1AA4A7C0CB58384C44E7771FE875B0718B758ABEF088D8D3A28784C37C5D300B24911DA68DB80321F763B0FDD04293E5F37EA6C61D675EDC3CD132D5B8190171075DC483BE5E9045E2FCEF0C6DF11C425DF865B4221DE557B97EF21DF2C96FBB992148EB9451901B6B744D408B8A67BE984367B685B3CE6A32B885D58CA83A5310D4F44A6ED2E07270D03D2ECF0C7F01003B6113CBD379FE3B4F18C1AD455A331DC61D696DAFD1C2F340EA26102EBEC2B84E74D7F740A8193A583BD31001E6ECF2FEB4B3BA8F46C12C4E7CD2CEA900CCDF5065206B4785C9961C28817673672378FD0BAA31D36BBAFBE8F656B091644949C4014A2845F7A09650325EB3A3C92677A6707CCFE000E4015FFE4BB9B3DE592AFCC7C0730363AAC2F3FFF16E599A67691FBA18E546EF76F6F6F3C80E04289B709AEE13E3BCA322014E6FB4AC5858998E5A73DAA355F63F311F9478C82411C3D2D728BEF20506C82DA17BB2B00D7BA442A198D9FA47CDE215117A6B7E4DBE43F3B4A577DDF19110E68710D05783ADE02A40AB1D074C1E08062801A801C3D4E7D5D3A161A646531458C582CA674F77D166583633B280BE28AB3D0F056507CFDF618B69A9C42C96024F739C96390547C754D2941BA1F58A538BCAB4F02DFAE5FAD68AD6D64C3921B3E4EAFE1631CF07C5BA5F60904A1ADA433AB7FE3B95C6B5F0F931D95949C916FC88E65DAAB0F0B26E94A
tmp_aes_key = F4B676FBD0BE2784601BACED292ACC443B4ED4435C15A137214B9488342EE984
tmp_aes_iv = 65ED8BAB8D6754E711E05FCAA479C436E5FFDCFC7526DEEFA756685F3964AEA8</code></pre>
<pre><code>encrypted_answer = 85AB242183DC7D1EDCB9EC61DAE997D712C279886CFCB04890C5D397DB2E980C28D87B6532BD313FBDF729F830218F6FBE38F145F1255EF15D9A96DBA5E33B118DDCA998771E9BDC4ABD7F5EAF8174FE1795526D8AD42FCEB3486D8C91EBBF65A3AA2E7EB455C78B6D0618783B4D81B3BA01F8F3CBBE120819BD14C92BDEEB1A2536498A602988190CE1941E4F7C44053FBBB277E7F702F49FE4619D1936507AAF2E74675EAEDE187415C4F461C98687C9FC8BD33B06FA544E3A8EEBF295F31B2DD1B1572EB119A0317AC1AC99B3E278A877529A84C8EFFB30B4006E1BBDA75BE451DE02D0AC46E7C3C7CC56E9C529EFD66C27B0ED3EC887562DF2FA55FC8F88DFBC4A8F183BAFBAAA461B8C07341B054A6117C97E61F96E22B74AAC3E718EF5892DB53B52B65B9393BA3FDFEE050A2E5E83020F7CF17A76BDE513485E5C6CFBFACBE71CA090D5A69926CF1EBA5A45FE776B751B6B74770A0F5A4632C2F8062CB6BE7B311981B759726A64A06D25A4DD2CBE044B649D6FFA2986C1B0410A7D4C34F663A5C8B1A3FC8084EE8D3884A701403A6E283B4739A1BB3A802133FDA3142EC7E23581BA66C0B27CC4DD192EF0B2050C04CC373D3E25FF27765AB7DFD6992CE50D52FF75B62E1DBFB41B7641B5D00CF741BF27D23E258294403D92DA8C161E82F6558FDFDEBF0269ED56AC8BECCA7E42B43ED4AB51143B43ECF418DF825ED6D65CEDDE3C9F35848854117A5ABCC7CD60237CA5B0108B45E4BE2901F886C3661BA3C0458A955248B0702A383877DB0A34CBB9D5C8B77C41DB5828B32EEE45D55D0A48DCE9190EAF18121E58792259
tmp_aes_key = 411C254643F3D66D2C906C08F3F6ACF138745F26958F836EE174A652AFB1E7EA
tmp_aes_iv = A13209D4A55AB13C6B2FF5875668F5E59E1ACE2F9B095EBE14E37495E5544EF5</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = F0B83C37C36993F479B0DA26EFADC21BE3EEEF00BA0D89B505FEF5959C0D66543DF234620481AD6F52D19F8AFF7B28655B126DF4E6402ECC03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100848D0735BEB3B42FBEB066B6DF1D42A79F842F18753D8F6369E1C82BC7B44A940F43A96BAC92C199BD25533C0507F15980BBC932EBC86798546F78A83FFDEC4F31FE31CE22E936F6523945B7E7D2963EA3C6297E067143DB04BA02C71350B94E7D42C9A9916CB5616AF0AA3862EB4E95E396CB4E2D0280A2D6331A8FD2753DE105C771BD8585B29B497E0A668C743C1327FEA8767B85EAA7AE39CB0766FC9C8C2114B4770BE0F63DB517A0D487A43C9465189BD1BED2B3597A2798669891BEB85A05554BB9AA1CB9365B7E7FE18277D7A26FDD60E88FFF88F76A971A3FE2C6D79BB50A7AB34CB57746BE0C73550A81E8326EC21E7E43EEBCF48445957AFD092A6101986680AC66DC88E0A3AF
answer = BA0D89B505FEF5959C0D66543DF234620481AD6F52D19F8AFF7B28655B126DF4E6402ECC03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100848D0735BEB3B42FBEB066B6DF1D42A79F842F18753D8F6369E1C82BC7B44A940F43A96BAC92C199BD25533C0507F15980BBC932EBC86798546F78A83FFDEC4F31FE31CE22E936F6523945B7E7D2963EA3C6297E067143DB04BA02C71350B94E7D42C9A9916CB5616AF0AA3862EB4E95E396CB4E2D0280A2D6331A8FD2753DE105C771BD8585B29B497E0A668C743C1327FEA8767B85EAA7AE39CB0766FC9C8C2114B4770BE0F63DB517A0D487A43C9465189BD1BED2B3597A2798669891BEB85A05554BB9AA1CB9365B7E7FE18277D7A26FDD60E88FFF88F76A971A3FE2C6D79BB50A7AB34CB57746BE0C73550A81E8326EC21E7E43EEBCF48445957AFD092A6101986680AC66DC88E0A3AF</code></pre>
<pre><code>answer_with_hash = 03784756DB98705A05609ACC2AC89E6F619D4B94BA0D89B56A7CBA776CDF924DF71FC0C96F16DB7DF6F62F29D72EF70830009124F7636AA903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100288663844CC6FAB87319AD718014A15F5409602532F147CD923412B37FF7C14C3CBC1434FEDEFA4AD83B3DAB7B2D2E83B639586AE91FC622EBE4225DA05E5DDDA0F9218D30F9CEDBA2336793B47974810777006A66676A4CC4371A7A63A2E8F4EB9BB6A4DDD862F9CBF6EA7D8F86C213669924F359DD3647D429BC40A632427587C0336D9A29AB4ABD7CB50B1A5BBF111E35D1F19102E6A3F649A806DDFD58420C0A9908AF6CCF5ADD086B945C78F5D69E8DB3A807E219D18143EA9166F8A00D665797D542327540044124735278E0DBBE054A3D4A40B269CADB9F078F5F15B40C7DEAC07652D8E4E866C1DE9F1DAD5CD2378EFF27A76DC18FBFC52122EC407E5E0998668F587A5D6196B31B
answer = BA0D89B56A7CBA776CDF924DF71FC0C96F16DB7DF6F62F29D72EF70830009124F7636AA903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100288663844CC6FAB87319AD718014A15F5409602532F147CD923412B37FF7C14C3CBC1434FEDEFA4AD83B3DAB7B2D2E83B639586AE91FC622EBE4225DA05E5DDDA0F9218D30F9CEDBA2336793B47974810777006A66676A4CC4371A7A63A2E8F4EB9BB6A4DDD862F9CBF6EA7D8F86C213669924F359DD3647D429BC40A632427587C0336D9A29AB4ABD7CB50B1A5BBF111E35D1F19102E6A3F649A806DDFD58420C0A9908AF6CCF5ADD086B945C78F5D69E8DB3A807E219D18143EA9166F8A00D665797D542327540044124735278E0DBBE054A3D4A40B269CADB9F078F5F15B40C7DEAC07652D8E4E866C1DE9F1DAD5CD2378EFF27A76DC18FBFC52122EC407E5E0998668F587A5D6196B31B</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 05 FE F5 95 9C 0D 66 54 3D F2 34 62
0010 | 04 81 AD 6F 52 D1 9F 8A FF 7B 28 65 5B 12 6D F4
0020 | E6 40 2E CC 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 6A 7C BA 77 6C DF 92 4D F7 1F C0 C9
0010 | 6F 16 DB 7D F6 F6 2F 29 D7 2E F7 08 30 00 91 24
0020 | F7 63 6A A9 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 = BA0D89B505FEF5959C0D66543DF234620481AD6F52D19F8AFF7B28655B126DF4E6402EC
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 | 84 8D 07 35 BE B3 B4 2F BE B0 66 B6 DF 1D 42 A7
0140 | 9F 84 2F 18 75 3D 8F 63 69 E1 C8 2B C7 B4 4A 94
0150 | 0F 43 A9 6B AC 92 C1 99 BD 25 53 3C 05 07 F1 59
0160 | 80 BB C9 32 EB C8 67 98 54 6F 78 A8 3F FD EC 4F
0170 | 31 FE 31 CE 22 E9 36 F6 52 39 45 B7 E7 D2 96 3E
0180 | A3 C6 29 7E 06 71 43 DB 04 BA 02 C7 13 50 B9 4E
0190 | 7D 42 C9 A9 91 6C B5 61 6A F0 AA 38 62 EB 4E 95
01A0 | E3 96 CB 4E 2D 02 80 A2 D6 33 1A 8F D2 75 3D E1
01B0 | 05 C7 71 BD 85 85 B2 9B 49 7E 0A 66 8C 74 3C 13
01C0 | 27 FE A8 76 7B 85 EA A7 AE 39 CB 07 66 FC 9C 8C
01D0 | 21 14 B4 77 0B E0 F6 3D B5 17 A0 D4 87 A4 3C 94
01E0 | 65 18 9B D1 BE D2 B3 59 7A 27 98 66 98 91 BE B8
01F0 | 5A 05 55 4B B9 AA 1C B9 36 5B 7E 7F E1 82 77 D7
0200 | A2 6F DD 60 E8 8F FF 88 F7 6A 97 1A 3F E2 C6 D7
0210 | 9B B5 0A 7A B3 4C B5 77 46 BE 0C 73 55 0A 81 E8
0220 | 32 6E C2 1E 7E 43 EE BC F4 84 45 95 7A FD 09 2A
0230 | 61 01 98 66</code></pre>
0130 | 28 86 63 84 4C C6 FA B8 73 19 AD 71 80 14 A1 5F
0140 | 54 09 60 25 32 F1 47 CD 92 34 12 B3 7F F7 C1 4C
0150 | 3C BC 14 34 FE DE FA 4A D8 3B 3D AB 7B 2D 2E 83
0160 | B6 39 58 6A E9 1F C6 22 EB E4 22 5D A0 5E 5D DD
0170 | A0 F9 21 8D 30 F9 CE DB A2 33 67 93 B4 79 74 81
0180 | 07 77 00 6A 66 67 6A 4C C4 37 1A 7A 63 A2 E8 F4
0190 | EB 9B B6 A4 DD D8 62 F9 CB F6 EA 7D 8F 86 C2 13
01A0 | 66 99 24 F3 59 DD 36 47 D4 29 BC 40 A6 32 42 75
01B0 | 87 C0 33 6D 9A 29 AB 4A BD 7C B5 0B 1A 5B BF 11
01C0 | 1E 35 D1 F1 91 02 E6 A3 F6 49 A8 06 DD FD 58 42
01D0 | 0C 0A 99 08 AF 6C CF 5A DD 08 6B 94 5C 78 F5 D6
01E0 | 9E 8D B3 A8 07 E2 19 D1 81 43 EA 91 66 F8 A0 0D
01F0 | 66 57 97 D5 42 32 75 40 04 41 24 73 52 78 E0 DB
0200 | BE 05 4A 3D 4A 40 B2 69 CA DB 9F 07 8F 5F 15 B4
0210 | 0C 7D EA C0 76 52 D8 E4 E8 66 C1 DE 9F 1D AD 5C
0220 | D2 37 8E FF 27 A7 6D C1 8F BF C5 21 22 EC 40 7E
0230 | 5E 09 98 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 = BA0D89B505FEF5959C0D66543DF234620481AD6F52D19F8AFF7B28655B126DF4E6402EC
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>05FEF5959C0D66543DF234620481AD6F</code></td>
<td><code>6A7CBA776CDF924DF71FC0C96F16DB7D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>52D19F8AFF7B28655B126DF4E6402ECC</code></td>
<td><code>F6F62F29D72EF70830009124F7636AA9</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B505FEF5959C0D66543DF234620481AD6F52D19F8AFF7B28655B126DF4E6402EC
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE000100848D0735BEB3B42FBEB066B6</code> <code>DF1D42A79F842F18753D8F6369E1C82B</code> <code>C7B44A940F43A96BAC92C199BD25533C</code> <code>0507F15980BBC932EBC86798546F78A8</code> <code>3FFDEC4F31FE31CE22E936F6523945B7</code> <code>E7D2963EA3C6297E067143DB04BA02C7</code> <code>1350B94E7D42C9A9916CB5616AF0AA38</code> <code>62EB4E95E396CB4E2D0280A2D6331A8F</code> <code>D2753DE105C771BD8585B29B497E0A66</code> <code>8C743C1327FEA8767B85EAA7AE39CB07</code> <code>66FC9C8C2114B4770BE0F63DB517A0D4</code> <code>87A43C9465189BD1BED2B3597A279866</code> <code>9891BEB85A05554BB9AA1CB9365B7E7F</code> <code>E18277D7A26FDD60E88FFF88F76A971A</code> <code>3FE2C6D79BB50A7AB34CB57746BE0C73</code> <code>550A81E8326EC21E7E43EEBCF4844595</code><br> <code>7AFD092A</code></td>
<td><code>FE000100288663844CC6FAB87319AD71</code> <code>8014A15F5409602532F147CD923412B3</code> <code>7FF7C14C3CBC1434FEDEFA4AD83B3DAB</code> <code>7B2D2E83B639586AE91FC622EBE4225D</code> <code>A05E5DDDA0F9218D30F9CEDBA2336793</code> <code>B47974810777006A66676A4CC4371A7A</code> <code>63A2E8F4EB9BB6A4DDD862F9CBF6EA7D</code> <code>8F86C213669924F359DD3647D429BC40</code> <code>A632427587C0336D9A29AB4ABD7CB50B</code> <code>1A5BBF111E35D1F19102E6A3F649A806</code> <code>DDFD58420C0A9908AF6CCF5ADD086B94</code> <code>5C78F5D69E8DB3A807E219D18143EA91</code> <code>66F8A00D665797D54232754004412473</code> <code>5278E0DBBE054A3D4A40B269CADB9F07</code> <code>8F5F15B40C7DEAC07652D8E4E866C1DE</code> <code>9F1DAD5CD2378EFF27A76DC18FBFC521</code><br> <code>22EC407E</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>61019866</code> (1721237857 in decimal)</td>
<td><code>5E099866</code> (1721239902 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B505FEF5959C0D66543DF234620481AD6F52D19F8AFF7B28655B126DF4E6402EC
<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 = 5C69A02EAFFEAA2D326F217C1551542D60E4179F95EDEF8202A89E028BAF7DFB372B772DD2AEEF0A4FF3953CBD2B37346EEB9C63F601BA7F3AAE110C4EDDDB102A50122554FE27295BAE4C07EA6D1789EAD5325FB626A19E43F8F1F915897BEB2A6EE67BA1BBCC882CC0E4312AC49BAD752574EE16AE681BD2E2A86FF2096ED6A7F4CE8C86410A804325F045A01AB3512A092676247B7128803BC239F3566D457D47179096EA21A8C61C0C0531AF917FDA80801ECBA1E74263365F582B12E011892584C55C24F67A4C9C333108C290796A79C0DFE295CFDA924DBC1B67B6BEF22AF906400EE6C9B1DD7E8D7688BAC40411C618BE50B016F445A91469FD7CA208</code></pre>
<pre><code>b = C2F6DE50828EAAD8D28559B1A3E0B231BB4A2E9A24C5207FEB5ED99BF51738167BDF9B350CC6A10B1241867208759305747EEF7BC8BA219DF1A3E179B09BE39BDAC0D5202C959878FBA32C88186CAAFD0724B8E550BCF7B9637E60F8B2A34710C06B759621A15FA973E3D2A794EA3405B2D081BE16A4C7005B090B47EDE9A559B8F8D23D6E46962B03BD036450C1131049796B91E21464E8C698221BC86566DA2FEA301A7D9F804CB4F099755718E7514B3C7ED32DAA97545AE3410BA09035EDA769A5142E19BECE16CE89296B1E779A8FA83CE32A8F31C563C74C340FBED8A67FBBC3C2DA59116CC52313E82BDC62EAE67CAF35EB67EB4F5ED5B970486DB552</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 = 346FA22E130D06F9AF25A7E398F15893878030136A4AC899624BEE0E7ECBB28E8AEA227D06BC2D06F3B9E8A0B7A673C242A36F88D2316DA0D9D5C54646E1EF028F2741BBEB2F51FD22981200B73953D453D113192A38F88996FAFD11B9FD78724FEA55BB73C882EE4BBA5470B8857189ACCE642EA238F343E73EFDA7E84577833352F454E6FAD5428078C0DE9A5D5FDCEA5F6994E1E58FDAF37C78644F170360D2015C625A615767AE050CFA4108C38EA5DD6D9A0D0F76BB328B3D495FB91446FEA843CDB30C25BEA2D598C5373EAA111BB6CE76D4013B3A9889113F60BC35FEC710CEC9FCF50B2D4DCF25A9E28FE11B1E00C3DD84A6CC63E773112C16A54178</code></pre>
<pre><code>g_b = 929B50F63A6B9FA2C9F02F8FD8101665C937F0ECC0D06EC450AA8C949CF37A9EC04E6CB7A9AD8D339E8C728C0B4436D6570CFB6635E310DEC3A37A916E7BC41F6E2070022ED7A1E515F6A962B19E2CF87675CD8902E0DEA114FFFB2FE7B3DDC99B09CA708E6620BD87DF31AA04286C808B965E28D35690DFA3148BA314C271203BFB8A4839DE127D0A2C93A17D74192D14C4972E67A68786A76FEBE7D00C35F000A3778AF5BF9FEB8C2FCEF7451468B195E28D76C85A5EB99A85A3AABFCFDB39319537D6799EDB1A2DAC14AA83E442619303BCE9C205A545A44B943F5E4979B4BD947DF09F46BAC791B10D63CE10861A04D9B23EA3B30F0BE665619CB2CDE50D</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 05 FE F5 95 9C 0D 66 54 3D F2 34 62
0010 | 04 81 AD 6F 52 D1 9F 8A FF 7B 28 65 5B 12 6D F4
0020 | E6 40 2E CC 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 34 6F A2 2E 13 0D 06 F9 AF 25 A7 E3 98 F1 58 93
0040 | 87 80 30 13 6A 4A C8 99 62 4B EE 0E 7E CB B2 8E
0050 | 8A EA 22 7D 06 BC 2D 06 F3 B9 E8 A0 B7 A6 73 C2
0060 | 42 A3 6F 88 D2 31 6D A0 D9 D5 C5 46 46 E1 EF 02
0070 | 8F 27 41 BB EB 2F 51 FD 22 98 12 00 B7 39 53 D4
0080 | 53 D1 13 19 2A 38 F8 89 96 FA FD 11 B9 FD 78 72
0090 | 4F EA 55 BB 73 C8 82 EE 4B BA 54 70 B8 85 71 89
00A0 | AC CE 64 2E A2 38 F3 43 E7 3E FD A7 E8 45 77 83
00B0 | 33 52 F4 54 E6 FA D5 42 80 78 C0 DE 9A 5D 5F DC
00C0 | EA 5F 69 94 E1 E5 8F DA F3 7C 78 64 4F 17 03 60
00D0 | D2 01 5C 62 5A 61 57 67 AE 05 0C FA 41 08 C3 8E
00E0 | A5 DD 6D 9A 0D 0F 76 BB 32 8B 3D 49 5F B9 14 46
00F0 | FE A8 43 CD B3 0C 25 BE A2 D5 98 C5 37 3E AA 11
0100 | 1B B6 CE 76 D4 01 3B 3A 98 89 11 3F 60 BC 35 FE
0110 | C7 10 CE C9 FC F5 0B 2D 4D CF 25 A9 E2 8F E1 1B
0120 | 1E 00 C3 DD 84 A6 CC 63 E7 73 11 2C 16 A5 41 78</code></pre>
<pre><code>0000 | 54 B6 43 66 6A 7C BA 77 6C DF 92 4D F7 1F C0 C9
0010 | 6F 16 DB 7D F6 F6 2F 29 D7 2E F7 08 30 00 91 24
0020 | F7 63 6A A9 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 92 9B 50 F6 3A 6B 9F A2 C9 F0 2F 8F D8 10 16 65
0040 | C9 37 F0 EC C0 D0 6E C4 50 AA 8C 94 9C F3 7A 9E
0050 | C0 4E 6C B7 A9 AD 8D 33 9E 8C 72 8C 0B 44 36 D6
0060 | 57 0C FB 66 35 E3 10 DE C3 A3 7A 91 6E 7B C4 1F
0070 | 6E 20 70 02 2E D7 A1 E5 15 F6 A9 62 B1 9E 2C F8
0080 | 76 75 CD 89 02 E0 DE A1 14 FF FB 2F E7 B3 DD C9
0090 | 9B 09 CA 70 8E 66 20 BD 87 DF 31 AA 04 28 6C 80
00A0 | 8B 96 5E 28 D3 56 90 DF A3 14 8B A3 14 C2 71 20
00B0 | 3B FB 8A 48 39 DE 12 7D 0A 2C 93 A1 7D 74 19 2D
00C0 | 14 C4 97 2E 67 A6 87 86 A7 6F EB E7 D0 0C 35 F0
00D0 | 00 A3 77 8A F5 BF 9F EB 8C 2F CE F7 45 14 68 B1
00E0 | 95 E2 8D 76 C8 5A 5E B9 9A 85 A3 AA BF CF DB 39
00F0 | 31 95 37 D6 79 9E DB 1A 2D AC 14 AA 83 E4 42 61
0100 | 93 03 BC E9 C2 05 A5 45 A4 4B 94 3F 5E 49 79 B4
0110 | BD 94 7D F0 9F 46 BA C7 91 B1 0D 63 CE 10 86 1A
0120 | 04 D9 B2 3E A3 B3 0F 0B E6 65 61 9C B2 CD E5 0D</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 = BA0D89B505FEF5959C0D66543DF234620481AD6F52D19F8AFF7B28655B126DF4E6402EC
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>05FEF5959C0D66543DF234620481AD6F</code></td>
<td><code>6A7CBA776CDF924DF71FC0C96F16DB7D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>52D19F8AFF7B28655B126DF4E6402ECC</code></td>
<td><code>F6F62F29D72EF70830009124F7636AA9</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE000100346FA22E130D06F9AF25A7E3</code> <code>98F15893878030136A4AC899624BEE0E</code> <code>7ECBB28E8AEA227D06BC2D06F3B9E8A0</code> <code>B7A673C242A36F88D2316DA0D9D5C546</code> <code>46E1EF028F2741BBEB2F51FD22981200</code> <code>B73953D453D113192A38F88996FAFD11</code> <code>B9FD78724FEA55BB73C882EE4BBA5470</code> <code>B8857189ACCE642EA238F343E73EFDA7</code> <code>E84577833352F454E6FAD5428078C0DE</code> <code>9A5D5FDCEA5F6994E1E58FDAF37C7864</code> <code>4F170360D2015C625A615767AE050CFA</code> <code>4108C38EA5DD6D9A0D0F76BB328B3D49</code> <code>5FB91446FEA843CDB30C25BEA2D598C5</code> <code>373EAA111BB6CE76D4013B3A9889113F</code> <code>60BC35FEC710CEC9FCF50B2D4DCF25A9</code> <code>E28FE11B1E00C3DD84A6CC63E773112C</code><br> <code>16A54178</code></td>
<td><code>FE000100929B50F63A6B9FA2C9F02F8F</code> <code>D8101665C937F0ECC0D06EC450AA8C94</code> <code>9CF37A9EC04E6CB7A9AD8D339E8C728C</code> <code>0B4436D6570CFB6635E310DEC3A37A91</code> <code>6E7BC41F6E2070022ED7A1E515F6A962</code> <code>B19E2CF87675CD8902E0DEA114FFFB2F</code> <code>E7B3DDC99B09CA708E6620BD87DF31AA</code> <code>04286C808B965E28D35690DFA3148BA3</code> <code>14C271203BFB8A4839DE127D0A2C93A1</code> <code>7D74192D14C4972E67A68786A76FEBE7</code> <code>D00C35F000A3778AF5BF9FEB8C2FCEF7</code> <code>451468B195E28D76C85A5EB99A85A3AA</code> <code>BFCFDB39319537D6799EDB1A2DAC14AA</code> <code>83E442619303BCE9C205A545A44B943F</code> <code>5E4979B4BD947DF09F46BAC791B10D63</code> <code>CE10861A04D9B23EA3B30F0BE665619C</code><br> <code>B2CDE50D</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 = BA0D89B505FEF5959C0D66543DF234620481AD6F52D19F8AFF7B28655B126DF4E6402EC
<!-- 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 = 54B6436605FEF5959C0D66543DF234620481AD6F52D19F8AFF7B28655B126DF4E6402ECC0000000000000000FE000100346FA22E130D06F9AF25A7E398F15893878030136A4AC899624BEE0E7ECBB28E8AEA227D06BC2D06F3B9E8A0B7A673C242A36F88D2316DA0D9D5C54646E1EF028F2741BBEB2F51FD22981200B73953D453D113192A38F88996FAFD11B9FD78724FEA55BB73C882EE4BBA5470B8857189ACCE642EA238F343E73EFDA7E84577833352F454E6FAD5428078C0DE9A5D5FDCEA5F6994E1E58FDAF37C78644F170360D2015C625A615767AE050CFA4108C38EA5DD6D9A0D0F76BB328B3D495FB91446FEA843CDB30C25BEA2D598C5373EAA111BB6CE76D4013B3A9889113F60BC35FEC710CEC9FCF50B2D4DCF25A9E28FE11B1E00C3DD84A6CC63E773112C16A54178
padding = 81FD69FCA6AC66BD72B25774
tmp_aes_key = F4B676FBD0BE2784601BACED292ACC443B4ED4435C15A137214B9488342EE984
tmp_aes_iv = 65ED8BAB8D6754E711E05FCAA479C436E5FFDCFC7526DEEFA756685F3964AEA8</code></pre>
<pre><code>data = 54B643666A7CBA776CDF924DF71FC0C96F16DB7DF6F62F29D72EF70830009124F7636AA90000000000000000FE000100929B50F63A6B9FA2C9F02F8FD8101665C937F0ECC0D06EC450AA8C949CF37A9EC04E6CB7A9AD8D339E8C728C0B4436D6570CFB6635E310DEC3A37A916E7BC41F6E2070022ED7A1E515F6A962B19E2CF87675CD8902E0DEA114FFFB2FE7B3DDC99B09CA708E6620BD87DF31AA04286C808B965E28D35690DFA3148BA314C271203BFB8A4839DE127D0A2C93A17D74192D14C4972E67A68786A76FEBE7D00C35F000A3778AF5BF9FEB8C2FCEF7451468B195E28D76C85A5EB99A85A3AABFCFDB39319537D6799EDB1A2DAC14AA83E442619303BCE9C205A545A44B943F5E4979B4BD947DF09F46BAC791B10D63CE10861A04D9B23EA3B30F0BE665619CB2CDE50D
padding = 89E2713E4A6084BB39BB2C95
tmp_aes_key = 411C254643F3D66D2C906C08F3F6ACF138745F26958F836EE174A652AFB1E7EA
tmp_aes_iv = A13209D4A55AB13C6B2FF5875668F5E59E1ACE2F9B095EBE14E37495E5544EF5</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 = 6C38FF22F954815526A6964B664E1A2D1A55C0DB760CDF2AE1536EDE3B35BBD4AC7B53D593EB0CBCEAAE98F61B50100C7B32A64503EB5AAB887BB1A6936CF0B5FC55170F33CFF32B4E1C1112E30FCFAEAD780C937A447EA87F1F31E4B463A6AE8921DA84880C7F31E1741C486836E554BC615E00B7EDED76988DF6C8736E8774F4A6D2D2259E7FA4072FFBD008E2C452493F218D768FE87623EDED20296523236508C5437D0E1790378BD48C5AD01D87B3D19645AA2BB867B1C9470B929E653AD3E5AF28B4B5DFD4D250B5AE645AD28E593CEBF5B1A0DB4047BEDCC862E06EC962E96637D307238993E74A8265608D17B07BD085BDAC1E14E938C465A3F2553196F6BD1FD15A089FF6423D5DBEB5F786D7FB16A53A56C490FA93DD30100DFE6A368C496C7048F1E718CA1F56220CAB618DAB00770A60156D6ADD56AC4F8C101F14ED1E0BD4BCA4F09F309DE90238D306</code></pre>
<pre><code>encrypted_data = 1BAE5F2952AAD57E4822BAFEECA913917698D39C7FA2F500D1A5DB9FD25253D9B34CC700031BEAF228FBB003353079D961E9EA652512A880035E3E0F5BEAC0AC1998EC47DE1198C97A7E1B9FDEB7ED0A08985B193DB90E2684C57A4B9A82E332D7971024461ACA082F0ACF78E0CD45D4744C830F53B3847F1983EA97F02BE46B2E7FFB445E9855E745A99174951F96FB898A7DD6C7F4680B4B9ABF61FB2AF1DD2BE64B3E4DEBC4FF2CDDCCF49B9B610C868779E58E3B270A0DBFAAEE7C510533595FACA779D3F34646F5911BE8086133574C59A69830FAA22C4C608156162371186153A8B839970C6E2117FCE65489BAD2A65FD35B6E939808D28184D04A626090FE4161C18FF6F359A02E6272CCB77F7900B9C8C5D2373BAD2BBC387F32255FE8792B4BF4428959FE6875CE85B569021B79F4F3B81B41C0D36E5102E1CF40A507B43C545487F52C2D610FECBFE4400F</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 E4 25 0C 00 61 01 98 66
0010 | 78 01 00 00 1F 5F 04 F5 05 FE F5 95 9C 0D 66 54
0020 | 3D F2 34 62 04 81 AD 6F 52 D1 9F 8A FF 7B 28 65
0030 | 5B 12 6D F4 E6 40 2E CC FE 50 01 00 6C 38 FF 22
0040 | F9 54 81 55 26 A6 96 4B 66 4E 1A 2D 1A 55 C0 DB
0050 | 76 0C DF 2A E1 53 6E DE 3B 35 BB D4 AC 7B 53 D5
0060 | 93 EB 0C BC EA AE 98 F6 1B 50 10 0C 7B 32 A6 45
0070 | 03 EB 5A AB 88 7B B1 A6 93 6C F0 B5 FC 55 17 0F
0080 | 33 CF F3 2B 4E 1C 11 12 E3 0F CF AE AD 78 0C 93
0090 | 7A 44 7E A8 7F 1F 31 E4 B4 63 A6 AE 89 21 DA 84
00A0 | 88 0C 7F 31 E1 74 1C 48 68 36 E5 54 BC 61 5E 00
00B0 | B7 ED ED 76 98 8D F6 C8 73 6E 87 74 F4 A6 D2 D2
00C0 | 25 9E 7F A4 07 2F FB D0 08 E2 C4 52 49 3F 21 8D
00D0 | 76 8F E8 76 23 ED ED 20 29 65 23 23 65 08 C5 43
00E0 | 7D 0E 17 90 37 8B D4 8C 5A D0 1D 87 B3 D1 96 45
00F0 | AA 2B B8 67 B1 C9 47 0B 92 9E 65 3A D3 E5 AF 28
0100 | B4 B5 DF D4 D2 50 B5 AE 64 5A D2 8E 59 3C EB F5
0110 | B1 A0 DB 40 47 BE DC C8 62 E0 6E C9 62 E9 66 37
0120 | D3 07 23 89 93 E7 4A 82 65 60 8D 17 B0 7B D0 85
0130 | BD AC 1E 14 E9 38 C4 65 A3 F2 55 31 96 F6 BD 1F
0140 | D1 5A 08 9F F6 42 3D 5D BE B5 F7 86 D7 FB 16 A5
0150 | 3A 56 C4 90 FA 93 DD 30 10 0D FE 6A 36 8C 49 6C
0160 | 70 48 F1 E7 18 CA 1F 56 22 0C AB 61 8D AB 00 77
0170 | 0A 60 15 6D 6A DD 56 AC 4F 8C 10 1F 14 ED 1E 0B
0180 | D4 BC A4 F0 9F 30 9D E9 02 38 D3 06</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 28 4E 08 00 5E 09 98 66
0010 | 78 01 00 00 1F 5F 04 F5 6A 7C BA 77 6C DF 92 4D
0020 | F7 1F C0 C9 6F 16 DB 7D F6 F6 2F 29 D7 2E F7 08
0030 | 30 00 91 24 F7 63 6A A9 FE 50 01 00 1B AE 5F 29
0040 | 52 AA D5 7E 48 22 BA FE EC A9 13 91 76 98 D3 9C
0050 | 7F A2 F5 00 D1 A5 DB 9F D2 52 53 D9 B3 4C C7 00
0060 | 03 1B EA F2 28 FB B0 03 35 30 79 D9 61 E9 EA 65
0070 | 25 12 A8 80 03 5E 3E 0F 5B EA C0 AC 19 98 EC 47
0080 | DE 11 98 C9 7A 7E 1B 9F DE B7 ED 0A 08 98 5B 19
0090 | 3D B9 0E 26 84 C5 7A 4B 9A 82 E3 32 D7 97 10 24
00A0 | 46 1A CA 08 2F 0A CF 78 E0 CD 45 D4 74 4C 83 0F
00B0 | 53 B3 84 7F 19 83 EA 97 F0 2B E4 6B 2E 7F FB 44
00C0 | 5E 98 55 E7 45 A9 91 74 95 1F 96 FB 89 8A 7D D6
00D0 | C7 F4 68 0B 4B 9A BF 61 FB 2A F1 DD 2B E6 4B 3E
00E0 | 4D EB C4 FF 2C DD CC F4 9B 9B 61 0C 86 87 79 E5
00F0 | 8E 3B 27 0A 0D BF AA EE 7C 51 05 33 59 5F AC A7
0100 | 79 D3 F3 46 46 F5 91 1B E8 08 61 33 57 4C 59 A6
0110 | 98 30 FA A2 2C 4C 60 81 56 16 23 71 18 61 53 A8
0120 | B8 39 97 0C 6E 21 17 FC E6 54 89 BA D2 A6 5F D3
0130 | 5B 6E 93 98 08 D2 81 84 D0 4A 62 60 90 FE 41 61
0140 | C1 8F F6 F3 59 A0 2E 62 72 CC B7 7F 79 00 B9 C8
0150 | C5 D2 37 3B AD 2B BC 38 7F 32 25 5F E8 79 2B 4B
0160 | F4 42 89 59 FE 68 75 CE 85 B5 69 02 1B 79 F4 F3
0170 | B8 1B 41 C0 D3 6E 51 02 E1 CF 40 A5 07 B4 3C 54
0180 | 54 87 F5 2C 2D 61 0F EC BF E4 40 0F</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>E4250C0061019866</code></td>
<td><code>284E08005E099866</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>05FEF5959C0D66543DF234620481AD6F</code></td>
<td><code>6A7CBA776CDF924DF71FC0C96F16DB7D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>52D19F8AFF7B28655B126DF4E6402ECC</code></td>
<td><code>F6F62F29D72EF70830009124F7636AA9</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE5001006C38FF22F954815526A6964B</code> <code>664E1A2D1A55C0DB760CDF2AE1536EDE</code> <code>3B35BBD4AC7B53D593EB0CBCEAAE98F6</code> <code>1B50100C7B32A64503EB5AAB887BB1A6</code> <code>936CF0B5FC55170F33CFF32B4E1C1112</code> <code>E30FCFAEAD780C937A447EA87F1F31E4</code> <code>B463A6AE8921DA84880C7F31E1741C48</code> <code>6836E554BC615E00B7EDED76988DF6C8</code> <code>736E8774F4A6D2D2259E7FA4072FFBD0</code> <code>08E2C452493F218D768FE87623EDED20</code> <code>296523236508C5437D0E1790378BD48C</code> <code>5AD01D87B3D19645AA2BB867B1C9470B</code> <code>929E653AD3E5AF28B4B5DFD4D250B5AE</code> <code>645AD28E593CEBF5B1A0DB4047BEDCC8</code> <code>62E06EC962E96637D307238993E74A82</code> <code>65608D17B07BD085BDAC1E14E938C465</code> <code>A3F2553196F6BD1FD15A089FF6423D5D</code> <code>BEB5F786D7FB16A53A56C490FA93DD30</code> <code>100DFE6A368C496C7048F1E718CA1F56</code> <code>220CAB618DAB00770A60156D6ADD56AC</code> <code>4F8C101F14ED1E0BD4BCA4F09F309DE9</code><br> <code>0238D306</code></td>
<td><code>FE5001001BAE5F2952AAD57E4822BAFE</code> <code>ECA913917698D39C7FA2F500D1A5DB9F</code> <code>D25253D9B34CC700031BEAF228FBB003</code> <code>353079D961E9EA652512A880035E3E0F</code> <code>5BEAC0AC1998EC47DE1198C97A7E1B9F</code> <code>DEB7ED0A08985B193DB90E2684C57A4B</code> <code>9A82E332D7971024461ACA082F0ACF78</code> <code>E0CD45D4744C830F53B3847F1983EA97</code> <code>F02BE46B2E7FFB445E9855E745A99174</code> <code>951F96FB898A7DD6C7F4680B4B9ABF61</code> <code>FB2AF1DD2BE64B3E4DEBC4FF2CDDCCF4</code> <code>9B9B610C868779E58E3B270A0DBFAAEE</code> <code>7C510533595FACA779D3F34646F5911B</code> <code>E8086133574C59A69830FAA22C4C6081</code> <code>56162371186153A8B839970C6E2117FC</code> <code>E65489BAD2A65FD35B6E939808D28184</code> <code>D04A626090FE4161C18FF6F359A02E62</code> <code>72CCB77F7900B9C8C5D2373BAD2BBC38</code> <code>7F32255FE8792B4BF4428959FE6875CE</code> <code>85B569021B79F4F3B81B41C0D36E5102</code> <code>E1CF40A507B43C545487F52C2D610FEC</code><br> <code>BFE4400F</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 = 5E5B0003BF77F374B3DCB4CE389DCD5056CF6A392F0631B3E5A527D2DEA22B5F4BED0D363C2A08C232EBAFC43A423D74B6CDDF0B6317087A26D620626B24B1627EDE442FBF66555D22591D948D59E502B0FE57B772921B9A79FBE1EB79A41BAF1C7C98A9FD33164BEC348A9297A068E636842D1A0068EB1A2B98FDC454363C5511690FF94559DD0A70BEF90D7EE969A4AB8B8D61BD74E2B3D3F8E80595CEBE110A78C94CBB9149D7B9B6EFFDCB0C71CF4681FF56A24D49641D45075E0951D8E58E753C8A18F21E1DF5DB54B6847C13044C7778B7E66E45FBAB6B97141D302ADE22125259C018E3EEA3E7D2103F8E0BAE597480E826396B9043B442284C5F3D1B</code></pre>
<pre><code>auth_key = 301CB2661834FDDAECB506FCF69831B7F4CC86808C0240E4AF66597C17350E57F2F4D0AF16E558C6F54EC82BD7E6FB735FEF296B70400CCD5E58D66234FD640D3CD1E11DE4E07B0ADA56F69151E0D7C0936B29D0EB54B916C5FF62BB2FFC696C3817496551C746B4AD5C3389FE28A24090FC31EE623E58C60AC0BA88D78A057CF2D0276E9A4E193ED0894BE28B397FB831ACAA4895F292B8B74DED7762C719DE0590F061F057D0D4078E855A1592CF4DAEB372481F8B2B7F98AEFE05F92B4987191A89100F16A4C3D47B8F7382CC6B94FC3FB0F2F7258742BD4F8BEBC329547FDE6B433D4DC3A43177B73633A166CF7594A7DE8A0A6D626D9B29AD9BCF336AB6</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 E4 1C 40 62 01 98 66
0010 | A4 00 00 00 34 F7 CB 3B 05 FE F5 95 9C 0D 66 54
0020 | 3D F2 34 62 04 81 AD 6F 52 D1 9F 8A FF 7B 28 65
0030 | 5B 12 6D F4 E6 40 2E CC D6 11 24 47 54 39 DC 1E
0040 | 8C 17 01 95 CD DA ED 02</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 A0 4C 0C 5F 09 98 66
0010 | 68 00 00 00 34 F7 CB 3B 6A 7C BA 77 6C DF 92 4D
0020 | F7 1F C0 C9 6F 16 DB 7D F6 F6 2F 29 D7 2E F7 08
0030 | 30 00 91 24 F7 63 6A A9 C8 08 7E D3 D8 E1 F1 8B
0040 | DC 59 B8 36 10 18 74 4D</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>01E41C4062019866</code></td>
<td><code>01A04C0C5F099866</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>A4000000</code> (164 in decimal)</td>
<td><code>68000000</code> (104 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>05FEF5959C0D66543DF234620481AD6F</code></td>
<td><code>6A7CBA776CDF924DF71FC0C96F16DB7D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>52D19F8AFF7B28655B126DF4E6402ECC</code></td>
<td><code>F6F62F29D72EF70830009124F7636AA9</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>D61124475439DC1E8C170195CDDAED02</code></td>
<td><code>C8087ED3D8E1F18BDC59B8361018744D</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

@ -8,18 +8,16 @@
Constructor
Description
inputCollectibleUsername
 
inputCollectiblePhone
 ">
Represents a username fragment collectible
inputCollectiblePhone…">
<meta property="og:title" content="InputCollectible">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
inputCollectibleUsername
 
inputCollectiblePhone
 ">
Represents a username fragment collectible
inputCollectiblePhone…">
<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">
@ -79,11 +77,11 @@ inputCollectiblePhone
<tbody>
<tr>
<td><a href="/constructor/inputCollectibleUsername">inputCollectibleUsername</a></td>
<td> </td>
<td>Represents a <a href="/api/fragment">username fragment collectible</a></td>
</tr>
<tr>
<td><a href="/constructor/inputCollectiblePhone">inputCollectiblePhone</a></td>
<td> </td>
<td>Represents a <a href="/api/fragment">phone number fragment collectible</a></td>
</tr>
</tbody>
</table></div>

View file

@ -87,7 +87,7 @@
</tr>
<tr>
<td><a href="/constructor/inputStorePaymentStars">inputStorePaymentStars</a></td>
<td> </td>
<td>Used to top up the <a href="/api/stars">Telegram Stars balance</a> using the Play Store/App Store flow (official apps only).</td>
</tr>
</tbody>
</table></div>

View file

@ -8,22 +8,20 @@
Constructor
Description
fragment.collectibleInfo
 
Info about a fragment collectible.
Methods
Method
Description
fragment.getCollectibleInfo…">
Description…">
<meta property="og:title" content="fragment.CollectibleInfo">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
fragment.collectibleInfo
 
Info about a fragment collectible.
Methods
Method
Description
fragment.getCollectibleInfo…">
Description…">
<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">
@ -86,7 +84,7 @@ fragment.getCollectibleInfo…">
<tbody>
<tr>
<td><a href="/constructor/fragment.collectibleInfo">fragment.collectibleInfo</a></td>
<td> </td>
<td>Info about a <a href="/api/fragment">fragment collectible</a>.</td>
</tr>
</tbody>
</table>