Update content of files

This commit is contained in:
GitHub Action 2023-12-22 20:58:39 +00:00
parent 09a6121857
commit 2f3aaadbf9
28 changed files with 243 additions and 243 deletions

View file

@ -126,7 +126,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/Boost">Boost</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p>
<h4><a class="anchor" href="#paymentsapplygiftcode" id="paymentsapplygiftcode" name="paymentsapplygiftcode"><i class="anchor-icon"></i></a><a href="/method/payments.applyGiftCode">payments.applyGiftCode</a></h4>
<p>Apply a <a href="/api/giveaways">Telegram Premium giftcode »</a></p>

View file

@ -83,7 +83,7 @@
<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="#inputstorepaymentpremiumgiveaway" id="inputstorepaymentpremiumgiveaway" name="inputstorepaymentpremiumgiveaway"><i class="anchor-icon"></i></a><a href="/constructor/inputStorePaymentPremiumGiveaway">inputStorePaymentPremiumGiveaway</a></h4>
<p>Used to pay for a <a href="/api/giveaways">giveaway, see here »</a> for more info.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p>
<h4><a class="anchor" href="#inputstorepaymentpremiumgiftcode" id="inputstorepaymentpremiumgiftcode" name="inputstorepaymentpremiumgiftcode"><i class="anchor-icon"></i></a><a href="/constructor/inputStorePaymentPremiumGiftCode">inputStorePaymentPremiumGiftCode</a></h4>
<p>Used to gift <a href="/api/premium">Telegram Premium</a> subscriptions only to some specific subscribers of a channel or to some of our contacts, see <a href="/api/giveaways">here »</a> for more info on giveaways and gifts.</p>

View file

@ -100,7 +100,7 @@
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<h4><a class="anchor" href="#channel-boosts" id="channel-boosts" name="channel-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p>
<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></div>

View file

@ -118,7 +118,7 @@
<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="#channel-boosts" id="channel-boosts" name="channel-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p>
<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4>
<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</p>

View file

@ -101,7 +101,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/MessageAction">MessageAction</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p>
<h4><a class="anchor" href="#deep-links" id="deep-links" name="deep-links"><i class="anchor-icon"></i></a><a href="/api/links">Deep links</a></h4>
<p>Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.</p>

View file

@ -61,7 +61,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/MessageAction">MessageAction</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -81,7 +81,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/MessageAction">MessageAction</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -108,7 +108,7 @@
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -121,7 +121,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/payments.CheckedGiftCode">payments.CheckedGiftCode</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>

View file

@ -107,7 +107,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/payments.GiveawayInfo">payments.GiveawayInfo</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p>
<h4><a class="anchor" href="#messagemediagiveaway" id="messagemediagiveaway" name="messagemediagiveaway"><i class="anchor-icon"></i></a><a href="/constructor/messageMediaGiveaway">messageMediaGiveaway</a></h4>
<p>Contains info about a <a href="/api/giveaways">giveaway, see here »</a> for more info.</p></div>

View file

@ -113,7 +113,7 @@
<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="#deep-links" id="deep-links" name="deep-links"><i class="anchor-icon"></i></a><a href="/api/links">Deep links</a></h4>
<p>Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -126,7 +126,7 @@
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/premium.BoostsStatus">premium.BoostsStatus</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p>
<h4><a class="anchor" href="#deep-links" id="deep-links" name="deep-links"><i class="anchor-icon"></i></a><a href="/api/links">Deep links</a></h4>
<p>Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.</p>

View file

@ -109,7 +109,7 @@
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -93,7 +93,7 @@
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#telegram-premium" id="telegram-premium" name="telegram-premium"><i class="anchor-icon"></i></a><a href="/api/premium">Telegram Premium</a></h4>
<p>Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -79,32 +79,32 @@
<tr>
<td><strong>views_per_post</strong></td>
<td style="text-align: center;"><a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a></td>
<td><code>total_viewcount/postcount</code>, for posts posted during the period in consideration (<code>views_per_post</code>). <br>Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>).</td>
<td><code>total_viewcount/postcount</code>, for posts posted during the period in consideration. <br>Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>).</td>
</tr>
<tr>
<td><strong>shares_per_post</strong></td>
<td style="text-align: center;"><a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a></td>
<td><code>total_viewcount/postcount</code>, for posts posted during the period in consideration (<code>views_per_post</code>). <br>Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>)</td>
<td><code>total_sharecount/postcount</code>, for posts posted during the period in consideration. <br>Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>)</td>
</tr>
<tr>
<td><strong>reactions_per_post</strong></td>
<td style="text-align: center;"><a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a></td>
<td> </td>
<td><code>total_reactions/postcount</code>, for posts posted during the period in consideration. <br>Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>)</td>
</tr>
<tr>
<td><strong>views_per_story</strong></td>
<td style="text-align: center;"><a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a></td>
<td> </td>
<td><code>total_views/storycount</code>, for posts posted during the period in consideration. <br>Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>)</td>
</tr>
<tr>
<td><strong>shares_per_story</strong></td>
<td style="text-align: center;"><a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a></td>
<td> </td>
<td><code>total_shares/storycount</code>, for posts posted during the period in consideration. <br>Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>)</td>
</tr>
<tr>
<td><strong>reactions_per_story</strong></td>
<td style="text-align: center;"><a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a></td>
<td> </td>
<td><code>total_reactions/storycount</code>, for posts posted during the period in consideration. <br>Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>)</td>
</tr>
<tr>
<td><strong>enabled_notifications</strong></td>
@ -159,22 +159,22 @@
<tr>
<td><strong>reactions_by_emotion_graph</strong></td>
<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td>
<td> </td>
<td>A graph containing the number of reactions on posts categorized by emotion</td>
</tr>
<tr>
<td><strong>story_interactions_graph</strong></td>
<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td>
<td> </td>
<td>A graph containing the number of story views and shares</td>
</tr>
<tr>
<td><strong>story_reactions_by_emotion_graph</strong></td>
<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td>
<td> </td>
<td>A graph containing the number of reactions on stories categorized by emotion</td>
</tr>
<tr>
<td><strong>recent_posts_interactions</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PostInteractionCounters">PostInteractionCounters</a>&gt;</td>
<td> </td>
<td>Detailed statistics about number of views and shares of recently sent messages and stories</td>
</tr>
</tbody>
</table>

View file

@ -74,7 +74,7 @@
<tr>
<td><strong>reactions_by_emotion_graph</strong></td>
<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td>
<td> </td>
<td>A graph containing the number of reactions on stories categorized by emotion</td>
</tr>
</tbody>
</table>

View file

@ -89,12 +89,12 @@
<tr>
<td><strong>chats</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt;</td>
<td> </td>
<td>Mentioned chats</td>
</tr>
<tr>
<td><strong>users</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt;</td>
<td> </td>
<td>Mentioned users</td>
</tr>
</tbody>
</table>

View file

