Update content of files

This commit is contained in:
GitHub Action 2024-11-16 17:44:09 +00:00
parent 927307bc80
commit 61fd6cf31a
7 changed files with 256 additions and 266 deletions

View file

@ -45,6 +45,7 @@
<div id="dev_page_content"><!-- scroll_nav -->
<p>Telegram <a href="/api/channel">channel and supergroup</a> administrators with any set of <a href="/api/rights">rights</a> 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>
<h3><a class="anchor" href="#giveaways-and-giftcodes" id="giveaways-and-giftcodes" name="giveaways-and-giftcodes"><i class="anchor-icon"></i></a>Giveaways and giftcodes</h3>
<p>This functionality should only be enabled if the <a href="/api/config#giveaway-gifts-purchase-available">giveaway_gifts_purchase_available</a> config value is set to true. </p>
<p>Note that the flow described below can also be used to gift a Premium subscriptions to multiple friends, and is different from the <a href="/api/premium#gifting-telegram-premium">old gift flow</a>, which allowed gifting only one subscription with some extra limitations, not present in this flow. </p>
<p>Note that <a href="/api/links#premium-multigift-links">premium multigift links</a> lead to a page that uses the new gift flow described below. </p>
@ -133,7 +134,18 @@ Clients should display this message, along with a sticker from the <a href="/con
<p>Any user can invoke <a href="/method/payments.checkGiftCode">payments.checkGiftCode</a> with the link's slug to obtain info about the giveaway, such as the channel/supergroup that gifted the subscription (<code>from_id</code>), and the user that originally received the gift (<code>to_id</code>).<br>
This can also be useful to channel/supergroup administrators to precisely determine the winners of a giveaway, for example if the giveaway also included some extra gifts apart from Premium subscriptions (<em>like Teslas</em>): the winners can simply send their link as undisputable proof that they won the giveaway, because the user that received the gift can be viewed in the <code>to_id</code> field returned by Telegram when invoking <a href="/method/payments.checkGiftCode">payments.checkGiftCode</a> on the slug.<br>
Another way for admins to check who received the gifts is to simply use <a href="/method/premium.getBoostsList">premium.getBoostsList</a> while the boosts received by the gifts are still active. </p>
<p>To claim the <a href="/api/premium">Telegram Premium</a> subscription, simply invoke <a href="/method/payments.applyGiftCode">payments.applyGiftCode</a>, passing the link's <code>slug</code>.</p></div>
<p>To claim the <a href="/api/premium">Telegram Premium</a> subscription, simply invoke <a href="/method/payments.applyGiftCode">payments.applyGiftCode</a>, passing the link's <code>slug</code>. </p>
<h3><a class="anchor" href="#star-giveaways" id="star-giveaways" name="star-giveaways"><i class="anchor-icon"></i></a>Star giveaways</h3>
<pre><code><a href='/constructor/starsGiveawayOption'>starsGiveawayOption</a>#94ce852a flags:<a href='/type/%23'>#</a> extended:flags.0?<a href='/constructor/true'>true</a> default:flags.1?<a href='/constructor/true'>true</a> stars:<a href='/type/long'>long</a> yearly_boosts:<a href='/type/int'>int</a> store_product:flags.2?<a href='/type/string'>string</a> currency:<a href='/type/string'>string</a> amount:<a href='/type/long'>long</a> winners:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/StarsGiveawayWinnersOption'>StarsGiveawayWinnersOption</a>&gt; = <a href='/type/StarsGiveawayOption'>StarsGiveawayOption</a>;
<a href='/constructor/starsGiveawayWinnersOption'>starsGiveawayWinnersOption</a>#54236209 flags:<a href='/type/%23'>#</a> default:flags.0?<a href='/constructor/true'>true</a> users:<a href='/type/int'>int</a> per_user_stars:<a href='/type/long'>long</a> = <a href='/type/StarsGiveawayWinnersOption'>StarsGiveawayWinnersOption</a>;
---functions---
<a href='/method/payments.getStarsGiveawayOptions'>payments.getStarsGiveawayOptions</a>#bd1efd3e = <a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/StarsGiveawayOption'>StarsGiveawayOption</a>&gt;;</code></pre>
<p>Star giveaways are similar to <a href="#giveaways-and-giftcodes">normal giveaways</a>, with the only difference that instead of giving away gifts or <a href="/api/premium">Telegram Premium subscriptions</a>, the giveaway will automatically distribute <a href="/api/stars">Telegram Stars</a> among the winners.</p>
<p>First of all, invoke <a href="/method/payments.getStarsGiveawayOptions">payments.getStarsGiveawayOptions</a> to obtain a list of <a href="/constructor/starsGiveawayOption">starsGiveawayOption</a> constructors, containing a list of giveaway options that may be chosen by the admin, indicating the number of <a href="/api/stars">Telegram Stars</a> that will be gifted in the giveaway, along with their price (<code>amount</code>) in the specified <code>currency</code> (see the <a href="/constructor/starsGiveawayOption">constructor page »</a> for more info on these fields). </p>
<p>Once the admin has chosen a specific gift code option, invoke <a href="/method/payments.getPaymentForm">payments.getPaymentForm</a>, passing an <a href="/constructor/inputInvoicePremiumGiftCode">inputInvoicePremiumGiftCode</a>, with the chosen <a href="/constructor/premiumGiftCodeOption">premiumGiftCodeOption</a> in <code>option</code> and a <code>purpose</code> containing either:</p></div>
</div>

View file

@ -202,7 +202,7 @@
<li>Added <a href="/constructor/inputStorePaymentStarsGiveaway">inputStorePaymentStarsGiveaway</a> - </li>
<li>Added <a href="/constructor/messageActionPrizeStars">messageActionPrizeStars</a> - </li>
<li>Added <a href="/constructor/updatePaidReactionPrivacy">updatePaidReactionPrivacy</a> - Contains the current <a href="/api/reactions#paid-reactions">default paid reaction privacy, see here &amp;raquo:</a> for more info.</li>
<li>Added <a href="/constructor/starsGiveawayOption">starsGiveawayOption</a> - </li>
<li>Added <a href="/constructor/starsGiveawayOption">starsGiveawayOption</a> - Contains info about a <a href="/api/giveaways#star-giveaways">Telegram Star giveaway</a> option.</li>
<li>Added <a href="/constructor/starsGiveawayWinnersOption">starsGiveawayWinnersOption</a> - </li>
<li>Added <a href="/constructor/prepaidStarsGiveaway">prepaidStarsGiveaway</a> - </li>
</ul>

View file

@ -151,6 +151,9 @@ Bot owners can then <a href="#withdrawing-revenue">withdraw Stars as Toncoin »
<p>Channel administrators can now create special <a href="/api/invites#invite-links">invite links</a> that allow joining a channel in exchange for a monthly payment in Telegram Stars. </p>
<p>Subscribing to a channel using a paid invite link will transfer Telegram Stars to the channel's balance. </p>
<p>See <a href="/api/invites#paid-invite-links">here »</a> for the full flow. </p>
<h4><a class="anchor" href="#star-giveaways" id="star-giveaways" name="star-giveaways"><i class="anchor-icon"></i></a>Star giveaways</h4>
<p>Star giveaways are similar to <a href="/api/giveaways#giveaways-and-giftcodes">normal giveaways</a>, with the only difference that instead of giving away gifts or <a href="/api/premium">Telegram Premium subscriptions</a>, the giveaway will automatically distribute Telegram Stars among the winners.</p>
<p>See <a href="/api/giveaways#star-giveaways">here »</a> for the full flow. </p>
<h3><a class="anchor" href="#withdrawing-revenue" id="withdrawing-revenue" name="withdrawing-revenue"><i class="anchor-icon"></i></a>Withdrawing revenue</h3>
<pre><code><a href='/constructor/payments.starsRevenueWithdrawalUrl'>payments.starsRevenueWithdrawalUrl</a>#1dab80b7 url:<a href='/type/string'>string</a> = <a href='/type/payments.StarsRevenueWithdrawalUrl'>payments.StarsRevenueWithdrawalUrl</a>;

View file

@ -4,32 +4,10 @@
<meta charset="utf-8">
<title>starsGiveawayOption</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
extended
flags.0?true
 
default
flags.1?true…">
<meta property="description" content="Contains info about a Telegram Star giveaway option.">
<meta property="og:title" content="starsGiveawayOption">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
extended
flags.0?true
 
