mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-02-26 22:58:25 +01:00
Update content of files
This commit is contained in:
parent
4b987b80c9
commit
174d469a09
5 changed files with 232 additions and 206 deletions
|
@ -46,6 +46,8 @@
|
|||
|
||||
<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>
|
||||
<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>
|
||||
<p>Schema:</p>
|
||||
<pre><code><a href='/constructor/premiumGiftCodeOption'>premiumGiftCodeOption</a>#257e962b flags:<a href='/type/%23'>#</a> users:<a href='/type/int'>int</a> months:<a href='/type/int'>int</a> store_product:flags.0?<a href='/type/string'>string</a> store_quantity:flags.1?<a href='/type/int'>int</a> currency:<a href='/type/string'>string</a> amount:<a href='/type/long'>long</a> = <a href='/type/PremiumGiftCodeOption'>PremiumGiftCodeOption</a>;
|
||||
|
||||
|
|
|
@ -232,6 +232,7 @@
|
|||
<li><a href="/api/links#boost-links">Boost links »</a></li>
|
||||
<li><a href="/api/links#mini-app-links">Direct mini app links »</a></li>
|
||||
<li><a href="/api/links#premium-giftcode-links">Premium giftcode links »</a></li>
|
||||
<li><a href="/api/links#premium-multigift-links">Premium multigift links »</a></li>
|
||||
</ul>
|
||||
<p>And now, here are the changes that were made in this layer.</p>
|
||||
<p>Added support for <a href="/api/stories#reposting-stories">reposting stories</a>, <a href="/api/colors">profile colors</a>, <a href="/api/stories#statistics">story statistics</a>, <a href="/api/recommend">channel recommendations</a>, setting a <a href="/api/wallpapers#installing-wallpapers-in-a-specific-chat-or-channel">wallpaper on both sides of a chat</a>, <a href="/method/channels.toggleViewForumAsMessages">syncing the "View as messages" setting</a> for forums, <a href="/api/transcribe">audio transcription</a> for non-<a href="/api/premium">Premium</a> users, improved quotes, improved <a href="/api/sponsored-messages">sponsored messages</a> and improved methods for <a href="/api/custom-emoji">custom emoji stickersets</a>.</p>
|
||||
|
|
|
@ -1074,6 +1074,28 @@ These links are used to confirm ownership of the phone number, to prevent accoun
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#premium-multigift-links" id="premium-multigift-links" name="premium-multigift-links"><i class="anchor-icon"></i></a>Premium multigift links</h3>
|
||||
<p>Used to bring the user to the screen used for gifting Telegram Premium subscriptions to friends, see <a href="/api/giveaways">here for more info on gifting Telegram Premium to multiple users »</a>. </p>
|
||||
<p>This link is used to invite users to gift Premium subscription to other users, see <a href="#premium-giftcode-links">here »</a> for the different link type containing the actual giftcodes that can be used to import a gifted Telegram Premium subscription. </p>
|
||||
<p><code>tg:</code> syntax:</p>
|
||||
<pre><code>tg://premium_multigift?ref=<referrer></code></pre>
|
||||
<p>Parameters: </p>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="text-align: center;">Optional</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>referrer</code></td>
|
||||
<td style="text-align: center;">Optional</td>
|
||||
<td>Used by official apps for analytics using <a href="/method/help.saveAppLog">help.saveAppLog</a>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#premium-referrer-links" id="premium-referrer-links" name="premium-referrer-links"><i class="anchor-icon"></i></a>Premium referrer links</h3>
|
||||
<p>Used by official apps to show the <a href="/api/premium">Telegram Premium</a> subscription page. </p>
|
||||
<p><code>tg:</code> syntax:</p>
|
||||
|
|
|
@ -188,6 +188,7 @@ Then, when the user clicks on the subscribe button in the sent invoice, follow t
|
|||
</ul>
|
||||
<p>There is also a store-based subscription flow based on <a href="/method/payments.assignAppStoreTransaction">payments.assignAppStoreTransaction</a>/<a href="/method/payments.assignPlayMarketTransaction">payments.assignPlayMarketTransaction</a>, but it's currently not available to third-party apps (unlike the flow described above, which can be used by all clients).</p>
|
||||
<h3><a class="anchor" href="#gifting-telegram-premium" id="gifting-telegram-premium" name="gifting-telegram-premium"><i class="anchor-icon"></i></a>Gifting Telegram Premium</h3>
|
||||
<p>Note: to gift a Premium subscriptions to multiple friends, the alternative payment flow <a href="/api/giveaways">described here »</a> (<a href="/constructor/inputStorePaymentPremiumGiftCode">inputStorePaymentPremiumGiftCode</a> without setting <code>boost_peer</code>) should be used, instead. </p>
|
||||
<pre><code><a href='/constructor/userFull'>userFull</a>#b9b12c6c flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> phone_calls_available:flags.4?<a href='/constructor/true'>true</a> phone_calls_private:flags.5?<a href='/constructor/true'>true</a> can_pin_message:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.12?<a href='/constructor/true'>true</a> video_calls_available:flags.13?<a href='/constructor/true'>true</a> voice_messages_forbidden:flags.20?<a href='/constructor/true'>true</a> translations_disabled:flags.23?<a href='/constructor/true'>true</a> stories_pinned_available:flags.26?<a href='/constructor/true'>true</a> blocked_my_stories_from:flags.27?<a href='/constructor/true'>true</a> wallpaper_overridden:flags.28?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:flags.1?<a href='/type/string'>string</a> settings:<a href='/type/PeerSettings'>PeerSettings</a> personal_photo:flags.21?<a href='/type/Photo'>Photo</a> profile_photo:flags.2?<a href='/type/Photo'>Photo</a> fallback_photo:flags.22?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> bot_info:flags.3?<a href='/type/BotInfo'>BotInfo</a> pinned_msg_id:flags.6?<a href='/type/int'>int</a> common_chats_count:<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> ttl_period:flags.14?<a href='/type/int'>int</a> theme_emoticon:flags.15?<a href='/type/string'>string</a> private_forward_name:flags.16?<a href='/type/string'>string</a> bot_group_admin_rights:flags.17?<a href='/type/ChatAdminRights'>ChatAdminRights</a> bot_broadcast_admin_rights:flags.18?<a href='/type/ChatAdminRights'>ChatAdminRights</a> premium_gifts:flags.19?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PremiumGiftOption'>PremiumGiftOption</a>> wallpaper:flags.24?<a href='/type/WallPaper'>WallPaper</a> stories:flags.25?<a href='/type/PeerStories'>PeerStories</a> = <a href='/type/UserFull'>UserFull</a>;
|
||||
|
||||
<a href='/constructor/premiumGiftOption'>premiumGiftOption</a>#74c34319 flags:<a href='/type/%23'>#</a> months:<a href='/type/int'>int</a> currency:<a href='/type/string'>string</a> amount:<a href='/type/long'>long</a> bot_url:<a href='/type/string'>string</a> store_product:flags.0?<a href='/type/string'>string</a> = <a href='/type/PremiumGiftOption'>PremiumGiftOption</a>;
|
||||
|
|
|
@ -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 18 89 06 00 62 49 A8 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE D9 31 E2 CD 8A 38 C2 63
|
||||
0020 | 1B A0 BA C5 0B B1 24 D2</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 E0 01 0D 00 CB 4D A8 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 6B B1 FE 9B 0F 76 0B 1C
|
||||
0020 | FC 66 5F 43 C8 6D 50 50</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>188906006249A865</code></td>
|
||||
<td><code>E0010D00CB4DA865</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -95,7 +95,7 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>D931E2CD8A38C2631BA0BAC50BB124D2</code></td>
|
||||
<td><code>6BB1FE9B0F760B1CFC665F43C86D5050</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 B4 C3 8A 62 49 A8 65
|
||||
0010 | 84 00 00 00 63 24 16 05 D9 31 E2 CD 8A 38 C2 63
|
||||
0020 | 1B A0 BA C5 0B B1 24 D2 AD D3 FB 20 7B 9C 6D 78
|
||||
0030 | 2E 45 E7 4C C4 68 64 E7 08 2A 6F 73 28 7C 4B 16
|
||||
0040 | D5 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 3C 09 F5 CB 4D A8 65
|
||||
0010 | C0 00 00 00 63 24 16 05 6B B1 FE 9B 0F 76 0B 1C
|
||||
0020 | FC 66 5F 43 C8 6D 50 50 3F 68 23 00 18 95 A0 A7
|
||||
0030 | 2C DA EC C5 35 F8 68 87 08 1C FA D1 19 D4 3A D5
|
||||
0040 | 33 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>01B4C38A6249A865</code></td>
|
||||
<td><code>013C09F5CB4DA865</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>message_length</td>
|
||||
<td>16, 4</td>
|
||||
<td><code>84000000</code> (132 in decimal)</td>
|
||||
<td><code>C0000000</code> (192 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>D931E2CD8A38C2631BA0BAC50BB124D2</code></td>
|
||||
<td><code>6BB1FE9B0F760B1CFC665F43C86D5050</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>ADD3FB207B9C6D782E45E74CC46864E7</code></td>
|
||||
<td><code>3F6823001895A0A72CDAECC535F86887</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>082A6F73287C4B16D5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 3057789289729038037</td>
|
||||
<td><code>081CFAD119D43AD533000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2088211286104659251</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 < q.</h5>
|
||||
<!-- start pq -->
|
||||
<pre><code>pq = 3057789289729038037</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>3057789289729038037 = 1641849427 * 1862405431</code></p>
|
||||
<pre><code>p = 1641849427
|
||||
q = 1862405431</code></pre>
|
||||
<pre><code>pq = 2088211286104659251</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2088211286104659251 = 1324480639 * 1576626509</code></p>
|
||||
<pre><code>p = 1324480639
|
||||
q = 1576626509</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 2A 6F 73 28 7C 4B 16 D5 00 00 00
|
||||
0010 | 04 61 DC A2 53 00 00 00 04 6F 02 0D 37 00 00 00
|
||||
0020 | D9 31 E2 CD 8A 38 C2 63 1B A0 BA C5 0B B1 24 D2
|
||||
0030 | AD D3 FB 20 7B 9C 6D 78 2E 45 E7 4C C4 68 64 E7
|
||||
0040 | 1E 40 91 8F D3 14 D3 2C 3B 8B C5 67 4A 6F 33 68
|
||||
0050 | 00 D1 A3 C7 17 5F 97 DD A7 F3 9C 44 8A E9 06 89
|
||||
<pre><code>0000 | 95 5F F5 A9 08 1C FA D1 19 D4 3A D5 33 00 00 00
|
||||
0010 | 04 4E F1 F8 7F 00 00 00 04 5D F9 69 4D 00 00 00
|
||||
0020 | 6B B1 FE 9B 0F 76 0B 1C FC 66 5F 43 C8 6D 50 50
|
||||
0030 | 3F 68 23 00 18 95 A0 A7 2C DA EC C5 35 F8 68 87
|
||||
0040 | 95 4A C7 CE D4 C7 DD 7D C6 E7 01 C3 F7 CE E2 37
|
||||
0050 | FA 4C 39 B9 AB C6 38 FD AD D9 0F B4 2F A0 AA 94
|
||||
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 = 1862405431</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>082A6F73287C4B16D5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 3057789289729038037</td>
|
||||
<td><code>081CFAD119D43AD533000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2088211286104659251</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>0461DCA253000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1641849427</td>
|
||||
<td><code>044EF1F87F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1324480639</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>046F020D37000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1862405431</td>
|
||||
<td><code>045DF9694D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1576626509</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>D931E2CD8A38C2631BA0BAC50BB124D2</code></td>
|
||||
<td><code>6BB1FE9B0F760B1CFC665F43C86D5050</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>ADD3FB207B9C6D782E45E74CC46864E7</code></td>
|
||||
<td><code>3F6823001895A0A72CDAECC535F86887</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>1E40918FD314D32C3B8BC5674A6F3368</code> <code>00D1A3C7175F97DDA7F39C448AE90689</code></td>
|
||||
<td><code>954AC7CED4C7DD7DC6E701C3F7CEE237</code> <code>FA4C39B9ABC638FDADD90FB42FA0AA94</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1862405431</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 = 955FF5A9082A6F73287C4B16D50000000461DCA253000000046F020D37000000D931E2CD8A38C2631BA0BAC50BB124D2ADD3FB207B9C6D782E45E74CC46864E71E40918FD314D32C3B8BC5674A6F336800D1A3C7175F97DDA7F39C448AE9068902000000
|
||||
random_padding_bytes = 24503EAB5F8091B8BF416CFA4B3EB85F81698E119C2FDE782758FC5F34DFBB891448B9E98B7337DB093CD960CF12B181018937B320293A3D23BE2C6415B593FFF3D567F7F41B963B529961A3A7A8CCA741B0F51B705B82D36771DCD0</code></pre>
|
||||
<pre><code>data = 955FF5A9081CFAD119D43AD533000000044EF1F87F000000045DF9694D0000006BB1FE9B0F760B1CFC665F43C86D50503F6823001895A0A72CDAECC535F86887954AC7CED4C7DD7DC6E701C3F7CEE237FA4C39B9ABC638FDADD90FB42FA0AA9402000000
|
||||
random_padding_bytes = 46518266C5C87137578CFB7BDB4EB3AD215548EA1FD7BAE96A593CFD906DDD87FA4297D28513B315CDCD7C701BE7BA6E9F0D10D2FA32EA3F4527D82362BF2E91E1931ADE1698846BE08DD3FE46FE71A6DF21CB8C04CC020E85985C4D</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 = 09803EE06BE788DC986466A78F13E917BDBBBC63D1615CD41A2D4689F120B5D80381557F429EE83A9BF90818B0D4F3988FF7352DC59DECA6C3457672FBF176D652CD37319F5ACFF2EB79896676ADD5E3C10542CBDECAB1F4267F568BEE08919D27529F2A1A260FC84CB11BCCFD028531794B254DEB1CEC8E904E7FD573B749A429ECA4F84E2F06B29CCDD51F1BB14EF5A43A169FB9B18FC1FD9494C7062E74C731FAFC4DBB0830B29E7A80ACBBD2CDEA4567D545C6BCE2FF93AA4CA4F17A5ABFB3E4C93D3C18B026E8FD2D775A7D7D41C697C384004AB749346DBD856D2A7C86DD0D8B1066A872E0A4B2FA26D0F5CF4B2CCD7BAC25CE345F88BEF0007DC0DBBB</code></pre>
|
||||
<pre><code>encrypted_data = B792E993F291A3F7A7AAD90C991B5C5B6A73C7221F1B2B7DFAD94D59FB3C437AED49F04EB5F24B970A8E20DE5F501324292D031291D1ACDCE857657F26C66E3D325BF3AEEE1B86393E0E1150D394732B8282E53D4F48C6EA26F6DF2A32185B82E67C7D43F66069ECBAACF4A5F40492473B466B864A47C20BA7B6B571A6B0F900CBC148CB18A15E21B1CBCD5560E0DA2334BFB137841A5C6513CE2FE91A061F7061790FE4BF156797D59D4687392903E626E9C80B462E2DA67812D91BBF64B1D901A7D0ADB5388A91562475A2C9812A7AB249E72036E809ABF72F341485E72F4A03ABB28E930769D2D549192A89EB81D4D89DECA527D27E91B3AF7947AF205238</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 1C 89 06 00 62 49 A8 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 D9 31 E2 CD 8A 38 C2 63
|
||||
0020 | 1B A0 BA C5 0B B1 24 D2 AD D3 FB 20 7B 9C 6D 78
|
||||
0030 | 2E 45 E7 4C C4 68 64 E7 04 61 DC A2 53 00 00 00
|
||||
0040 | 04 6F 02 0D 37 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 09 80 3E E0 6B E7 88 DC 98 64 66 A7
|
||||
0060 | 8F 13 E9 17 BD BB BC 63 D1 61 5C D4 1A 2D 46 89
|
||||
0070 | F1 20 B5 D8 03 81 55 7F 42 9E E8 3A 9B F9 08 18
|
||||
0080 | B0 D4 F3 98 8F F7 35 2D C5 9D EC A6 C3 45 76 72
|
||||
0090 | FB F1 76 D6 52 CD 37 31 9F 5A CF F2 EB 79 89 66
|
||||
00A0 | 76 AD D5 E3 C1 05 42 CB DE CA B1 F4 26 7F 56 8B
|
||||
00B0 | EE 08 91 9D 27 52 9F 2A 1A 26 0F C8 4C B1 1B CC
|
||||
00C0 | FD 02 85 31 79 4B 25 4D EB 1C EC 8E 90 4E 7F D5
|
||||
00D0 | 73 B7 49 A4 29 EC A4 F8 4E 2F 06 B2 9C CD D5 1F
|
||||
00E0 | 1B B1 4E F5 A4 3A 16 9F B9 B1 8F C1 FD 94 94 C7
|
||||
00F0 | 06 2E 74 C7 31 FA FC 4D BB 08 30 B2 9E 7A 80 AC
|
||||
0100 | BB D2 CD EA 45 67 D5 45 C6 BC E2 FF 93 AA 4C A4
|
||||
0110 | F1 7A 5A BF B3 E4 C9 3D 3C 18 B0 26 E8 FD 2D 77
|
||||
0120 | 5A 7D 7D 41 C6 97 C3 84 00 4A B7 49 34 6D BD 85
|
||||
0130 | 6D 2A 7C 86 DD 0D 8B 10 66 A8 72 E0 A4 B2 FA 26
|
||||
0140 | D0 F5 CF 4B 2C CD 7B AC 25 CE 34 5F 88 BE F0 00
|
||||
0150 | 7D C0 DB BB</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 78 4B 0A 00 CC 4D A8 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 6B B1 FE 9B 0F 76 0B 1C
|
||||
0020 | FC 66 5F 43 C8 6D 50 50 3F 68 23 00 18 95 A0 A7
|
||||
0030 | 2C DA EC C5 35 F8 68 87 04 4E F1 F8 7F 00 00 00
|
||||
0040 | 04 5D F9 69 4D 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 B7 92 E9 93 F2 91 A3 F7 A7 AA D9 0C
|
||||
0060 | 99 1B 5C 5B 6A 73 C7 22 1F 1B 2B 7D FA D9 4D 59
|
||||
0070 | FB 3C 43 7A ED 49 F0 4E B5 F2 4B 97 0A 8E 20 DE
|
||||
0080 | 5F 50 13 24 29 2D 03 12 91 D1 AC DC E8 57 65 7F
|
||||
0090 | 26 C6 6E 3D 32 5B F3 AE EE 1B 86 39 3E 0E 11 50
|
||||
00A0 | D3 94 73 2B 82 82 E5 3D 4F 48 C6 EA 26 F6 DF 2A
|
||||
00B0 | 32 18 5B 82 E6 7C 7D 43 F6 60 69 EC BA AC F4 A5
|
||||
00C0 | F4 04 92 47 3B 46 6B 86 4A 47 C2 0B A7 B6 B5 71
|
||||
00D0 | A6 B0 F9 00 CB C1 48 CB 18 A1 5E 21 B1 CB CD 55
|
||||
00E0 | 60 E0 DA 23 34 BF B1 37 84 1A 5C 65 13 CE 2F E9
|
||||
00F0 | 1A 06 1F 70 61 79 0F E4 BF 15 67 97 D5 9D 46 87
|
||||
0100 | 39 29 03 E6 26 E9 C8 0B 46 2E 2D A6 78 12 D9 1B
|
||||
0110 | BF 64 B1 D9 01 A7 D0 AD B5 38 8A 91 56 24 75 A2
|
||||
0120 | C9 81 2A 7A B2 49 E7 20 36 E8 09 AB F7 2F 34 14
|
||||
0130 | 85 E7 2F 4A 03 AB B2 8E 93 07 69 D2 D5 49 19 2A
|
||||
0140 | 89 EB 81 D4 D8 9D EC A5 27 D2 7E 91 B3 AF 79 47
|
||||
0150 | AF 20 52 38</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 = 24503EAB5F8091B8BF416CFA4B3EB85F81698E119C2FDE782758FC5F3
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>1C8906006249A865</code></td>
|
||||
<td><code>784B0A00CC4DA865</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -363,25 +363,25 @@ random_padding_bytes = 24503EAB5F8091B8BF416CFA4B3EB85F81698E119C2FDE782758FC5F3
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>D931E2CD8A38C2631BA0BAC50BB124D2</code></td>
|
||||
<td><code>6BB1FE9B0F760B1CFC665F43C86D5050</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>ADD3FB207B9C6D782E45E74CC46864E7</code></td>
|
||||
<td><code>3F6823001895A0A72CDAECC535F86887</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>0461DCA253000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1641849427</td>
|
||||
<td><code>044EF1F87F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1324480639</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>046F020D37000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1862405431</td>
|
||||
<td><code>045DF9694D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1576626509</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 = 24503EAB5F8091B8BF416CFA4B3EB85F81698E119C2FDE782758FC5F3
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE00010009803EE06BE788DC986466A7</code> <code>8F13E917BDBBBC63D1615CD41A2D4689</code> <code>F120B5D80381557F429EE83A9BF90818</code> <code>B0D4F3988FF7352DC59DECA6C3457672</code> <code>FBF176D652CD37319F5ACFF2EB798966</code> <code>76ADD5E3C10542CBDECAB1F4267F568B</code> <code>EE08919D27529F2A1A260FC84CB11BCC</code> <code>FD028531794B254DEB1CEC8E904E7FD5</code> <code>73B749A429ECA4F84E2F06B29CCDD51F</code> <code>1BB14EF5A43A169FB9B18FC1FD9494C7</code> <code>062E74C731FAFC4DBB0830B29E7A80AC</code> <code>BBD2CDEA4567D545C6BCE2FF93AA4CA4</code> <code>F17A5ABFB3E4C93D3C18B026E8FD2D77</code> <code>5A7D7D41C697C384004AB749346DBD85</code> <code>6D2A7C86DD0D8B1066A872E0A4B2FA26</code> <code>D0F5CF4B2CCD7BAC25CE345F88BEF000</code><br> <code>7DC0DBBB</code></td>
|
||||
<td><code>FE000100B792E993F291A3F7A7AAD90C</code> <code>991B5C5B6A73C7221F1B2B7DFAD94D59</code> <code>FB3C437AED49F04EB5F24B970A8E20DE</code> <code>5F501324292D031291D1ACDCE857657F</code> <code>26C66E3D325BF3AEEE1B86393E0E1150</code> <code>D394732B8282E53D4F48C6EA26F6DF2A</code> <code>32185B82E67C7D43F66069ECBAACF4A5</code> <code>F40492473B466B864A47C20BA7B6B571</code> <code>A6B0F900CBC148CB18A15E21B1CBCD55</code> <code>60E0DA2334BFB137841A5C6513CE2FE9</code> <code>1A061F7061790FE4BF156797D59D4687</code> <code>392903E626E9C80B462E2DA67812D91B</code> <code>BF64B1D901A7D0ADB5388A91562475A2</code> <code>C9812A7AB249E72036E809ABF72F3414</code> <code>85E72F4A03ABB28E930769D2D549192A</code> <code>89EB81D4D89DECA527D27E91B3AF7947</code><br> <code>AF205238</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = 24503EAB5F8091B8BF416CFA4B3EB85F81698E119C2FDE782758FC5F3
|
|||
<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 3C 68 29 63 49 A8 65
|
||||
0010 | A8 02 00 00 5C 07 E8 D0 D9 31 E2 CD 8A 38 C2 63
|
||||
0020 | 1B A0 BA C5 0B B1 24 D2 AD D3 FB 20 7B 9C 6D 78
|
||||
0030 | 2E 45 E7 4C C4 68 64 E7 FE 50 02 00 03 7B C1 F6
|
||||
0040 | A9 B7 16 E7 AF 9A 55 D4 77 CF 5F 78 43 01 37 E2
|
||||
0050 | 63 CA 90 8E 0F CB C2 4A D3 03 5D 7D 7E 41 83 F7
|
||||
0060 | 49 EA F6 96 6D 67 84 EB A4 9E 27 24 7D 89 99 CF
|
||||
0070 | C4 94 E8 F6 BA 9B DD FF 12 4F 1C 12 98 17 AF 50
|
||||
0080 | BD B2 15 6D C2 CD C4 79 D3 D2 5A 8D FA AC 48 1B
|
||||
0090 | ED A2 C8 05 9B 13 1F 34 50 96 9B AC 0B E3 5E 5E
|
||||
00A0 | 4B 7F C5 62 7B 7B B6 C6 43 36 88 C0 0A 8D 92 C1
|
||||
00B0 | FB 20 62 20 F5 C0 CF 07 AA A4 27 12 56 21 F4 53
|
||||
00C0 | AC 73 61 D7 AC 97 29 45 A7 90 0E 73 60 43 51 5E
|
||||
00D0 | 79 62 3D A4 E2 AF 6C 5F E6 CB A0 E9 D1 07 61 76
|
||||
00E0 | 71 42 F9 70 29 D7 E5 E8 31 73 FB 02 2C 1F CC 7A
|
||||
00F0 | 63 4A F5 A0 59 A5 44 39 66 4E 46 F9 C6 33 8F D0
|
||||
0100 | 89 87 1C 45 80 6D EE 2C 3F FD 7F CE B3 71 E3 4C
|
||||
0110 | 16 B1 27 DE C0 44 DA B8 5C 5E E4 21 EE 94 AC 12
|
||||
0120 | 74 56 CE 98 CD B8 CC 16 59 B0 9D 6C F5 EB 15 C5
|
||||
0130 | DE AB 9F 70 27 6C 05 5D 42 38 6E 43 F3 F7 3C B8
|
||||
0140 | 41 E6 FB EC E5 63 8E 60 05 18 D6 4D F6 8E F8 78
|
||||
0150 | D5 66 24 6F 33 63 88 48 9D 05 24 DC E2 08 1A D9
|
||||
0160 | 65 23 7C 6F 7B 82 52 EB D4 FF D4 C1 2B 68 F6 06
|
||||
0170 | 1F B4 CA 2A A6 3E 8D C3 A4 A1 05 9C 05 D9 19 B9
|
||||
0180 | B0 4D 8F 11 70 F5 A7 99 29 80 BD 41 4E AF 17 B5
|
||||
0190 | EC 86 FE 8C C8 DF DA 29 16 E4 A1 90 AF DE A2 0C
|
||||
01A0 | A3 E7 49 BE 4C 24 E9 61 E2 F6 54 15 F8 1F A8 1B
|
||||
01B0 | 9D 1E 1D 80 A6 A4 0E 57 53 68 9F 54 E2 DE F9 8C
|
||||
01C0 | A7 CA BA 10 CE FD 0B 78 B3 68 11 03 8D 02 61 B9
|
||||
01D0 | FA E6 CE 4A 1B 7E 9C C5 69 01 D6 4B C6 D9 1C C3
|
||||
01E0 | A1 58 84 26 D4 44 9D CC C7 63 85 5A 14 49 03 DF
|
||||
01F0 | 28 4A AB 04 7C 21 D1 F1 CA C7 A2 37 78 6F A1 18
|
||||
0200 | B7 0F 11 89 3F 46 5F 82 2D FE C1 2D F6 6B 9A 2B
|
||||
0210 | DE 02 06 3B AC D9 93 5B B4 4D 7F 9D 49 ED 90 2F
|
||||
0220 | F0 51 B0 B0 C8 43 55 74 9A 10 BC E6 09 8C A1 BF
|
||||
0230 | 18 72 60 64 9C BD 9A CC 97 B6 41 4A D6 93 5E 50
|
||||
0240 | EF 48 BC 18 46 9E 8A C0 28 14 6F D6 AD 2B EF AE
|
||||
0250 | DB 1A 86 FD 2A D2 BD 0D DE D0 5F D3 66 1F 5C 70
|
||||
0260 | 19 DE E8 C4 57 4A C1 C1 E8 D4 95 06 55 C6 A2 7F
|
||||
0270 | 51 D2 F8 58 D9 43 6B 0A D4 71 08 B2 70 7A F2 50
|
||||
0280 | 34 49 A6 A5 00 4C B8 2E 4A 5C 8B 71</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 C8 AC C1 CC 4D A8 65
|
||||
0010 | BC 02 00 00 5C 07 E8 D0 6B B1 FE 9B 0F 76 0B 1C
|
||||
0020 | FC 66 5F 43 C8 6D 50 50 3F 68 23 00 18 95 A0 A7
|
||||
0030 | 2C DA EC C5 35 F8 68 87 FE 50 02 00 11 AB 4C 2E
|
||||
0040 | 34 25 38 8E 57 E0 93 E7 D1 F1 E7 A0 60 06 7E 51
|
||||
0050 | 91 80 1B 4D F4 2E 87 9F 93 AC D6 14 91 03 42 5F
|
||||
0060 | 0C 04 CD 8D 36 C5 94 58 FB 7C 19 F3 D8 48 41 4C
|
||||
0070 | 14 A7 DD 63 FD 7F F8 33 7F 19 3E 39 67 36 C2 5F
|
||||
0080 | 9A FB A8 9C BC F5 4F 40 B1 74 83 0C 95 E9 F8 BF
|
||||
0090 | FB 61 62 2F E6 CD 23 FA 3E 0B 33 89 4A E7 54 A4
|
||||
00A0 | 58 2C EA EA 0A 13 71 03 B7 D4 15 88 71 9B AB 76
|
||||
00B0 | 63 1C 6A 01 F9 4F 6E 76 B8 48 69 60 C9 E6 CC D7
|
||||
00C0 | 5F AF 91 9F B2 60 17 0D DB 78 10 C8 10 D2 C5 6E
|
||||
00D0 | D9 00 9D D9 4F 7A A6 60 61 8F D0 26 98 FB 2E C7
|
||||
00E0 | 0A 3B 5C 44 6A EC D7 B6 63 94 BC 81 4B 89 35 CF
|
||||
00F0 | B1 C5 56 1A D3 B2 0F 55 7B B9 EA 26 CA 48 B1 51
|
||||
0100 | F5 53 66 D9 1A BA D8 64 0C 92 15 B9 81 2E F3 43
|
||||
0110 | F4 B1 21 B7 F0 87 7C 36 23 E5 49 B9 F6 4C A6 C9
|
||||
0120 | 05 70 A8 E7 C9 3F FA 42 CC AE A6 0A 4B 4E A9 31
|
||||
0130 | 41 EA D6 3F 49 E8 37 EB D1 82 DE 49 0B A2 E1 9B
|
||||
0140 | 84 1A 84 48 B9 6B 9B D9 AA 8A EB 52 A0 19 FB 57
|
||||
0150 | 96 E6 DC 73 72 82 6F 7A FB FD 02 CF 30 9B 45 4B
|
||||
0160 | 93 95 82 07 F0 09 AC 62 17 01 C2 4A 30 09 16 E2
|
||||
0170 | 28 59 B4 89 0B EB 85 95 16 20 2F 87 86 4B 22 82
|
||||
0180 | B9 0F D3 B8 A2 8F F0 33 B8 07 ED 0B C1 31 F6 F3
|
||||
0190 | 68 8E BB 5E AF B5 24 25 87 04 DE B9 90 CC 09 CF
|
||||
01A0 | DE A1 6A 7A 77 F9 EC 9B 90 C8 0A D2 A1 F3 33 55
|
||||
01B0 | 31 95 AD E9 BE FC 50 AE 2C 46 19 CA 37 DF B8 C4
|
||||
01C0 | 73 85 3E 22 AB 72 15 C0 EC 7A 87 22 8B 58 03 EF
|
||||
01D0 | 9E 40 8F C8 52 92 EC 97 05 0A A5 69 21 E7 6C 55
|
||||
01E0 | 7C 6A 72 37 C8 15 93 C3 77 86 76 38 45 BA D4 24
|
||||
01F0 | D3 6E 1C 4B 61 9A 97 94 AD BE 6C 00 8C 33 3D 5E
|
||||
0200 | 7B E9 C0 05 28 DE 79 00 78 19 8D 5F 89 31 69 7F
|
||||
0210 | 40 09 08 16 A1 A1 4B CA C4 28 A5 41 91 B6 FB 0C
|
||||
0220 | 58 99 19 BB 83 03 F6 B1 9A CA EC 61 A6 92 D6 49
|
||||
0230 | 24 5F 6F CF F3 7E 02 FA 0F EA 2E 9F FB 19 44 16
|
||||
0240 | 67 DC 26 1C D9 41 FE BC B3 7E FB 85 3B 19 56 ED
|
||||
0250 | F4 EB EE EE 11 21 DF 7D 2E C4 37 7C 39 C9 08 01
|
||||
0260 | 1D 59 69 9C DA 9A D9 E0 5A 93 66 45 30 41 90 43
|
||||
0270 | 4B DB DF 7A 4D 12 EE E1 BB 9B 4C CD D3 26 D1 D7
|
||||
0280 | CA DD D6 C5 3D F5 5C 96 FD F3 96 D6</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 = 24503EAB5F8091B8BF416CFA4B3EB85F81698E119C2FDE782758FC5F3
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>013C68296349A865</code></td>
|
||||
<td><code>01C8ACC1CC4DA865</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>message_length</td>
|
||||
<td>16, 4</td>
|
||||
<td><code>A8020000</code> (680 in decimal)</td>
|
||||
<td><code>BC020000</code> (700 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = 24503EAB5F8091B8BF416CFA4B3EB85F81698E119C2FDE782758FC5F3
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>D931E2CD8A38C2631BA0BAC50BB124D2</code></td>
|
||||
<td><code>6BB1FE9B0F760B1CFC665F43C86D5050</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>ADD3FB207B9C6D782E45E74CC46864E7</code></td>
|
||||
<td><code>3F6823001895A0A72CDAECC535F86887</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE500200037BC1F6A9B716E7AF9A55D4</code> <code>77CF5F78430137E263CA908E0FCBC24A</code> <code>D3035D7D7E4183F749EAF6966D6784EB</code> <code>A49E27247D8999CFC494E8F6BA9BDDFF</code> <code>124F1C129817AF50BDB2156DC2CDC479</code> <code>D3D25A8DFAAC481BEDA2C8059B131F34</code> <code>50969BAC0BE35E5E4B7FC5627B7BB6C6</code> <code>433688C00A8D92C1FB206220F5C0CF07</code> <code>AAA427125621F453AC7361D7AC972945</code> <code>A7900E736043515E79623DA4E2AF6C5F</code> <code>E6CBA0E9D10761767142F97029D7E5E8</code> <code>3173FB022C1FCC7A634AF5A059A54439</code> <code>664E46F9C6338FD089871C45806DEE2C</code> <code>3FFD7FCEB371E34C16B127DEC044DAB8</code> <code>5C5EE421EE94AC127456CE98CDB8CC16</code> <code>59B09D6CF5EB15C5DEAB9F70276C055D</code> <code>42386E43F3F73CB841E6FBECE5638E60</code> <code>0518D64DF68EF878D566246F33638848</code> <code>9D0524DCE2081AD965237C6F7B8252EB</code> <code>D4FFD4C12B68F6061FB4CA2AA63E8DC3</code> <code>A4A1059C05D919B9B04D8F1170F5A799</code> <code>2980BD414EAF17B5EC86FE8CC8DFDA29</code> <code>16E4A190AFDEA20CA3E749BE4C24E961</code> <code>E2F65415F81FA81B9D1E1D80A6A40E57</code> <code>53689F54E2DEF98CA7CABA10CEFD0B78</code> <code>B36811038D0261B9FAE6CE4A1B7E9CC5</code> <code>6901D64BC6D91CC3A1588426D4449DCC</code> <code>C763855A144903DF284AAB047C21D1F1</code> <code>CAC7A237786FA118B70F11893F465F82</code> <code>2DFEC12DF66B9A2BDE02063BACD9935B</code> <code>B44D7F9D49ED902FF051B0B0C8435574</code> <code>9A10BCE6098CA1BF187260649CBD9ACC</code> <code>97B6414AD6935E50EF48BC18469E8AC0</code> <code>28146FD6AD2BEFAEDB1A86FD2AD2BD0D</code> <code>DED05FD3661F5C7019DEE8C4574AC1C1</code> <code>E8D4950655C6A27F51D2F858D9436B0A</code> <code>D47108B2707AF2503449A6A5004CB82E</code><br> <code>4A5C8B71</code></td>
|
||||
<td><code>FE50020011AB4C2E3425388E57E093E7</code> <code>D1F1E7A060067E5191801B4DF42E879F</code> <code>93ACD6149103425F0C04CD8D36C59458</code> <code>FB7C19F3D848414C14A7DD63FD7FF833</code> <code>7F193E396736C25F9AFBA89CBCF54F40</code> <code>B174830C95E9F8BFFB61622FE6CD23FA</code> <code>3E0B33894AE754A4582CEAEA0A137103</code> <code>B7D41588719BAB76631C6A01F94F6E76</code> <code>B8486960C9E6CCD75FAF919FB260170D</code> <code>DB7810C810D2C56ED9009DD94F7AA660</code> <code>618FD02698FB2EC70A3B5C446AECD7B6</code> <code>6394BC814B8935CFB1C5561AD3B20F55</code> <code>7BB9EA26CA48B151F55366D91ABAD864</code> <code>0C9215B9812EF343F4B121B7F0877C36</code> <code>23E549B9F64CA6C90570A8E7C93FFA42</code> <code>CCAEA60A4B4EA93141EAD63F49E837EB</code> <code>D182DE490BA2E19B841A8448B96B9BD9</code> <code>AA8AEB52A019FB5796E6DC7372826F7A</code> <code>FBFD02CF309B454B93958207F009AC62</code> <code>1701C24A300916E22859B4890BEB8595</code> <code>16202F87864B2282B90FD3B8A28FF033</code> <code>B807ED0BC131F6F3688EBB5EAFB52425</code> <code>8704DEB990CC09CFDEA16A7A77F9EC9B</code> <code>90C80AD2A1F333553195ADE9BEFC50AE</code> <code>2C4619CA37DFB8C473853E22AB7215C0</code> <code>EC7A87228B5803EF9E408FC85292EC97</code> <code>050AA56921E76C557C6A7237C81593C3</code> <code>7786763845BAD424D36E1C4B619A9794</code> <code>ADBE6C008C333D5E7BE9C00528DE7900</code> <code>78198D5F8931697F40090816A1A14BCA</code> <code>C428A54191B6FB0C589919BB8303F6B1</code> <code>9ACAEC61A692D649245F6FCFF37E02FA</code> <code>0FEA2E9FFB19441667DC261CD941FEBC</code> <code>B37EFB853B1956EDF4EBEEEE1121DF7D</code> <code>2EC4377C39C908011D59699CDA9AD9E0</code> <code>5A936645304190434BDBDF7A4D12EEE1</code> <code>BB9B4CCDD326D1D7CADDD6C53DF55C96</code><br> <code>FDF396D6</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = 24503EAB5F8091B8BF416CFA4B3EB85F81698E119C2FDE782758FC5F3
|
|||
<!-- 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 = 037BC1F6A9B716E7AF9A55D477CF5F78430137E263CA908E0FCBC24AD3035D7D7E4183F749EAF6966D6784EBA49E27247D8999CFC494E8F6BA9BDDFF124F1C129817AF50BDB2156DC2CDC479D3D25A8DFAAC481BEDA2C8059B131F3450969BAC0BE35E5E4B7FC5627B7BB6C6433688C00A8D92C1FB206220F5C0CF07AAA427125621F453AC7361D7AC972945A7900E736043515E79623DA4E2AF6C5FE6CBA0E9D10761767142F97029D7E5E83173FB022C1FCC7A634AF5A059A54439664E46F9C6338FD089871C45806DEE2C3FFD7FCEB371E34C16B127DEC044DAB85C5EE421EE94AC127456CE98CDB8CC1659B09D6CF5EB15C5DEAB9F70276C055D42386E43F3F73CB841E6FBECE5638E600518D64DF68EF878D566246F336388489D0524DCE2081AD965237C6F7B8252EBD4FFD4C12B68F6061FB4CA2AA63E8DC3A4A1059C05D919B9B04D8F1170F5A7992980BD414EAF17B5EC86FE8CC8DFDA2916E4A190AFDEA20CA3E749BE4C24E961E2F65415F81FA81B9D1E1D80A6A40E5753689F54E2DEF98CA7CABA10CEFD0B78B36811038D0261B9FAE6CE4A1B7E9CC56901D64BC6D91CC3A1588426D4449DCCC763855A144903DF284AAB047C21D1F1CAC7A237786FA118B70F11893F465F822DFEC12DF66B9A2BDE02063BACD9935BB44D7F9D49ED902FF051B0B0C84355749A10BCE6098CA1BF187260649CBD9ACC97B6414AD6935E50EF48BC18469E8AC028146FD6AD2BEFAEDB1A86FD2AD2BD0DDED05FD3661F5C7019DEE8C4574AC1C1E8D4950655C6A27F51D2F858D9436B0AD47108B2707AF2503449A6A5004CB82E4A5C8B71
|
||||
tmp_aes_key = 873AEAC281F01185C530BB2596AA459908E09B522E3C379B7CD35A43375E9A1D
|
||||
tmp_aes_iv = AB3A2342BE66E11F80C7443B553D3A04628F8264C0D282FE36F6C0031E40918F</code></pre>
|
||||
<pre><code>encrypted_answer = 11AB4C2E3425388E57E093E7D1F1E7A060067E5191801B4DF42E879F93ACD6149103425F0C04CD8D36C59458FB7C19F3D848414C14A7DD63FD7FF8337F193E396736C25F9AFBA89CBCF54F40B174830C95E9F8BFFB61622FE6CD23FA3E0B33894AE754A4582CEAEA0A137103B7D41588719BAB76631C6A01F94F6E76B8486960C9E6CCD75FAF919FB260170DDB7810C810D2C56ED9009DD94F7AA660618FD02698FB2EC70A3B5C446AECD7B66394BC814B8935CFB1C5561AD3B20F557BB9EA26CA48B151F55366D91ABAD8640C9215B9812EF343F4B121B7F0877C3623E549B9F64CA6C90570A8E7C93FFA42CCAEA60A4B4EA93141EAD63F49E837EBD182DE490BA2E19B841A8448B96B9BD9AA8AEB52A019FB5796E6DC7372826F7AFBFD02CF309B454B93958207F009AC621701C24A300916E22859B4890BEB859516202F87864B2282B90FD3B8A28FF033B807ED0BC131F6F3688EBB5EAFB524258704DEB990CC09CFDEA16A7A77F9EC9B90C80AD2A1F333553195ADE9BEFC50AE2C4619CA37DFB8C473853E22AB7215C0EC7A87228B5803EF9E408FC85292EC97050AA56921E76C557C6A7237C81593C37786763845BAD424D36E1C4B619A9794ADBE6C008C333D5E7BE9C00528DE790078198D5F8931697F40090816A1A14BCAC428A54191B6FB0C589919BB8303F6B19ACAEC61A692D649245F6FCFF37E02FA0FEA2E9FFB19441667DC261CD941FEBCB37EFB853B1956EDF4EBEEEE1121DF7D2EC4377C39C908011D59699CDA9AD9E05A936645304190434BDBDF7A4D12EEE1BB9B4CCDD326D1D7CADDD6C53DF55C96FDF396D6
|
||||
tmp_aes_key = BE4001B21615E36F7A01A312A0DF34EAFD3A96A944D0658BE47A22BAD5CF132F
|
||||
tmp_aes_iv = 1927FBBDBA9D74C05078630ED2DE8E0887B3E9BE569682F826B695A5954AC7CE</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = 1CD7234C459FB90D4D6CF7C76BA4E0F326E01EDDBA0D89B5D931E2CD8A38C2631BA0BAC50BB124D2ADD3FB207B9C6D782E45E74CC46864E703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010044A98C96013842CADC9FB9DEAB71BD4A004D695A3C1A59035903FBFC9AEECCC66D520D17374255211163C5BAC196E3327CD6AB3E89FA61B8CEE8672F2B9B5C1741FEB48CF3459C9BA92536028E2DD52CAF3786AA65E351050B1CD0469B8B2F1E3F71CA6138762DB238E57EABD14CE75FCEECADB493A458A23B7F91B71788003BD97D1B7F409C69857C63E31F7778F7156E85762FF876966699C51F2650C54DCD8C5108AA5C2891F4B8D19E5E66E91354AF1DD3F854208A99950920F6858D8058BD3470B3A5B4D3D0B2AB186E7CB0DEAE6ED923A8A9C5F4529A5D0F7F36C740FB0E37D1D26ED2EC7FE6B15489E4A1869BCDFA7DE1A2E6541894D6A18707CE7F856349A8657DE4F39D0953433D
|
||||
answer = BA0D89B5D931E2CD8A38C2631BA0BAC50BB124D2ADD3FB207B9C6D782E45E74CC46864E703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010044A98C96013842CADC9FB9DEAB71BD4A004D695A3C1A59035903FBFC9AEECCC66D520D17374255211163C5BAC196E3327CD6AB3E89FA61B8CEE8672F2B9B5C1741FEB48CF3459C9BA92536028E2DD52CAF3786AA65E351050B1CD0469B8B2F1E3F71CA6138762DB238E57EABD14CE75FCEECADB493A458A23B7F91B71788003BD97D1B7F409C69857C63E31F7778F7156E85762FF876966699C51F2650C54DCD8C5108AA5C2891F4B8D19E5E66E91354AF1DD3F854208A99950920F6858D8058BD3470B3A5B4D3D0B2AB186E7CB0DEAE6ED923A8A9C5F4529A5D0F7F36C740FB0E37D1D26ED2EC7FE6B15489E4A1869BCDFA7DE1A2E6541894D6A18707CE7F856349A8657DE4F39D0953433D</code></pre>
|
||||
<pre><code>answer_with_hash = F22FC59E4A387E4BC1587F968C8765463D5228F5BA0D89B56BB1FE9B0F760B1CFC665F43C86D50503F6823001895A0A72CDAECC535F8688703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010099D405C9EFA7D5B8633D132C83521D268FF94ECCB136D91527D6C382D7AF179ABB025D6BB0DE01CFC248CDD0302833EA708F3D2A7FF0EDD48611845DE627F95219ED77E10D9DCA75890786BC02C1E46146043185A791284971C5A000D7A66EA1DEBFC8A2920EB592B088EC6AD5A343328B78C3E55542D5C63E3E298149FCEF47566C5D004844A00A4F33B012DEC5800F26C8695F9AC354B42B6F32150C8AF838D03E6F48F0509B2DD207BB2BAC22CD0F6173AA28B1A7F477AF0EE58B65F338C026E15AF0BCA45713ECCB67BEA55A049E33702FC64EA4DDB99386F17D61EC2739FB7656983C9E591330A3E87BF6406EA9064C5591B06C0A58DB3F8668AAE97B0FCC4DA865B594123086983505
|
||||
answer = BA0D89B56BB1FE9B0F760B1CFC665F43C86D50503F6823001895A0A72CDAECC535F8688703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010099D405C9EFA7D5B8633D132C83521D268FF94ECCB136D91527D6C382D7AF179ABB025D6BB0DE01CFC248CDD0302833EA708F3D2A7FF0EDD48611845DE627F95219ED77E10D9DCA75890786BC02C1E46146043185A791284971C5A000D7A66EA1DEBFC8A2920EB592B088EC6AD5A343328B78C3E55542D5C63E3E298149FCEF47566C5D004844A00A4F33B012DEC5800F26C8695F9AC354B42B6F32150C8AF838D03E6F48F0509B2DD207BB2BAC22CD0F6173AA28B1A7F477AF0EE58B65F338C026E15AF0BCA45713ECCB67BEA55A049E33702FC64EA4DDB99386F17D61EC2739FB7656983C9E591330A3E87BF6406EA9064C5591B06C0A58DB3F8668AAE97B0FCC4DA865B594123086983505</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 D9 31 E2 CD 8A 38 C2 63 1B A0 BA C5
|
||||
0010 | 0B B1 24 D2 AD D3 FB 20 7B 9C 6D 78 2E 45 E7 4C
|
||||
0020 | C4 68 64 E7 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 6B B1 FE 9B 0F 76 0B 1C FC 66 5F 43
|
||||
0010 | C8 6D 50 50 3F 68 23 00 18 95 A0 A7 2C DA EC C5
|
||||
0020 | 35 F8 68 87 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 = BA0D89B5D931E2CD8A38C2631BA0BAC50BB124D2ADD3FB207B9C6D782E45E74CC46864E
|
|||
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 | 44 A9 8C 96 01 38 42 CA DC 9F B9 DE AB 71 BD 4A
|
||||
0140 | 00 4D 69 5A 3C 1A 59 03 59 03 FB FC 9A EE CC C6
|
||||
0150 | 6D 52 0D 17 37 42 55 21 11 63 C5 BA C1 96 E3 32
|
||||
0160 | 7C D6 AB 3E 89 FA 61 B8 CE E8 67 2F 2B 9B 5C 17
|
||||
0170 | 41 FE B4 8C F3 45 9C 9B A9 25 36 02 8E 2D D5 2C
|
||||
0180 | AF 37 86 AA 65 E3 51 05 0B 1C D0 46 9B 8B 2F 1E
|
||||
0190 | 3F 71 CA 61 38 76 2D B2 38 E5 7E AB D1 4C E7 5F
|
||||
01A0 | CE EC AD B4 93 A4 58 A2 3B 7F 91 B7 17 88 00 3B
|
||||
01B0 | D9 7D 1B 7F 40 9C 69 85 7C 63 E3 1F 77 78 F7 15
|
||||
01C0 | 6E 85 76 2F F8 76 96 66 99 C5 1F 26 50 C5 4D CD
|
||||
01D0 | 8C 51 08 AA 5C 28 91 F4 B8 D1 9E 5E 66 E9 13 54
|
||||
01E0 | AF 1D D3 F8 54 20 8A 99 95 09 20 F6 85 8D 80 58
|
||||
01F0 | BD 34 70 B3 A5 B4 D3 D0 B2 AB 18 6E 7C B0 DE AE
|
||||
0200 | 6E D9 23 A8 A9 C5 F4 52 9A 5D 0F 7F 36 C7 40 FB
|
||||
0210 | 0E 37 D1 D2 6E D2 EC 7F E6 B1 54 89 E4 A1 86 9B
|
||||
0220 | CD FA 7D E1 A2 E6 54 18 94 D6 A1 87 07 CE 7F 85
|
||||
0230 | 63 49 A8 65</code></pre>
|
||||
0130 | 99 D4 05 C9 EF A7 D5 B8 63 3D 13 2C 83 52 1D 26
|
||||
0140 | 8F F9 4E CC B1 36 D9 15 27 D6 C3 82 D7 AF 17 9A
|
||||
0150 | BB 02 5D 6B B0 DE 01 CF C2 48 CD D0 30 28 33 EA
|
||||
0160 | 70 8F 3D 2A 7F F0 ED D4 86 11 84 5D E6 27 F9 52
|
||||
0170 | 19 ED 77 E1 0D 9D CA 75 89 07 86 BC 02 C1 E4 61
|
||||
0180 | 46 04 31 85 A7 91 28 49 71 C5 A0 00 D7 A6 6E A1
|
||||
0190 | DE BF C8 A2 92 0E B5 92 B0 88 EC 6A D5 A3 43 32
|
||||
01A0 | 8B 78 C3 E5 55 42 D5 C6 3E 3E 29 81 49 FC EF 47
|
||||
01B0 | 56 6C 5D 00 48 44 A0 0A 4F 33 B0 12 DE C5 80 0F
|
||||
01C0 | 26 C8 69 5F 9A C3 54 B4 2B 6F 32 15 0C 8A F8 38
|
||||
01D0 | D0 3E 6F 48 F0 50 9B 2D D2 07 BB 2B AC 22 CD 0F
|
||||
01E0 | 61 73 AA 28 B1 A7 F4 77 AF 0E E5 8B 65 F3 38 C0
|
||||
01F0 | 26 E1 5A F0 BC A4 57 13 EC CB 67 BE A5 5A 04 9E
|
||||
0200 | 33 70 2F C6 4E A4 DD B9 93 86 F1 7D 61 EC 27 39
|
||||
0210 | FB 76 56 98 3C 9E 59 13 30 A3 E8 7B F6 40 6E A9
|
||||
0220 | 06 4C 55 91 B0 6C 0A 58 DB 3F 86 68 AA E9 7B 0F
|
||||
0230 | CC 4D A8 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 = BA0D89B5D931E2CD8A38C2631BA0BAC50BB124D2ADD3FB207B9C6D782E45E74CC46864E
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>D931E2CD8A38C2631BA0BAC50BB124D2</code></td>
|
||||
<td><code>6BB1FE9B0F760B1CFC665F43C86D5050</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>ADD3FB207B9C6D782E45E74CC46864E7</code></td>
|
||||
<td><code>3F6823001895A0A72CDAECC535F86887</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B5D931E2CD8A38C2631BA0BAC50BB124D2ADD3FB207B9C6D782E45E74CC46864E
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE00010044A98C96013842CADC9FB9DE</code> <code>AB71BD4A004D695A3C1A59035903FBFC</code> <code>9AEECCC66D520D17374255211163C5BA</code> <code>C196E3327CD6AB3E89FA61B8CEE8672F</code> <code>2B9B5C1741FEB48CF3459C9BA9253602</code> <code>8E2DD52CAF3786AA65E351050B1CD046</code> <code>9B8B2F1E3F71CA6138762DB238E57EAB</code> <code>D14CE75FCEECADB493A458A23B7F91B7</code> <code>1788003BD97D1B7F409C69857C63E31F</code> <code>7778F7156E85762FF876966699C51F26</code> <code>50C54DCD8C5108AA5C2891F4B8D19E5E</code> <code>66E91354AF1DD3F854208A99950920F6</code> <code>858D8058BD3470B3A5B4D3D0B2AB186E</code> <code>7CB0DEAE6ED923A8A9C5F4529A5D0F7F</code> <code>36C740FB0E37D1D26ED2EC7FE6B15489</code> <code>E4A1869BCDFA7DE1A2E6541894D6A187</code><br> <code>07CE7F85</code></td>
|
||||
<td><code>FE00010099D405C9EFA7D5B8633D132C</code> <code>83521D268FF94ECCB136D91527D6C382</code> <code>D7AF179ABB025D6BB0DE01CFC248CDD0</code> <code>302833EA708F3D2A7FF0EDD48611845D</code> <code>E627F95219ED77E10D9DCA75890786BC</code> <code>02C1E46146043185A791284971C5A000</code> <code>D7A66EA1DEBFC8A2920EB592B088EC6A</code> <code>D5A343328B78C3E55542D5C63E3E2981</code> <code>49FCEF47566C5D004844A00A4F33B012</code> <code>DEC5800F26C8695F9AC354B42B6F3215</code> <code>0C8AF838D03E6F48F0509B2DD207BB2B</code> <code>AC22CD0F6173AA28B1A7F477AF0EE58B</code> <code>65F338C026E15AF0BCA45713ECCB67BE</code> <code>A55A049E33702FC64EA4DDB99386F17D</code> <code>61EC2739FB7656983C9E591330A3E87B</code> <code>F6406EA9064C5591B06C0A58DB3F8668</code><br> <code>AAE97B0F</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>6349A865</code> (1705527651 in decimal)</td>
|
||||
<td><code>CC4DA865</code> (1705528780 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B5D931E2CD8A38C2631BA0BAC50BB124D2ADD3FB207B9C6D782E45E74CC46864E
|
|||
<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 = FB94D8ED7FA8E1BAEB9891201DFDEA684BCA26534C00EB89677EA05019A585EFD899653C33888D4744F825BB5658C442A71CBF667999574756A06ECD977A57338138C50F9B6396CB12A8BD715D6E94B38E58D56FF8BF3FDA5BBA884DB1B4D4FFCA8F80C7A66A27DDECB3CDEF57D7FB5BAF56BB29EA193EB293DA0BCA224C5873EA4CED35079AB4145084D8CE16E49011012DA2B3036A1F06026826F73C70E49251FF6D3B6E6E52ACE73EC3234E85222B354D9D1A10DAAB7409763654BDF985D5DC552126713A655FA08EBF839991F6834A3CBBC8320431C526410699612792DBCBB395BC7B33BB898FD9F28A94202DA3CF81E2908B926844B3A34B05CEE382F3</code></pre>
|
||||
<pre><code>b = A657F94962633DCF14DCFAAE27DC1DEF797B48A8756BC90CB72744E40DAB334DB4DDFC8A1761EA6E9E64142C165A817C5D0B5CD85624AE8E88CCC615C89F5F8FC187EA7D880F1E28AD1F0F3A12002D92A1C33460AB98BD3B7148F3BE5822A33B10CD08F1780A6F9C8F59EEF8963367D37F55BDBAA15EBDCCA6D70388D44FDD75DE87872A7E406DACCB584E7562C472FCD539C223E10233C2F206FAD7AEF47E2B0EEDC3C27F79FD1376AEF1082F1B56248D38E327B7DFF652E47393EC5A78CF2DCAD997DCCBE54BDA66FC83C0B89CA0B9CCB8C5DF88883F6337BC14DBD39BF1BC8B57DF38FA4F1E556BBDECE67607015E2B7082486C258B1527318F128CD4304D</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 = 5AFE83CCBACB2139ADD46F0E30D4C426488D86CFB5EED390D8AAECF6ECAB600F7FD25C0594069C158D4D2BCCE5C9B51F1DECC257B718CABB91242C981F8E2B33406A2CFF910BBE31C46698491B9295409162B3652CE927A4ABA2B95AE7129DF2E4C9F6F3846843AA2CFCD84C29AB5928DB5629B2DB3AA7556FF279AEDBBE5EDA6F3A46174A869DAFE6F2D9F53FCE489C409D3BF2BCDFB242E7DBA15F7AC9FA12B05CFA2442605016393330F27F991075898FB83963F8101C35932C387AA8377F06CAD5ECB57AB1C6883DB04D403BE1134198BB27104BFF62603377319F2DDFB25F5EE500B10B88BCB96920109233FFD9D7CE06B653D414BB99A9EAAA03D5CED8</code></pre>
|
||||
<pre><code>g_b = 9D9B23CCB0D2C4575C335B223C946C00E2A0E793FB5521BA72BA41CAB71E6B6200BCF1DDF75D60B0EBC342C12F6A7E541900F4BD789FAC7CFECBDDFB42381D00D9641053C63C520D30D39A280A201A9E83761886662215089B95DFF2F75B9FD49365CE455E16D429EAF5EF9BDA49A164B95E36D9FCD659DD9BCA22889349CB8BEB2A4EFAFE1A9DB0CCBEA54FC55FC442B7826A18C950AFEB0B8C6B8145AB8E3519FAB030BB734AB46C7D7C3646788D03B6BAC4E69BC216BB19A4946A04C20924CF881548178D77D631382C7ECFD8B61A64566D58DFCEDD81EAC1A4ECE1727B557CDF6CAE0A0BD1C0D833D7E46C65434A958139C628622670180769E17B26977D</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 D9 31 E2 CD 8A 38 C2 63 1B A0 BA C5
|
||||
0010 | 0B B1 24 D2 AD D3 FB 20 7B 9C 6D 78 2E 45 E7 4C
|
||||
0020 | C4 68 64 E7 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 5A FE 83 CC BA CB 21 39 AD D4 6F 0E 30 D4 C4 26
|
||||
0040 | 48 8D 86 CF B5 EE D3 90 D8 AA EC F6 EC AB 60 0F
|
||||
0050 | 7F D2 5C 05 94 06 9C 15 8D 4D 2B CC E5 C9 B5 1F
|
||||
0060 | 1D EC C2 57 B7 18 CA BB 91 24 2C 98 1F 8E 2B 33
|
||||
0070 | 40 6A 2C FF 91 0B BE 31 C4 66 98 49 1B 92 95 40
|
||||
0080 | 91 62 B3 65 2C E9 27 A4 AB A2 B9 5A E7 12 9D F2
|
||||
0090 | E4 C9 F6 F3 84 68 43 AA 2C FC D8 4C 29 AB 59 28
|
||||
00A0 | DB 56 29 B2 DB 3A A7 55 6F F2 79 AE DB BE 5E DA
|
||||
00B0 | 6F 3A 46 17 4A 86 9D AF E6 F2 D9 F5 3F CE 48 9C
|
||||
00C0 | 40 9D 3B F2 BC DF B2 42 E7 DB A1 5F 7A C9 FA 12
|
||||
00D0 | B0 5C FA 24 42 60 50 16 39 33 30 F2 7F 99 10 75
|
||||
00E0 | 89 8F B8 39 63 F8 10 1C 35 93 2C 38 7A A8 37 7F
|
||||
00F0 | 06 CA D5 EC B5 7A B1 C6 88 3D B0 4D 40 3B E1 13
|
||||
0100 | 41 98 BB 27 10 4B FF 62 60 33 77 31 9F 2D DF B2
|
||||
0110 | 5F 5E E5 00 B1 0B 88 BC B9 69 20 10 92 33 FF D9
|
||||
0120 | D7 CE 06 B6 53 D4 14 BB 99 A9 EA AA 03 D5 CE D8</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 6B B1 FE 9B 0F 76 0B 1C FC 66 5F 43
|
||||
0010 | C8 6D 50 50 3F 68 23 00 18 95 A0 A7 2C DA EC C5
|
||||
0020 | 35 F8 68 87 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 9D 9B 23 CC B0 D2 C4 57 5C 33 5B 22 3C 94 6C 00
|
||||
0040 | E2 A0 E7 93 FB 55 21 BA 72 BA 41 CA B7 1E 6B 62
|
||||
0050 | 00 BC F1 DD F7 5D 60 B0 EB C3 42 C1 2F 6A 7E 54
|
||||
0060 | 19 00 F4 BD 78 9F AC 7C FE CB DD FB 42 38 1D 00
|
||||
0070 | D9 64 10 53 C6 3C 52 0D 30 D3 9A 28 0A 20 1A 9E
|
||||
0080 | 83 76 18 86 66 22 15 08 9B 95 DF F2 F7 5B 9F D4
|
||||
0090 | 93 65 CE 45 5E 16 D4 29 EA F5 EF 9B DA 49 A1 64
|
||||
00A0 | B9 5E 36 D9 FC D6 59 DD 9B CA 22 88 93 49 CB 8B
|
||||
00B0 | EB 2A 4E FA FE 1A 9D B0 CC BE A5 4F C5 5F C4 42
|
||||
00C0 | B7 82 6A 18 C9 50 AF EB 0B 8C 6B 81 45 AB 8E 35
|
||||
00D0 | 19 FA B0 30 BB 73 4A B4 6C 7D 7C 36 46 78 8D 03
|
||||
00E0 | B6 BA C4 E6 9B C2 16 BB 19 A4 94 6A 04 C2 09 24
|
||||
00F0 | CF 88 15 48 17 8D 77 D6 31 38 2C 7E CF D8 B6 1A
|
||||
0100 | 64 56 6D 58 DF CE DD 81 EA C1 A4 EC E1 72 7B 55
|
||||
0110 | 7C DF 6C AE 0A 0B D1 C0 D8 33 D7 E4 6C 65 43 4A
|
||||
0120 | 95 81 39 C6 28 62 26 70 18 07 69 E1 7B 26 97 7D</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 = BA0D89B5D931E2CD8A38C2631BA0BAC50BB124D2ADD3FB207B9C6D782E45E74CC46864E
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>D931E2CD8A38C2631BA0BAC50BB124D2</code></td>
|
||||
<td><code>6BB1FE9B0F760B1CFC665F43C86D5050</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>ADD3FB207B9C6D782E45E74CC46864E7</code></td>
|
||||
<td><code>3F6823001895A0A72CDAECC535F86887</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE0001005AFE83CCBACB2139ADD46F0E</code> <code>30D4C426488D86CFB5EED390D8AAECF6</code> <code>ECAB600F7FD25C0594069C158D4D2BCC</code> <code>E5C9B51F1DECC257B718CABB91242C98</code> <code>1F8E2B33406A2CFF910BBE31C4669849</code> <code>1B9295409162B3652CE927A4ABA2B95A</code> <code>E7129DF2E4C9F6F3846843AA2CFCD84C</code> <code>29AB5928DB5629B2DB3AA7556FF279AE</code> <code>DBBE5EDA6F3A46174A869DAFE6F2D9F5</code> <code>3FCE489C409D3BF2BCDFB242E7DBA15F</code> <code>7AC9FA12B05CFA2442605016393330F2</code> <code>7F991075898FB83963F8101C35932C38</code> <code>7AA8377F06CAD5ECB57AB1C6883DB04D</code> <code>403BE1134198BB27104BFF6260337731</code> <code>9F2DDFB25F5EE500B10B88BCB9692010</code> <code>9233FFD9D7CE06B653D414BB99A9EAAA</code><br> <code>03D5CED8</code></td>
|
||||
<td><code>FE0001009D9B23CCB0D2C4575C335B22</code> <code>3C946C00E2A0E793FB5521BA72BA41CA</code> <code>B71E6B6200BCF1DDF75D60B0EBC342C1</code> <code>2F6A7E541900F4BD789FAC7CFECBDDFB</code> <code>42381D00D9641053C63C520D30D39A28</code> <code>0A201A9E83761886662215089B95DFF2</code> <code>F75B9FD49365CE455E16D429EAF5EF9B</code> <code>DA49A164B95E36D9FCD659DD9BCA2288</code> <code>9349CB8BEB2A4EFAFE1A9DB0CCBEA54F</code> <code>C55FC442B7826A18C950AFEB0B8C6B81</code> <code>45AB8E3519FAB030BB734AB46C7D7C36</code> <code>46788D03B6BAC4E69BC216BB19A4946A</code> <code>04C20924CF881548178D77D631382C7E</code> <code>CFD8B61A64566D58DFCEDD81EAC1A4EC</code> <code>E1727B557CDF6CAE0A0BD1C0D833D7E4</code> <code>6C65434A958139C628622670180769E1</code><br> <code>7B26977D</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 = BA0D89B5D931E2CD8A38C2631BA0BAC50BB124D2ADD3FB207B9C6D782E45E74CC46864E
|
|||
<!-- 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 = 54B64366D931E2CD8A38C2631BA0BAC50BB124D2ADD3FB207B9C6D782E45E74CC46864E70000000000000000FE0001005AFE83CCBACB2139ADD46F0E30D4C426488D86CFB5EED390D8AAECF6ECAB600F7FD25C0594069C158D4D2BCCE5C9B51F1DECC257B718CABB91242C981F8E2B33406A2CFF910BBE31C46698491B9295409162B3652CE927A4ABA2B95AE7129DF2E4C9F6F3846843AA2CFCD84C29AB5928DB5629B2DB3AA7556FF279AEDBBE5EDA6F3A46174A869DAFE6F2D9F53FCE489C409D3BF2BCDFB242E7DBA15F7AC9FA12B05CFA2442605016393330F27F991075898FB83963F8101C35932C387AA8377F06CAD5ECB57AB1C6883DB04D403BE1134198BB27104BFF62603377319F2DDFB25F5EE500B10B88BCB96920109233FFD9D7CE06B653D414BB99A9EAAA03D5CED8
|
||||
padding = 54D2BB588DD01761BBD25523
|
||||
tmp_aes_key = 873AEAC281F01185C530BB2596AA459908E09B522E3C379B7CD35A43375E9A1D
|
||||
tmp_aes_iv = AB3A2342BE66E11F80C7443B553D3A04628F8264C0D282FE36F6C0031E40918F</code></pre>
|
||||
<pre><code>data = 54B643666BB1FE9B0F760B1CFC665F43C86D50503F6823001895A0A72CDAECC535F868870000000000000000FE0001009D9B23CCB0D2C4575C335B223C946C00E2A0E793FB5521BA72BA41CAB71E6B6200BCF1DDF75D60B0EBC342C12F6A7E541900F4BD789FAC7CFECBDDFB42381D00D9641053C63C520D30D39A280A201A9E83761886662215089B95DFF2F75B9FD49365CE455E16D429EAF5EF9BDA49A164B95E36D9FCD659DD9BCA22889349CB8BEB2A4EFAFE1A9DB0CCBEA54FC55FC442B7826A18C950AFEB0B8C6B8145AB8E3519FAB030BB734AB46C7D7C3646788D03B6BAC4E69BC216BB19A4946A04C20924CF881548178D77D631382C7ECFD8B61A64566D58DFCEDD81EAC1A4ECE1727B557CDF6CAE0A0BD1C0D833D7E46C65434A958139C628622670180769E17B26977D
|
||||
padding = FF4625906B7223077FCD71BA
|
||||
tmp_aes_key = BE4001B21615E36F7A01A312A0DF34EAFD3A96A944D0658BE47A22BAD5CF132F
|
||||
tmp_aes_iv = 1927FBBDBA9D74C05078630ED2DE8E0887B3E9BE569682F826B695A5954AC7CE</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 = 5C0479CAA1F2AEBA4586CE457147B6F6E0E82B76F48629CA40DE224ED1623F43C41F067CEB12A3A9DF4CCFEE9389D9B6F2797FE66B5CD0A20DA78CA52D6D32FD04040D9E98ACCAACD7BC6B393B6E744DFA7D6546ECBA819F8B6ECFCC1832103193780FAE82AB6E11F3F1706B21688D041AE90241873BABDFCEA9C2936DDECFC96D4216C945255D8CB4E172A63E2175B714E794EB92A0A084B8B0A9F3BBFF17D912706A1EDEF2D4BE2E512066AFA9ADE4CB0D530A0A8588A7E87E99010D6F8A85782876B7EE45C3A8C3DC8E601248BDF950CBEEA3C925BC37B47E1F3B40A7C3A91EC719846EF473C969520D8D962C3798FB562646AF1B35D97E572DB5CF8293E385A9450495FBCA19FEEDF9F029149B89C3BC62BEE540FFED18DEFF2D1F791E2B755234E8A6DE012FFC824A35F98522B73D6D9168F4397FB0A7B3303C1D81CD4BF2F2B53F5E9AA49BCC8E5AAEFDD65672</code></pre>
|
||||
<pre><code>encrypted_data = 9C7CDC04947F47C96B88754AB5C79B9046A32E54964AC2DA437951000345304DC7120174249A3AAF722059421DF39759E78B8FDE3933FED62BC7B6140A4855DA6BBCC77303F6199058381391042C3FF32C70365418BCA6F6FF2F797D53444E0CA24E90CD6B2CDE9E1336D9BF86D960D1CBE4EF5AA8AA322F9D5B6E22B13EB01D10485360BFA841B882F75D73BB4A06BF9C391DD0F93C01F5A0EA8FB715B8B8C641D7A02A509FFD023DB4D81419DCA78890E133E135D39091B74373ECC0C28631F383A17A3C795108423AD35F2DF70FA25CCFE5B653F6038599F006C11CDCE1C93A1FA22FA74B5DF056B36930C7FCA94DB08672D5610B0781D7F32F80DD77D08203E0A28E288745F4029BDC84E4A62743465F8612A29963B696666785C342D6C7F9FBECB8FA41F87A59754D2BAFDD77C61296A53E0FBC8B929F899F043B1C987AE5B0BD216F8625C32FF3F4ACF9B66E90</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 E8 37 0E 00 63 49 A8 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 D9 31 E2 CD 8A 38 C2 63
|
||||
0020 | 1B A0 BA C5 0B B1 24 D2 AD D3 FB 20 7B 9C 6D 78
|
||||
0030 | 2E 45 E7 4C C4 68 64 E7 FE 50 01 00 5C 04 79 CA
|
||||
0040 | A1 F2 AE BA 45 86 CE 45 71 47 B6 F6 E0 E8 2B 76
|
||||
0050 | F4 86 29 CA 40 DE 22 4E D1 62 3F 43 C4 1F 06 7C
|
||||
0060 | EB 12 A3 A9 DF 4C CF EE 93 89 D9 B6 F2 79 7F E6
|
||||
0070 | 6B 5C D0 A2 0D A7 8C A5 2D 6D 32 FD 04 04 0D 9E
|
||||
0080 | 98 AC CA AC D7 BC 6B 39 3B 6E 74 4D FA 7D 65 46
|
||||
0090 | EC BA 81 9F 8B 6E CF CC 18 32 10 31 93 78 0F AE
|
||||
00A0 | 82 AB 6E 11 F3 F1 70 6B 21 68 8D 04 1A E9 02 41
|
||||
00B0 | 87 3B AB DF CE A9 C2 93 6D DE CF C9 6D 42 16 C9
|
||||
00C0 | 45 25 5D 8C B4 E1 72 A6 3E 21 75 B7 14 E7 94 EB
|
||||
00D0 | 92 A0 A0 84 B8 B0 A9 F3 BB FF 17 D9 12 70 6A 1E
|
||||
00E0 | DE F2 D4 BE 2E 51 20 66 AF A9 AD E4 CB 0D 53 0A
|
||||
00F0 | 0A 85 88 A7 E8 7E 99 01 0D 6F 8A 85 78 28 76 B7
|
||||
0100 | EE 45 C3 A8 C3 DC 8E 60 12 48 BD F9 50 CB EE A3
|
||||
0110 | C9 25 BC 37 B4 7E 1F 3B 40 A7 C3 A9 1E C7 19 84
|
||||
0120 | 6E F4 73 C9 69 52 0D 8D 96 2C 37 98 FB 56 26 46
|
||||
0130 | AF 1B 35 D9 7E 57 2D B5 CF 82 93 E3 85 A9 45 04
|
||||
0140 | 95 FB CA 19 FE ED F9 F0 29 14 9B 89 C3 BC 62 BE
|
||||
0150 | E5 40 FF ED 18 DE FF 2D 1F 79 1E 2B 75 52 34 E8
|
||||
0160 | A6 DE 01 2F FC 82 4A 35 F9 85 22 B7 3D 6D 91 68
|
||||
0170 | F4 39 7F B0 A7 B3 30 3C 1D 81 CD 4B F2 F2 B5 3F
|
||||
0180 | 5E 9A A4 9B CC 8E 5A AE FD D6 56 72</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 6C 59 0C 00 CC 4D A8 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 6B B1 FE 9B 0F 76 0B 1C
|
||||
0020 | FC 66 5F 43 C8 6D 50 50 3F 68 23 00 18 95 A0 A7
|
||||
0030 | 2C DA EC C5 35 F8 68 87 FE 50 01 00 9C 7C DC 04
|
||||
0040 | 94 7F 47 C9 6B 88 75 4A B5 C7 9B 90 46 A3 2E 54
|
||||
0050 | 96 4A C2 DA 43 79 51 00 03 45 30 4D C7 12 01 74
|
||||
0060 | 24 9A 3A AF 72 20 59 42 1D F3 97 59 E7 8B 8F DE
|
||||
0070 | 39 33 FE D6 2B C7 B6 14 0A 48 55 DA 6B BC C7 73
|
||||
0080 | 03 F6 19 90 58 38 13 91 04 2C 3F F3 2C 70 36 54
|
||||
0090 | 18 BC A6 F6 FF 2F 79 7D 53 44 4E 0C A2 4E 90 CD
|
||||
00A0 | 6B 2C DE 9E 13 36 D9 BF 86 D9 60 D1 CB E4 EF 5A
|
||||
00B0 | A8 AA 32 2F 9D 5B 6E 22 B1 3E B0 1D 10 48 53 60
|
||||
00C0 | BF A8 41 B8 82 F7 5D 73 BB 4A 06 BF 9C 39 1D D0
|
||||
00D0 | F9 3C 01 F5 A0 EA 8F B7 15 B8 B8 C6 41 D7 A0 2A
|
||||
00E0 | 50 9F FD 02 3D B4 D8 14 19 DC A7 88 90 E1 33 E1
|
||||
00F0 | 35 D3 90 91 B7 43 73 EC C0 C2 86 31 F3 83 A1 7A
|
||||
0100 | 3C 79 51 08 42 3A D3 5F 2D F7 0F A2 5C CF E5 B6
|
||||
0110 | 53 F6 03 85 99 F0 06 C1 1C DC E1 C9 3A 1F A2 2F
|
||||
0120 | A7 4B 5D F0 56 B3 69 30 C7 FC A9 4D B0 86 72 D5
|
||||
0130 | 61 0B 07 81 D7 F3 2F 80 DD 77 D0 82 03 E0 A2 8E
|
||||
0140 | 28 87 45 F4 02 9B DC 84 E4 A6 27 43 46 5F 86 12
|
||||
0150 | A2 99 63 B6 96 66 67 85 C3 42 D6 C7 F9 FB EC B8
|
||||
0160 | FA 41 F8 7A 59 75 4D 2B AF DD 77 C6 12 96 A5 3E
|
||||
0170 | 0F BC 8B 92 9F 89 9F 04 3B 1C 98 7A E5 B0 BD 21
|
||||
0180 | 6F 86 25 C3 2F F3 F4 AC F9 B6 6E 90</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>E8370E006349A865</code></td>
|
||||
<td><code>6C590C00CC4DA865</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 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>D931E2CD8A38C2631BA0BAC50BB124D2</code></td>
|
||||
<td><code>6BB1FE9B0F760B1CFC665F43C86D5050</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>ADD3FB207B9C6D782E45E74CC46864E7</code></td>
|
||||
<td><code>3F6823001895A0A72CDAECC535F86887</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE5001005C0479CAA1F2AEBA4586CE45</code> <code>7147B6F6E0E82B76F48629CA40DE224E</code> <code>D1623F43C41F067CEB12A3A9DF4CCFEE</code> <code>9389D9B6F2797FE66B5CD0A20DA78CA5</code> <code>2D6D32FD04040D9E98ACCAACD7BC6B39</code> <code>3B6E744DFA7D6546ECBA819F8B6ECFCC</code> <code>1832103193780FAE82AB6E11F3F1706B</code> <code>21688D041AE90241873BABDFCEA9C293</code> <code>6DDECFC96D4216C945255D8CB4E172A6</code> <code>3E2175B714E794EB92A0A084B8B0A9F3</code> <code>BBFF17D912706A1EDEF2D4BE2E512066</code> <code>AFA9ADE4CB0D530A0A8588A7E87E9901</code> <code>0D6F8A85782876B7EE45C3A8C3DC8E60</code> <code>1248BDF950CBEEA3C925BC37B47E1F3B</code> <code>40A7C3A91EC719846EF473C969520D8D</code> <code>962C3798FB562646AF1B35D97E572DB5</code> <code>CF8293E385A9450495FBCA19FEEDF9F0</code> <code>29149B89C3BC62BEE540FFED18DEFF2D</code> <code>1F791E2B755234E8A6DE012FFC824A35</code> <code>F98522B73D6D9168F4397FB0A7B3303C</code> <code>1D81CD4BF2F2B53F5E9AA49BCC8E5AAE</code><br> <code>FDD65672</code></td>
|
||||
<td><code>FE5001009C7CDC04947F47C96B88754A</code> <code>B5C79B9046A32E54964AC2DA43795100</code> <code>0345304DC7120174249A3AAF72205942</code> <code>1DF39759E78B8FDE3933FED62BC7B614</code> <code>0A4855DA6BBCC77303F6199058381391</code> <code>042C3FF32C70365418BCA6F6FF2F797D</code> <code>53444E0CA24E90CD6B2CDE9E1336D9BF</code> <code>86D960D1CBE4EF5AA8AA322F9D5B6E22</code> <code>B13EB01D10485360BFA841B882F75D73</code> <code>BB4A06BF9C391DD0F93C01F5A0EA8FB7</code> <code>15B8B8C641D7A02A509FFD023DB4D814</code> <code>19DCA78890E133E135D39091B74373EC</code> <code>C0C28631F383A17A3C795108423AD35F</code> <code>2DF70FA25CCFE5B653F6038599F006C1</code> <code>1CDCE1C93A1FA22FA74B5DF056B36930</code> <code>C7FCA94DB08672D5610B0781D7F32F80</code> <code>DD77D08203E0A28E288745F4029BDC84</code> <code>E4A62743465F8612A29963B696666785</code> <code>C342D6C7F9FBECB8FA41F87A59754D2B</code> <code>AFDD77C61296A53E0FBC8B929F899F04</code> <code>3B1C987AE5B0BD216F8625C32FF3F4AC</code><br> <code>F9B66E90</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 = 7D2A13F3E72E119A0A89302E9FD40E357757E02E8C7FF0D4E6CA8153F28951C4A017C8237385221E629EDC35838CA2A284600907C60044056F64C144B5B6F07AEE1BB0C29D743FF2010E58E1E65D142AF4F86DC549200C39776D7663288BC1C16A52222767052424817AEB81AD2032B2B95F9CF8BE1532E950C09064328F5911AE5E781092CACD7993A4F987EC3B6E1D5B3A88B456B7FC0B6BD642222C0C42E712D7A9179F984F76CBF825459E0467298C9DBF781A7563955F404E0C8612D95FE852DC33A07EA4FEC73B128E6DCE8C18951C558AAFA1BBC890CE2D01C606505227FA71DA5EF1DB61FB8E31C602024284A6264C5CCDBD03DCE6B78AB130B37446</code></pre>
|
||||
<pre><code>auth_key = 032BB5C7B7D1D14A9E88583B2DF883ECD4D5F982C70235F079695DC77C7AFF22254842AB4E38326112C7D9147D25BA89D2F7DD31B7634C038074DF06570027D73074B3478F11C967DB4EBEDAA6516E6C836CF29EF0FF3DA7D5A92DC618AB97E95A741313A14883BE52ACD121F1807C833A7A27B2FEF78F366A4004AFB7FBFEB65939AF25A5378D745D9B28AFF7EF9087BF16B72B9EB7BA6AFCD5E06FE5D0DDFD2F057DF1F0FAC43D16EDA279D556129D24081F4C7B4D5A398E442743768121767ABEFDCC9CDC882DD12AE029C416B88A7208938FA04A8BF40BF3E450F73754C8AABBBD875B9B3EAFE3AD44490136CD4D8AFE6843EF7D63F4CB9F6DF5CBFA8E80</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 20 22 1D 64 49 A8 65
|
||||
0010 | 9C 00 00 00 34 F7 CB 3B D9 31 E2 CD 8A 38 C2 63
|
||||
0020 | 1B A0 BA C5 0B B1 24 D2 AD D3 FB 20 7B 9C 6D 78
|
||||
0030 | 2E 45 E7 4C C4 68 64 E7 2D 23 7E 1C DF BB EA B0
|
||||
0040 | DB E7 EA 77 58 44 CE 12</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 44 62 49 CD 4D A8 65
|
||||
0010 | 50 00 00 00 34 F7 CB 3B 6B B1 FE 9B 0F 76 0B 1C
|
||||
0020 | FC 66 5F 43 C8 6D 50 50 3F 68 23 00 18 95 A0 A7
|
||||
0030 | 2C DA EC C5 35 F8 68 87 4A 95 31 14 20 65 4E B8
|
||||
0040 | 7D E6 58 B6 78 29 CE 90</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>0120221D6449A865</code></td>
|
||||
<td><code>01446249CD4DA865</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>message_length</td>
|
||||
<td>16, 4</td>
|
||||
<td><code>9C000000</code> (156 in decimal)</td>
|
||||
<td><code>50000000</code> (80 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>D931E2CD8A38C2631BA0BAC50BB124D2</code></td>
|
||||
<td><code>6BB1FE9B0F760B1CFC665F43C86D5050</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>ADD3FB207B9C6D782E45E74CC46864E7</code></td>
|
||||
<td><code>3F6823001895A0A72CDAECC535F86887</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>2D237E1CDFBBEAB0DBE7EA775844CE12</code></td>
|
||||
<td><code>4A95311420654EB87DE658B67829CE90</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>
|
||||
|
|
Loading…
Add table
Reference in a new issue