@ -101,7 +101,7 @@
</tbody>
</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -95,7 +95,7 @@
</tbody>
</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -103,7 +103,7 @@
<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="#messageactiongiveawaylaunch" id="messageactiongiveawaylaunch" name="messageactiongiveawaylaunch"><i class="anchor-icon"></i></a><a href="/constructor/messageActionGiveawayLaunch">messageActionGiveawayLaunch</a></h4>
<p>A <a href="/api/giveaways">giveaway</a> was started.</p>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -82,7 +82,7 @@
<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3>
<p><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PremiumGiftCodeOption">PremiumGiftCodeOption</a>&gt;</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -111,7 +111,7 @@
</tbody>
</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -115,7 +115,7 @@
</tbody>
</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p>
<h4><a class="anchor" href="#premiumboostslist" id="premiumboostslist" name="premiumboostslist"><i class="anchor-icon"></i></a><a href="/constructor/premium.boostsList">premium.boostsList</a></h4>
<p>List of <a href="/api/boost">boosts</a> that were applied to a peer by multiple users.</p>

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 C0 B0 04 00 CD F2 85 65
0010 | 14 00 00 00 F1 8E 7E BE 9C 5D B4 46 2C 82 8D AA
0020 | DD 7A 65 6B AE F3 09 74</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 AC 0F 0F 00 D5 F7 85 65
0010 | 14 00 00 00 F1 8E 7E BE F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC</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>C0B00400CDF28565</code></td>
<td><code>AC0F0F00D5F78565</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>9C5DB4462C828DAADD7A656BAEF30974</code></td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</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 08 03 0A CE F2 85 65
0010 | A8 00 00 00 63 24 16 05 9C 5D B4 46 2C 82 8D AA
0020 | DD 7A 65 6B AE F3 09 74 4A CE B6 44 30 A5 23 BE
0030 | ED 33 B3 50 0F E8 9D 16 08 24 BC D1 82 BA 69 7B
0040 | 7D 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 E4 41 97 D5 F7 85 65
0010 | 88 00 00 00 63 24 16 05 F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
0030 | AD DF BD 26 CA 9A FC C4 08 22 BB A4 9C C9 33 B3
0040 | B5 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>0108030ACEF28565</code></td>
<td><code>01E44197D5F78565</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>88000000</code> (136 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>9C5DB4462C828DAADD7A656BAEF30974</code></td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>4ACEB64430A523BEED33B3500FE89D16</code></td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0824BCD182BA697B7D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2647221040390437757</td>
<td><code>0822BBA49CC933B3B5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2502775011231904693</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 = 2647221040390437757</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2647221040390437757 = 1501394959 * 1763174323</code></p>
<pre><code>p = 1501394959
q = 1763174323</code></pre>
<pre><code>pq = 2502775011231904693</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2502775011231904693 = 1293611899 * 1934718607</code></p>
<pre><code>p = 1293611899
q = 1934718607</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 24 BC D1 82 BA 69 7B 7D 00 00 00
0010 | 04 59 7D 78 0F 00 00 00 04 69 17 E7 B3 00 00 00
0020 | 9C 5D B4 46 2C 82 8D AA DD 7A 65 6B AE F3 09 74
0030 | 4A CE B6 44 30 A5 23 BE ED 33 B3 50 0F E8 9D 16
0040 | D7 9F B4 2D 36 4B EB 1A D2 A7 96 B0 27 6D 68 86
0050 | 35 60 34 A7 99 A8 FE 9C EB CF F4 0D 69 7C A5 C8
<pre><code>0000 | 95 5F F5 A9 08 22 BB A4 9C C9 33 B3 B5 00 00 00
0010 | 04 4D 1A F3 7B 00 00 00 04 73 51 76 8F 00 00 00
0020 | F8 65 53 B8 A2 25 70 92 30 49 7E FC 0B CD 9A BC
0030 | 6F EE C6 AF 0E 0E AC F6 AD DF BD 26 CA 9A FC C4
0040 | B0 EF F8 70 F2 98 11 C6 EB 1F 02 70 EB 8C 1A 62
0050 | 89 87 DF 50 A2 3F 0F 0F 01 FD 6B 73 5D 0E 71 84
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 = 1763174323</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0824BCD182BA697B7D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2647221040390437757</td>
<td><code>0822BBA49CC933B3B5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2502775011231904693</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>04597D780F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1501394959</td>
<td><code>044D1AF37B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1293611899</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>046917E7B3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1763174323</td>
<td><code>047351768F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1934718607</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>9C5DB4462C828DAADD7A656BAEF30974</code></td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>4ACEB64430A523BEED33B3500FE89D16</code></td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>D79FB42D364BEB1AD2A796B0276D6886</code> <code>356034A799A8FE9CEBCFF40D697CA5C8</code></td>
<td><code>B0EFF870F29811C6EB1F0270EB8C1A62</code> <code>8987DF50A23F0F0F01FD6B735D0E7184</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1763174323</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 = 955FF5A90824BCD182BA697B7D00000004597D780F000000046917E7B30000009C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D16D79FB42D364BEB1AD2A796B0276D6886356034A799A8FE9CEBCFF40D697CA5C802000000
random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723260EF853598345DB9C4C9EF77DAC58E584495F1D017A6023C39DFA5E2FD691FBF40317B81F4AB9057BBE0BC675239CF52BFD9CB8172F925754F7A9C70D6A008</code></pre>
<pre><code>data = 955FF5A90822BBA49CC933B3B5000000044D1AF37B000000047351768F000000F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4B0EFF870F29811C6EB1F0270EB8C1A628987DF50A23F0F0F01FD6B735D0E718402000000
random_padding_bytes = 57C530F3CB6A2A9A32BAB2A7B71E9E523B95ADD2A0EC7A5BB1072E95188A9C77AA64AEF4E4F6DB16F0A93941719764414939DF702C40E3B509045F4ED647CD7AE1CA8B1FB98994A296ACDDCF5FE4011832681F459F57A5290D8CF702</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 = 0C46CFFDF971091E85FB5DA6DB2F01F56301650805A0DBA8CC1CC5074BF40978A3813BCB5130F691A6D11561DCE21BD858F1FC45C294FA8DCE26C42C240CE6888A067539D6FF1A2F671029011B10288A9DE2569F3181F0D9C7BE15565E40A565B3BB8640861E6E7F7FF7DC878E2DFF5D53431C3C2333F65C32843EE004935AE0CC2BE9DAC48BF9879566E91961879AB8FD59F5593BFD12BF6869B33801127FB2124DEA7D1646D9F3204D088F94579E5007BC4BEFEC552E844275B7111EB4F5CA90785B9B7885BA1BBA9CC5264D41E34D1F07C14E53596EE3CF4A50FF3F0E22D1BEFE98511B5DAA766DA8642257A7A2262AE072DA5CA270701F2C11ED9957B69E</code></pre>
<pre><code>encrypted_data = A042D464B3FA02364F92263167DDD5160D4C346A3910BC4B17268699BECDD6EBB6056A1F1D0E747FDEB2BE1012280A5374A3E44F10F82AA6138DAF6AB9E4517BF11B83E71BFBAD0FCFBDE44DA0D7AA0D2B0464F6479EAB10C11656B8A40AC2AEF6344F11A7A6DB56319AB33EE6D63C105893189DB643F89C49A2D596BD7AF67BF6C577D1DE1CF3128EA698D324968D0C355020004AC840B08982918002E3A7482606A809D69CA5982106ED1B4AD0F190A599C4BC383BB5ED173A6EF45EEFB17C53F442D2AFF470458539DC0A7199EC50001B7186AB0612A98534BC55E0414E05162757A8FFCCDAA966DAB94F6CF42E61EBA79A952983197065B4F13600DE233E</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 AC F7 01 00 CE F2 85 65
0010 | 40 01 00 00 BE E4 12 D7 9C 5D B4 46 2C 82 8D AA
0020 | DD 7A 65 6B AE F3 09 74 4A CE B6 44 30 A5 23 BE
0030 | ED 33 B3 50 0F E8 9D 16 04 59 7D 78 0F 00 00 00
0040 | 04 69 17 E7 B3 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 0C 46 CF FD F9 71 09 1E 85 FB 5D A6
0060 | DB 2F 01 F5 63 01 65 08 05 A0 DB A8 CC 1C C5 07
0070 | 4B F4 09 78 A3 81 3B CB 51 30 F6 91 A6 D1 15 61
0080 | DC E2 1B D8 58 F1 FC 45 C2 94 FA 8D CE 26 C4 2C
0090 | 24 0C E6 88 8A 06 75 39 D6 FF 1A 2F 67 10 29 01
00A0 | 1B 10 28 8A 9D E2 56 9F 31 81 F0 D9 C7 BE 15 56
00B0 | 5E 40 A5 65 B3 BB 86 40 86 1E 6E 7F 7F F7 DC 87
00C0 | 8E 2D FF 5D 53 43 1C 3C 23 33 F6 5C 32 84 3E E0
00D0 | 04 93 5A E0 CC 2B E9 DA C4 8B F9 87 95 66 E9 19
00E0 | 61 87 9A B8 FD 59 F5 59 3B FD 12 BF 68 69 B3 38
00F0 | 01 12 7F B2 12 4D EA 7D 16 46 D9 F3 20 4D 08 8F
0100 | 94 57 9E 50 07 BC 4B EF EC 55 2E 84 42 75 B7 11
0110 | 1E B4 F5 CA 90 78 5B 9B 78 85 BA 1B BA 9C C5 26
0120 | 4D 41 E3 4D 1F 07 C1 4E 53 59 6E E3 CF 4A 50 FF
0130 | 3F 0E 22 D1 BE FE 98 51 1B 5D AA 76 6D A8 64 22
0140 | 57 A7 A2 26 2A E0 72 DA 5C A2 70 70 1F 2C 11 ED
0150 | 99 57 B6 9E</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 B0 0F 0F 00 D5 F7 85 65
0010 | 40 01 00 00 BE E4 12 D7 F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
0030 | AD DF BD 26 CA 9A FC C4 04 4D 1A F3 7B 00 00 00
0040 | 04 73 51 76 8F 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 A0 42 D4 64 B3 FA 02 36 4F 92 26 31
0060 | 67 DD D5 16 0D 4C 34 6A 39 10 BC 4B 17 26 86 99
0070 | BE CD D6 EB B6 05 6A 1F 1D 0E 74 7F DE B2 BE 10
0080 | 12 28 0A 53 74 A3 E4 4F 10 F8 2A A6 13 8D AF 6A
0090 | B9 E4 51 7B F1 1B 83 E7 1B FB AD 0F CF BD E4 4D
00A0 | A0 D7 AA 0D 2B 04 64 F6 47 9E AB 10 C1 16 56 B8
00B0 | A4 0A C2 AE F6 34 4F 11 A7 A6 DB 56 31 9A B3 3E
00C0 | E6 D6 3C 10 58 93 18 9D B6 43 F8 9C 49 A2 D5 96
00D0 | BD 7A F6 7B F6 C5 77 D1 DE 1C F3 12 8E A6 98 D3
00E0 | 24 96 8D 0C 35 50 20 00 4A C8 40 B0 89 82 91 80
00F0 | 02 E3 A7 48 26 06 A8 09 D6 9C A5 98 21 06 ED 1B
0100 | 4A D0 F1 90 A5 99 C4 BC 38 3B B5 ED 17 3A 6E F4
0110 | 5E EF B1 7C 53 F4 42 D2 AF F4 70 45 85 39 DC 0A
0120 | 71 99 EC 50 00 1B 71 86 AB 06 12 A9 85 34 BC 55
0130 | E0 41 4E 05 16 27 57 A8 FF CC DA A9 66 DA B9 4F
0140 | 6C F4 2E 61 EB A7 9A 95 29 83 19 70 65 B4 F1 36
0150 | 00 DE 23 3E</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 = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>ACF70100CEF28565</code></td>
<td><code>B00F0F00D5F78565</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 = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>9C5DB4462C828DAADD7A656BAEF30974</code></td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>4ACEB64430A523BEED33B3500FE89D16</code></td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>04597D780F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1501394959</td>
<td><code>044D1AF37B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1293611899</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>046917E7B3000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1763174323</td>
<td><code>047351768F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1934718607</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 = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001000C46CFFDF971091E85FB5DA6</code> <code>DB2F01F56301650805A0DBA8CC1CC507</code> <code>4BF40978A3813BCB5130F691A6D11561</code> <code>DCE21BD858F1FC45C294FA8DCE26C42C</code> <code>240CE6888A067539D6FF1A2F67102901</code> <code>1B10288A9DE2569F3181F0D9C7BE1556</code> <code>5E40A565B3BB8640861E6E7F7FF7DC87</code> <code>8E2DFF5D53431C3C2333F65C32843EE0</code> <code>04935AE0CC2BE9DAC48BF9879566E919</code> <code>61879AB8FD59F5593BFD12BF6869B338</code> <code>01127FB2124DEA7D1646D9F3204D088F</code> <code>94579E5007BC4BEFEC552E844275B711</code> <code>1EB4F5CA90785B9B7885BA1BBA9CC526</code> <code>4D41E34D1F07C14E53596EE3CF4A50FF</code> <code>3F0E22D1BEFE98511B5DAA766DA86422</code> <code>57A7A2262AE072DA5CA270701F2C11ED</code><br> <code>9957B69E</code></td>
<td><code>FE000100A042D464B3FA02364F922631</code> <code>67DDD5160D4C346A3910BC4B17268699</code> <code>BECDD6EBB6056A1F1D0E747FDEB2BE10</code> <code>12280A5374A3E44F10F82AA6138DAF6A</code> <code>B9E4517BF11B83E71BFBAD0FCFBDE44D</code> <code>A0D7AA0D2B0464F6479EAB10C11656B8</code> <code>A40AC2AEF6344F11A7A6DB56319AB33E</code> <code>E6D63C105893189DB643F89C49A2D596</code> <code>BD7AF67BF6C577D1DE1CF3128EA698D3</code> <code>24968D0C355020004AC840B089829180</code> <code>02E3A7482606A809D69CA5982106ED1B</code> <code>4AD0F190A599C4BC383BB5ED173A6EF4</code> <code>5EEFB17C53F442D2AFF470458539DC0A</code> <code>7199EC50001B7186AB0612A98534BC55</code> <code>E0414E05162757A8FFCCDAA966DAB94F</code> <code>6CF42E61EBA79A952983197065B4F136</code><br> <code>00DE233E</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723
<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 AC 54 C7 CE F2 85 65
0010 | DC 02 00 00 5C 07 E8 D0 9C 5D B4 46 2C 82 8D AA
0020 | DD 7A 65 6B AE F3 09 74 4A CE B6 44 30 A5 23 BE
0030 | ED 33 B3 50 0F E8 9D 16 FE 50 02 00 F4 74 95 52
0040 | B8 2F C1 25 08 C1 60 11 4A 3F 57 77 0D 20 14 D1
0050 | 44 A6 AC 37 46 30 A3 03 6D 21 84 DA 8C AA D5 38
0060 | D2 54 7E 77 A0 5F 59 A1 AB 4B B1 80 BD 37 BD 9E
0070 | 0A 7A E4 F9 B5 DB 88 59 5C 7B 6F A6 39 8D 4A 94
0080 | EF 58 6F BE 28 9B 9D 87 3A 06 74 08 13 73 C2 87
0090 | 63 F8 91 86 0A 8C 91 68 25 FF 0E 0F 5C 99 C3 FB
00A0 | AF 45 4B EF 9C F2 BD C6 2F DD B8 4B 63 02 B3 51
00B0 | 2E 77 38 A7 E5 67 75 59 21 9F 9A 23 2B 8E 98 07
00C0 | 35 32 F5 47 E4 3E DA CA 37 DF 9D 8B B6 A0 90 54
00D0 | F3 33 44 75 F1 02 FF 37 82 E7 C6 5A 46 A8 F9 C6
00E0 | 1A D4 94 D1 C6 12 C3 C9 FA 57 DE 42 6C B1 E5 EC
00F0 | E5 8A 92 E1 1E 58 8A 5B 2F 07 0E 8D 65 B7 4D 25
0100 | C8 A5 35 C0 21 DA 4A FF 44 30 8E 4C AB 7A 6E 93
0110 | 1F 8A C5 99 A3 B4 7C 11 C5 09 EB 89 76 A7 9F 33
0120 | 64 7B 25 C1 25 60 04 BC 00 FE FE 95 EC AB D0 FC
0130 | 75 1E 66 BA E7 7C 88 DE 40 46 C8 36 E0 78 58 4C
0140 | 0B 63 95 D7 A0 62 F5 B5 06 36 A5 0B 3D 6D 61 9B
0150 | B5 23 EC 71 97 F0 10 53 67 83 18 3F 6C CB 56 02
0160 | 2B 46 12 AC BD CC 30 B3 F8 17 B0 2E CD 26 2A 5A
0170 | 43 5E D9 B0 7A 9B D2 ED D6 46 1F C9 06 20 F3 E2
0180 | 59 FC FE 08 95 64 F0 9F 21 66 38 05 89 7E 43 83
0190 | 7B 1A 8D FE 65 E9 DE 55 63 85 15 EF 3C B7 B2 27
01A0 | 29 93 67 5B C7 7D 9E EC 08 26 5F A3 BA EA 7A 86
01B0 | 30 67 9D F1 FD 56 79 4F D7 9A 13 70 34 32 86 E2
01C0 | 10 91 27 A8 90 B7 07 0E A2 42 BB 9A 88 7C CC 7E
01D0 | 16 E4 54 2A 61 90 23 F6 8C F9 B7 F2 5D 6E 3E EC
01E0 | 6C CD 44 FF 8D 90 80 7D BD 2C 78 04 F6 1F EF EF
01F0 | E0 A8 FF 85 09 CE BC 1C 3F 54 CE 1D 7A 1E C6 D9
0200 | 09 B5 39 89 20 DE 35 A0 18 22 F7 FE C0 E3 55 DF
0210 | E6 B7 97 89 F4 C2 98 D5 02 0E 91 35 EE ED 5D B8
0220 | D7 43 53 4B 2D C9 86 D7 0C 59 A6 36 94 E6 10 1B
0230 | 71 63 6A DC F3 4E DA 44 19 43 53 8A 88 AD 1F ED
0240 | 9A F2 19 94 1D 57 44 2E E9 B9 D9 79 45 DB 59 4D
0250 | A1 38 F1 27 95 B9 41 2E F9 BD D0 51 5B 9F 7B DE
0260 | DC 9F B8 26 6A 55 74 35 BB D3 45 45 63 A1 79 53
0270 | 5E DB 48 DD 0F 0B 22 6D EE 93 87 E1 63 A2 4B F7
0280 | 03 E3 6D A1 D9 60 52 9A 41 1A D4 3E</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 B8 EC 57 D6 F7 85 65
0010 | 78 02 00 00 5C 07 E8 D0 F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
0030 | AD DF BD 26 CA 9A FC C4 FE 50 02 00 5A 3F 28 85
0040 | 1C 30 5E 8D 8A BF D2 FF 4C 9E 77 E7 FA 2F 20 3C
0050 | F4 A9 6C CC 76 BE 66 84 FC 98 FE 9A 2B B7 7D 06
0060 | 23 F8 CD 76 CF 2A 7B 27 59 F3 69 C6 FB EE 8B AF
0070 | E9 FC 32 0C 2B D3 84 84 E6 7E C8 24 01 88 16 6A
0080 | 23 58 F6 20 06 1A AD B1 91 33 71 40 BC C3 59 D6
0090 | C0 85 DA 74 57 6A A7 DC D9 24 A5 22 AB A7 44 7C
00A0 | 50 4D 19 95 38 73 84 F7 59 9B 11 71 16 1E A5 6B
00B0 | C5 9A 51 DB 50 4F 20 F4 0F 62 0C 70 D9 4A A6 4E
00C0 | B4 6D 41 99 0F BE E4 35 23 41 66 0C E7 E2 59 FD
00D0 | 25 75 18 9C 56 DC 6A F0 FC 89 64 4B 45 19 B9 1C
00E0 | 27 0C 98 D6 DF 1D FD F9 1B D2 B5 CF 07 76 F8 94
00F0 | 95 B3 75 97 86 D0 24 2E 7B D7 79 01 41 BF 7D FD
0100 | 92 CA F7 85 80 BD DE 6C 4F 5B 12 A5 04 FF 3B 02
0110 | 5F 9F 84 40 7F D0 28 C8 6A 85 DF F6 17 0B 39 7D
0120 | E7 3F 0E 68 78 8A 20 C9 E3 57 84 A2 93 D6 B0 E7
0130 | DA 0E B1 9F 5C FB 85 23 13 E6 BC D1 EF 4C 3D C9
0140 | 3A D3 1A 85 AA 70 26 19 7D 07 94 DB A7 C8 A2 02
0150 | EC 6F C3 39 E3 0F 8B AD 95 56 86 43 82 B7 0D 52
0160 | 21 CB 18 36 DB FD 14 04 5C 5E 08 5A 48 FE 13 BD
0170 | 06 25 B9 96 14 F1 3A 16 7D 11 86 25 7C 16 1D A5
0180 | 71 06 CA A8 F6 57 A0 A9 0F 9C 55 E1 F7 FA E5 15
0190 | 78 32 BB 9E 40 8F B1 C0 E0 C8 13 22 F7 C8 DB 7E
01A0 | FB 1B 07 21 66 42 8E B4 69 63 4A 91 C6 AD 82 9B
01B0 | 3F 65 4C A6 46 F7 EF 22 AC 01 18 48 80 3A AD 64
01C0 | FE F7 C0 73 72 4F 03 E9 9F B6 D9 A1 78 09 16 B8
01D0 | 6B 1E 7C 0B 33 38 52 B7 0B 8B 42 40 C0 B7 D0 87
01E0 | 2E B1 2F BF 51 A9 FD F6 83 F9 B5 E0 43 94 5A 49
01F0 | 83 4F 4E E7 80 DC B4 C7 94 AD D9 38 C7 9D 10 9E
0200 | A6 1B BA FE 3A 02 AE 7F BC 3C 74 0E 04 CD A7 72
0210 | B0 71 8A 37 36 A9 5A 4E C0 8F 42 69 72 B1 58 A6
0220 | 8D AC FD 4C BC 24 E3 E1 B8 09 FD 83 59 6C A0 AF
0230 | 28 EF 10 90 A2 35 DC 9F F4 3B BA CA BC DC 0E AC
0240 | 22 08 33 C6 40 74 79 66 96 72 19 5A 76 F4 3A 22
0250 | BE 32 AE 4A FC 28 CC AB 1A EC 79 AE 24 D2 A2 18
0260 | 57 F9 F4 40 C1 8E E3 8C CA 69 0A 7C 94 40 70 66
0270 | E3 C7 39 77 FE EC 7D C9 3D 39 C6 5B 68 D6 8C D4
0280 | D5 13 80 0A 08 DF 2C 4B 63 6C 79 6C</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 = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01AC54C7CEF28565</code></td>
<td><code>01B8EC57D6F78565</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>DC020000</code> (732 in decimal)</td>
<td><code>78020000</code> (632 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>9C5DB4462C828DAADD7A656BAEF30974</code></td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>4ACEB64430A523BEED33B3500FE89D16</code></td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE500200F4749552B82FC12508C16011</code> <code>4A3F57770D2014D144A6AC374630A303</code> <code>6D2184DA8CAAD538D2547E77A05F59A1</code> <code>AB4BB180BD37BD9E0A7AE4F9B5DB8859</code> <code>5C7B6FA6398D4A94EF586FBE289B9D87</code> <code>3A0674081373C28763F891860A8C9168</code> <code>25FF0E0F5C99C3FBAF454BEF9CF2BDC6</code> <code>2FDDB84B6302B3512E7738A7E5677559</code> <code>219F9A232B8E98073532F547E43EDACA</code> <code>37DF9D8BB6A09054F3334475F102FF37</code> <code>82E7C65A46A8F9C61AD494D1C612C3C9</code> <code>FA57DE426CB1E5ECE58A92E11E588A5B</code> <code>2F070E8D65B74D25C8A535C021DA4AFF</code> <code>44308E4CAB7A6E931F8AC599A3B47C11</code> <code>C509EB8976A79F33647B25C1256004BC</code> <code>00FEFE95ECABD0FC751E66BAE77C88DE</code> <code>4046C836E078584C0B6395D7A062F5B5</code> <code>0636A50B3D6D619BB523EC7197F01053</code> <code>6783183F6CCB56022B4612ACBDCC30B3</code> <code>F817B02ECD262A5A435ED9B07A9BD2ED</code> <code>D6461FC90620F3E259FCFE089564F09F</code> <code>21663805897E43837B1A8DFE65E9DE55</code> <code>638515EF3CB7B2272993675BC77D9EEC</code> <code>08265FA3BAEA7A8630679DF1FD56794F</code> <code>D79A1370343286E2109127A890B7070E</code> <code>A242BB9A887CCC7E16E4542A619023F6</code> <code>8CF9B7F25D6E3EEC6CCD44FF8D90807D</code> <code>BD2C7804F61FEFEFE0A8FF8509CEBC1C</code> <code>3F54CE1D7A1EC6D909B5398920DE35A0</code> <code>1822F7FEC0E355DFE6B79789F4C298D5</code> <code>020E9135EEED5DB8D743534B2DC986D7</code> <code>0C59A63694E6101B71636ADCF34EDA44</code> <code>1943538A88AD1FED9AF219941D57442E</code> <code>E9B9D97945DB594DA138F12795B9412E</code> <code>F9BDD0515B9F7BDEDC9FB8266A557435</code> <code>BBD3454563A179535EDB48DD0F0B226D</code> <code>EE9387E163A24BF703E36DA1D960529A</code><br> <code>411AD43E</code></td>
<td><code>FE5002005A3F28851C305E8D8ABFD2FF</code> <code>4C9E77E7FA2F203CF4A96CCC76BE6684</code> <code>FC98FE9A2BB77D0623F8CD76CF2A7B27</code> <code>59F369C6FBEE8BAFE9FC320C2BD38484</code> <code>E67EC8240188166A2358F620061AADB1</code> <code>91337140BCC359D6C085DA74576AA7DC</code> <code>D924A522ABA7447C504D1995387384F7</code> <code>599B1171161EA56BC59A51DB504F20F4</code> <code>0F620C70D94AA64EB46D41990FBEE435</code> <code>2341660CE7E259FD2575189C56DC6AF0</code> <code>FC89644B4519B91C270C98D6DF1DFDF9</code> <code>1BD2B5CF0776F89495B3759786D0242E</code> <code>7BD7790141BF7DFD92CAF78580BDDE6C</code> <code>4F5B12A504FF3B025F9F84407FD028C8</code> <code>6A85DFF6170B397DE73F0E68788A20C9</code> <code>E35784A293D6B0E7DA0EB19F5CFB8523</code> <code>13E6BCD1EF4C3DC93AD31A85AA702619</code> <code>7D0794DBA7C8A202EC6FC339E30F8BAD</code> <code>9556864382B70D5221CB1836DBFD1404</code> <code>5C5E085A48FE13BD0625B99614F13A16</code> <code>7D1186257C161DA57106CAA8F657A0A9</code> <code>0F9C55E1F7FAE5157832BB9E408FB1C0</code> <code>E0C81322F7C8DB7EFB1B072166428EB4</code> <code>69634A91C6AD829B3F654CA646F7EF22</code> <code>AC011848803AAD64FEF7C073724F03E9</code> <code>9FB6D9A1780916B86B1E7C0B333852B7</code> <code>0B8B4240C0B7D0872EB12FBF51A9FDF6</code> <code>83F9B5E043945A49834F4EE780DCB4C7</code> <code>94ADD938C79D109EA61BBAFE3A02AE7F</code> <code>BC3C740E04CDA772B0718A3736A95A4E</code> <code>C08F426972B158A68DACFD4CBC24E3E1</code> <code>B809FD83596CA0AF28EF1090A235DC9F</code> <code>F43BBACABCDC0EAC220833C640747966</code> <code>9672195A76F43A22BE32AE4AFC28CCAB</code> <code>1AEC79AE24D2A21857F9F440C18EE38C</code> <code>CA690A7C94407066E3C73977FEEC7DC9</code> <code>3D39C65B68D68CD4D513800A08DF2C4B</code><br> <code>636C796C</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723
<!-- 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 = F4749552B82FC12508C160114A3F57770D2014D144A6AC374630A3036D2184DA8CAAD538D2547E77A05F59A1AB4BB180BD37BD9E0A7AE4F9B5DB88595C7B6FA6398D4A94EF586FBE289B9D873A0674081373C28763F891860A8C916825FF0E0F5C99C3FBAF454BEF9CF2BDC62FDDB84B6302B3512E7738A7E5677559219F9A232B8E98073532F547E43EDACA37DF9D8BB6A09054F3334475F102FF3782E7C65A46A8F9C61AD494D1C612C3C9FA57DE426CB1E5ECE58A92E11E588A5B2F070E8D65B74D25C8A535C021DA4AFF44308E4CAB7A6E931F8AC599A3B47C11C509EB8976A79F33647B25C1256004BC00FEFE95ECABD0FC751E66BAE77C88DE4046C836E078584C0B6395D7A062F5B50636A50B3D6D619BB523EC7197F010536783183F6CCB56022B4612ACBDCC30B3F817B02ECD262A5A435ED9B07A9BD2EDD6461FC90620F3E259FCFE089564F09F21663805897E43837B1A8DFE65E9DE55638515EF3CB7B2272993675BC77D9EEC08265FA3BAEA7A8630679DF1FD56794FD79A1370343286E2109127A890B7070EA242BB9A887CCC7E16E4542A619023F68CF9B7F25D6E3EEC6CCD44FF8D90807DBD2C7804F61FEFEFE0A8FF8509CEBC1C3F54CE1D7A1EC6D909B5398920DE35A01822F7FEC0E355DFE6B79789F4C298D5020E9135EEED5DB8D743534B2DC986D70C59A63694E6101B71636ADCF34EDA441943538A88AD1FED9AF219941D57442EE9B9D97945DB594DA138F12795B9412EF9BDD0515B9F7BDEDC9FB8266A557435BBD3454563A179535EDB48DD0F0B226DEE9387E163A24BF703E36DA1D960529A411AD43E
tmp_aes_key = 5CAB113F1EDBB162419D290DC70DBB2623F09D0008371C0FA8F41D64A06042A8
tmp_aes_iv = CE463E10E70C3E8A3161858645E25D6482E420F9B8A7C7ED1225E3D3D79FB42D</code></pre>
<pre><code>encrypted_answer = 5A3F28851C305E8D8ABFD2FF4C9E77E7FA2F203CF4A96CCC76BE6684FC98FE9A2BB77D0623F8CD76CF2A7B2759F369C6FBEE8BAFE9FC320C2BD38484E67EC8240188166A2358F620061AADB191337140BCC359D6C085DA74576AA7DCD924A522ABA7447C504D1995387384F7599B1171161EA56BC59A51DB504F20F40F620C70D94AA64EB46D41990FBEE4352341660CE7E259FD2575189C56DC6AF0FC89644B4519B91C270C98D6DF1DFDF91BD2B5CF0776F89495B3759786D0242E7BD7790141BF7DFD92CAF78580BDDE6C4F5B12A504FF3B025F9F84407FD028C86A85DFF6170B397DE73F0E68788A20C9E35784A293D6B0E7DA0EB19F5CFB852313E6BCD1EF4C3DC93AD31A85AA7026197D0794DBA7C8A202EC6FC339E30F8BAD9556864382B70D5221CB1836DBFD14045C5E085A48FE13BD0625B99614F13A167D1186257C161DA57106CAA8F657A0A90F9C55E1F7FAE5157832BB9E408FB1C0E0C81322F7C8DB7EFB1B072166428EB469634A91C6AD829B3F654CA646F7EF22AC011848803AAD64FEF7C073724F03E99FB6D9A1780916B86B1E7C0B333852B70B8B4240C0B7D0872EB12FBF51A9FDF683F9B5E043945A49834F4EE780DCB4C794ADD938C79D109EA61BBAFE3A02AE7FBC3C740E04CDA772B0718A3736A95A4EC08F426972B158A68DACFD4CBC24E3E1B809FD83596CA0AF28EF1090A235DC9FF43BBACABCDC0EAC220833C6407479669672195A76F43A22BE32AE4AFC28CCAB1AEC79AE24D2A21857F9F440C18EE38CCA690A7C94407066E3C73977FEEC7DC93D39C65B68D68CD4D513800A08DF2C4B636C796C
tmp_aes_key = 45C7AB984F1592CDDE5AF264AFE1C4870D8A34060F9EB956FC7EEDFC8B0E62D3
tmp_aes_iv = D5BC4AF3EEED52FCD483055306E48EFDA96ABCD7B863C04EC5A6BDB6B0EFF870</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = D1A1EC49DA7D0B6EE2015B74488278FD3488A08BBA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001001BE5A94663F1D6C71CA2DE2EEA59BF06F2203E7F18EF6B79F3629C4629B7B167E71D96144945BB3C785906120A82F47578134A3B29181A17C0794662B429C70B1B81444BC8BF768C1D370F9A887481D35BA3A9FCABAECF98624B69BF52235D714E64F91DF56FEE32C7CFA33E3E12F9AB1AB4BAFB20ED0D39D2363BE67CBCB712A67CF967B0CAF2A597BBEC08CD4720F9A896E5888386C6ED92F6CE9CF94F753D8B5FB6AFFA0977C3B734E9DBB9399DF1F481415636676B9A3113AF23D6C694F17E73519445D97A16A1A9AB071F198E1F6892D4F7416CBB98D2F33A1B85254AC94E4F304065FD866B36DFA935177FA5E96C943A14440F9DC7CD854D379D3B29D9CEF28565DC44C36FAEB08A0B
answer = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001001BE5A94663F1D6C71CA2DE2EEA59BF06F2203E7F18EF6B79F3629C4629B7B167E71D96144945BB3C785906120A82F47578134A3B29181A17C0794662B429C70B1B81444BC8BF768C1D370F9A887481D35BA3A9FCABAECF98624B69BF52235D714E64F91DF56FEE32C7CFA33E3E12F9AB1AB4BAFB20ED0D39D2363BE67CBCB712A67CF967B0CAF2A597BBEC08CD4720F9A896E5888386C6ED92F6CE9CF94F753D8B5FB6AFFA0977C3B734E9DBB9399DF1F481415636676B9A3113AF23D6C694F17E73519445D97A16A1A9AB071F198E1F6892D4F7416CBB98D2F33A1B85254AC94E4F304065FD866B36DFA935177FA5E96C943A14440F9DC7CD854D379D3B29D9CEF28565DC44C36FAEB08A0B</code></pre>
<pre><code>answer_with_hash = AA4A7B99B43F4855C91740A36D93C7ED49851BD9BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100608BF52BD3E21BFC441F4749A732F5A86A38F62EBFE2E3505F5AE976B2707D4D4662D94A924892F1C267BCC62E2A6989480DA740E2C2152FB8F4D87D157CFA24D8F810081AD3907B4E7A4B012DC8766A8AB93CA5160E3D9DCF5420C5060630890994D7FC3CA1102BD08BCAF5B43A014BC0E2828DF9EDCC655F133E26BA75DB899BE10DA6CBDAA82D7BADB1193F396EECEABDE3EE4D4AC4AE9186BAB67C687850FF21C6C221555D1696E552D1826E4DF2EC26E5D7F6974B4FD7DE975455D28101E52A346D18FFEED518353FAE35B2F76B5ECD6530A23F8D275748DA7F7A4BE45B22328167FDF960B94BFF35E6721E9E9F87D87DFEDF83D68EDA070986638DF6A1D6F78565A4D74B8AF1D895E3
answer = BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100608BF52BD3E21BFC441F4749A732F5A86A38F62EBFE2E3505F5AE976B2707D4D4662D94A924892F1C267BCC62E2A6989480DA740E2C2152FB8F4D87D157CFA24D8F810081AD3907B4E7A4B012DC8766A8AB93CA5160E3D9DCF5420C5060630890994D7FC3CA1102BD08BCAF5B43A014BC0E2828DF9EDCC655F133E26BA75DB899BE10DA6CBDAA82D7BADB1193F396EECEABDE3EE4D4AC4AE9186BAB67C687850FF21C6C221555D1696E552D1826E4DF2EC26E5D7F6974B4FD7DE975455D28101E52A346D18FFEED518353FAE35B2F76B5ECD6530A23F8D275748DA7F7A4BE45B22328167FDF960B94BFF35E6721E9E9F87D87DFEDF83D68EDA070986638DF6A1D6F78565A4D74B8AF1D895E3</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 9C 5D B4 46 2C 82 8D AA DD 7A 65 6B
0010 | AE F3 09 74 4A CE B6 44 30 A5 23 BE ED 33 B3 50
0020 | 0F E8 9D 16 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 F8 65 53 B8 A2 25 70 92 30 49 7E FC
0010 | 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6 AD DF BD 26
0020 | CA 9A FC C4 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 = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1
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 | 1B E5 A9 46 63 F1 D6 C7 1C A2 DE 2E EA 59 BF 06
0140 | F2 20 3E 7F 18 EF 6B 79 F3 62 9C 46 29 B7 B1 67
0150 | E7 1D 96 14 49 45 BB 3C 78 59 06 12 0A 82 F4 75
0160 | 78 13 4A 3B 29 18 1A 17 C0 79 46 62 B4 29 C7 0B
0170 | 1B 81 44 4B C8 BF 76 8C 1D 37 0F 9A 88 74 81 D3
0180 | 5B A3 A9 FC AB AE CF 98 62 4B 69 BF 52 23 5D 71
0190 | 4E 64 F9 1D F5 6F EE 32 C7 CF A3 3E 3E 12 F9 AB
01A0 | 1A B4 BA FB 20 ED 0D 39 D2 36 3B E6 7C BC B7 12
01B0 | A6 7C F9 67 B0 CA F2 A5 97 BB EC 08 CD 47 20 F9
01C0 | A8 96 E5 88 83 86 C6 ED 92 F6 CE 9C F9 4F 75 3D
01D0 | 8B 5F B6 AF FA 09 77 C3 B7 34 E9 DB B9 39 9D F1
01E0 | F4 81 41 56 36 67 6B 9A 31 13 AF 23 D6 C6 94 F1
01F0 | 7E 73 51 94 45 D9 7A 16 A1 A9 AB 07 1F 19 8E 1F
0200 | 68 92 D4 F7 41 6C BB 98 D2 F3 3A 1B 85 25 4A C9
0210 | 4E 4F 30 40 65 FD 86 6B 36 DF A9 35 17 7F A5 E9
0220 | 6C 94 3A 14 44 0F 9D C7 CD 85 4D 37 9D 3B 29 D9
0230 | CE F2 85 65</code></pre>
0130 | 60 8B F5 2B D3 E2 1B FC 44 1F 47 49 A7 32 F5 A8
0140 | 6A 38 F6 2E BF E2 E3 50 5F 5A E9 76 B2 70 7D 4D
0150 | 46 62 D9 4A 92 48 92 F1 C2 67 BC C6 2E 2A 69 89
0160 | 48 0D A7 40 E2 C2 15 2F B8 F4 D8 7D 15 7C FA 24
0170 | D8 F8 10 08 1A D3 90 7B 4E 7A 4B 01 2D C8 76 6A
0180 | 8A B9 3C A5 16 0E 3D 9D CF 54 20 C5 06 06 30 89
0190 | 09 94 D7 FC 3C A1 10 2B D0 8B CA F5 B4 3A 01 4B
01A0 | C0 E2 82 8D F9 ED CC 65 5F 13 3E 26 BA 75 DB 89
01B0 | 9B E1 0D A6 CB DA A8 2D 7B AD B1 19 3F 39 6E EC
01C0 | EA BD E3 EE 4D 4A C4 AE 91 86 BA B6 7C 68 78 50
01D0 | FF 21 C6 C2 21 55 5D 16 96 E5 52 D1 82 6E 4D F2
01E0 | EC 26 E5 D7 F6 97 4B 4F D7 DE 97 54 55 D2 81 01
01F0 | E5 2A 34 6D 18 FF EE D5 18 35 3F AE 35 B2 F7 6B
0200 | 5E CD 65 30 A2 3F 8D 27 57 48 DA 7F 7A 4B E4 5B
0210 | 22 32 81 67 FD F9 60 B9 4B FF 35 E6 72 1E 9E 9F
0220 | 87 D8 7D FE DF 83 D6 8E DA 07 09 86 63 8D F6 A1
0230 | D6 F7 85 65</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>9C5DB4462C828DAADD7A656BAEF30974</code></td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>4ACEB64430A523BEED33B3500FE89D16</code></td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001001BE5A94663F1D6C71CA2DE2E</code> <code>EA59BF06F2203E7F18EF6B79F3629C46</code> <code>29B7B167E71D96144945BB3C78590612</code> <code>0A82F47578134A3B29181A17C0794662</code> <code>B429C70B1B81444BC8BF768C1D370F9A</code> <code>887481D35BA3A9FCABAECF98624B69BF</code> <code>52235D714E64F91DF56FEE32C7CFA33E</code> <code>3E12F9AB1AB4BAFB20ED0D39D2363BE6</code> <code>7CBCB712A67CF967B0CAF2A597BBEC08</code> <code>CD4720F9A896E5888386C6ED92F6CE9C</code> <code>F94F753D8B5FB6AFFA0977C3B734E9DB</code> <code>B9399DF1F481415636676B9A3113AF23</code> <code>D6C694F17E73519445D97A16A1A9AB07</code> <code>1F198E1F6892D4F7416CBB98D2F33A1B</code> <code>85254AC94E4F304065FD866B36DFA935</code> <code>177FA5E96C943A14440F9DC7CD854D37</code><br> <code>9D3B29D9</code></td>
<td><code>FE000100608BF52BD3E21BFC441F4749</code> <code>A732F5A86A38F62EBFE2E3505F5AE976</code> <code>B2707D4D4662D94A924892F1C267BCC6</code> <code>2E2A6989480DA740E2C2152FB8F4D87D</code> <code>157CFA24D8F810081AD3907B4E7A4B01</code> <code>2DC8766A8AB93CA5160E3D9DCF5420C5</code> <code>060630890994D7FC3CA1102BD08BCAF5</code> <code>B43A014BC0E2828DF9EDCC655F133E26</code> <code>BA75DB899BE10DA6CBDAA82D7BADB119</code> <code>3F396EECEABDE3EE4D4AC4AE9186BAB6</code> <code>7C687850FF21C6C221555D1696E552D1</code> <code>826E4DF2EC26E5D7F6974B4FD7DE9754</code> <code>55D28101E52A346D18FFEED518353FAE</code> <code>35B2F76B5ECD6530A23F8D275748DA7F</code> <code>7A4BE45B22328167FDF960B94BFF35E6</code> <code>721E9E9F87D87DFEDF83D68EDA070986</code><br> <code>638DF6A1</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>CEF28565</code> (1703277262 in decimal)</td>
<td><code>D6F78565</code> (1703278550 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1
<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 = 1BBF3F304316CC3A5D73F8D6DB0052806F9A956D8F6E62845024A774C685A9B0A23F25BFF1ED9411D1B27F44D30F38F2BD590E31E172AE146F6FFD07EE4DBAF9DB1DA82835EE6282F19D4D0C25D5E0EBE30E2E8B1AD1064BBE97B1F0C82F70D8A8E78C03792496049B54EAD2DE2E988D87D4167D00DCFF2DEDD0D6E930D401F65EE15DECF29C99EDD08A587E865FAA3E3DEA7A79327859A461A6D42EF2F6B73F558CC7A007F803BE66EC6256327E0FCFEA6CBBC41E83B5C8E7D55ACAA3E789BCC002CC4ED0FFAD4478CFE9C4FEE04B939885C8F599A079D00B5212F5C95EDF4A521C13462DF851433B4276A112EF4F175C72D5DA63392C60ED4F4848480E6337</code></pre>
<pre><code>b = 8B2BC15FD6534001F46FD1EB85CFC5D33CB492BE3A40B04DC83E193C6CC922F1D0C0351D04E6E1E8F8E253E39E38BE0D3D03DAAF1B640E67228E6B891C5F00CF35360C7B3B5DD5685EDD62A0994D220A459F17A5043AF62930078353C6F0F6213008FC5AF639E27AFE40EF4AD3DC52763C27805EF623B5CB2C29F5176746513B5E448AF01DF862C5692D77464D58789E51FEF300A95D4E8F2C2ECBA4AE6680170770B5C9BC56A50A64C96E56364504570EF355A73E134D241CEF52E0EE6FA616A7B3917BC0CE508967FDC21F079F04C3040C76A8EAE7CCE96196DD0FA4AC75F1366723B4A8A1081D743AEC267E1BAED984CF6F8FECFEBFF41D7827B63B1F9951</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 = 86CF8091DA0A274BA7E1F79421E3C6F28BFFD4B0C099BACFDE680C53E47279039BB1E529E48CCBCC55E93CFF9E9698B52ED3D7B497022EAB231CD183E72DC5EAD6EBD23F7472902F004A5D6B8549BF8315F30B5DE3A3A7F5050811CADD186DE11BA26FB586959FE10CB553281AE97C5AE1FD180A9CEA6C54AC7F87E880B645B1D2BA3ABD6926E32077245189C38C870B3A03309CE3E4510B71B92B69B58811BD365931EEE8A78AFD64AC130B86A85584320575C6D45D9CEB043AA8D536E646B237F0C9E7F0459BA8FD0B93FD666F8A5A8F608F88C96A82A87CC7E0A25843CA4704E9572267CE44B37558FB86FD6C881AE541CCEDCB11392550B0933499D2EBFC</code></pre>
<pre><code>g_b = C345BCB613357FFEC162397048AF74E249AAC8A11209D92EF089A4D341D1B6A361943235F98BF48E7E996F3D90DDEC63F26EBB5740EF0C5F7E25FF1A6C79943E0918C49A5E48D4C9EC7A478F222F067DAC227310383CFA05401503EF8C5CA72CD999E4BF24E80554B265E89DBB6590E90B0B4282803681AAC5C6E71AB4A9C1AE582DB03EBB500633DBD8372D2B1D56923E43D8197070DA2C74AD1E0D245C495B353DFC5123BD5957BA5F69EAEA94994304C3487437FC833B9CBA41C2BBFDE2421D2A1693ADBFE65AE62686A5A7E250AF7B3EF69BA29F9EA1D8CB2B410AF106E31975536335A2F32ECC0DE4A83EEB3D7299551ACFF48D25407FF4C29E1645E173</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 9C 5D B4 46 2C 82 8D AA DD 7A 65 6B
0010 | AE F3 09 74 4A CE B6 44 30 A5 23 BE ED 33 B3 50
0020 | 0F E8 9D 16 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 86 CF 80 91 DA 0A 27 4B A7 E1 F7 94 21 E3 C6 F2
0040 | 8B FF D4 B0 C0 99 BA CF DE 68 0C 53 E4 72 79 03
0050 | 9B B1 E5 29 E4 8C CB CC 55 E9 3C FF 9E 96 98 B5
0060 | 2E D3 D7 B4 97 02 2E AB 23 1C D1 83 E7 2D C5 EA
0070 | D6 EB D2 3F 74 72 90 2F 00 4A 5D 6B 85 49 BF 83
0080 | 15 F3 0B 5D E3 A3 A7 F5 05 08 11 CA DD 18 6D E1
0090 | 1B A2 6F B5 86 95 9F E1 0C B5 53 28 1A E9 7C 5A
00A0 | E1 FD 18 0A 9C EA 6C 54 AC 7F 87 E8 80 B6 45 B1
00B0 | D2 BA 3A BD 69 26 E3 20 77 24 51 89 C3 8C 87 0B
00C0 | 3A 03 30 9C E3 E4 51 0B 71 B9 2B 69 B5 88 11 BD
00D0 | 36 59 31 EE E8 A7 8A FD 64 AC 13 0B 86 A8 55 84
00E0 | 32 05 75 C6 D4 5D 9C EB 04 3A A8 D5 36 E6 46 B2
00F0 | 37 F0 C9 E7 F0 45 9B A8 FD 0B 93 FD 66 6F 8A 5A
0100 | 8F 60 8F 88 C9 6A 82 A8 7C C7 E0 A2 58 43 CA 47
0110 | 04 E9 57 22 67 CE 44 B3 75 58 FB 86 FD 6C 88 1A
0120 | E5 41 CC ED CB 11 39 25 50 B0 93 34 99 D2 EB FC</code></pre>
<pre><code>0000 | 54 B6 43 66 F8 65 53 B8 A2 25 70 92 30 49 7E FC
0010 | 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6 AD DF BD 26
0020 | CA 9A FC C4 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | C3 45 BC B6 13 35 7F FE C1 62 39 70 48 AF 74 E2
0040 | 49 AA C8 A1 12 09 D9 2E F0 89 A4 D3 41 D1 B6 A3
0050 | 61 94 32 35 F9 8B F4 8E 7E 99 6F 3D 90 DD EC 63
0060 | F2 6E BB 57 40 EF 0C 5F 7E 25 FF 1A 6C 79 94 3E
0070 | 09 18 C4 9A 5E 48 D4 C9 EC 7A 47 8F 22 2F 06 7D
0080 | AC 22 73 10 38 3C FA 05 40 15 03 EF 8C 5C A7 2C
0090 | D9 99 E4 BF 24 E8 05 54 B2 65 E8 9D BB 65 90 E9
00A0 | 0B 0B 42 82 80 36 81 AA C5 C6 E7 1A B4 A9 C1 AE
00B0 | 58 2D B0 3E BB 50 06 33 DB D8 37 2D 2B 1D 56 92
00C0 | 3E 43 D8 19 70 70 DA 2C 74 AD 1E 0D 24 5C 49 5B
00D0 | 35 3D FC 51 23 BD 59 57 BA 5F 69 EA EA 94 99 43
00E0 | 04 C3 48 74 37 FC 83 3B 9C BA 41 C2 BB FD E2 42
00F0 | 1D 2A 16 93 AD BF E6 5A E6 26 86 A5 A7 E2 50 AF
0100 | 7B 3E F6 9B A2 9F 9E A1 D8 CB 2B 41 0A F1 06 E3
0110 | 19 75 53 63 35 A2 F3 2E CC 0D E4 A8 3E EB 3D 72
0120 | 99 55 1A CF F4 8D 25 40 7F F4 C2 9E 16 45 E1 73</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 = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>9C5DB4462C828DAADD7A656BAEF30974</code></td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>4ACEB64430A523BEED33B3500FE89D16</code></td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE00010086CF8091DA0A274BA7E1F794</code> <code>21E3C6F28BFFD4B0C099BACFDE680C53</code> <code>E47279039BB1E529E48CCBCC55E93CFF</code> <code>9E9698B52ED3D7B497022EAB231CD183</code> <code>E72DC5EAD6EBD23F7472902F004A5D6B</code> <code>8549BF8315F30B5DE3A3A7F5050811CA</code> <code>DD186DE11BA26FB586959FE10CB55328</code> <code>1AE97C5AE1FD180A9CEA6C54AC7F87E8</code> <code>80B645B1D2BA3ABD6926E32077245189</code> <code>C38C870B3A03309CE3E4510B71B92B69</code> <code>B58811BD365931EEE8A78AFD64AC130B</code> <code>86A85584320575C6D45D9CEB043AA8D5</code> <code>36E646B237F0C9E7F0459BA8FD0B93FD</code> <code>666F8A5A8F608F88C96A82A87CC7E0A2</code> <code>5843CA4704E9572267CE44B37558FB86</code> <code>FD6C881AE541CCEDCB11392550B09334</code><br> <code>99D2EBFC</code></td>
<td><code>FE000100C345BCB613357FFEC1623970</code> <code>48AF74E249AAC8A11209D92EF089A4D3</code> <code>41D1B6A361943235F98BF48E7E996F3D</code> <code>90DDEC63F26EBB5740EF0C5F7E25FF1A</code> <code>6C79943E0918C49A5E48D4C9EC7A478F</code> <code>222F067DAC227310383CFA05401503EF</code> <code>8C5CA72CD999E4BF24E80554B265E89D</code> <code>BB6590E90B0B4282803681AAC5C6E71A</code> <code>B4A9C1AE582DB03EBB500633DBD8372D</code> <code>2B1D56923E43D8197070DA2C74AD1E0D</code> <code>245C495B353DFC5123BD5957BA5F69EA</code> <code>EA94994304C3487437FC833B9CBA41C2</code> <code>BBFDE2421D2A1693ADBFE65AE62686A5</code> <code>A7E250AF7B3EF69BA29F9EA1D8CB2B41</code> <code>0AF106E31975536335A2F32ECC0DE4A8</code> <code>3EEB3D7299551ACFF48D25407FF4C29E</code><br> <code>1645E173</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 = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1
<!-- 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 = 54B643669C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D160000000000000000FE00010086CF8091DA0A274BA7E1F79421E3C6F28BFFD4B0C099BACFDE680C53E47279039BB1E529E48CCBCC55E93CFF9E9698B52ED3D7B497022EAB231CD183E72DC5EAD6EBD23F7472902F004A5D6B8549BF8315F30B5DE3A3A7F5050811CADD186DE11BA26FB586959FE10CB553281AE97C5AE1FD180A9CEA6C54AC7F87E880B645B1D2BA3ABD6926E32077245189C38C870B3A03309CE3E4510B71B92B69B58811BD365931EEE8A78AFD64AC130B86A85584320575C6D45D9CEB043AA8D536E646B237F0C9E7F0459BA8FD0B93FD666F8A5A8F608F88C96A82A87CC7E0A25843CA4704E9572267CE44B37558FB86FD6C881AE541CCEDCB11392550B0933499D2EBFC
padding = 53830E06631296991A05FD9C
tmp_aes_key = 5CAB113F1EDBB162419D290DC70DBB2623F09D0008371C0FA8F41D64A06042A8
tmp_aes_iv = CE463E10E70C3E8A3161858645E25D6482E420F9B8A7C7ED1225E3D3D79FB42D</code></pre>
<pre><code>data = 54B64366F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC40000000000000000FE000100C345BCB613357FFEC162397048AF74E249AAC8A11209D92EF089A4D341D1B6A361943235F98BF48E7E996F3D90DDEC63F26EBB5740EF0C5F7E25FF1A6C79943E0918C49A5E48D4C9EC7A478F222F067DAC227310383CFA05401503EF8C5CA72CD999E4BF24E80554B265E89DBB6590E90B0B4282803681AAC5C6E71AB4A9C1AE582DB03EBB500633DBD8372D2B1D56923E43D8197070DA2C74AD1E0D245C495B353DFC5123BD5957BA5F69EAEA94994304C3487437FC833B9CBA41C2BBFDE2421D2A1693ADBFE65AE62686A5A7E250AF7B3EF69BA29F9EA1D8CB2B410AF106E31975536335A2F32ECC0DE4A83EEB3D7299551ACFF48D25407FF4C29E1645E173
padding = 5716BBE199B59207403CDBA3
tmp_aes_key = 45C7AB984F1592CDDE5AF264AFE1C4870D8A34060F9EB956FC7EEDFC8B0E62D3
tmp_aes_iv = D5BC4AF3EEED52FCD483055306E48EFDA96ABCD7B863C04EC5A6BDB6B0EFF870</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 = FC0076BBF55CBF3D594C2106156CD12114ED5AFE9B6E1341105088404A5A467CA52A7395C1496DF78511E2170251B32321D6CE31CFD8762D16C9D85E43BFBBE89069ABBA6BDD742160FDAEE2A72BA51024A3E414D6356A2DEB3F1ADA8FEBF261CC510C9B5BAF0CAD5295C356746521EDBCD512F4A5DD62C61D27E4126D760FD85D0A1FC0A71F53162325FF09A0332B0820C6AC5266A1BEEFD36842BBA04926280C0E141FBA281D35A3B2677DB78AF8CCCF555434EE2409E323BBBC3CA4CA6D2AC6317ADED0E5956CB6C0B39B81221C0D747577CC508A835D378AFC716384720EFABC2BEABC2058B4081E3A37C3BE860D88FC656E3BAADF9A834DC895AA0E428AD9FB23693E0B886553ED3A828A1C9600958C84477A0A4598104E4539747775BDDD2692F7DF38A72EBC309886D38A3EDA99D0C2F3F11852B3533A49C6F2AEF50EC4BDDA11AD5F3D4792EDFFCBFDDA81C3</code></pre>
<pre><code>encrypted_data = F872E0E5AADE91C4BD03457955C88610A80331C3ABA9C60C8FE526D0836088BA4F1DABAC99201FEB86A1860909D61E26885DA3D540A29E09FBA89B2E4DA63E1E1E9795691CFFAD59F9B775000CA77209660324F90B89186DB0632472135D2991953B611693956AC1FE4ED38A030F544F37201C043FF0D12B3A1DCBC8E5FC746E138D7347F430EC9C1288DBED5DFF77D41AF16C732E3C9719720325BC769D9D7B99E4470D9DC4CCF09B17E21231BF18ED0A156705D772760AF38B7B8B49AEBFE3986CF167E754342BF8430B317117229EF6565E9191E78EBCD936A9F96EB6D6ED84ABC76AA13E6BC3494D26C2FFB674603E1C62A4FA3B942C63CBE0D7CD0661081C49CEAC0951AA8E40339E1D87D4DE1908C8CB89E8F28E2AB87C2A082CF504E3F41FD63BF6CCBA2CE89000BF97673C71584A4C416BA2A12C8F781721C3A0271868D4C01495698C6FB62B53D7B02BFE00</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 90 FE 0A 00 CE F2 85 65
0010 | 78 01 00 00 1F 5F 04 F5 9C 5D B4 46 2C 82 8D AA
0020 | DD 7A 65 6B AE F3 09 74 4A CE B6 44 30 A5 23 BE
0030 | ED 33 B3 50 0F E8 9D 16 FE 50 01 00 FC 00 76 BB
0040 | F5 5C BF 3D 59 4C 21 06 15 6C D1 21 14 ED 5A FE
0050 | 9B 6E 13 41 10 50 88 40 4A 5A 46 7C A5 2A 73 95
0060 | C1 49 6D F7 85 11 E2 17 02 51 B3 23 21 D6 CE 31
0070 | CF D8 76 2D 16 C9 D8 5E 43 BF BB E8 90 69 AB BA
0080 | 6B DD 74 21 60 FD AE E2 A7 2B A5 10 24 A3 E4 14
0090 | D6 35 6A 2D EB 3F 1A DA 8F EB F2 61 CC 51 0C 9B
00A0 | 5B AF 0C AD 52 95 C3 56 74 65 21 ED BC D5 12 F4
00B0 | A5 DD 62 C6 1D 27 E4 12 6D 76 0F D8 5D 0A 1F C0
00C0 | A7 1F 53 16 23 25 FF 09 A0 33 2B 08 20 C6 AC 52
00D0 | 66 A1 BE EF D3 68 42 BB A0 49 26 28 0C 0E 14 1F
00E0 | BA 28 1D 35 A3 B2 67 7D B7 8A F8 CC CF 55 54 34
00F0 | EE 24 09 E3 23 BB BC 3C A4 CA 6D 2A C6 31 7A DE
0100 | D0 E5 95 6C B6 C0 B3 9B 81 22 1C 0D 74 75 77 CC
0110 | 50 8A 83 5D 37 8A FC 71 63 84 72 0E FA BC 2B EA
0120 | BC 20 58 B4 08 1E 3A 37 C3 BE 86 0D 88 FC 65 6E
0130 | 3B AA DF 9A 83 4D C8 95 AA 0E 42 8A D9 FB 23 69
0140 | 3E 0B 88 65 53 ED 3A 82 8A 1C 96 00 95 8C 84 47
0150 | 7A 0A 45 98 10 4E 45 39 74 77 75 BD DD 26 92 F7
0160 | DF 38 A7 2E BC 30 98 86 D3 8A 3E DA 99 D0 C2 F3
0170 | F1 18 52 B3 53 3A 49 C6 F2 AE F5 0E C4 BD DA 11
0180 | AD 5F 3D 47 92 ED FF CB FD DA 81 C3</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 14 A4 05 00 D6 F7 85 65
0010 | 78 01 00 00 1F 5F 04 F5 F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
0030 | AD DF BD 26 CA 9A FC C4 FE 50 01 00 F8 72 E0 E5
0040 | AA DE 91 C4 BD 03 45 79 55 C8 86 10 A8 03 31 C3
0050 | AB A9 C6 0C 8F E5 26 D0 83 60 88 BA 4F 1D AB AC
0060 | 99 20 1F EB 86 A1 86 09 09 D6 1E 26 88 5D A3 D5
0070 | 40 A2 9E 09 FB A8 9B 2E 4D A6 3E 1E 1E 97 95 69
0080 | 1C FF AD 59 F9 B7 75 00 0C A7 72 09 66 03 24 F9
0090 | 0B 89 18 6D B0 63 24 72 13 5D 29 91 95 3B 61 16
00A0 | 93 95 6A C1 FE 4E D3 8A 03 0F 54 4F 37 20 1C 04
00B0 | 3F F0 D1 2B 3A 1D CB C8 E5 FC 74 6E 13 8D 73 47
00C0 | F4 30 EC 9C 12 88 DB ED 5D FF 77 D4 1A F1 6C 73
00D0 | 2E 3C 97 19 72 03 25 BC 76 9D 9D 7B 99 E4 47 0D
00E0 | 9D C4 CC F0 9B 17 E2 12 31 BF 18 ED 0A 15 67 05
00F0 | D7 72 76 0A F3 8B 7B 8B 49 AE BF E3 98 6C F1 67
0100 | E7 54 34 2B F8 43 0B 31 71 17 22 9E F6 56 5E 91
0110 | 91 E7 8E BC D9 36 A9 F9 6E B6 D6 ED 84 AB C7 6A
0120 | A1 3E 6B C3 49 4D 26 C2 FF B6 74 60 3E 1C 62 A4
0130 | FA 3B 94 2C 63 CB E0 D7 CD 06 61 08 1C 49 CE AC
0140 | 09 51 AA 8E 40 33 9E 1D 87 D4 DE 19 08 C8 CB 89
0150 | E8 F2 8E 2A B8 7C 2A 08 2C F5 04 E3 F4 1F D6 3B
0160 | F6 CC BA 2C E8 90 00 BF 97 67 3C 71 58 4A 4C 41
0170 | 6B A2 A1 2C 8F 78 17 21 C3 A0 27 18 68 D4 C0 14
0180 | 95 69 8C 6F B6 2B 53 D7 B0 2B FE 00</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>90FE0A00CEF28565</code></td>
<td><code>14A40500D6F78565</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>9C5DB4462C828DAADD7A656BAEF30974</code></td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>4ACEB64430A523BEED33B3500FE89D16</code></td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE500100FC0076BBF55CBF3D594C2106</code> <code>156CD12114ED5AFE9B6E134110508840</code> <code>4A5A467CA52A7395C1496DF78511E217</code> <code>0251B32321D6CE31CFD8762D16C9D85E</code> <code>43BFBBE89069ABBA6BDD742160FDAEE2</code> <code>A72BA51024A3E414D6356A2DEB3F1ADA</code> <code>8FEBF261CC510C9B5BAF0CAD5295C356</code> <code>746521EDBCD512F4A5DD62C61D27E412</code> <code>6D760FD85D0A1FC0A71F53162325FF09</code> <code>A0332B0820C6AC5266A1BEEFD36842BB</code> <code>A04926280C0E141FBA281D35A3B2677D</code> <code>B78AF8CCCF555434EE2409E323BBBC3C</code> <code>A4CA6D2AC6317ADED0E5956CB6C0B39B</code> <code>81221C0D747577CC508A835D378AFC71</code> <code>6384720EFABC2BEABC2058B4081E3A37</code> <code>C3BE860D88FC656E3BAADF9A834DC895</code> <code>AA0E428AD9FB23693E0B886553ED3A82</code> <code>8A1C9600958C84477A0A4598104E4539</code> <code>747775BDDD2692F7DF38A72EBC309886</code> <code>D38A3EDA99D0C2F3F11852B3533A49C6</code> <code>F2AEF50EC4BDDA11AD5F3D4792EDFFCB</code><br> <code>FDDA81C3</code></td>
<td><code>FE500100F872E0E5AADE91C4BD034579</code> <code>55C88610A80331C3ABA9C60C8FE526D0</code> <code>836088BA4F1DABAC99201FEB86A18609</code> <code>09D61E26885DA3D540A29E09FBA89B2E</code> <code>4DA63E1E1E9795691CFFAD59F9B77500</code> <code>0CA77209660324F90B89186DB0632472</code> <code>135D2991953B611693956AC1FE4ED38A</code> <code>030F544F37201C043FF0D12B3A1DCBC8</code> <code>E5FC746E138D7347F430EC9C1288DBED</code> <code>5DFF77D41AF16C732E3C9719720325BC</code> <code>769D9D7B99E4470D9DC4CCF09B17E212</code> <code>31BF18ED0A156705D772760AF38B7B8B</code> <code>49AEBFE3986CF167E754342BF8430B31</code> <code>7117229EF6565E9191E78EBCD936A9F9</code> <code>6EB6D6ED84ABC76AA13E6BC3494D26C2</code> <code>FFB674603E1C62A4FA3B942C63CBE0D7</code> <code>CD0661081C49CEAC0951AA8E40339E1D</code> <code>87D4DE1908C8CB89E8F28E2AB87C2A08</code> <code>2CF504E3F41FD63BF6CCBA2CE89000BF</code> <code>97673C71584A4C416BA2A12C8F781721</code> <code>C3A0271868D4C01495698C6FB62B53D7</code><br> <code>B02BFE00</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 = 6A2F70B26798A4323CD53A9168827E05C0B239F1FBA8D760FDDC5CCD87C4D155E711ADA123FC71180E098F4DAFF3CFCA2B688B8A9451422FBA978F7AF034C69CC3EAA76EFB89400C81023E9F693D1B46751A86045B1E2C1F4AFDCCB28FA0E11351B8C90C140DB46D01D737598413FE71D9CC234D147D098D697A8A413D5CF767FEF491B14F16E70E201CE0FA3A2D841E20722250724DB947087676DE121A232E57063541E97826B18C81336546A99064EEA39A0C9D6F66645E1C58BE3D4C608B943D912E681E2BD5968AA1A0CEB91C523469B4ED9B76DD7171887117469D4EA8A73DF8504408CF9B81CF39B5EB6E23618CD13AF11719E47C82C8CBD45BC1AE5A</code></pre>
<pre><code>auth_key = 58ABE6B4D20D52939B1A7D4A066FE9D94B893258701F5F2518EEBE068F33D13E89586194A33C7C6A9C4E17B0DEE95AED5F7B2C0EA20BA0034FAEDA104E17EC75D9FAF5B157E36C13949573AE2AD13A7A00D4087D046ABA8073836847F3B0C60BCA9563F1A630AB351AE48C44BB3147B0D0D09233B5BEDC3C534D7D40BCB16E296114D8C1EC56920CB986E61ECFC782BDD92DC2C0FDD51DFB6A5B4F19B110DF1B8AA21E467BC2C0573AEBD84AFC447618E2124F13A0B38409E8F2E42179196285F5CC50844AA6F2FA30F23914B036D629085CB65FADEA658C80333A3BAE61025A781817BA0015931698BCC04E03B157891966E69BAAAC013477286FBA0627B845</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 C8 99 17 CF F2 85 65
0010 | 44 00 00 00 34 F7 CB 3B 9C 5D B4 46 2C 82 8D AA
0020 | DD 7A 65 6B AE F3 09 74 4A CE B6 44 30 A5 23 BE
0030 | ED 33 B3 50 0F E8 9D 16 0A 98 EF F2 D3 F6 A6 BA
0040 | AE 59 DB BF C1 D5 EF 45</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 FC 5B AA D6 F7 85 65
0010 | AC 00 00 00 34 F7 CB 3B F8 65 53 B8 A2 25 70 92
0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
0030 | AD DF BD 26 CA 9A FC C4 A1 08 F6 6E E0 B5 8C 3A
0040 | E0 85 4D CA BA 23 BF 61</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>01C89917CFF28565</code></td>
<td><code>01FC5BAAD6F78565</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>44000000</code> (68 in decimal)</td>
<td><code>AC000000</code> (172 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>9C5DB4462C828DAADD7A656BAEF30974</code></td>
<td><code>F86553B8A225709230497EFC0BCD9ABC</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>4ACEB64430A523BEED33B3500FE89D16</code></td>
<td><code>6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>0A98EFF2D3F6A6BAAE59DBBFC1D5EF45</code></td>
<td><code>A108F66EE0B58C3AE0854DCABA23BF61</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

@ -72,7 +72,7 @@
</tbody>
</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -72,7 +72,7 @@
</tbody>
</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -91,7 +91,7 @@
</tbody>
</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>

View file

@ -96,7 +96,7 @@
</tbody>
</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#giveaways-amp-gifts" id="giveaways-amp-gifts" name="giveaways-amp-gifts"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways &amp; gifts</a></h4>
<p>Telegram <a href="/api/channel">channel</a> administrators may launch giveaways to randomly distribute <a href="/api/premium">Telegram Premium</a> subscriptions and other gifts among their followers, in exchange for <a href="/api/boost">boosts</a>.</p></div>
</div>