default
flags.1?true…">
<meta property="og:description" content="Contains info about a Telegram Star giveaway option.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -64,7 +42,8 @@ flags.1?true…">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/starsGiveawayOption" >starsGiveawayOption</a></li></ul></div>
<h1 id="dev_page_title">starsGiveawayOption</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Contains info about a <a href="/api/giveaways#star-giveaways">Telegram Star giveaway</a> option.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 192 <b class="caret"></b></a>
@ -95,47 +74,52 @@ flags.1?true…">
<tr>
<td><strong>extended</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td>
<td> </td>
<td>If set, this option must only be shown in the full list of giveaway options (i.e. they must be added to the list only when the user clicks on the expand button).</td>
</tr>
<tr>
<td><strong>default</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/constructor/true">true</a></td>
<td> </td>
<td>If set, this option must be pre-selected by default in the option list.</td>
</tr>
<tr>
<td><strong>stars</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td> </td>
<td>The number of Telegram Stars that will be distributed among winners</td>
</tr>
<tr>
<td><strong>yearly_boosts</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Number of times the chat will be boosted for one year if the <a href="/constructor/inputStorePaymentStarsGiveaway">inputStorePaymentStarsGiveaway</a>.<code>boost_peer</code> flag is populated</td>
</tr>
<tr>
<td><strong>store_product</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td>
<td> </td>
<td>Identifier of the store product associated with the option, official apps only.</td>
</tr>
<tr>
<td><strong>currency</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td>
</tr>
<tr>
<td><strong>amount</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td> </td>
<td>Total price in the smallest units of the currency (integer, not float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the exp parameter in <a href="/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td>
</tr>
<tr>
<td><strong>winners</strong></td>
<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/StarsGiveawayWinnersOption">StarsGiveawayWinnersOption</a>&gt;</td>
<td> </td>
<td>Allowed options for the number of giveaway winners.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/StarsGiveawayOption">StarsGiveawayOption</a></p></div>
<p><a href="/type/StarsGiveawayOption">StarsGiveawayOption</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="#inputstorepaymentstarsgiveaway" id="inputstorepaymentstarsgiveaway" name="inputstorepaymentstarsgiveaway"><i class="anchor-icon"></i></a><a href="/constructor/inputStorePaymentStarsGiveaway">inputStorePaymentStarsGiveaway</a></h4>
<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>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>

View file

@ -13,11 +13,7 @@ flags
Flags, see TL conditional fields
default
flags.0?true
 
users
int
 
per_user_stars…">
If set, this option must…">
<meta property="og:title" content="starsGiveawayWinnersOption">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
@ -29,11 +25,7 @@ flags
Flags, see TL conditional fields
default
flags.0?true
 
users
int
 
per_user_stars…">
If set, this option must…">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -99,22 +91,25 @@ per_user_stars…">
<tr>
<td><strong>default</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td>
<td> </td>
<td>If set, this option must be pre-selected by default in the option list.</td>
</tr>
<tr>
<td><strong>users</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>The number of users that will be randomly chosen as winners.</td>
</tr>
<tr>
<td><strong>per_user_stars</strong></td>
<td style="text-align: center;"><a href="/type/long">long</a></td>
<td> </td>
<td>The number of <a href="/api/stars">Telegram Stars</a> each winner will receive.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/StarsGiveawayWinnersOption">StarsGiveawayWinnersOption</a></p></div>
<p><a href="/type/StarsGiveawayWinnersOption">StarsGiveawayWinnersOption</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#telegram-stars" id="telegram-stars" name="telegram-stars"><i class="anchor-icon"></i></a><a href="/api/stars">Telegram Stars</a></h4>
<p>Telegram Stars are virtual items that allow users to purchase digital goods and services from bots and mini apps inside the Telegram ecosystem, send gifts to content creators on the Telegram platform, and more.</p></div>
</div>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 74 24 08 00 92 CB 38 67
0010 | 14 00 00 00 F1 8E 7E BE 1B BA D0 0E 11 31 66 36
0020 | C1 B9 C0 4B 10 94 49 91</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 F4 FE 0C 00 03 D7 38 67
0010 | 14 00 00 00 F1 8E 7E BE 9A 5B A4 1B 3D 34 52 05
0020 | 97 27 4D F2 D3 77 B5 20</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>7424080092CB3867</code></td>
<td><code>F4FE0C0003D73867</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>1BBAD00E11316636C1B9C04B10944991</code></td>
<td><code>9A5BA41B3D34520597274DF2D377B520</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 14 B2 D4 92 CB 38 67
0010 | 50 00 00 00 63 24 16 05 1B BA D0 0E 11 31 66 36
0020 | C1 B9 C0 4B 10 94 49 91 16 A1 6B FD 31 17 CE 50
0030 | 63 59 3B 17 F8 B8 92 01 08 2E 40 64 21 C9 1C 65
0040 | 29 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 4C 00 CA 03 D7 38 67
0010 | 50 00 00 00 63 24 16 05 9A 5B A4 1B 3D 34 52 05
0020 | 97 27 4D F2 D3 77 B5 20 2D 4F 3B FC C9 F3 A6 C2
0030 | D6 A5 FD 96 13 D8 97 9B 08 22 7D B0 86 B4 19 39
0040 | E9 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
0050 | 85 1D 9D D0 A5 B7 F7 09 35 5F C3 0B 21 6B E8 6C
0060 | 02 2B B4 C3</code></pre>
<p>Payload (de)serialization:</p>
@ -132,7 +132,7 @@
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>0114B2D492CB3867</code></td>
<td><code>014C00CA03D73867</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>1BBAD00E11316636C1B9C04B10944991</code></td>
<td><code>9A5BA41B3D34520597274DF2D377B520</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>16A16BFD3117CE5063593B17F8B89201</code></td>
<td><code>2D4F3BFCC9F3A6C2D6A5FD9613D8979B</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>082E406421C91C6529000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3332773820524946729</td>
<td><code>08227DB086B41939E9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2485336661972040169</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 = 3332773820524946729</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>3332773820524946729 = 1770870041 * 1881997969</code></p>
<pre><code>p = 1770870041
q = 1881997969</code></pre>
<pre><code>pq = 2485336661972040169</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2485336661972040169 = 1305374701 * 1903925869</code></p>
<pre><code>p = 1305374701
q = 1903925869</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 2E 40 64 21 C9 1C 65 29 00 00 00
0010 | 04 69 8D 55 19 00 00 00 04 70 2D 02 91 00 00 00
0020 | 1B BA D0 0E 11 31 66 36 C1 B9 C0 4B 10 94 49 91
0030 | 16 A1 6B FD 31 17 CE 50 63 59 3B 17 F8 B8 92 01
0040 | 86 F3 5B 10 97 21 C8 55 E2 E8 81 55 3C EF 92 95
0050 | 0C 31 AE 54 A3 AE BB 4D 48 DC E8 4B 74 D5 DD 63
<pre><code>0000 | 95 5F F5 A9 08 22 7D B0 86 B4 19 39 E9 00 00 00
0010 | 04 4D CE 6F ED 00 00 00 04 71 7B 9A 6D 00 00 00
0020 | 9A 5B A4 1B 3D 34 52 05 97 27 4D F2 D3 77 B5 20
0030 | 2D 4F 3B FC C9 F3 A6 C2 D6 A5 FD 96 13 D8 97 9B
0040 | F1 9B 19 37 87 16 9A 9F A5 76 B0 40 94 EB 94 5D
0050 | DE 45 05 D5 A8 F2 1B F2 B2 43 CD B9 F4 51 EF 90
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 = 1881997969</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>082E406421C91C6529000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3332773820524946729</td>
<td><code>08227DB086B41939E9000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2485336661972040169</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>04698D5519000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1770870041</td>
<td><code>044DCE6FED000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1305374701</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>04702D0291000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1881997969</td>
<td><code>04717B9A6D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1903925869</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>1BBAD00E11316636C1B9C04B10944991</code></td>
<td><code>9A5BA41B3D34520597274DF2D377B520</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>16A16BFD3117CE5063593B17F8B89201</code></td>
<td><code>2D4F3BFCC9F3A6C2D6A5FD9613D8979B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>86F35B109721C855E2E881553CEF9295</code> <code>0C31AE54A3AEBB4D48DCE84B74D5DD63</code></td>
<td><code>F19B193787169A9FA576B04094EB945D</code> <code>DE4505D5A8F21BF2B243CDB9F451EF90</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1881997969</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 = 955FF5A9082E406421C91C652900000004698D551900000004702D02910000001BBAD00E11316636C1B9C04B1094499116A16BFD3117CE5063593B17F8B8920186F35B109721C855E2E881553CEF92950C31AE54A3AEBB4D48DCE84B74D5DD6302000000
random_padding_bytes = 3D3C5A73F7500704DB7F36ABDA9B28ADB869391B6740501DA761926239FCDE780F982B1452FC63A0FB9789FBCF33AD5762E41744BB3ACCD703640C180B9E78C55408C619A4381419CD4331D0DBE639D778183DC2924E54E004FB89B6</code></pre>
<pre><code>data = 955FF5A908227DB086B41939E9000000044DCE6FED00000004717B9A6D0000009A5BA41B3D34520597274DF2D377B5202D4F3BFCC9F3A6C2D6A5FD9613D8979BF19B193787169A9FA576B04094EB945DDE4505D5A8F21BF2B243CDB9F451EF9002000000
random_padding_bytes = 737F0EDCF6715AE78A3F73A045C58BAD897322FC4E01CEDBD4BEB2B67CA12D68F6C5BB00333C2C65AB54C0BB1F1C10D80899B8DF32BF1D82E912748F4B55C55DAA4949F4D00C9C6989CD45642BA79039DBE15CF7846A62AE6EE3F3EE</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 = 936F4E722A7FAD6B4E2CBA03A6D7DEBF69714074077E4B0BC9FA4E1D6F0633F64EB8A58895E239CB10972BB141D19290DC0F8A77CB798884DD72BAAB556522C8768A1EA223A2F980A67CF4F132BB962E8F1E8DC5BC6B6EEC6A476ABBC5115B289700BD81C2A2E143F3614269A7977C2D9B63C7B265A072C5864023DE8599D9B842321721195D547E0A7C75ED8B354918C1D02E77E9A7F28258F2C9BEB94FD5EFD739DF748228D3B3272CF1951CE392971B811C83E4ED28D59555833920270B1E028351A604C82013D3D9A731429AB78735E5E8E3E543CC5A46E3761D33E5CDB99C84949100203E84F8597CFB31C69991515053D383F6E2E2A13CB3977A551C42</code></pre>
<pre><code>encrypted_data = 331AE866F377D9C51531B8BAEE08A181B7332769B1B24C120F79D70DE9E5A6EC13AD2777FC02BDE2267248187CE3EBCE0B7B67D8C1C6458269B4B759B4AB6E91BB60EE0539256A73A307D3AF98C2F52B048620B59B033E3ECCC7ED0BF453D25AFBDC7B1B35313181E6D8864942F254B7B5B7601FE008BE339A2CD16496114F088EE3F87D6F0ACE729B920898C252210CDFBB5127E17493AAFB7466B832A068992FF1266E30A1402555E29EAA945BE35D7DAA56EFAC0D85547723E831DD435CD52B7C1C47F23F8325ECAF1995F46044577A08632B5FE4F8115F4C4F790096207FA69316F83318B2720DCA7785D3BA657F096DF42CB8B00B844EA714D815426B25</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 78 24 08 00 92 CB 38 67
0010 | 40 01 00 00 BE E4 12 D7 1B BA D0 0E 11 31 66 36
0020 | C1 B9 C0 4B 10 94 49 91 16 A1 6B FD 31 17 CE 50
0030 | 63 59 3B 17 F8 B8 92 01 04 69 8D 55 19 00 00 00
0040 | 04 70 2D 02 91 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 93 6F 4E 72 2A 7F AD 6B 4E 2C BA 03
0060 | A6 D7 DE BF 69 71 40 74 07 7E 4B 0B C9 FA 4E 1D
0070 | 6F 06 33 F6 4E B8 A5 88 95 E2 39 CB 10 97 2B B1
0080 | 41 D1 92 90 DC 0F 8A 77 CB 79 88 84 DD 72 BA AB
0090 | 55 65 22 C8 76 8A 1E A2 23 A2 F9 80 A6 7C F4 F1
00A0 | 32 BB 96 2E 8F 1E 8D C5 BC 6B 6E EC 6A 47 6A BB
00B0 | C5 11 5B 28 97 00 BD 81 C2 A2 E1 43 F3 61 42 69
00C0 | A7 97 7C 2D 9B 63 C7 B2 65 A0 72 C5 86 40 23 DE
00D0 | 85 99 D9 B8 42 32 17 21 19 5D 54 7E 0A 7C 75 ED
00E0 | 8B 35 49 18 C1 D0 2E 77 E9 A7 F2 82 58 F2 C9 BE
00F0 | B9 4F D5 EF D7 39 DF 74 82 28 D3 B3 27 2C F1 95
0100 | 1C E3 92 97 1B 81 1C 83 E4 ED 28 D5 95 55 83 39
0110 | 20 27 0B 1E 02 83 51 A6 04 C8 20 13 D3 D9 A7 31
0120 | 42 9A B7 87 35 E5 E8 E3 E5 43 CC 5A 46 E3 76 1D
0130 | 33 E5 CD B9 9C 84 94 91 00 20 3E 84 F8 59 7C FB
0140 | 31 C6 99 91 51 50 53 D3 83 F6 E2 E2 A1 3C B3 97
0150 | 7A 55 1C 42</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 F8 FE 0C 00 03 D7 38 67
0010 | 40 01 00 00 BE E4 12 D7 9A 5B A4 1B 3D 34 52 05
0020 | 97 27 4D F2 D3 77 B5 20 2D 4F 3B FC C9 F3 A6 C2
0030 | D6 A5 FD 96 13 D8 97 9B 04 4D CE 6F ED 00 00 00
0040 | 04 71 7B 9A 6D 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 33 1A E8 66 F3 77 D9 C5 15 31 B8 BA
0060 | EE 08 A1 81 B7 33 27 69 B1 B2 4C 12 0F 79 D7 0D
0070 | E9 E5 A6 EC 13 AD 27 77 FC 02 BD E2 26 72 48 18
0080 | 7C E3 EB CE 0B 7B 67 D8 C1 C6 45 82 69 B4 B7 59
0090 | B4 AB 6E 91 BB 60 EE 05 39 25 6A 73 A3 07 D3 AF
00A0 | 98 C2 F5 2B 04 86 20 B5 9B 03 3E 3E CC C7 ED 0B
00B0 | F4 53 D2 5A FB DC 7B 1B 35 31 31 81 E6 D8 86 49
00C0 | 42 F2 54 B7 B5 B7 60 1F E0 08 BE 33 9A 2C D1 64
00D0 | 96 11 4F 08 8E E3 F8 7D 6F 0A CE 72 9B 92 08 98
00E0 | C2 52 21 0C DF BB 51 27 E1 74 93 AA FB 74 66 B8
00F0 | 32 A0 68 99 2F F1 26 6E 30 A1 40 25 55 E2 9E AA
0100 | 94 5B E3 5D 7D AA 56 EF AC 0D 85 54 77 23 E8 31
0110 | DD 43 5C D5 2B 7C 1C 47 F2 3F 83 25 EC AF 19 95
0120 | F4 60 44 57 7A 08 63 2B 5F E4 F8 11 5F 4C 4F 79
0130 | 00 96 20 7F A6 93 16 F8 33 18 B2 72 0D CA 77 85
0140 | D3 BA 65 7F 09 6D F4 2C B8 B0 0B 84 4E A7 14 D8
0150 | 15 42 6B 25</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 = 3D3C5A73F7500704DB7F36ABDA9B28ADB869391B6740501DA76192623
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>7824080092CB3867</code></td>
<td><code>F8FE0C0003D73867</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 = 3D3C5A73F7500704DB7F36ABDA9B28ADB869391B6740501DA76192623
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>1BBAD00E11316636C1B9C04B10944991</code></td>
<td><code>9A5BA41B3D34520597274DF2D377B520</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>16A16BFD3117CE5063593B17F8B89201</code></td>
<td><code>2D4F3BFCC9F3A6C2D6A5FD9613D8979B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>04698D5519000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1770870041</td>
<td><code>044DCE6FED000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1305374701</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>04702D0291000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1881997969</td>
<td><code>04717B9A6D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1903925869</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 = 3D3C5A73F7500704DB7F36ABDA9B28ADB869391B6740501DA76192623
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE000100936F4E722A7FAD6B4E2CBA03</code> <code>A6D7DEBF69714074077E4B0BC9FA4E1D</code> <code>6F0633F64EB8A58895E239CB10972BB1</code> <code>41D19290DC0F8A77CB798884DD72BAAB</code> <code>556522C8768A1EA223A2F980A67CF4F1</code> <code>32BB962E8F1E8DC5BC6B6EEC6A476ABB</code> <code>C5115B289700BD81C2A2E143F3614269</code> <code>A7977C2D9B63C7B265A072C5864023DE</code> <code>8599D9B842321721195D547E0A7C75ED</code> <code>8B354918C1D02E77E9A7F28258F2C9BE</code> <code>B94FD5EFD739DF748228D3B3272CF195</code> <code>1CE392971B811C83E4ED28D595558339</code> <code>20270B1E028351A604C82013D3D9A731</code> <code>429AB78735E5E8E3E543CC5A46E3761D</code> <code>33E5CDB99C84949100203E84F8597CFB</code> <code>31C69991515053D383F6E2E2A13CB397</code><br> <code>7A551C42</code></td>
<td><code>FE000100331AE866F377D9C51531B8BA</code> <code>EE08A181B7332769B1B24C120F79D70D</code> <code>E9E5A6EC13AD2777FC02BDE226724818</code> <code>7CE3EBCE0B7B67D8C1C6458269B4B759</code> <code>B4AB6E91BB60EE0539256A73A307D3AF</code> <code>98C2F52B048620B59B033E3ECCC7ED0B</code> <code>F453D25AFBDC7B1B35313181E6D88649</code> <code>42F254B7B5B7601FE008BE339A2CD164</code> <code>96114F088EE3F87D6F0ACE729B920898</code> <code>C252210CDFBB5127E17493AAFB7466B8</code> <code>32A068992FF1266E30A1402555E29EAA</code> <code>945BE35D7DAA56EFAC0D85547723E831</code> <code>DD435CD52B7C1C47F23F8325ECAF1995</code> <code>F46044577A08632B5FE4F8115F4C4F79</code> <code>0096207FA69316F83318B2720DCA7785</code> <code>D3BA657F096DF42CB8B00B844EA714D8</code><br> <code>15426B25</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 3D3C5A73F7500704DB7F36ABDA9B28ADB869391B6740501DA76192623
<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 14 A5 E9 92 CB 38 67
0010 | 78 02 00 00 5C 07 E8 D0 1B BA D0 0E 11 31 66 36
0020 | C1 B9 C0 4B 10 94 49 91 16 A1 6B FD 31 17 CE 50
0030 | 63 59 3B 17 F8 B8 92 01 FE 50 02 00 8D 26 F0 C9
0040 | 96 D5 F3 CB 54 0A 5C F4 38 C8 B3 0E 75 FC 43 5B
0050 | B5 50 E3 BC ED C8 97 A0 74 D5 A9 5A EB BB 2F 1E
0060 | 51 14 99 E5 2E C4 08 9E E3 63 E4 DE 4F 46 64 1D
0070 | FA 7B BF EC B9 AA 64 23 05 2A 09 05 89 5D 0F 4D
0080 | 71 86 BE 92 F1 82 08 CD 64 81 E7 15 40 B2 30 E9
0090 | 2C 44 97 9D 07 63 5A AE A6 E8 6F CC 01 3A 85 B2
00A0 | 2F 0A 6F 24 95 E9 48 20 EE 0E 3D E2 36 80 89 D3
00B0 | E1 D3 34 CA D0 F6 74 F5 26 D0 09 E0 B2 A4 0D B3
00C0 | F1 1A F7 A9 3A 3C CA 1E 1F 72 6E 0C CD 13 0F 48
00D0 | DD 42 72 A8 74 65 3B 3C 5E DD F7 2A BD 7B FA B9
00E0 | 06 79 C1 3D 71 A8 C4 4C C1 AA 4A BC E9 A1 36 AB
00F0 | 82 6F 17 9E 8F 43 B7 FE A5 EC AC 67 E4 3B 85 F4
0100 | C2 21 3F F3 59 16 D0 2F 23 C3 C7 55 D7 BE 1D 32
0110 | 8B B0 64 C9 FF 38 4B 60 40 6E 46 19 BD 42 4E 6B
0120 | 5C 7E 8A 48 BF 95 B4 04 D9 93 AB 85 6B B3 89 8F
0130 | 74 A4 9C C4 E2 74 EA C5 21 C0 55 0F D7 9C 30 C2
0140 | 9D F8 0B D0 13 BD 1B 62 B2 80 3F 3F C1 5B 14 DF
0150 | 86 75 69 8C F3 E9 0A 05 FA 95 4A 30 9B 7A 2C AD
0160 | 84 DA 57 C2 81 1D D9 1A FA D1 75 D8 B3 07 D8 62
0170 | 7E EC E5 66 8C FF 2D FA AE 23 4B A9 FB DE 8A 2F
0180 | C1 A7 2E 9A 02 5D B0 AD 67 4F 28 90 25 E2 FC FB
0190 | 28 44 61 23 66 86 80 46 EB 47 8E 1F 62 F8 B1 DF
01A0 | 57 9F A9 53 EF C1 05 FD 74 9F E1 57 D9 19 B7 FE
01B0 | 1F A1 53 FF 1F C6 1E BB 90 CD 63 8C 62 47 F6 9C
01C0 | 28 82 2D 42 08 7A CB 53 1F B8 AA D5 27 AD 3C 1B
01D0 | 50 54 11 08 27 88 AD 7E 5F 8F AE 6E 9D B8 1B 28
01E0 | 82 7A 13 AC 8B 0A 27 07 9B A3 51 CD 24 18 77 1B
01F0 | 69 B7 99 BF E2 27 9F 90 6C 6D 74 7F 7E 76 2D E5
0200 | 5A F2 3F E4 81 8B DE 49 DA 8B 92 50 38 2C 03 8F
0210 | 75 D0 38 2B 51 F9 39 39 08 A0 6C 6C A9 7B 28 C2
0220 | 86 CA B1 74 5B AC B4 0E FF 8F F8 27 14 51 A4 BE
0230 | 9C C6 7D DC C2 4E CE 7A 18 98 04 A8 56 41 2F EF
0240 | C7 A5 DA CB 16 4C 45 3C 05 F3 DD A5 AD 23 16 CF
0250 | 9C 9E 0F 1D 25 DF EA 13 86 4A 75 6E 8B CA F6 B0
0260 | 33 5B 86 C9 76 88 41 D7 88 62 FD 66 A3 61 0B D4
0270 | D2 32 FD FE 52 5D 80 82 B4 BF DB B7 95 07 56 54
0280 | 2A 13 6D 9F E8 37 15 82 81 B2 E3 85</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 F4 2E EB 03 D7 38 67
0010 | 78 02 00 00 5C 07 E8 D0 9A 5B A4 1B 3D 34 52 05
0020 | 97 27 4D F2 D3 77 B5 20 2D 4F 3B FC C9 F3 A6 C2
0030 | D6 A5 FD 96 13 D8 97 9B FE 50 02 00 46 CC 6E 91
0040 | 84 C8 07 08 31 C3 87 4E DC A1 FF 0C 87 F5 EB 43
0050 | B6 2B 77 2D 3A 40 87 38 F9 32 38 4D F4 77 8B 22
0060 | 0D 8F D4 6A EE C5 6C 76 78 83 8C 6A 10 4C B9 DF
0070 | 2B D9 B7 48 3A 8E 4F 1E 2A D5 C0 7F C8 84 57 72
0080 | B5 EE DD EA A5 CE 10 95 98 F4 F6 63 D2 5A 79 F8
0090 | 63 98 DE 73 6F 28 6E 9E E0 12 79 F4 20 7F 43 94
00A0 | 43 46 56 E1 13 7D 6C D8 1A F4 6E 32 0E 58 6A D8
00B0 | 9A C7 35 37 AB 24 86 F5 0D D6 C9 9C 2B 40 5A 83
00C0 | 96 FC B8 06 4B 46 8F E6 60 DF A8 27 6A 3D 8B 9E
00D0 | 67 BA 51 30 5A 3E 29 FD D6 7D F9 22 83 2D 1A A5
00E0 | 70 A8 BD C0 94 78 3E 77 CB CB 2A A5 CF 6C 15 59
00F0 | 5F C7 32 AF DE 08 C8 76 58 56 A7 D3 FC A3 22 55
0100 | DA 2F 20 4D 14 21 61 12 6B 4D 51 69 CC 2B FD 1F
0110 | 2E B0 86 56 26 F6 02 0C 1D 5C 9B BB AA 4F 1B 12
0120 | 12 4A E0 32 4B FA 9E 6A C5 9E 40 A1 95 24 86 D4
0130 | D3 A6 B9 3B AB C5 A1 13 24 45 FE FD CA 3D C8 47
0140 | 73 D3 E3 E7 A9 15 96 C1 C1 67 09 A8 1F A9 74 C8
0150 | F1 28 F5 34 33 CD A3 89 D3 F4 84 11 2E 42 89 5F
0160 | 99 3E 1E 4D B8 D1 F6 41 B6 37 7D C6 38 D4 DE 2E
0170 | 79 80 C0 D3 D0 33 EC 28 79 C8 80 70 11 AD 52 5B
0180 | 5D 8D F8 75 AE 12 0B BF 1B 0B BE CE 6D D4 0C D1
0190 | 40 4C B3 E8 59 2E BC DE C5 F1 63 DA EF 67 F1 11
01A0 | 74 C0 92 E0 61 41 7D 73 B8 5C E1 54 93 B9 E7 C7
01B0 | B2 88 E7 AB D0 23 0C 96 00 22 EB 97 2B 51 17 22
01C0 | 89 10 AD 90 1B A5 B5 C7 BF D0 D8 6D 4A 45 49 B5
01D0 | 81 DC 37 6C 59 B1 32 60 6F 7E 7F D7 F9 6D AD 3D
01E0 | 71 04 AB 26 F9 15 5C 13 FC 10 71 BE 04 C8 CF D1
01F0 | 25 9C BC 55 7D 3D 54 DB B5 17 C7 A4 C4 D1 63 52
0200 | 78 23 99 14 63 72 9C 03 25 B0 5F 01 05 FB 47 6A
0210 | 9B 75 6C 44 7A 82 11 7B A8 1C CC AA 38 93 31 CC
0220 | C7 88 B4 DC 0D ED 79 8C 78 63 EB 22 EC 30 C2 69
0230 | 76 DC 3E 69 F4 4A 8D 40 74 0D FF 72 D6 D6 B4 2E
0240 | 49 2A FE 93 7A 34 33 F3 2A CF 4F 1C AC FB FE 2B
0250 | C3 A7 80 45 C0 BF 4B 34 46 F2 41 1A 8D 84 7D 20
0260 | 66 3F C4 72 4F 57 3C 95 A5 66 94 49 33 22 1A 73
0270 | A7 B5 CB 1E 92 3A E5 8C 2A 0B AE E2 FD 23 B8 5A
0280 | A3 65 B3 A2 19 3B 36 55 74 23 44 B5</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;</code></pre>
<table class="table">
@ -464,7 +464,7 @@ random_padding_bytes = 3D3C5A73F7500704DB7F36ABDA9B28ADB869391B6740501DA76192623
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>0114A5E992CB3867</code></td>
<td><code>01F42EEB03D73867</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 3D3C5A73F7500704DB7F36ABDA9B28ADB869391B6740501DA76192623
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>1BBAD00E11316636C1B9C04B10944991</code></td>
<td><code>9A5BA41B3D34520597274DF2D377B520</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>16A16BFD3117CE5063593B17F8B89201</code></td>
<td><code>2D4F3BFCC9F3A6C2D6A5FD9613D8979B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002008D26F0C996D5F3CB540A5CF4</code> <code>38C8B30E75FC435BB550E3BCEDC897A0</code> <code>74D5A95AEBBB2F1E511499E52EC4089E</code> <code>E363E4DE4F46641DFA7BBFECB9AA6423</code> <code>052A0905895D0F4D7186BE92F18208CD</code> <code>6481E71540B230E92C44979D07635AAE</code> <code>A6E86FCC013A85B22F0A6F2495E94820</code> <code>EE0E3DE2368089D3E1D334CAD0F674F5</code> <code>26D009E0B2A40DB3F11AF7A93A3CCA1E</code> <code>1F726E0CCD130F48DD4272A874653B3C</code> <code>5EDDF72ABD7BFAB90679C13D71A8C44C</code> <code>C1AA4ABCE9A136AB826F179E8F43B7FE</code> <code>A5ECAC67E43B85F4C2213FF35916D02F</code> <code>23C3C755D7BE1D328BB064C9FF384B60</code> <code>406E4619BD424E6B5C7E8A48BF95B404</code> <code>D993AB856BB3898F74A49CC4E274EAC5</code> <code>21C0550FD79C30C29DF80BD013BD1B62</code> <code>B2803F3FC15B14DF8675698CF3E90A05</code> <code>FA954A309B7A2CAD84DA57C2811DD91A</code> <code>FAD175D8B307D8627EECE5668CFF2DFA</code> <code>AE234BA9FBDE8A2FC1A72E9A025DB0AD</code> <code>674F289025E2FCFB2844612366868046</code> <code>EB478E1F62F8B1DF579FA953EFC105FD</code> <code>749FE157D919B7FE1FA153FF1FC61EBB</code> <code>90CD638C6247F69C28822D42087ACB53</code> <code>1FB8AAD527AD3C1B505411082788AD7E</code> <code>5F8FAE6E9DB81B28827A13AC8B0A2707</code> <code>9BA351CD2418771B69B799BFE2279F90</code> <code>6C6D747F7E762DE55AF23FE4818BDE49</code> <code>DA8B9250382C038F75D0382B51F93939</code> <code>08A06C6CA97B28C286CAB1745BACB40E</code> <code>FF8FF8271451A4BE9CC67DDCC24ECE7A</code> <code>189804A856412FEFC7A5DACB164C453C</code> <code>05F3DDA5AD2316CF9C9E0F1D25DFEA13</code> <code>864A756E8BCAF6B0335B86C9768841D7</code> <code>8862FD66A3610BD4D232FDFE525D8082</code> <code>B4BFDBB7950756542A136D9FE8371582</code><br> <code>81B2E385</code></td>
<td><code>FE50020046CC6E9184C8070831C3874E</code> <code>DCA1FF0C87F5EB43B62B772D3A408738</code> <code>F932384DF4778B220D8FD46AEEC56C76</code> <code>78838C6A104CB9DF2BD9B7483A8E4F1E</code> <code>2AD5C07FC8845772B5EEDDEAA5CE1095</code> <code>98F4F663D25A79F86398DE736F286E9E</code> <code>E01279F4207F4394434656E1137D6CD8</code> <code>1AF46E320E586AD89AC73537AB2486F5</code> <code>0DD6C99C2B405A8396FCB8064B468FE6</code> <code>60DFA8276A3D8B9E67BA51305A3E29FD</code> <code>D67DF922832D1AA570A8BDC094783E77</code> <code>CBCB2AA5CF6C15595FC732AFDE08C876</code> <code>5856A7D3FCA32255DA2F204D14216112</code> <code>6B4D5169CC2BFD1F2EB0865626F6020C</code> <code>1D5C9BBBAA4F1B12124AE0324BFA9E6A</code> <code>C59E40A1952486D4D3A6B93BABC5A113</code> <code>2445FEFDCA3DC84773D3E3E7A91596C1</code> <code>C16709A81FA974C8F128F53433CDA389</code> <code>D3F484112E42895F993E1E4DB8D1F641</code> <code>B6377DC638D4DE2E7980C0D3D033EC28</code> <code>79C8807011AD525B5D8DF875AE120BBF</code> <code>1B0BBECE6DD40CD1404CB3E8592EBCDE</code> <code>C5F163DAEF67F11174C092E061417D73</code> <code>B85CE15493B9E7C7B288E7ABD0230C96</code> <code>0022EB972B5117228910AD901BA5B5C7</code> <code>BFD0D86D4A4549B581DC376C59B13260</code> <code>6F7E7FD7F96DAD3D7104AB26F9155C13</code> <code>FC1071BE04C8CFD1259CBC557D3D54DB</code> <code>B517C7A4C4D163527823991463729C03</code> <code>25B05F0105FB476A9B756C447A82117B</code> <code>A81CCCAA389331CCC788B4DC0DED798C</code> <code>7863EB22EC30C26976DC3E69F44A8D40</code> <code>740DFF72D6D6B42E492AFE937A3433F3</code> <code>2ACF4F1CACFBFE2BC3A78045C0BF4B34</code> <code>46F2411A8D847D20663FC4724F573C95</code> <code>A566944933221A73A7B5CB1E923AE58C</code> <code>2A0BAEE2FD23B85AA365B3A2193B3655</code><br> <code>742344B5</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 3D3C5A73F7500704DB7F36ABDA9B28ADB869391B6740501DA76192623
<!-- 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 = 8D26F0C996D5F3CB540A5CF438C8B30E75FC435BB550E3BCEDC897A074D5A95AEBBB2F1E511499E52EC4089EE363E4DE4F46641DFA7BBFECB9AA6423052A0905895D0F4D7186BE92F18208CD6481E71540B230E92C44979D07635AAEA6E86FCC013A85B22F0A6F2495E94820EE0E3DE2368089D3E1D334CAD0F674F526D009E0B2A40DB3F11AF7A93A3CCA1E1F726E0CCD130F48DD4272A874653B3C5EDDF72ABD7BFAB90679C13D71A8C44CC1AA4ABCE9A136AB826F179E8F43B7FEA5ECAC67E43B85F4C2213FF35916D02F23C3C755D7BE1D328BB064C9FF384B60406E4619BD424E6B5C7E8A48BF95B404D993AB856BB3898F74A49CC4E274EAC521C0550FD79C30C29DF80BD013BD1B62B2803F3FC15B14DF8675698CF3E90A05FA954A309B7A2CAD84DA57C2811DD91AFAD175D8B307D8627EECE5668CFF2DFAAE234BA9FBDE8A2FC1A72E9A025DB0AD674F289025E2FCFB2844612366868046EB478E1F62F8B1DF579FA953EFC105FD749FE157D919B7FE1FA153FF1FC61EBB90CD638C6247F69C28822D42087ACB531FB8AAD527AD3C1B505411082788AD7E5F8FAE6E9DB81B28827A13AC8B0A27079BA351CD2418771B69B799BFE2279F906C6D747F7E762DE55AF23FE4818BDE49DA8B9250382C038F75D0382B51F9393908A06C6CA97B28C286CAB1745BACB40EFF8FF8271451A4BE9CC67DDCC24ECE7A189804A856412FEFC7A5DACB164C453C05F3DDA5AD2316CF9C9E0F1D25DFEA13864A756E8BCAF6B0335B86C9768841D78862FD66A3610BD4D232FDFE525D8082B4BFDBB7950756542A136D9FE837158281B2E385
tmp_aes_key = 4298A03F609E0E3E1493BBFA37FB311E80D1DDEB1E7B88D01BF827B807D1DB5E
tmp_aes_iv = 2D165A15D4C176A7989F0620676F514FE0065D1FB2A918EA80FDDEDF86F35B10</code></pre>
<pre><code>encrypted_answer = 46CC6E9184C8070831C3874EDCA1FF0C87F5EB43B62B772D3A408738F932384DF4778B220D8FD46AEEC56C7678838C6A104CB9DF2BD9B7483A8E4F1E2AD5C07FC8845772B5EEDDEAA5CE109598F4F663D25A79F86398DE736F286E9EE01279F4207F4394434656E1137D6CD81AF46E320E586AD89AC73537AB2486F50DD6C99C2B405A8396FCB8064B468FE660DFA8276A3D8B9E67BA51305A3E29FDD67DF922832D1AA570A8BDC094783E77CBCB2AA5CF6C15595FC732AFDE08C8765856A7D3FCA32255DA2F204D142161126B4D5169CC2BFD1F2EB0865626F6020C1D5C9BBBAA4F1B12124AE0324BFA9E6AC59E40A1952486D4D3A6B93BABC5A1132445FEFDCA3DC84773D3E3E7A91596C1C16709A81FA974C8F128F53433CDA389D3F484112E42895F993E1E4DB8D1F641B6377DC638D4DE2E7980C0D3D033EC2879C8807011AD525B5D8DF875AE120BBF1B0BBECE6DD40CD1404CB3E8592EBCDEC5F163DAEF67F11174C092E061417D73B85CE15493B9E7C7B288E7ABD0230C960022EB972B5117228910AD901BA5B5C7BFD0D86D4A4549B581DC376C59B132606F7E7FD7F96DAD3D7104AB26F9155C13FC1071BE04C8CFD1259CBC557D3D54DBB517C7A4C4D163527823991463729C0325B05F0105FB476A9B756C447A82117BA81CCCAA389331CCC788B4DC0DED798C7863EB22EC30C26976DC3E69F44A8D40740DFF72D6D6B42E492AFE937A3433F32ACF4F1CACFBFE2BC3A78045C0BF4B3446F2411A8D847D20663FC4724F573C95A566944933221A73A7B5CB1E923AE58C2A0BAEE2FD23B85AA365B3A2193B3655742344B5
tmp_aes_key = 43304FF1FC6B7BAF07DB39696A08365AB6194F59460F1E6C4B1605F765C86676
tmp_aes_iv = 1F93981C89E1ADACE692CC4BDBD2738BA309C47BDCB3B90907074E7CF19B1937</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 57AA45D5977ABE021682E970D99A2408B6F11B24BA0D89B51BBAD00E11316636C1B9C04B1094499116A16BFD3117CE5063593B17F8B8920103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010079B54F6278D32651D98B5ECCB4B86CF581CA0C9BC52C3A91D7DBE60CCCDAC314E210C31020688D95A2E4E0EDA5FA249E666D8543F2006147AFC30C97B5DD17D132C97D73E5370E0AA307054662DACED3E31E55FE8C0DBB7A6299E20FBD3F11CDECD388916A625B7C3FA4DCA90C4EBBDC1045BA699F187998B270CA2909E9440123692C479D8B3E3634B86D16C021F12B3AD2EBE2D8AD4CBAA897A1C43DEBD72D9AE320A27A1239229760726FDF36A2CC5170096DFA792E232738183C2D0B5BF3DFA395DCD6EC5642C235C36B24667B50B70118770869189D69D90B2F6B5A55928E6FBCED52B467E739E66926285A62238B9F8484105280556367EFD4AA7FC56A92CB3867F7977AE980373BD0
answer = BA0D89B51BBAD00E11316636C1B9C04B1094499116A16BFD3117CE5063593B17F8B8920103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010079B54F6278D32651D98B5ECCB4B86CF581CA0C9BC52C3A91D7DBE60CCCDAC314E210C31020688D95A2E4E0EDA5FA249E666D8543F2006147AFC30C97B5DD17D132C97D73E5370E0AA307054662DACED3E31E55FE8C0DBB7A6299E20FBD3F11CDECD388916A625B7C3FA4DCA90C4EBBDC1045BA699F187998B270CA2909E9440123692C479D8B3E3634B86D16C021F12B3AD2EBE2D8AD4CBAA897A1C43DEBD72D9AE320A27A1239229760726FDF36A2CC5170096DFA792E232738183C2D0B5BF3DFA395DCD6EC5642C235C36B24667B50B70118770869189D69D90B2F6B5A55928E6FBCED52B467E739E66926285A62238B9F8484105280556367EFD4AA7FC56A92CB3867F7977AE980373BD0</code></pre>
<pre><code>answer_with_hash = 16C0C99B915CE6D6DACF77CC3E07D4692C522D4DBA0D89B59A5BA41B3D34520597274DF2D377B5202D4F3BFCC9F3A6C2D6A5FD9613D8979B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001005CCC288C6903A793C0A53F04A570DCDBD3CA139421500CF06E1B37E2D5139E6CF728A16D07311EF980A3CAC80E37E51AA1FC459F472F0186F2B7F1E8270540B43CF34048ADA93BC160793F04D06BE2D4F49F3578E7665C23D4077A0DF03E3E71BC0F1FC0987DD4C100CB4DC9D2DDCF8F36A5D59C2197313AADF3E7E90F21DB08492D1E3BD7AD1BE2AF0913F3434443B9FE1E44393087A99EE50325A83027CF79609DF108F1544CF228263A073DC4CAC37ED9D1B843BACD23F2FC3426F39604015AC45BF1A255609DD1790CCF93D2183B20B8339AD27E9991C012CAC55D6FA12883440745340DF5B5D67C0BE9B2A45DFFB28BFDA5B147F34017594255F6FF279903D7386706263D9E00FD6324
answer = BA0D89B59A5BA41B3D34520597274DF2D377B5202D4F3BFCC9F3A6C2D6A5FD9613D8979B03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001005CCC288C6903A793C0A53F04A570DCDBD3CA139421500CF06E1B37E2D5139E6CF728A16D07311EF980A3CAC80E37E51AA1FC459F472F0186F2B7F1E8270540B43CF34048ADA93BC160793F04D06BE2D4F49F3578E7665C23D4077A0DF03E3E71BC0F1FC0987DD4C100CB4DC9D2DDCF8F36A5D59C2197313AADF3E7E90F21DB08492D1E3BD7AD1BE2AF0913F3434443B9FE1E44393087A99EE50325A83027CF79609DF108F1544CF228263A073DC4CAC37ED9D1B843BACD23F2FC3426F39604015AC45BF1A255609DD1790CCF93D2183B20B8339AD27E9991C012CAC55D6FA12883440745340DF5B5D67C0BE9B2A45DFFB28BFDA5B147F34017594255F6FF279903D7386706263D9E00FD6324</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 1B BA D0 0E 11 31 66 36 C1 B9 C0 4B
0010 | 10 94 49 91 16 A1 6B FD 31 17 CE 50 63 59 3B 17
0020 | F8 B8 92 01 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 9A 5B A4 1B 3D 34 52 05 97 27 4D F2
0010 | D3 77 B5 20 2D 4F 3B FC C9 F3 A6 C2 D6 A5 FD 96
0020 | 13 D8 97 9B 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 = BA0D89B51BBAD00E11316636C1B9C04B1094499116A16BFD3117CE5063593B17F8B8920
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 | 79 B5 4F 62 78 D3 26 51 D9 8B 5E CC B4 B8 6C F5
0140 | 81 CA 0C 9B C5 2C 3A 91 D7 DB E6 0C CC DA C3 14
0150 | E2 10 C3 10 20 68 8D 95 A2 E4 E0 ED A5 FA 24 9E
0160 | 66 6D 85 43 F2 00 61 47 AF C3 0C 97 B5 DD 17 D1
0170 | 32 C9 7D 73 E5 37 0E 0A A3 07 05 46 62 DA CE D3
0180 | E3 1E 55 FE 8C 0D BB 7A 62 99 E2 0F BD 3F 11 CD
0190 | EC D3 88 91 6A 62 5B 7C 3F A4 DC A9 0C 4E BB DC
01A0 | 10 45 BA 69 9F 18 79 98 B2 70 CA 29 09 E9 44 01
01B0 | 23 69 2C 47 9D 8B 3E 36 34 B8 6D 16 C0 21 F1 2B
01C0 | 3A D2 EB E2 D8 AD 4C BA A8 97 A1 C4 3D EB D7 2D
01D0 | 9A E3 20 A2 7A 12 39 22 97 60 72 6F DF 36 A2 CC
01E0 | 51 70 09 6D FA 79 2E 23 27 38 18 3C 2D 0B 5B F3
01F0 | DF A3 95 DC D6 EC 56 42 C2 35 C3 6B 24 66 7B 50
0200 | B7 01 18 77 08 69 18 9D 69 D9 0B 2F 6B 5A 55 92
0210 | 8E 6F BC ED 52 B4 67 E7 39 E6 69 26 28 5A 62 23
0220 | 8B 9F 84 84 10 52 80 55 63 67 EF D4 AA 7F C5 6A
0230 | 92 CB 38 67</code></pre>
0130 | 5C CC 28 8C 69 03 A7 93 C0 A5 3F 04 A5 70 DC DB
0140 | D3 CA 13 94 21 50 0C F0 6E 1B 37 E2 D5 13 9E 6C
0150 | F7 28 A1 6D 07 31 1E F9 80 A3 CA C8 0E 37 E5 1A
0160 | A1 FC 45 9F 47 2F 01 86 F2 B7 F1 E8 27 05 40 B4
0170 | 3C F3 40 48 AD A9 3B C1 60 79 3F 04 D0 6B E2 D4
0180 | F4 9F 35 78 E7 66 5C 23 D4 07 7A 0D F0 3E 3E 71
0190 | BC 0F 1F C0 98 7D D4 C1 00 CB 4D C9 D2 DD CF 8F
01A0 | 36 A5 D5 9C 21 97 31 3A AD F3 E7 E9 0F 21 DB 08
01B0 | 49 2D 1E 3B D7 AD 1B E2 AF 09 13 F3 43 44 43 B9
01C0 | FE 1E 44 39 30 87 A9 9E E5 03 25 A8 30 27 CF 79
01D0 | 60 9D F1 08 F1 54 4C F2 28 26 3A 07 3D C4 CA C3
01E0 | 7E D9 D1 B8 43 BA CD 23 F2 FC 34 26 F3 96 04 01
01F0 | 5A C4 5B F1 A2 55 60 9D D1 79 0C CF 93 D2 18 3B
0200 | 20 B8 33 9A D2 7E 99 91 C0 12 CA C5 5D 6F A1 28
0210 | 83 44 07 45 34 0D F5 B5 D6 7C 0B E9 B2 A4 5D FF
0220 | B2 8B FD A5 B1 47 F3 40 17 59 42 55 F6 FF 27 99
0230 | 03 D7 38 67</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B51BBAD00E11316636C1B9C04B1094499116A16BFD3117CE5063593B17F8B8920
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>1BBAD00E11316636C1B9C04B10944991</code></td>
<td><code>9A5BA41B3D34520597274DF2D377B520</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>16A16BFD3117CE5063593B17F8B89201</code></td>
<td><code>2D4F3BFCC9F3A6C2D6A5FD9613D8979B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B51BBAD00E11316636C1B9C04B1094499116A16BFD3117CE5063593B17F8B8920
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE00010079B54F6278D32651D98B5ECC</code> <code>B4B86CF581CA0C9BC52C3A91D7DBE60C</code> <code>CCDAC314E210C31020688D95A2E4E0ED</code> <code>A5FA249E666D8543F2006147AFC30C97</code> <code>B5DD17D132C97D73E5370E0AA3070546</code> <code>62DACED3E31E55FE8C0DBB7A6299E20F</code> <code>BD3F11CDECD388916A625B7C3FA4DCA9</code> <code>0C4EBBDC1045BA699F187998B270CA29</code> <code>09E9440123692C479D8B3E3634B86D16</code> <code>C021F12B3AD2EBE2D8AD4CBAA897A1C4</code> <code>3DEBD72D9AE320A27A1239229760726F</code> <code>DF36A2CC5170096DFA792E232738183C</code> <code>2D0B5BF3DFA395DCD6EC5642C235C36B</code> <code>24667B50B70118770869189D69D90B2F</code> <code>6B5A55928E6FBCED52B467E739E66926</code> <code>285A62238B9F8484105280556367EFD4</code><br> <code>AA7FC56A</code></td>
<td><code>FE0001005CCC288C6903A793C0A53F04</code> <code>A570DCDBD3CA139421500CF06E1B37E2</code> <code>D5139E6CF728A16D07311EF980A3CAC8</code> <code>0E37E51AA1FC459F472F0186F2B7F1E8</code> <code>270540B43CF34048ADA93BC160793F04</code> <code>D06BE2D4F49F3578E7665C23D4077A0D</code> <code>F03E3E71BC0F1FC0987DD4C100CB4DC9</code> <code>D2DDCF8F36A5D59C2197313AADF3E7E9</code> <code>0F21DB08492D1E3BD7AD1BE2AF0913F3</code> <code>434443B9FE1E44393087A99EE50325A8</code> <code>3027CF79609DF108F1544CF228263A07</code> <code>3DC4CAC37ED9D1B843BACD23F2FC3426</code> <code>F39604015AC45BF1A255609DD1790CCF</code> <code>93D2183B20B8339AD27E9991C012CAC5</code> <code>5D6FA12883440745340DF5B5D67C0BE9</code> <code>B2A45DFFB28BFDA5B147F34017594255</code><br> <code>F6FF2799</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>92CB3867</code> (1731775378 in decimal)</td>
<td><code>03D73867</code> (1731778307 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B51BBAD00E11316636C1B9C04B1094499116A16BFD3117CE5063593B17F8B8920
<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 = 958210AD1A17DD51C95AC4E7B36F56AE6B14C70D92BDA922BBC1DAA63F3DBB5933A8F292B825D8931528027AD4573A7D70654782A2D4CB8F58864C568C6F50D53C6F2FC51B7796F97B3DD487D35AFC7F00FBAC99C6D374C177CE7608C166EE147D4E84C13131AF6C20BBEBB5A7445FCEB84F5CFE21E3E796E83B1FB877CD9FF1EB60D48AC10744C216C343A2E569FA8FB18510CF07ABB3934676C910792D644ACB477364FF6B4812760BB73614E06C533592B8997F1CE138EC2E51C1C18CBD321B74A5B406937FEC0AFB5C3A32BA8173238AB57EE4749FE398843EB47FF11C0305CFDF73982BDDEE6A539B802D1FB90E576B2655CB044660922527341500A0D0</code></pre>
<pre><code>b = E6616A623C7773B393C821A08F715B250A8F5C5116FA3995ECE8268D55D47C02406FE3638F03F9B1F013415E3C3B7547658A4683C6BE90043A6179B46CA7600CFCD8389819E88562A0FA4096C09D40783255F3938D5835E25ED3F489821AFB8F5E6AC15EFD22CE9E2454BD475D5AD2870B38FE713F38431F6547DF6F1F01F6674572AEEE075B37FEEE562E0D8C12AF262F9C22E2986D82F59B799CE5269C7048B395702577D1457EEB4FDF1D857D616562F7B854EAD8482D185017691A244F41D965AB2F84B25C9271AD04AE3AA5D1118A98767C0571301E71266DC55152503E721B5B506D45F790418361EE174E1E0831A27189FB46A59488664BAB8E44EF60</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 = 56E2DCC5219A8FF364A6A7EFE1FF8F57B75CA81CF4AFCB975CE4967F5DC20A88A24EB3D79EBCFD5C955B177B8FEE2A2E15B9F98DB6FB4EC3E1E809960634E8C7109B41602749C969C1185ABB51964E565E1D054FCDF359E28B76FBBC70C57F56E5BB0FFD412AA46D2C85AD35DAB9A80C85891D123A2E2092D7AD556E40CA2CF53B6D45AA44306FC174D7F8AFDEC6E7B8049C7B1192A77982997313808CBD57E0FEBF4C8B2946BC807850E8A601457E4529498F114AAB22BD525F157916515737795BAB7ADD81F349CBF9F1119A2707396183A095281F9F3B93ADE18C10513196242857EAC8B2EE9431E1DFE24D56C33F9D8C8C8DB2FA259996C05E2170A4DAAA</code></pre>
<pre><code>g_b = 905BB047A141C068AD84271294378C6A5D7BE8A079C83FAF527490FF7E24A6C865C88B3EA86524E0D3DC831CCD98429AFFE729C3BBDDE4F194623C998D79DFCFD26E79D84528F61E8BCAF89288A6464F7D7A60026BA6AEA4C4932F17A2798F0202D7B9F94D791878E362865B8069CFEFD78B9B7DAE75A5D68C811C207F2BBE19DC2B72967735BB6E1EED93AD2BAE379C88582CC0970AC79A62D7CE5BA31195709E13E0F84E950EDF4B85E1BF1EE5109E933C4E0DA0822BC20B0EB2EB55D8EBF8C14CD143627B9D3BCCF1075757E0EB369F9BA42FC2036D89B77B6546D3E7EB6E62CBEF6A5B1B9B562A9DA9D42C6DA2DC0B8C94D9A30397628670996368961C97</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 1B BA D0 0E 11 31 66 36 C1 B9 C0 4B
0010 | 10 94 49 91 16 A1 6B FD 31 17 CE 50 63 59 3B 17
0020 | F8 B8 92 01 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 56 E2 DC C5 21 9A 8F F3 64 A6 A7 EF E1 FF 8F 57
0040 | B7 5C A8 1C F4 AF CB 97 5C E4 96 7F 5D C2 0A 88
0050 | A2 4E B3 D7 9E BC FD 5C 95 5B 17 7B 8F EE 2A 2E
0060 | 15 B9 F9 8D B6 FB 4E C3 E1 E8 09 96 06 34 E8 C7
0070 | 10 9B 41 60 27 49 C9 69 C1 18 5A BB 51 96 4E 56
0080 | 5E 1D 05 4F CD F3 59 E2 8B 76 FB BC 70 C5 7F 56
0090 | E5 BB 0F FD 41 2A A4 6D 2C 85 AD 35 DA B9 A8 0C
00A0 | 85 89 1D 12 3A 2E 20 92 D7 AD 55 6E 40 CA 2C F5
00B0 | 3B 6D 45 AA 44 30 6F C1 74 D7 F8 AF DE C6 E7 B8
00C0 | 04 9C 7B 11 92 A7 79 82 99 73 13 80 8C BD 57 E0
00D0 | FE BF 4C 8B 29 46 BC 80 78 50 E8 A6 01 45 7E 45
00E0 | 29 49 8F 11 4A AB 22 BD 52 5F 15 79 16 51 57 37
00F0 | 79 5B AB 7A DD 81 F3 49 CB F9 F1 11 9A 27 07 39
0100 | 61 83 A0 95 28 1F 9F 3B 93 AD E1 8C 10 51 31 96
0110 | 24 28 57 EA C8 B2 EE 94 31 E1 DF E2 4D 56 C3 3F
0120 | 9D 8C 8C 8D B2 FA 25 99 96 C0 5E 21 70 A4 DA AA</code></pre>
<pre><code>0000 | 54 B6 43 66 9A 5B A4 1B 3D 34 52 05 97 27 4D F2
0010 | D3 77 B5 20 2D 4F 3B FC C9 F3 A6 C2 D6 A5 FD 96
0020 | 13 D8 97 9B 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 90 5B B0 47 A1 41 C0 68 AD 84 27 12 94 37 8C 6A
0040 | 5D 7B E8 A0 79 C8 3F AF 52 74 90 FF 7E 24 A6 C8
0050 | 65 C8 8B 3E A8 65 24 E0 D3 DC 83 1C CD 98 42 9A
0060 | FF E7 29 C3 BB DD E4 F1 94 62 3C 99 8D 79 DF CF
0070 | D2 6E 79 D8 45 28 F6 1E 8B CA F8 92 88 A6 46 4F
0080 | 7D 7A 60 02 6B A6 AE A4 C4 93 2F 17 A2 79 8F 02
0090 | 02 D7 B9 F9 4D 79 18 78 E3 62 86 5B 80 69 CF EF
00A0 | D7 8B 9B 7D AE 75 A5 D6 8C 81 1C 20 7F 2B BE 19
00B0 | DC 2B 72 96 77 35 BB 6E 1E ED 93 AD 2B AE 37 9C
00C0 | 88 58 2C C0 97 0A C7 9A 62 D7 CE 5B A3 11 95 70
00D0 | 9E 13 E0 F8 4E 95 0E DF 4B 85 E1 BF 1E E5 10 9E
00E0 | 93 3C 4E 0D A0 82 2B C2 0B 0E B2 EB 55 D8 EB F8
00F0 | C1 4C D1 43 62 7B 9D 3B CC F1 07 57 57 E0 EB 36
0100 | 9F 9B A4 2F C2 03 6D 89 B7 7B 65 46 D3 E7 EB 6E
0110 | 62 CB EF 6A 5B 1B 9B 56 2A 9D A9 D4 2C 6D A2 DC
0120 | 0B 8C 94 D9 A3 03 97 62 86 70 99 63 68 96 1C 97</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 = BA0D89B51BBAD00E11316636C1B9C04B1094499116A16BFD3117CE5063593B17F8B8920
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>1BBAD00E11316636C1B9C04B10944991</code></td>
<td><code>9A5BA41B3D34520597274DF2D377B520</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>16A16BFD3117CE5063593B17F8B89201</code></td>
<td><code>2D4F3BFCC9F3A6C2D6A5FD9613D8979B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE00010056E2DCC5219A8FF364A6A7EF</code> <code>E1FF8F57B75CA81CF4AFCB975CE4967F</code> <code>5DC20A88A24EB3D79EBCFD5C955B177B</code> <code>8FEE2A2E15B9F98DB6FB4EC3E1E80996</code> <code>0634E8C7109B41602749C969C1185ABB</code> <code>51964E565E1D054FCDF359E28B76FBBC</code> <code>70C57F56E5BB0FFD412AA46D2C85AD35</code> <code>DAB9A80C85891D123A2E2092D7AD556E</code> <code>40CA2CF53B6D45AA44306FC174D7F8AF</code> <code>DEC6E7B8049C7B1192A7798299731380</code> <code>8CBD57E0FEBF4C8B2946BC807850E8A6</code> <code>01457E4529498F114AAB22BD525F1579</code> <code>16515737795BAB7ADD81F349CBF9F111</code> <code>9A2707396183A095281F9F3B93ADE18C</code> <code>10513196242857EAC8B2EE9431E1DFE2</code> <code>4D56C33F9D8C8C8DB2FA259996C05E21</code><br> <code>70A4DAAA</code></td>
<td><code>FE000100905BB047A141C068AD842712</code> <code>94378C6A5D7BE8A079C83FAF527490FF</code> <code>7E24A6C865C88B3EA86524E0D3DC831C</code> <code>CD98429AFFE729C3BBDDE4F194623C99</code> <code>8D79DFCFD26E79D84528F61E8BCAF892</code> <code>88A6464F7D7A60026BA6AEA4C4932F17</code> <code>A2798F0202D7B9F94D791878E362865B</code> <code>8069CFEFD78B9B7DAE75A5D68C811C20</code> <code>7F2BBE19DC2B72967735BB6E1EED93AD</code> <code>2BAE379C88582CC0970AC79A62D7CE5B</code> <code>A31195709E13E0F84E950EDF4B85E1BF</code> <code>1EE5109E933C4E0DA0822BC20B0EB2EB</code> <code>55D8EBF8C14CD143627B9D3BCCF10757</code> <code>57E0EB369F9BA42FC2036D89B77B6546</code> <code>D3E7EB6E62CBEF6A5B1B9B562A9DA9D4</code> <code>2C6DA2DC0B8C94D9A303976286709963</code><br> <code>68961C97</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 = BA0D89B51BBAD00E11316636C1B9C04B1094499116A16BFD3117CE5063593B17F8B8920
<!-- 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 = 54B643661BBAD00E11316636C1B9C04B1094499116A16BFD3117CE5063593B17F8B892010000000000000000FE00010056E2DCC5219A8FF364A6A7EFE1FF8F57B75CA81CF4AFCB975CE4967F5DC20A88A24EB3D79EBCFD5C955B177B8FEE2A2E15B9F98DB6FB4EC3E1E809960634E8C7109B41602749C969C1185ABB51964E565E1D054FCDF359E28B76FBBC70C57F56E5BB0FFD412AA46D2C85AD35DAB9A80C85891D123A2E2092D7AD556E40CA2CF53B6D45AA44306FC174D7F8AFDEC6E7B8049C7B1192A77982997313808CBD57E0FEBF4C8B2946BC807850E8A601457E4529498F114AAB22BD525F157916515737795BAB7ADD81F349CBF9F1119A2707396183A095281F9F3B93ADE18C10513196242857EAC8B2EE9431E1DFE24D56C33F9D8C8C8DB2FA259996C05E2170A4DAAA
padding = CD07CAAD48CA829C47822EC0
tmp_aes_key = 4298A03F609E0E3E1493BBFA37FB311E80D1DDEB1E7B88D01BF827B807D1DB5E
tmp_aes_iv = 2D165A15D4C176A7989F0620676F514FE0065D1FB2A918EA80FDDEDF86F35B10</code></pre>
<pre><code>data = 54B643669A5BA41B3D34520597274DF2D377B5202D4F3BFCC9F3A6C2D6A5FD9613D8979B0000000000000000FE000100905BB047A141C068AD84271294378C6A5D7BE8A079C83FAF527490FF7E24A6C865C88B3EA86524E0D3DC831CCD98429AFFE729C3BBDDE4F194623C998D79DFCFD26E79D84528F61E8BCAF89288A6464F7D7A60026BA6AEA4C4932F17A2798F0202D7B9F94D791878E362865B8069CFEFD78B9B7DAE75A5D68C811C207F2BBE19DC2B72967735BB6E1EED93AD2BAE379C88582CC0970AC79A62D7CE5BA31195709E13E0F84E950EDF4B85E1BF1EE5109E933C4E0DA0822BC20B0EB2EB55D8EBF8C14CD143627B9D3BCCF1075757E0EB369F9BA42FC2036D89B77B6546D3E7EB6E62CBEF6A5B1B9B562A9DA9D42C6DA2DC0B8C94D9A30397628670996368961C97
padding = 0BD0253E3F500BA4BB7D7226
tmp_aes_key = 43304FF1FC6B7BAF07DB39696A08365AB6194F59460F1E6C4B1605F765C86676
tmp_aes_iv = 1F93981C89E1ADACE692CC4BDBD2738BA309C47BDCB3B90907074E7CF19B1937</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 = 6166DD0AF2A8200A186EAF5149A3A46D9CAAF2E09B510ED5270674B5CB293B5D281201AEF52DAADFAD767E15E46C89319D84F2591C215F0A40C5EB2433069489D3D6FE02EE2D5441CAEFED4799C2E7CA294A31496937CB40326D4DD9F80EE954ED05E33EB6E295B09517740F3EB16808A21F1B0D8C401770C19B6BCB913A4E629130843EBDE3946E15053806D0E187F94404C4465E5038F2DFBCF9E8E12D51E80921560D908DE63BFC0B2F04B3C16F175D774FF3AB4FA067F806C87CE651F1A7A47D12B787D04F353E52B75890762212B7196B33B8E8FE7E6FACAF98D32E6F03095555800DB324D34470827F1012D0375CA69E559E0929D93F6D328B9A0EFBCB955C86B3B69A8631295BF394AFF2637C2BA7C63DAB3E463C4D442583BA17BA0CFE2A21CA21488AD92C83297D1F27973EAFFA1BEED3D2F49DD5A0DDD6ABE331B870236BBAFFB63EC622211377B3805506</code></pre>
<pre><code>encrypted_data = 426EBB1B144CBE678B2C46B0B1B1A9BC931CFE43A7B2470F944DB414429067B3E0154ECB3B08DAB0822BBAD3790B70EFAEBB172202DABC0042B84D60A1113055B447913E5214B0A10743A1130C25DFCF848A62F9B060D30D522DA5812AACF6BED88CFA4AC06398BF1584845855445CA46DAEB747A8C47710EF9CBDC8FF515F7B9DD9BFB14ADFC07E518F58438189E4A2CD6312F08E50A79FCE91E51900B308FE096E9802AF6D82C39AE0C5E43BAEF94BB3539749CE7894C7CD420FC0CA3123811D15A7A42961F256686FBA6E6ED80320C98EC6FADB8EF47FDD175A9540BF19A022B18CE4F8A8E995010FB4E285E2FE8FD05D97B6D6BF2F9ED786DC5E7915BEFA38EF2807E2587DE16E224ABD3C13C99F506A510297EF667405AAD9589D6EAD121D5669844EA71FACFD1C511E37EBEF81F6D5006D75736940C8A06F407DCF8D86E173A904F6E1A9F3B738DA1FFDC29C29</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 7C 24 08 00 92 CB 38 67
0010 | 78 01 00 00 1F 5F 04 F5 1B BA D0 0E 11 31 66 36
0020 | C1 B9 C0 4B 10 94 49 91 16 A1 6B FD 31 17 CE 50
0030 | 63 59 3B 17 F8 B8 92 01 FE 50 01 00 61 66 DD 0A
0040 | F2 A8 20 0A 18 6E AF 51 49 A3 A4 6D 9C AA F2 E0
0050 | 9B 51 0E D5 27 06 74 B5 CB 29 3B 5D 28 12 01 AE
0060 | F5 2D AA DF AD 76 7E 15 E4 6C 89 31 9D 84 F2 59
0070 | 1C 21 5F 0A 40 C5 EB 24 33 06 94 89 D3 D6 FE 02
0080 | EE 2D 54 41 CA EF ED 47 99 C2 E7 CA 29 4A 31 49
0090 | 69 37 CB 40 32 6D 4D D9 F8 0E E9 54 ED 05 E3 3E
00A0 | B6 E2 95 B0 95 17 74 0F 3E B1 68 08 A2 1F 1B 0D
00B0 | 8C 40 17 70 C1 9B 6B CB 91 3A 4E 62 91 30 84 3E
00C0 | BD E3 94 6E 15 05 38 06 D0 E1 87 F9 44 04 C4 46
00D0 | 5E 50 38 F2 DF BC F9 E8 E1 2D 51 E8 09 21 56 0D
00E0 | 90 8D E6 3B FC 0B 2F 04 B3 C1 6F 17 5D 77 4F F3
00F0 | AB 4F A0 67 F8 06 C8 7C E6 51 F1 A7 A4 7D 12 B7
0100 | 87 D0 4F 35 3E 52 B7 58 90 76 22 12 B7 19 6B 33
0110 | B8 E8 FE 7E 6F AC AF 98 D3 2E 6F 03 09 55 55 80
0120 | 0D B3 24 D3 44 70 82 7F 10 12 D0 37 5C A6 9E 55
0130 | 9E 09 29 D9 3F 6D 32 8B 9A 0E FB CB 95 5C 86 B3
0140 | B6 9A 86 31 29 5B F3 94 AF F2 63 7C 2B A7 C6 3D
0150 | AB 3E 46 3C 4D 44 25 83 BA 17 BA 0C FE 2A 21 CA
0160 | 21 48 8A D9 2C 83 29 7D 1F 27 97 3E AF FA 1B EE
0170 | D3 D2 F4 9D D5 A0 DD D6 AB E3 31 B8 70 23 6B BA
0180 | FF B6 3E C6 22 21 13 77 B3 80 55 06</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 FC FE 0C 00 03 D7 38 67
0010 | 78 01 00 00 1F 5F 04 F5 9A 5B A4 1B 3D 34 52 05
0020 | 97 27 4D F2 D3 77 B5 20 2D 4F 3B FC C9 F3 A6 C2
0030 | D6 A5 FD 96 13 D8 97 9B FE 50 01 00 42 6E BB 1B
0040 | 14 4C BE 67 8B 2C 46 B0 B1 B1 A9 BC 93 1C FE 43
0050 | A7 B2 47 0F 94 4D B4 14 42 90 67 B3 E0 15 4E CB
0060 | 3B 08 DA B0 82 2B BA D3 79 0B 70 EF AE BB 17 22
0070 | 02 DA BC 00 42 B8 4D 60 A1 11 30 55 B4 47 91 3E
0080 | 52 14 B0 A1 07 43 A1 13 0C 25 DF CF 84 8A 62 F9
0090 | B0 60 D3 0D 52 2D A5 81 2A AC F6 BE D8 8C FA 4A
00A0 | C0 63 98 BF 15 84 84 58 55 44 5C A4 6D AE B7 47
00B0 | A8 C4 77 10 EF 9C BD C8 FF 51 5F 7B 9D D9 BF B1
00C0 | 4A DF C0 7E 51 8F 58 43 81 89 E4 A2 CD 63 12 F0
00D0 | 8E 50 A7 9F CE 91 E5 19 00 B3 08 FE 09 6E 98 02
00E0 | AF 6D 82 C3 9A E0 C5 E4 3B AE F9 4B B3 53 97 49
00F0 | CE 78 94 C7 CD 42 0F C0 CA 31 23 81 1D 15 A7 A4
0100 | 29 61 F2 56 68 6F BA 6E 6E D8 03 20 C9 8E C6 FA
0110 | DB 8E F4 7F DD 17 5A 95 40 BF 19 A0 22 B1 8C E4
0120 | F8 A8 E9 95 01 0F B4 E2 85 E2 FE 8F D0 5D 97 B6
0130 | D6 BF 2F 9E D7 86 DC 5E 79 15 BE FA 38 EF 28 07
0140 | E2 58 7D E1 6E 22 4A BD 3C 13 C9 9F 50 6A 51 02
0150 | 97 EF 66 74 05 AA D9 58 9D 6E AD 12 1D 56 69 84
0160 | 4E A7 1F AC FD 1C 51 1E 37 EB EF 81 F6 D5 00 6D
0170 | 75 73 69 40 C8 A0 6F 40 7D CF 8D 86 E1 73 A9 04
0180 | F6 E1 A9 F3 B7 38 DA 1F FD C2 9C 29</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>7C24080092CB3867</code></td>
<td><code>FCFE0C0003D73867</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>1BBAD00E11316636C1B9C04B10944991</code></td>
<td><code>9A5BA41B3D34520597274DF2D377B520</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>16A16BFD3117CE5063593B17F8B89201</code></td>
<td><code>2D4F3BFCC9F3A6C2D6A5FD9613D8979B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE5001006166DD0AF2A8200A186EAF51</code> <code>49A3A46D9CAAF2E09B510ED5270674B5</code> <code>CB293B5D281201AEF52DAADFAD767E15</code> <code>E46C89319D84F2591C215F0A40C5EB24</code> <code>33069489D3D6FE02EE2D5441CAEFED47</code> <code>99C2E7CA294A31496937CB40326D4DD9</code> <code>F80EE954ED05E33EB6E295B09517740F</code> <code>3EB16808A21F1B0D8C401770C19B6BCB</code> <code>913A4E629130843EBDE3946E15053806</code> <code>D0E187F94404C4465E5038F2DFBCF9E8</code> <code>E12D51E80921560D908DE63BFC0B2F04</code> <code>B3C16F175D774FF3AB4FA067F806C87C</code> <code>E651F1A7A47D12B787D04F353E52B758</code> <code>90762212B7196B33B8E8FE7E6FACAF98</code> <code>D32E6F03095555800DB324D34470827F</code> <code>1012D0375CA69E559E0929D93F6D328B</code> <code>9A0EFBCB955C86B3B69A8631295BF394</code> <code>AFF2637C2BA7C63DAB3E463C4D442583</code> <code>BA17BA0CFE2A21CA21488AD92C83297D</code> <code>1F27973EAFFA1BEED3D2F49DD5A0DDD6</code> <code>ABE331B870236BBAFFB63EC622211377</code><br> <code>B3805506</code></td>
<td><code>FE500100426EBB1B144CBE678B2C46B0</code> <code>B1B1A9BC931CFE43A7B2470F944DB414</code> <code>429067B3E0154ECB3B08DAB0822BBAD3</code> <code>790B70EFAEBB172202DABC0042B84D60</code> <code>A1113055B447913E5214B0A10743A113</code> <code>0C25DFCF848A62F9B060D30D522DA581</code> <code>2AACF6BED88CFA4AC06398BF15848458</code> <code>55445CA46DAEB747A8C47710EF9CBDC8</code> <code>FF515F7B9DD9BFB14ADFC07E518F5843</code> <code>8189E4A2CD6312F08E50A79FCE91E519</code> <code>00B308FE096E9802AF6D82C39AE0C5E4</code> <code>3BAEF94BB3539749CE7894C7CD420FC0</code> <code>CA3123811D15A7A42961F256686FBA6E</code> <code>6ED80320C98EC6FADB8EF47FDD175A95</code> <code>40BF19A022B18CE4F8A8E995010FB4E2</code> <code>85E2FE8FD05D97B6D6BF2F9ED786DC5E</code> <code>7915BEFA38EF2807E2587DE16E224ABD</code> <code>3C13C99F506A510297EF667405AAD958</code> <code>9D6EAD121D5669844EA71FACFD1C511E</code> <code>37EBEF81F6D5006D75736940C8A06F40</code> <code>7DCF8D86E173A904F6E1A9F3B738DA1F</code><br> <code>FDC29C29</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 = 22AE7F4DB8B3F2C01BB2D80C68E253AF27C4215C6C674DAD288838CE3C259E9ED2B2F0633A58393F79077BF4EC28A2F3ABABF2C124F6B83F1AE49F9CBB2EB0FC7174D05F82C5519FF285D9793DDD75D339F34ED02F8C68B6310969F2B380A2D0AEE2122E110C53653969EC4EA335D827A3CECEC96708AEA4B4C96D206822F81DAED8D88DD757DFF13EA0CBDA47E66FD4CAB6A29CB44FE420FFC68BB59B70FAF38E09E0D4F304EAD283CB68B9EBE6DCCF53FA471D1E4AF3926F67D49930C40BB19337696D78DB5DC627CC55F7C731B4DE31E7C4FAFF7D6B8ABF7BCDE1014C660608BA19B9FC16909C9786197E6EAB10A9983DD7E91DE23FCF2BD91739C04A1289</code></pre>
<pre><code>auth_key = 5FFE49378BD08A285BFF82C7787F8354BC133BC9CF09FD890BD00DAB488ADAD1AFB5405293674191DEB60C7DAF5E93C54C3DF3E50A5B86C843C9C0637F1AC0551B5134DCDDDA2A71CF4F2F08440C8DF31BE6499A24A9B5A5D1D3192780EE1421F1C2E4878229C1420C5B28087EFB0F7597F8DE0D3C4D3D4D8714702E905C4E1ACBF256B920CC32D81825678652FA0CE1252B285110602F2B478A19F94CBBFCCA2729100279494FFA6286FA3B169415836EBB7B4CB4CF3548E33AA5AFC385B472057EF22782FA5E4C4F1F6270568C6328357A35D146249B09DC3A91FFDFC849B09EBCC7D45891E856AFA122175DC210D6F317C92E15DAD7806EBF940BF005D415</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 90 D5 01 94 CB 38 67
0010 | 34 00 00 00 34 F7 CB 3B 1B BA D0 0E 11 31 66 36
0020 | C1 B9 C0 4B 10 94 49 91 16 A1 6B FD 31 17 CE 50
0030 | 63 59 3B 17 F8 B8 92 01 0D 20 B4 1A 4A 21 73 5F
0040 | 72 C3 A3 AA BD 4A 92 5C</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 38 7C 3A 05 D7 38 67
0010 | 34 00 00 00 34 F7 CB 3B 9A 5B A4 1B 3D 34 52 05
0020 | 97 27 4D F2 D3 77 B5 20 2D 4F 3B FC C9 F3 A6 C2
0030 | D6 A5 FD 96 13 D8 97 9B 0B 93 97 1B C6 80 0E 7F
0040 | 47 A3 6E DE 1A D3 0B 58</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;</code></pre>
<table class="table">
@ -817,7 +817,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>0190D50194CB3867</code></td>
<td><code>01387C3A05D73867</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>1BBAD00E11316636C1B9C04B10944991</code></td>
<td><code>9A5BA41B3D34520597274DF2D377B520</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>16A16BFD3117CE5063593B17F8B89201</code></td>
<td><code>2D4F3BFCC9F3A6C2D6A5FD9613D8979B</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>0D20B41A4A21735F72C3A3AABD4A925C</code></td>
<td><code>0B93971BC6800E7F47A36EDE1AD30B58</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

@ -4,18 +4,10 @@
<meta charset="utf-8">
<title>StarsGiveawayOption</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Constructors
Constructor
Description
starsGiveawayOption
 ">
<meta property="description" content="Contains info about a Telegram Star giveaway option.">
<meta property="og:title" content="StarsGiveawayOption">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
starsGiveawayOption
 ">
<meta property="og:description" content="Contains info about a Telegram Star giveaway option.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -50,7 +42,8 @@ starsGiveawayOption
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/StarsGiveawayOption" >StarsGiveawayOption</a></li></ul></div>
<h1 id="dev_page_title">StarsGiveawayOption</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Contains info about a <a href="/api/giveaways#star-giveaways">Telegram Star giveaway</a> option.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 192 <b class="caret"></b></a>
@ -74,10 +67,13 @@ starsGiveawayOption
<tbody>
<tr>
<td><a href="/constructor/starsGiveawayOption">starsGiveawayOption</a></td>
<td> </td>
<td>Contains info about a <a href="/api/giveaways#star-giveaways">Telegram Star giveaway</a> option.</td>
</tr>
</tbody>
</table></div>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<p>Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.</p></div>
</div>