mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-03-14 04:51:42 +01:00
Update content of files
This commit is contained in:
parent
34edfc9655
commit
4cd3b34673
5 changed files with 227 additions and 233 deletions
|
@ -109,12 +109,14 @@ Note that eventual errors will not be sent as a <code>failed</code> event if the
|
|||
|
||||
<a href='/method/messages.sendWebViewData'>messages.sendWebViewData</a>#dc0242c8 bot:<a href='/type/InputUser'>InputUser</a> random_id:<a href='/type/long'>long</a> button_text:<a href='/type/string'>string</a> data:<a href='/type/string'>string</a> = <a href='/type/Updates'>Updates</a>;</code></pre>
|
||||
<p>Simple Mini Apps can only send data back to the bot through the MTProto API via a <a href="/api/web-events#web-app-data-send"><code>web_app_data_send</code> JS event »</a>. </p>
|
||||
<p>Simple Mini Apps can be opened:</p>
|
||||
<p>Simple Mini Apps can be opened by invoking <a href="/method/messages.requestSimpleWebView">messages.requestSimpleWebView</a>:</p>
|
||||
<ul>
|
||||
<li>From a <a href="/constructor/keyboardButtonSimpleWebView">keyboardButtonSimpleWebView</a> button contained in a reply keyboard identified by a <a href="/constructor/replyKeyboardMarkup">replyKeyboardMarkup</a> constructor</li>
|
||||
<li>Or by clicking on the <a href="/constructor/inlineBotWebView">inlineBotWebView</a> button on top of the inline result list, contained in <a href="/constructor/messages.botResults">messages.botResults</a>.<code>switch_webview</code>, returned by <a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a>. </li>
|
||||
<li>From a <a href="/constructor/keyboardButtonSimpleWebView">keyboardButtonSimpleWebView</a> button click contained in a reply keyboard identified by a <a href="/constructor/replyKeyboardMarkup">replyKeyboardMarkup</a> constructor, passing the button's <code>url</code> to <a href="/method/messages.requestSimpleWebView">messages.requestSimpleWebView</a></li>
|
||||
<li>Or by clicking on the <a href="/constructor/inlineBotWebView">inlineBotWebView</a> button on top of the inline result list, contained in <a href="/constructor/messages.botResults">messages.botResults</a>.<code>switch_webview</code>, returned by <a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a>, passing the <code>url</code> to <a href="/method/messages.requestSimpleWebView">messages.requestSimpleWebView</a> </li>
|
||||
<li>Or by clicking on the installed <a href="/api/bots/attach">side menu entry »</a>, in which case only the <code>from_side_menu</code> flag should be set </li>
|
||||
<li>Or by opening a <a href="/api/links#bot-attachment-or-side-menu-links"><code>startapp</code> link »</a>, in which case the <code>from_side_menu</code> flag should be set (even if the Mini App wasn't opened using the side menu entry, or if the client was minimized), and any eventual <code>start_parameter</code> from the link should also be passed to the <code>start_param</code> flag. </li>
|
||||
</ul>
|
||||
<p>To open them, users should call <a href="/method/messages.requestSimpleWebView">messages.requestSimpleWebView</a> passing the original <code>url</code> contained in the <a href="/constructor/keyboardButtonSimpleWebView">keyboardButtonSimpleWebView</a>/<a href="/constructor/inlineBotWebView">inlineBotWebView</a> constructors, and then open a webview using the <code>url</code> contained in the returned <a href="/constructor/simpleWebViewResultUrl">simpleWebViewResultUrl</a>. </p>
|
||||
<p>After invoking <a href="/method/messages.requestSimpleWebView">messages.requestSimpleWebView</a> and obtaining a <a href="/constructor/simpleWebViewResultUrl">simpleWebViewResultUrl</a> result, clients should open a webview using the <code>url</code> contained in the returned <a href="/constructor/simpleWebViewResultUrl">simpleWebViewResultUrl</a>. </p>
|
||||
<p>If and only if the Mini App was opened from a <a href="/constructor/keyboardButtonSimpleWebView">keyboardButtonSimpleWebView</a> reply keyboard button, upon receiving a <a href="/api/web-events#web-app-data-send"><code>web_app_data_send</code> JS event »</a> from the Mini App, clients should invoke <a href="/method/messages.sendWebViewData">messages.sendWebViewData</a>, passing the following arguments:</p>
|
||||
<ul>
|
||||
<li><code>bot</code> - Bot ID</li>
|
||||
|
|
|
@ -1128,7 +1128,7 @@ These links are used to confirm ownership of the phone number, to prevent accoun
|
|||
<p>Used to install and open a <a href="/api/bots/attach">bot attachment or side menu »</a> in a certain chat.<br>
|
||||
For all link types, clients should first <a href="/api/bots/attach">install the associated bot attachment or side menu entry as specified here »</a>, and if the user accepts the installation prompt, open the Mini App using the following logic, depending on the link subtype:</p>
|
||||
<h4><a class="anchor" href="#open-anywhere" id="open-anywhere" name="open-anywhere"><i class="anchor-icon"></i></a>Open anywhere</h4>
|
||||
<p>After installing the attachment/side menu entry globally, opens the associated mini app, regardless of the currently open Telegram chat (in fact, the Mini App should opened even if the client itself is minimized). </p>
|
||||
<p>After installing the attachment/side menu entry globally, opens the associated mini app using <a href="/method/messages.requestSimpleWebView">messages.requestSimpleWebView</a> with the <code>from_side_menu</code> flag set, regardless of the currently open Telegram chat (in fact, the Mini App should opened with that flag even if the client itself is minimized). </p>
|
||||
<p><code>t.me</code> syntax:</p>
|
||||
<pre><code>t.me/<bot_username>?startapp
|
||||
t.me/<bot_username>?startapp=<start_parameter></code></pre>
|
||||
|
@ -1154,12 +1154,12 @@ tg://resolve?domain=<bot_username>&startapp=<start_parameter></c
|
|||
<tr>
|
||||
<td><code>start_parameter</code></td>
|
||||
<td style="text-align: center;">Optional</td>
|
||||
<td>If provided, should be passed to <a href="/method/messages.requestWebView">messages.requestWebView</a>.<code>start_param</code></td>
|
||||
<td>If provided, should be passed to <a href="/method/messages.requestSimpleWebView">messages.requestSimpleWebView</a>.<code>start_param</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h4><a class="anchor" href="#open-in-current-chat" id="open-in-current-chat" name="open-in-current-chat"><i class="anchor-icon"></i></a>Open in current chat</h4>
|
||||
<p>After installing the attachment/side menu entry globally, opens the associated mini app in the currently open chat. </p>
|
||||
<p>After installing the attachment/side menu entry globally, opens the associated mini app using <a href="/method/messages.requestWebView">messages.requestWebView</a> in the currently open chat, by passing it to the <code>peer</code> parameter of <a href="/method/messages.requestWebView">messages.requestWebView</a>. </p>
|
||||
<p>If the current chat is not supported by the <a href="/constructor/attachMenuBot">attachMenuBot</a>.<code>peer_types</code> field: </p>
|
||||
<ul>
|
||||
<li>If the user has just installed the attachment menu in the previous step, notify the user that the attachment menu was installed successfully.</li>
|
||||
|
@ -1194,7 +1194,7 @@ tg://resolve?domain=<bot_username>&startattach=<start_parameter>
|
|||
</tbody>
|
||||
</table>
|
||||
<h4><a class="anchor" href="#open-in-specific-chat" id="open-in-specific-chat" name="open-in-specific-chat"><i class="anchor-icon"></i></a>Open in specific chat</h4>
|
||||
<p>After installing the attachment/side menu entry globally, opens the associated mini app in a specific chat. </p>
|
||||
<p>After installing the attachment/side menu entry globally, opens the associated mini app using <a href="/method/messages.requestWebView">messages.requestWebView</a> in a specific chat (passed to the <code>peer</code> parameter of <a href="/method/messages.requestWebView">messages.requestWebView</a>). </p>
|
||||
<p><code>t.me</code> syntax:</p>
|
||||
<pre><code>t.me/<username>?attach=<bot_username>
|
||||
t.me/<username>?attach=<bot_username>&startattach=<start_parameter>
|
||||
|
@ -1243,7 +1243,7 @@ tg://resolve?phone=<phone_number>&attach=<bot_username>&star
|
|||
</tbody>
|
||||
</table>
|
||||
<h4><a class="anchor" href="#open-in-any-chat" id="open-in-any-chat" name="open-in-any-chat"><i class="anchor-icon"></i></a>Open in any chat</h4>
|
||||
<p>After installing the attachment/side menu entry globally, opens a dialog selection form that will open the attachment menu mini app in a specific chat. </p>
|
||||
<p>After installing the attachment/side menu entry globally, opens a dialog selection form that will open the attachment menu mini app using <a href="/method/messages.requestWebView">messages.requestWebView</a> in a specific chat (passed it to the <code>peer</code> parameter of <a href="/method/messages.requestWebView">messages.requestWebView</a>). </p>
|
||||
<p><code>t.me</code> syntax:</p>
|
||||
<pre><code>t.me/<bot_username>?startattach&choose=users+bots+groups+channels
|
||||
t.me/<bot_username>?startattach=<start_parameter>&choose=users+bots+groups+channels</code></pre>
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
<tr>
|
||||
<td><strong>from_side_menu</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
<td>Set this flag if opening the Mini App from the installed <a href="/api/bots/attach">side menu entry »</a> or from a <a href="/api/links#open-anywhere"><code>startapp</code> link »</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>bot</strong></td>
|
||||
|
@ -91,12 +91,12 @@
|
|||
<tr>
|
||||
<td><strong>url</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/string">string</a></td>
|
||||
<td>Web app URL</td>
|
||||
<td>Web app URL, if opening from a keyboard button or inline result</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>start_param</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/string">string</a></td>
|
||||
<td> </td>
|
||||
<td>Start parameter, if opening from a <a href="/api/links#open-anywhere"><code>startapp</code> link »</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>theme_params</strong></td>
|
||||
|
@ -115,6 +115,10 @@
|
|||
<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="#messagesgetinlinebotresults" id="messagesgetinlinebotresults" name="messagesgetinlinebotresults"><i class="anchor-icon"></i></a><a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a></h4>
|
||||
<p>Query an inline bot</p>
|
||||
<h4><a class="anchor" href="#bot-attachment-menu-and-side-menu-entries" id="bot-attachment-menu-and-side-menu-entries" name="bot-attachment-menu-and-side-menu-entries"><i class="anchor-icon"></i></a><a href="/api/bots/attach">Bot attachment menu and side menu entries</a></h4>
|
||||
<p>Bots can install attachment menu and side menu entries, offering conveniently accessible, versatile web apps.</p>
|
||||
<h4><a class="anchor" href="#deep-links" id="deep-links" name="deep-links"><i class="anchor-icon"></i></a><a href="/api/links">Deep links</a></h4>
|
||||
<p>Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.</p>
|
||||
<h4><a class="anchor" href="#mini-apps-on-telegram" id="mini-apps-on-telegram" name="mini-apps-on-telegram"><i class="anchor-icon"></i></a><a href="/api/bots/webapps">Mini Apps on Telegram</a></h4>
|
||||
<p>Bots can offer users interactive HTML5 web apps to completely replace any website.</p></div>
|
||||
|
||||
|
|
|
@ -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 F8 4C 0D 00 C0 4B 66 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE B5 59 9A FA 6B AC 2E A9
|
||||
0020 | 0A BE E2 D7 B5 4D D5 1D</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 3C 04 06 00 BA 70 67 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 4A 20 F9 EC B2 FF 02 EB
|
||||
0020 | DC D6 FF 20 BE 2C 9E 9B</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>F84C0D00C04B6665</code></td>
|
||||
<td><code>3C040600BA706765</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>B5599AFA6BAC2EA90ABEE2D7B54DD51D</code></td>
|
||||
<td><code>4A20F9ECB2FF02EBDCD6FF20BE2C9E9B</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 F8 B9 D7 C0 4B 66 65
|
||||
0010 | 60 00 00 00 63 24 16 05 B5 59 9A FA 6B AC 2E A9
|
||||
0020 | 0A BE E2 D7 B5 4D D5 1D 97 03 22 93 F4 8B FD EB
|
||||
0030 | 2D 7C 79 AF 50 22 FE FE 08 26 FE F7 F1 B4 91 7C
|
||||
0040 | D1 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 D8 0E 79 BA 70 67 65
|
||||
0010 | AC 00 00 00 63 24 16 05 4A 20 F9 EC B2 FF 02 EB
|
||||
0020 | DC D6 FF 20 BE 2C 9E 9B D6 49 5F 55 CD AF 79 0C
|
||||
0030 | 1E 0C 40 55 9C 5E 1D 91 08 1A DD 8F 53 1C BB 41
|
||||
0040 | 17 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>01F8B9D7C04B6665</code></td>
|
||||
<td><code>01D80E79BA706765</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>60000000</code> (96 in decimal)</td>
|
||||
<td><code>AC000000</code> (172 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>B5599AFA6BAC2EA90ABEE2D7B54DD51D</code></td>
|
||||
<td><code>4A20F9ECB2FF02EBDCD6FF20BE2C9E9B</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>97032293F48BFDEB2D7C79AF5022FEFE</code></td>
|
||||
<td><code>D6495F55CDAF790C1E0C40559C5E1D91</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>0826FEF7F1B4917CD1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2809955835014380753</td>
|
||||
<td><code>081ADD8F531CBB4117000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1935861001966272791</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 = 2809955835014380753</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2809955835014380753 = 1420343893 * 1978363021</code></p>
|
||||
<pre><code>p = 1420343893
|
||||
q = 1978363021</code></pre>
|
||||
<pre><code>pq = 1935861001966272791</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1935861001966272791 = 1152207451 * 1680132341</code></p>
|
||||
<pre><code>p = 1152207451
|
||||
q = 1680132341</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 26 FE F7 F1 B4 91 7C D1 00 00 00
|
||||
0010 | 04 54 A8 BA 55 00 00 00 04 75 EB 6C 8D 00 00 00
|
||||
0020 | B5 59 9A FA 6B AC 2E A9 0A BE E2 D7 B5 4D D5 1D
|
||||
0030 | 97 03 22 93 F4 8B FD EB 2D 7C 79 AF 50 22 FE FE
|
||||
0040 | 3B AE 9A B8 12 72 6C F2 1A 9D CA 9A 9D 37 A3 11
|
||||
0050 | 7A 81 D3 81 D8 52 8C A0 C4 E2 5C BB CD 8D 94 E6
|
||||
<pre><code>0000 | 95 5F F5 A9 08 1A DD 8F 53 1C BB 41 17 00 00 00
|
||||
0010 | 04 44 AD 4A 5B 00 00 00 04 64 24 C8 F5 00 00 00
|
||||
0020 | 4A 20 F9 EC B2 FF 02 EB DC D6 FF 20 BE 2C 9E 9B
|
||||
0030 | D6 49 5F 55 CD AF 79 0C 1E 0C 40 55 9C 5E 1D 91
|
||||
0040 | 82 05 22 D4 26 58 46 C8 F7 E7 B7 E0 B7 74 AF 42
|
||||
0050 | DC 51 F1 90 1C 8E E2 A4 41 87 03 98 D0 96 DF 25
|
||||
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 = 1978363021</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>0826FEF7F1B4917CD1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2809955835014380753</td>
|
||||
<td><code>081ADD8F531CBB4117000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1935861001966272791</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>0454A8BA55000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1420343893</td>
|
||||
<td><code>0444AD4A5B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1152207451</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>0475EB6C8D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1978363021</td>
|
||||
<td><code>046424C8F5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1680132341</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>B5599AFA6BAC2EA90ABEE2D7B54DD51D</code></td>
|
||||
<td><code>4A20F9ECB2FF02EBDCD6FF20BE2C9E9B</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>97032293F48BFDEB2D7C79AF5022FEFE</code></td>
|
||||
<td><code>D6495F55CDAF790C1E0C40559C5E1D91</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>3BAE9AB812726CF21A9DCA9A9D37A311</code> <code>7A81D381D8528CA0C4E25CBBCD8D94E6</code></td>
|
||||
<td><code>820522D4265846C8F7E7B7E0B774AF42</code> <code>DC51F1901C8EE2A441870398D096DF25</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1978363021</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 = 955FF5A90826FEF7F1B4917CD10000000454A8BA550000000475EB6C8D000000B5599AFA6BAC2EA90ABEE2D7B54DD51D97032293F48BFDEB2D7C79AF5022FEFE3BAE9AB812726CF21A9DCA9A9D37A3117A81D381D8528CA0C4E25CBBCD8D94E602000000
|
||||
random_padding_bytes = A0A08D9129A6004F851B20205F2FA07753FE8291010906D62EE0EFEB8B1C7052449EAF632FDDAF860BD9F128C350D1201526CBADFA7032FD64C2E8CA54A8460D608A626639B64181500138073BF7127B353985BD3F60F4DE37625F99</code></pre>
|
||||
<pre><code>data = 955FF5A9081ADD8F531CBB41170000000444AD4A5B000000046424C8F50000004A20F9ECB2FF02EBDCD6FF20BE2C9E9BD6495F55CDAF790C1E0C40559C5E1D91820522D4265846C8F7E7B7E0B774AF42DC51F1901C8EE2A441870398D096DF2502000000
|
||||
random_padding_bytes = A02800255F1BD74C87121565F40152C31CC431A5B71E47B35AA2FEE501015EC20BD9384549D72407DFA15621B41FC121C1F594A05D1E3229A442C3B01C17D2EE65CBB0B9BD365BDAB8AE3CEC78D758D71F2F0749191BFBD9148C060E</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 = E2936EF84988FDB8D5B7FB7406916AA843002E214F136CDFDAA76DFDCC0AF1490C3740B8CC4C8CC752CDA2ADCF2BE3D6EEC40F69D3527C7E15A22CEFB918CFB57532A69A852A08B71863D8B282C47D8500379CC1D127849B539928ADB63F27373938F2F834F94E30AB266DF541EA8D1C0E651DB17C204E27760FEA822134BBFF5C1490734AF5A5130E077526128B6B62AC2DEE617F51DFC3D176CB0B37A9A61C386DEDA78C1F279BE3FC345E46DBC647E88ABA15D71159B9F69787EA90F5C01368C28356C1B557D07D9D5F3352D3C55A1D911CEE6B32239AAD98DBE0396FB8FB311145E0D9F9D9B8F82446256B7A419E6D99093C05026FB43A08370DC59BF450</code></pre>
|
||||
<pre><code>encrypted_data = A53F39509060A2560647550F3167D07F6FA08F29C84E6FF7FC67411D57FCAC1B93969620FC7B1A69F15454B21BD2AB46161535EDFB357BD21B13244B0F0A2977C2F65DB8E9259CC3788FC65E1FC7AFEF240AE9C784747FB960EAD47D8F4B148E07BCF7FC4972186C3EB0E45062D305741B6B6CE1223589AE8AEEFDA3BAC506F02B740ECC5A4079E15AE6D9BFB95C34B003E5BEC88446CE89E6AEBF4BEBADB820B5AA1280460A140C8D1F85F179BD2E4D2F00413E2C139E8E585A497EFB267C38777110D0841E272E99F1083DA76D7AC4FA4B9C00BA32CE5FCFAB010A7416AA63BA16795A2B23E7F18BA1009E4B636976DF8EC38187C8141FA46F7F3AE2556A01</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 FC 4C 0D 00 C0 4B 66 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 B5 59 9A FA 6B AC 2E A9
|
||||
0020 | 0A BE E2 D7 B5 4D D5 1D 97 03 22 93 F4 8B FD EB
|
||||
0030 | 2D 7C 79 AF 50 22 FE FE 04 54 A8 BA 55 00 00 00
|
||||
0040 | 04 75 EB 6C 8D 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 E2 93 6E F8 49 88 FD B8 D5 B7 FB 74
|
||||
0060 | 06 91 6A A8 43 00 2E 21 4F 13 6C DF DA A7 6D FD
|
||||
0070 | CC 0A F1 49 0C 37 40 B8 CC 4C 8C C7 52 CD A2 AD
|
||||
0080 | CF 2B E3 D6 EE C4 0F 69 D3 52 7C 7E 15 A2 2C EF
|
||||
0090 | B9 18 CF B5 75 32 A6 9A 85 2A 08 B7 18 63 D8 B2
|
||||
00A0 | 82 C4 7D 85 00 37 9C C1 D1 27 84 9B 53 99 28 AD
|
||||
00B0 | B6 3F 27 37 39 38 F2 F8 34 F9 4E 30 AB 26 6D F5
|
||||
00C0 | 41 EA 8D 1C 0E 65 1D B1 7C 20 4E 27 76 0F EA 82
|
||||
00D0 | 21 34 BB FF 5C 14 90 73 4A F5 A5 13 0E 07 75 26
|
||||
00E0 | 12 8B 6B 62 AC 2D EE 61 7F 51 DF C3 D1 76 CB 0B
|
||||
00F0 | 37 A9 A6 1C 38 6D ED A7 8C 1F 27 9B E3 FC 34 5E
|
||||
0100 | 46 DB C6 47 E8 8A BA 15 D7 11 59 B9 F6 97 87 EA
|
||||
0110 | 90 F5 C0 13 68 C2 83 56 C1 B5 57 D0 7D 9D 5F 33
|
||||
0120 | 52 D3 C5 5A 1D 91 1C EE 6B 32 23 9A AD 98 DB E0
|
||||
0130 | 39 6F B8 FB 31 11 45 E0 D9 F9 D9 B8 F8 24 46 25
|
||||
0140 | 6B 7A 41 9E 6D 99 09 3C 05 02 6F B4 3A 08 37 0D
|
||||
0150 | C5 9B F4 50</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 BC D4 09 00 BA 70 67 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 4A 20 F9 EC B2 FF 02 EB
|
||||
0020 | DC D6 FF 20 BE 2C 9E 9B D6 49 5F 55 CD AF 79 0C
|
||||
0030 | 1E 0C 40 55 9C 5E 1D 91 04 44 AD 4A 5B 00 00 00
|
||||
0040 | 04 64 24 C8 F5 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 A5 3F 39 50 90 60 A2 56 06 47 55 0F
|
||||
0060 | 31 67 D0 7F 6F A0 8F 29 C8 4E 6F F7 FC 67 41 1D
|
||||
0070 | 57 FC AC 1B 93 96 96 20 FC 7B 1A 69 F1 54 54 B2
|
||||
0080 | 1B D2 AB 46 16 15 35 ED FB 35 7B D2 1B 13 24 4B
|
||||
0090 | 0F 0A 29 77 C2 F6 5D B8 E9 25 9C C3 78 8F C6 5E
|
||||
00A0 | 1F C7 AF EF 24 0A E9 C7 84 74 7F B9 60 EA D4 7D
|
||||
00B0 | 8F 4B 14 8E 07 BC F7 FC 49 72 18 6C 3E B0 E4 50
|
||||
00C0 | 62 D3 05 74 1B 6B 6C E1 22 35 89 AE 8A EE FD A3
|
||||
00D0 | BA C5 06 F0 2B 74 0E CC 5A 40 79 E1 5A E6 D9 BF
|
||||
00E0 | B9 5C 34 B0 03 E5 BE C8 84 46 CE 89 E6 AE BF 4B
|
||||
00F0 | EB AD B8 20 B5 AA 12 80 46 0A 14 0C 8D 1F 85 F1
|
||||
0100 | 79 BD 2E 4D 2F 00 41 3E 2C 13 9E 8E 58 5A 49 7E
|
||||
0110 | FB 26 7C 38 77 71 10 D0 84 1E 27 2E 99 F1 08 3D
|
||||
0120 | A7 6D 7A C4 FA 4B 9C 00 BA 32 CE 5F CF AB 01 0A
|
||||
0130 | 74 16 AA 63 BA 16 79 5A 2B 23 E7 F1 8B A1 00 9E
|
||||
0140 | 4B 63 69 76 DF 8E C3 81 87 C8 14 1F A4 6F 7F 3A
|
||||
0150 | E2 55 6A 01</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 = A0A08D9129A6004F851B20205F2FA07753FE8291010906D62EE0EFEB8
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>FC4C0D00C04B6665</code></td>
|
||||
<td><code>BCD40900BA706765</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 = A0A08D9129A6004F851B20205F2FA07753FE8291010906D62EE0EFEB8
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>B5599AFA6BAC2EA90ABEE2D7B54DD51D</code></td>
|
||||
<td><code>4A20F9ECB2FF02EBDCD6FF20BE2C9E9B</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>97032293F48BFDEB2D7C79AF5022FEFE</code></td>
|
||||
<td><code>D6495F55CDAF790C1E0C40559C5E1D91</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>0454A8BA55000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1420343893</td>
|
||||
<td><code>0444AD4A5B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1152207451</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>0475EB6C8D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1978363021</td>
|
||||
<td><code>046424C8F5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1680132341</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 = A0A08D9129A6004F851B20205F2FA07753FE8291010906D62EE0EFEB8
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE000100E2936EF84988FDB8D5B7FB74</code> <code>06916AA843002E214F136CDFDAA76DFD</code> <code>CC0AF1490C3740B8CC4C8CC752CDA2AD</code> <code>CF2BE3D6EEC40F69D3527C7E15A22CEF</code> <code>B918CFB57532A69A852A08B71863D8B2</code> <code>82C47D8500379CC1D127849B539928AD</code> <code>B63F27373938F2F834F94E30AB266DF5</code> <code>41EA8D1C0E651DB17C204E27760FEA82</code> <code>2134BBFF5C1490734AF5A5130E077526</code> <code>128B6B62AC2DEE617F51DFC3D176CB0B</code> <code>37A9A61C386DEDA78C1F279BE3FC345E</code> <code>46DBC647E88ABA15D71159B9F69787EA</code> <code>90F5C01368C28356C1B557D07D9D5F33</code> <code>52D3C55A1D911CEE6B32239AAD98DBE0</code> <code>396FB8FB311145E0D9F9D9B8F8244625</code> <code>6B7A419E6D99093C05026FB43A08370D</code><br> <code>C59BF450</code></td>
|
||||
<td><code>FE000100A53F39509060A2560647550F</code> <code>3167D07F6FA08F29C84E6FF7FC67411D</code> <code>57FCAC1B93969620FC7B1A69F15454B2</code> <code>1BD2AB46161535EDFB357BD21B13244B</code> <code>0F0A2977C2F65DB8E9259CC3788FC65E</code> <code>1FC7AFEF240AE9C784747FB960EAD47D</code> <code>8F4B148E07BCF7FC4972186C3EB0E450</code> <code>62D305741B6B6CE1223589AE8AEEFDA3</code> <code>BAC506F02B740ECC5A4079E15AE6D9BF</code> <code>B95C34B003E5BEC88446CE89E6AEBF4B</code> <code>EBADB820B5AA1280460A140C8D1F85F1</code> <code>79BD2E4D2F00413E2C139E8E585A497E</code> <code>FB267C38777110D0841E272E99F1083D</code> <code>A76D7AC4FA4B9C00BA32CE5FCFAB010A</code> <code>7416AA63BA16795A2B23E7F18BA1009E</code> <code>4B636976DF8EC38187C8141FA46F7F3A</code><br> <code>E2556A01</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = A0A08D9129A6004F851B20205F2FA07753FE8291010906D62EE0EFEB8
|
|||
<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 9C 0A 90 C1 4B 66 65
|
||||
0010 | 7C 02 00 00 5C 07 E8 D0 B5 59 9A FA 6B AC 2E A9
|
||||
0020 | 0A BE E2 D7 B5 4D D5 1D 97 03 22 93 F4 8B FD EB
|
||||
0030 | 2D 7C 79 AF 50 22 FE FE FE 50 02 00 DD 82 E6 8C
|
||||
0040 | 30 FC 02 8C 14 BF 84 ED 03 77 85 F2 FA 4E BE BB
|
||||
0050 | 1E 24 AC C2 5C 77 22 C2 40 77 D4 3A 5F 72 21 BF
|
||||
0060 | 3B 90 14 27 19 4A DD 03 56 54 BA 8A 3B DB 30 22
|
||||
0070 | B7 93 AF B4 97 44 45 62 D4 41 46 D2 8A 1B 7A 62
|
||||
0080 | D1 D6 69 51 5B 5E 5A CF F7 5B 07 FE 4B 46 11 9D
|
||||
0090 | 50 CD 05 AD 27 9A 49 C6 4F EF D9 27 F0 A2 77 03
|
||||
00A0 | 38 8A 37 04 D0 4A 9D D4 38 9C FD 0E B6 B6 01 51
|
||||
00B0 | B7 34 F9 20 6B CF 3C 76 F1 77 8B CB 79 B0 71 94
|
||||
00C0 | A1 27 A3 94 85 47 8F 05 C9 B1 87 A0 29 B2 8A AF
|
||||
00D0 | 77 74 6F 1D 2A CF 2F D5 BF F3 5D 3C CD C8 06 DD
|
||||
00E0 | 5B 56 52 F1 60 54 F2 47 C4 03 7B A0 F2 AF CA 9A
|
||||
00F0 | 0A 90 42 C8 23 8C 23 94 1D A5 2A B9 C6 08 A3 9C
|
||||
0100 | F5 C1 E2 DE 4A C3 97 13 D6 E6 A6 37 0F F9 56 31
|
||||
0110 | E9 CF 8C 9B 16 28 E8 BE F6 B0 6D 52 75 94 39 45
|
||||
0120 | 75 2E 6C 4C 83 89 68 B8 09 7E D4 45 40 0A 20 39
|
||||
0130 | 5B F2 4B 43 2D F1 6F 46 99 BE F0 C0 B4 EE 36 3A
|
||||
0140 | 53 64 84 45 43 1A E1 C0 23 20 59 1B B9 95 63 60
|
||||
0150 | 86 DB 66 8F 0E EF 42 34 06 AB 3C F8 CF EE 92 0F
|
||||
0160 | 68 66 88 AC 8B F5 48 E1 89 1C 83 88 30 29 9C 7D
|
||||
0170 | C7 43 41 F0 53 22 38 F2 9F 32 5E 26 47 DA C2 2B
|
||||
0180 | FC FC 99 2B 84 0D 1A 35 24 CB 23 4B C0 F3 7B 05
|
||||
0190 | 39 ED 7A A2 2E 63 67 18 55 DD 5C 0C 22 09 F0 32
|
||||
01A0 | CD 22 D9 2C 83 9E 91 FF A1 AA 6B EF 7E EC 26 9A
|
||||
01B0 | 2C C1 4F F8 0E 98 A1 1A 3C 00 2F CB 32 47 1F C8
|
||||
01C0 | DB 98 EA 0F 2B 94 54 D8 E3 C8 63 9B 64 5B 7A BE
|
||||
01D0 | 2C 42 1F 50 C0 F5 1F 39 42 6E 3A 3D 3D 23 EA 38
|
||||
01E0 | 28 6C 43 39 07 0D A0 4F E3 18 94 87 DC E5 FB 44
|
||||
01F0 | FA 4B 10 FD 78 37 10 B3 56 27 B9 AE 06 79 0B ED
|
||||
0200 | D5 7A EB 9B 5C F6 12 26 CE 89 65 58 22 C5 93 E5
|
||||
0210 | E8 6A EE F4 7A BF FB CB 08 60 1C E1 20 73 3E 27
|
||||
0220 | 3A AC 37 65 9B E4 B5 3A 3B 4A BC 23 31 FB A5 BA
|
||||
0230 | E5 1D 55 BB DA F4 2A 48 64 56 C8 CB D9 58 35 2D
|
||||
0240 | 68 D3 13 72 48 B0 4A B0 AE F9 27 6C CE 42 E9 AB
|
||||
0250 | 52 54 7C 2E 59 70 7E A6 B7 9E 0D 38 3E AF 5C EF
|
||||
0260 | BB 27 A0 CC E4 0F D7 63 3D D1 99 66 73 BA C8 42
|
||||
0270 | 70 00 B9 FC F1 C4 21 22 9E F9 B0 11 F4 40 BB 49
|
||||
0280 | 40 65 D7 EF 2C 35 7D 2E D2 FF 3D 0F</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 A4 0C 1C BB 70 67 65
|
||||
0010 | B0 02 00 00 5C 07 E8 D0 4A 20 F9 EC B2 FF 02 EB
|
||||
0020 | DC D6 FF 20 BE 2C 9E 9B D6 49 5F 55 CD AF 79 0C
|
||||
0030 | 1E 0C 40 55 9C 5E 1D 91 FE 50 02 00 BA 78 8B 25
|
||||
0040 | D6 DA A7 E7 E5 19 72 03 16 90 2C 8D 18 2F 35 DE
|
||||
0050 | 43 AA 58 82 2F DB B8 AF DE DC 74 6C 58 EC 77 C3
|
||||
0060 | 70 14 38 6A B8 CA E3 62 65 5B 4A 65 D9 30 51 16
|
||||
0070 | 92 34 F9 72 CE 56 DD 5F 47 3E A3 D6 00 4E 8B 7E
|
||||
0080 | DF 0C AC C0 B5 E1 75 DD CD BD 42 3D D3 86 DF DA
|
||||
0090 | 4A C6 0A 3C 4F DC 4A 2C 0C CD 3B 78 89 7A 24 84
|
||||
00A0 | DF D5 D2 13 0D 0F 20 86 34 57 04 31 AC D2 00 72
|
||||
00B0 | 94 03 71 52 E8 FE 7B EF 53 A2 0F BE AF 68 E4 90
|
||||
00C0 | 08 B2 AE 00 EA 58 D8 61 F5 44 94 2C C2 5F 97 D7
|
||||
00D0 | 49 07 20 D3 F5 9F F0 C6 1A 59 D1 95 94 5E 43 FD
|
||||
00E0 | 4B 6A DD 53 6B 2E 6B 77 FB CB 46 0B FE 68 9B BE
|
||||
00F0 | 4C E9 44 8C 9D DE 8F 68 31 0F 56 FB 83 8E CA 3C
|
||||
0100 | 91 2D F5 A0 F5 AA BA 16 0A A0 99 A3 22 AC 89 D1
|
||||
0110 | 09 C5 0C 14 72 A2 5D 41 57 DB 75 F6 DA DC 91 C6
|
||||
0120 | 23 0F F3 68 07 CA CB 0B 69 26 D6 D4 3E F8 60 5B
|
||||
0130 | FE 26 C9 53 DB D5 A0 1B 94 D6 1F 42 20 00 74 94
|
||||
0140 | 7D 66 A5 76 68 98 62 AE 2E 39 98 19 47 B5 35 B8
|
||||
0150 | 16 6A CD 2E 9F BB 0D A5 BD 59 DD 6B C5 E8 FD 2D
|
||||
0160 | 0D A1 D2 48 16 16 C6 7A E3 D5 F0 8A 34 F1 A7 2D
|
||||
0170 | 97 7E C2 B0 E6 4C 56 63 0E A9 BA 41 20 BD D9 85
|
||||
0180 | C2 C4 81 98 64 27 1E E3 5B A5 80 89 85 2F 21 50
|
||||
0190 | 48 0C CC 38 77 8A FD 0F 8A 13 68 00 FD 6E B2 03
|
||||
01A0 | 67 DF F3 D3 C1 D0 EC 23 6C 9C 51 68 77 59 EC 8D
|
||||
01B0 | F6 D3 A0 E8 CC 06 0E D2 9A C4 51 9A 15 37 F1 01
|
||||
01C0 | BF 7D AB 9E 4D 37 8F 01 29 E2 1F F6 96 62 D8 4D
|
||||
01D0 | DD 86 ED C4 F3 AD 5B 91 4F 13 12 FC DB BD EE B5
|
||||
01E0 | A1 A1 0C 5D B5 23 46 57 28 6F 12 14 F7 54 78 B4
|
||||
01F0 | B3 45 A9 8E 33 CC 37 F2 50 D6 CA CF EB 64 AB 6B
|
||||
0200 | EF 66 9D D9 68 89 5C 74 81 A3 23 7C EB A3 90 C6
|
||||
0210 | 01 CA 08 4A 50 57 CB 10 7B E7 FF F1 23 AA 5F CB
|
||||
0220 | 92 25 77 04 49 42 4B 41 38 FE 1A C6 F0 1D 88 71
|
||||
0230 | B4 35 88 CF AD F3 29 10 3A 80 06 1D D9 3F 40 75
|
||||
0240 | 16 E8 0C 64 3F 56 4E F9 A1 8D E0 11 AB 02 AD 83
|
||||
0250 | 7B 03 70 31 AB 96 6C BA 23 99 A3 17 E6 78 79 95
|
||||
0260 | 75 6E B8 2F 7F 20 67 53 9B ED CF C9 DB 3C 89 0C
|
||||
0270 | 76 88 CB A9 7A CA 46 65 B6 2B 0E C9 69 34 EC BD
|
||||
0280 | A9 A0 96 F5 70 45 A1 35 55 9C FB 76</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 = A0A08D9129A6004F851B20205F2FA07753FE8291010906D62EE0EFEB8
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>019C0A90C14B6665</code></td>
|
||||
<td><code>01A40C1CBB706765</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>7C020000</code> (636 in decimal)</td>
|
||||
<td><code>B0020000</code> (688 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = A0A08D9129A6004F851B20205F2FA07753FE8291010906D62EE0EFEB8
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>B5599AFA6BAC2EA90ABEE2D7B54DD51D</code></td>
|
||||
<td><code>4A20F9ECB2FF02EBDCD6FF20BE2C9E9B</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>97032293F48BFDEB2D7C79AF5022FEFE</code></td>
|
||||
<td><code>D6495F55CDAF790C1E0C40559C5E1D91</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE500200DD82E68C30FC028C14BF84ED</code> <code>037785F2FA4EBEBB1E24ACC25C7722C2</code> <code>4077D43A5F7221BF3B901427194ADD03</code> <code>5654BA8A3BDB3022B793AFB497444562</code> <code>D44146D28A1B7A62D1D669515B5E5ACF</code> <code>F75B07FE4B46119D50CD05AD279A49C6</code> <code>4FEFD927F0A27703388A3704D04A9DD4</code> <code>389CFD0EB6B60151B734F9206BCF3C76</code> <code>F1778BCB79B07194A127A39485478F05</code> <code>C9B187A029B28AAF77746F1D2ACF2FD5</code> <code>BFF35D3CCDC806DD5B5652F16054F247</code> <code>C4037BA0F2AFCA9A0A9042C8238C2394</code> <code>1DA52AB9C608A39CF5C1E2DE4AC39713</code> <code>D6E6A6370FF95631E9CF8C9B1628E8BE</code> <code>F6B06D5275943945752E6C4C838968B8</code> <code>097ED445400A20395BF24B432DF16F46</code> <code>99BEF0C0B4EE363A53648445431AE1C0</code> <code>2320591BB995636086DB668F0EEF4234</code> <code>06AB3CF8CFEE920F686688AC8BF548E1</code> <code>891C838830299C7DC74341F0532238F2</code> <code>9F325E2647DAC22BFCFC992B840D1A35</code> <code>24CB234BC0F37B0539ED7AA22E636718</code> <code>55DD5C0C2209F032CD22D92C839E91FF</code> <code>A1AA6BEF7EEC269A2CC14FF80E98A11A</code> <code>3C002FCB32471FC8DB98EA0F2B9454D8</code> <code>E3C8639B645B7ABE2C421F50C0F51F39</code> <code>426E3A3D3D23EA38286C4339070DA04F</code> <code>E3189487DCE5FB44FA4B10FD783710B3</code> <code>5627B9AE06790BEDD57AEB9B5CF61226</code> <code>CE89655822C593E5E86AEEF47ABFFBCB</code> <code>08601CE120733E273AAC37659BE4B53A</code> <code>3B4ABC2331FBA5BAE51D55BBDAF42A48</code> <code>6456C8CBD958352D68D3137248B04AB0</code> <code>AEF9276CCE42E9AB52547C2E59707EA6</code> <code>B79E0D383EAF5CEFBB27A0CCE40FD763</code> <code>3DD1996673BAC8427000B9FCF1C42122</code> <code>9EF9B011F440BB494065D7EF2C357D2E</code><br> <code>D2FF3D0F</code></td>
|
||||
<td><code>FE500200BA788B25D6DAA7E7E5197203</code> <code>16902C8D182F35DE43AA58822FDBB8AF</code> <code>DEDC746C58EC77C37014386AB8CAE362</code> <code>655B4A65D93051169234F972CE56DD5F</code> <code>473EA3D6004E8B7EDF0CACC0B5E175DD</code> <code>CDBD423DD386DFDA4AC60A3C4FDC4A2C</code> <code>0CCD3B78897A2484DFD5D2130D0F2086</code> <code>34570431ACD2007294037152E8FE7BEF</code> <code>53A20FBEAF68E49008B2AE00EA58D861</code> <code>F544942CC25F97D7490720D3F59FF0C6</code> <code>1A59D195945E43FD4B6ADD536B2E6B77</code> <code>FBCB460BFE689BBE4CE9448C9DDE8F68</code> <code>310F56FB838ECA3C912DF5A0F5AABA16</code> <code>0AA099A322AC89D109C50C1472A25D41</code> <code>57DB75F6DADC91C6230FF36807CACB0B</code> <code>6926D6D43EF8605BFE26C953DBD5A01B</code> <code>94D61F42200074947D66A576689862AE</code> <code>2E39981947B535B8166ACD2E9FBB0DA5</code> <code>BD59DD6BC5E8FD2D0DA1D2481616C67A</code> <code>E3D5F08A34F1A72D977EC2B0E64C5663</code> <code>0EA9BA4120BDD985C2C4819864271EE3</code> <code>5BA58089852F2150480CCC38778AFD0F</code> <code>8A136800FD6EB20367DFF3D3C1D0EC23</code> <code>6C9C51687759EC8DF6D3A0E8CC060ED2</code> <code>9AC4519A1537F101BF7DAB9E4D378F01</code> <code>29E21FF69662D84DDD86EDC4F3AD5B91</code> <code>4F1312FCDBBDEEB5A1A10C5DB5234657</code> <code>286F1214F75478B4B345A98E33CC37F2</code> <code>50D6CACFEB64AB6BEF669DD968895C74</code> <code>81A3237CEBA390C601CA084A5057CB10</code> <code>7BE7FFF123AA5FCB9225770449424B41</code> <code>38FE1AC6F01D8871B43588CFADF32910</code> <code>3A80061DD93F407516E80C643F564EF9</code> <code>A18DE011AB02AD837B037031AB966CBA</code> <code>2399A317E6787995756EB82F7F206753</code> <code>9BEDCFC9DB3C890C7688CBA97ACA4665</code> <code>B62B0EC96934ECBDA9A096F57045A135</code><br> <code>559CFB76</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = A0A08D9129A6004F851B20205F2FA07753FE8291010906D62EE0EFEB8
|
|||
<!-- 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 = DD82E68C30FC028C14BF84ED037785F2FA4EBEBB1E24ACC25C7722C24077D43A5F7221BF3B901427194ADD035654BA8A3BDB3022B793AFB497444562D44146D28A1B7A62D1D669515B5E5ACFF75B07FE4B46119D50CD05AD279A49C64FEFD927F0A27703388A3704D04A9DD4389CFD0EB6B60151B734F9206BCF3C76F1778BCB79B07194A127A39485478F05C9B187A029B28AAF77746F1D2ACF2FD5BFF35D3CCDC806DD5B5652F16054F247C4037BA0F2AFCA9A0A9042C8238C23941DA52AB9C608A39CF5C1E2DE4AC39713D6E6A6370FF95631E9CF8C9B1628E8BEF6B06D5275943945752E6C4C838968B8097ED445400A20395BF24B432DF16F4699BEF0C0B4EE363A53648445431AE1C02320591BB995636086DB668F0EEF423406AB3CF8CFEE920F686688AC8BF548E1891C838830299C7DC74341F0532238F29F325E2647DAC22BFCFC992B840D1A3524CB234BC0F37B0539ED7AA22E63671855DD5C0C2209F032CD22D92C839E91FFA1AA6BEF7EEC269A2CC14FF80E98A11A3C002FCB32471FC8DB98EA0F2B9454D8E3C8639B645B7ABE2C421F50C0F51F39426E3A3D3D23EA38286C4339070DA04FE3189487DCE5FB44FA4B10FD783710B35627B9AE06790BEDD57AEB9B5CF61226CE89655822C593E5E86AEEF47ABFFBCB08601CE120733E273AAC37659BE4B53A3B4ABC2331FBA5BAE51D55BBDAF42A486456C8CBD958352D68D3137248B04AB0AEF9276CCE42E9AB52547C2E59707EA6B79E0D383EAF5CEFBB27A0CCE40FD7633DD1996673BAC8427000B9FCF1C421229EF9B011F440BB494065D7EF2C357D2ED2FF3D0F
|
||||
tmp_aes_key = 1958F662C25BC962035DCDB03466EEE5912D0A27078AC3B48D09FF58C35597ED
|
||||
tmp_aes_iv = 14EAA9C9B97D2BFABEF57C84CEE9FBE743EA0FA0F91CCE32E91A66683BAE9AB8</code></pre>
|
||||
<pre><code>encrypted_answer = BA788B25D6DAA7E7E519720316902C8D182F35DE43AA58822FDBB8AFDEDC746C58EC77C37014386AB8CAE362655B4A65D93051169234F972CE56DD5F473EA3D6004E8B7EDF0CACC0B5E175DDCDBD423DD386DFDA4AC60A3C4FDC4A2C0CCD3B78897A2484DFD5D2130D0F208634570431ACD2007294037152E8FE7BEF53A20FBEAF68E49008B2AE00EA58D861F544942CC25F97D7490720D3F59FF0C61A59D195945E43FD4B6ADD536B2E6B77FBCB460BFE689BBE4CE9448C9DDE8F68310F56FB838ECA3C912DF5A0F5AABA160AA099A322AC89D109C50C1472A25D4157DB75F6DADC91C6230FF36807CACB0B6926D6D43EF8605BFE26C953DBD5A01B94D61F42200074947D66A576689862AE2E39981947B535B8166ACD2E9FBB0DA5BD59DD6BC5E8FD2D0DA1D2481616C67AE3D5F08A34F1A72D977EC2B0E64C56630EA9BA4120BDD985C2C4819864271EE35BA58089852F2150480CCC38778AFD0F8A136800FD6EB20367DFF3D3C1D0EC236C9C51687759EC8DF6D3A0E8CC060ED29AC4519A1537F101BF7DAB9E4D378F0129E21FF69662D84DDD86EDC4F3AD5B914F1312FCDBBDEEB5A1A10C5DB5234657286F1214F75478B4B345A98E33CC37F250D6CACFEB64AB6BEF669DD968895C7481A3237CEBA390C601CA084A5057CB107BE7FFF123AA5FCB9225770449424B4138FE1AC6F01D8871B43588CFADF329103A80061DD93F407516E80C643F564EF9A18DE011AB02AD837B037031AB966CBA2399A317E6787995756EB82F7F2067539BEDCFC9DB3C890C7688CBA97ACA4665B62B0EC96934ECBDA9A096F57045A135559CFB76
|
||||
tmp_aes_key = 59209748A5A4BB1CBE9E3C24FEDE8183AF70A6B0ED09D6B2E9F56E4A9FB8CFB8
|
||||
tmp_aes_iv = 5BB9E9E40F27C0F258D3A1C86CBEF81223618B2BCECEF465E0ACF956820522D4</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = 9F5F0A1FE926289582985E0892DEE63154911B2CBA0D89B5B5599AFA6BAC2EA90ABEE2D7B54DD51D97032293F48BFDEB2D7C79AF5022FEFE03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009B6E8C566CD00054BAFC61744174666511C4F16FA61CDAE17673FC572C8671225A872F4BC049FD32EBE4263B4A19FEEA8C4F89986F158D0D1CF7CB4C45EEAAAFF00A1A38C1240324AEBF04EE53D6B50ED913001266EDF5A0BEBE60D0BC969A81D52F6222E5FBB6E6025B06779C05CAE0FDDFFDF440BCBF543017BF377F00C82E9FA5FE1DD8063CC4CD5B3E2CAF097ECDCFFA64D8B2C9A4C1125882C81DD70BE7A74DE6EFA2C5643F2926610281D55336760DBAFB5EB63147E88C007A481803F5CDCD4769B735D34635D8A4CABC7A2779963030552BB1831709E9489CB12886586AB37E525185D67AC6211B57C3909F3ADBDCF325A1FFD605DEE142468163FBA2C14B6665D241CA53FBE82768
|
||||
answer = BA0D89B5B5599AFA6BAC2EA90ABEE2D7B54DD51D97032293F48BFDEB2D7C79AF5022FEFE03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009B6E8C566CD00054BAFC61744174666511C4F16FA61CDAE17673FC572C8671225A872F4BC049FD32EBE4263B4A19FEEA8C4F89986F158D0D1CF7CB4C45EEAAAFF00A1A38C1240324AEBF04EE53D6B50ED913001266EDF5A0BEBE60D0BC969A81D52F6222E5FBB6E6025B06779C05CAE0FDDFFDF440BCBF543017BF377F00C82E9FA5FE1DD8063CC4CD5B3E2CAF097ECDCFFA64D8B2C9A4C1125882C81DD70BE7A74DE6EFA2C5643F2926610281D55336760DBAFB5EB63147E88C007A481803F5CDCD4769B735D34635D8A4CABC7A2779963030552BB1831709E9489CB12886586AB37E525185D67AC6211B57C3909F3ADBDCF325A1FFD605DEE142468163FBA2C14B6665D241CA53FBE82768</code></pre>
|
||||
<pre><code>answer_with_hash = B351536647DBE892A8BA801D4EA092373BD5B86ABA0D89B54A20F9ECB2FF02EBDCD6FF20BE2C9E9BD6495F55CDAF790C1E0C40559C5E1D9103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001007F0684E7F98BD24A04A854E770D12AB71B62A6F153F061F6C9F75BDDB8E43B11F16DCAF2DFD55D0D27BE22BDC4DD060C4854F0C7A363EC0852040ABA8E076C96741A8BDFBC66DA79D76045E2601952508365C7286500B4E10666E00F1ADB87275971250B3084D865EC7AB1D021732D4CA1925B91F153825C6A9E4286BDB2D8BBD7A1F37DB49D89DF858E46D245010A6FD25893C288EE5A39C68F0F1CDD08A48683BC06C1689C78E644206489AD73BBF6058AA04DBD87408F2C2F0D35041DB01A5827B5EF91EF88C487CD3F2E0C3E874AE6EBA71B38D1E56256A37B6F123F908ABDE96A8FD2FC8131D9F58A5F6286363BC68F76DB643360B50C950BC160AC623CBB7067652F5099F358CE9308
|
||||
answer = BA0D89B54A20F9ECB2FF02EBDCD6FF20BE2C9E9BD6495F55CDAF790C1E0C40559C5E1D9103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001007F0684E7F98BD24A04A854E770D12AB71B62A6F153F061F6C9F75BDDB8E43B11F16DCAF2DFD55D0D27BE22BDC4DD060C4854F0C7A363EC0852040ABA8E076C96741A8BDFBC66DA79D76045E2601952508365C7286500B4E10666E00F1ADB87275971250B3084D865EC7AB1D021732D4CA1925B91F153825C6A9E4286BDB2D8BBD7A1F37DB49D89DF858E46D245010A6FD25893C288EE5A39C68F0F1CDD08A48683BC06C1689C78E644206489AD73BBF6058AA04DBD87408F2C2F0D35041DB01A5827B5EF91EF88C487CD3F2E0C3E874AE6EBA71B38D1E56256A37B6F123F908ABDE96A8FD2FC8131D9F58A5F6286363BC68F76DB643360B50C950BC160AC623CBB7067652F5099F358CE9308</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 B5 59 9A FA 6B AC 2E A9 0A BE E2 D7
|
||||
0010 | B5 4D D5 1D 97 03 22 93 F4 8B FD EB 2D 7C 79 AF
|
||||
0020 | 50 22 FE FE 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 4A 20 F9 EC B2 FF 02 EB DC D6 FF 20
|
||||
0010 | BE 2C 9E 9B D6 49 5F 55 CD AF 79 0C 1E 0C 40 55
|
||||
0020 | 9C 5E 1D 91 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 = BA0D89B5B5599AFA6BAC2EA90ABEE2D7B54DD51D97032293F48BFDEB2D7C79AF5022FEF
|
|||
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 | 9B 6E 8C 56 6C D0 00 54 BA FC 61 74 41 74 66 65
|
||||
0140 | 11 C4 F1 6F A6 1C DA E1 76 73 FC 57 2C 86 71 22
|
||||
0150 | 5A 87 2F 4B C0 49 FD 32 EB E4 26 3B 4A 19 FE EA
|
||||
0160 | 8C 4F 89 98 6F 15 8D 0D 1C F7 CB 4C 45 EE AA AF
|
||||
0170 | F0 0A 1A 38 C1 24 03 24 AE BF 04 EE 53 D6 B5 0E
|
||||
0180 | D9 13 00 12 66 ED F5 A0 BE BE 60 D0 BC 96 9A 81
|
||||
0190 | D5 2F 62 22 E5 FB B6 E6 02 5B 06 77 9C 05 CA E0
|
||||
01A0 | FD DF FD F4 40 BC BF 54 30 17 BF 37 7F 00 C8 2E
|
||||
01B0 | 9F A5 FE 1D D8 06 3C C4 CD 5B 3E 2C AF 09 7E CD
|
||||
01C0 | CF FA 64 D8 B2 C9 A4 C1 12 58 82 C8 1D D7 0B E7
|
||||
01D0 | A7 4D E6 EF A2 C5 64 3F 29 26 61 02 81 D5 53 36
|
||||
01E0 | 76 0D BA FB 5E B6 31 47 E8 8C 00 7A 48 18 03 F5
|
||||
01F0 | CD CD 47 69 B7 35 D3 46 35 D8 A4 CA BC 7A 27 79
|
||||
0200 | 96 30 30 55 2B B1 83 17 09 E9 48 9C B1 28 86 58
|
||||
0210 | 6A B3 7E 52 51 85 D6 7A C6 21 1B 57 C3 90 9F 3A
|
||||
0220 | DB DC F3 25 A1 FF D6 05 DE E1 42 46 81 63 FB A2
|
||||
0230 | C1 4B 66 65</code></pre>
|
||||
0130 | 7F 06 84 E7 F9 8B D2 4A 04 A8 54 E7 70 D1 2A B7
|
||||
0140 | 1B 62 A6 F1 53 F0 61 F6 C9 F7 5B DD B8 E4 3B 11
|
||||
0150 | F1 6D CA F2 DF D5 5D 0D 27 BE 22 BD C4 DD 06 0C
|
||||
0160 | 48 54 F0 C7 A3 63 EC 08 52 04 0A BA 8E 07 6C 96
|
||||
0170 | 74 1A 8B DF BC 66 DA 79 D7 60 45 E2 60 19 52 50
|
||||
0180 | 83 65 C7 28 65 00 B4 E1 06 66 E0 0F 1A DB 87 27
|
||||
0190 | 59 71 25 0B 30 84 D8 65 EC 7A B1 D0 21 73 2D 4C
|
||||
01A0 | A1 92 5B 91 F1 53 82 5C 6A 9E 42 86 BD B2 D8 BB
|
||||
01B0 | D7 A1 F3 7D B4 9D 89 DF 85 8E 46 D2 45 01 0A 6F
|
||||
01C0 | D2 58 93 C2 88 EE 5A 39 C6 8F 0F 1C DD 08 A4 86
|
||||
01D0 | 83 BC 06 C1 68 9C 78 E6 44 20 64 89 AD 73 BB F6
|
||||
01E0 | 05 8A A0 4D BD 87 40 8F 2C 2F 0D 35 04 1D B0 1A
|
||||
01F0 | 58 27 B5 EF 91 EF 88 C4 87 CD 3F 2E 0C 3E 87 4A
|
||||
0200 | E6 EB A7 1B 38 D1 E5 62 56 A3 7B 6F 12 3F 90 8A
|
||||
0210 | BD E9 6A 8F D2 FC 81 31 D9 F5 8A 5F 62 86 36 3B
|
||||
0220 | C6 8F 76 DB 64 33 60 B5 0C 95 0B C1 60 AC 62 3C
|
||||
0230 | BB 70 67 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 = BA0D89B5B5599AFA6BAC2EA90ABEE2D7B54DD51D97032293F48BFDEB2D7C79AF5022FEF
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>B5599AFA6BAC2EA90ABEE2D7B54DD51D</code></td>
|
||||
<td><code>4A20F9ECB2FF02EBDCD6FF20BE2C9E9B</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>97032293F48BFDEB2D7C79AF5022FEFE</code></td>
|
||||
<td><code>D6495F55CDAF790C1E0C40559C5E1D91</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B5B5599AFA6BAC2EA90ABEE2D7B54DD51D97032293F48BFDEB2D7C79AF5022FEF
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE0001009B6E8C566CD00054BAFC6174</code> <code>4174666511C4F16FA61CDAE17673FC57</code> <code>2C8671225A872F4BC049FD32EBE4263B</code> <code>4A19FEEA8C4F89986F158D0D1CF7CB4C</code> <code>45EEAAAFF00A1A38C1240324AEBF04EE</code> <code>53D6B50ED913001266EDF5A0BEBE60D0</code> <code>BC969A81D52F6222E5FBB6E6025B0677</code> <code>9C05CAE0FDDFFDF440BCBF543017BF37</code> <code>7F00C82E9FA5FE1DD8063CC4CD5B3E2C</code> <code>AF097ECDCFFA64D8B2C9A4C1125882C8</code> <code>1DD70BE7A74DE6EFA2C5643F29266102</code> <code>81D55336760DBAFB5EB63147E88C007A</code> <code>481803F5CDCD4769B735D34635D8A4CA</code> <code>BC7A2779963030552BB1831709E9489C</code> <code>B12886586AB37E525185D67AC6211B57</code> <code>C3909F3ADBDCF325A1FFD605DEE14246</code><br> <code>8163FBA2</code></td>
|
||||
<td><code>FE0001007F0684E7F98BD24A04A854E7</code> <code>70D12AB71B62A6F153F061F6C9F75BDD</code> <code>B8E43B11F16DCAF2DFD55D0D27BE22BD</code> <code>C4DD060C4854F0C7A363EC0852040ABA</code> <code>8E076C96741A8BDFBC66DA79D76045E2</code> <code>601952508365C7286500B4E10666E00F</code> <code>1ADB87275971250B3084D865EC7AB1D0</code> <code>21732D4CA1925B91F153825C6A9E4286</code> <code>BDB2D8BBD7A1F37DB49D89DF858E46D2</code> <code>45010A6FD25893C288EE5A39C68F0F1C</code> <code>DD08A48683BC06C1689C78E644206489</code> <code>AD73BBF6058AA04DBD87408F2C2F0D35</code> <code>041DB01A5827B5EF91EF88C487CD3F2E</code> <code>0C3E874AE6EBA71B38D1E56256A37B6F</code> <code>123F908ABDE96A8FD2FC8131D9F58A5F</code> <code>6286363BC68F76DB643360B50C950BC1</code><br> <code>60AC623C</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>C14B6665</code> (1701202881 in decimal)</td>
|
||||
<td><code>BB706765</code> (1701277883 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B5B5599AFA6BAC2EA90ABEE2D7B54DD51D97032293F48BFDEB2D7C79AF5022FEF
|
|||
<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 = 6074DE2CD93A3DD76723B23E1AC824FB4510736FFBC794C798108AB034F46FB46E7F7FE8BCD9DFBC01B346AF766D8F2B683F89C7ACA0FB85C3ECC699F3095E20659498E9074A5456CC395F9B7E936D94BDE4468C8DD0EC41ADBC0EC34360563B7365369A5432DB8DE1564F27B51890A57C99FC7AA6C6D6F7F6799947526A50C46C97FFA62272008B7831A903AC2857A3CDA6FD786CE10643E58613145B3E88E0E2E863839C09E27899F68952E12B15EE2A27999527214BBEEF952DA0AB84CCFC382310BD185BF0A930DF27387445ED31D8EBB33339FC01EC3CA5EB60A389D2AC470D71D00C5CEDE2EEB0E5A5E902C27EFCA01BB5CFD35093BAF877C9F0A4D632</code></pre>
|
||||
<pre><code>b = F9D04EC322F3D2317FA17BCCD880A0C842DB3FF30721787E9BA6ADEE64C8A240184EA008A03B749E5182D9BDF952D6B2009F83A943260AB777875BBD437B7AE0D57B1785B9D8CE129DA31EEEB81707B44C8E9FDD64EF7D572D04B344BC110FF55CB55A40D685BCF1FF9A8D503EB4CFDE50EBABF31A8F11BEF6D85C32C13EEA1EACCAC7CD1DA4FD07911BB5CCB090E86BE209E96BEEE48D8CB4CA4EB2C7C900B7311279A37E821FE2E27BB6CB1D57ACF2431BBDBDABFE5EA4AC4AC7D42FC84BE08F9607FDD86A7C6D421CB13B97FC1DEAE10A44466628CC89FF1E856D0B5D539A6904C4E274403AB51FAB3014DFA8B27CD9D4DD653B0214672D82AC2C7B25D927</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 = 6BB1E74F256AA9E11A6D1D408213ADD2D81809FBF74D24A61392948C0C0D9814CD9FF9ABED79033B4E10E27EA96121F92FB3FE6CE8224AC2ED82B0BABBC70342D903B8EEDDBC6DB5D5AFAE214A3C141770C1CE2CDCEA1E223D72ACB07F53C4583AC19A3FB61D6629DFE0BE02E5C1817DCC07ED57A759F28AF0C0018F8FFFF20A8E686D7F08B8EF3D1CC2310A81E1E577A408A12BFEC439966DBC8D658FA571399B728325897B4CC3566D6ABA99A688A7011206997BB5970B4CFFBA3AC796FD182CD6C51D9981AB1718F513D95DE2C9016C2841AFBCDB9651D919921D57B64E6E06127D99051FD4E83FD50939B2C15AD092D7D681ABED7C49CD5A0BBBAD40D83C</code></pre>
|
||||
<pre><code>g_b = BB339605CD86E283C7378EBA3A44A02F02F8B98AC631735206F251F67E53F0D3ADD1774D919261C6968581306E813760BEF605A8F882143B4AA80EB6B77DB9E0A3AA0F7F0DE6B2CD9B8386924C37E8C609372ABCF27BC648846413CFBE4419A30ED3D995D742E074F2688689AB545CBB7500BD0E513D694E0425B9FF5CB00E1A610E9A7159EC47E2714F9D832C93E09FBB3E056AF48DCF02EBC168E88FCA9BF88D9516210B22192B0A589775A3C441CCEA4C7B9BCBC9D702BD13C4D0D6202EC2AC3548983563D50156B60019E8ACCFDC007628FBAE3B79F1CAB7A9E0CCC8777B6F6C49187AD784701DD63E44EF2A04A07BFE3596EF03DC24D6D204F73905A7FD</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 B5 59 9A FA 6B AC 2E A9 0A BE E2 D7
|
||||
0010 | B5 4D D5 1D 97 03 22 93 F4 8B FD EB 2D 7C 79 AF
|
||||
0020 | 50 22 FE FE 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 6B B1 E7 4F 25 6A A9 E1 1A 6D 1D 40 82 13 AD D2
|
||||
0040 | D8 18 09 FB F7 4D 24 A6 13 92 94 8C 0C 0D 98 14
|
||||
0050 | CD 9F F9 AB ED 79 03 3B 4E 10 E2 7E A9 61 21 F9
|
||||
0060 | 2F B3 FE 6C E8 22 4A C2 ED 82 B0 BA BB C7 03 42
|
||||
0070 | D9 03 B8 EE DD BC 6D B5 D5 AF AE 21 4A 3C 14 17
|
||||
0080 | 70 C1 CE 2C DC EA 1E 22 3D 72 AC B0 7F 53 C4 58
|
||||
0090 | 3A C1 9A 3F B6 1D 66 29 DF E0 BE 02 E5 C1 81 7D
|
||||
00A0 | CC 07 ED 57 A7 59 F2 8A F0 C0 01 8F 8F FF F2 0A
|
||||
00B0 | 8E 68 6D 7F 08 B8 EF 3D 1C C2 31 0A 81 E1 E5 77
|
||||
00C0 | A4 08 A1 2B FE C4 39 96 6D BC 8D 65 8F A5 71 39
|
||||
00D0 | 9B 72 83 25 89 7B 4C C3 56 6D 6A BA 99 A6 88 A7
|
||||
00E0 | 01 12 06 99 7B B5 97 0B 4C FF BA 3A C7 96 FD 18
|
||||
00F0 | 2C D6 C5 1D 99 81 AB 17 18 F5 13 D9 5D E2 C9 01
|
||||
0100 | 6C 28 41 AF BC DB 96 51 D9 19 92 1D 57 B6 4E 6E
|
||||
0110 | 06 12 7D 99 05 1F D4 E8 3F D5 09 39 B2 C1 5A D0
|
||||
0120 | 92 D7 D6 81 AB ED 7C 49 CD 5A 0B BB AD 40 D8 3C</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 4A 20 F9 EC B2 FF 02 EB DC D6 FF 20
|
||||
0010 | BE 2C 9E 9B D6 49 5F 55 CD AF 79 0C 1E 0C 40 55
|
||||
0020 | 9C 5E 1D 91 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | BB 33 96 05 CD 86 E2 83 C7 37 8E BA 3A 44 A0 2F
|
||||
0040 | 02 F8 B9 8A C6 31 73 52 06 F2 51 F6 7E 53 F0 D3
|
||||
0050 | AD D1 77 4D 91 92 61 C6 96 85 81 30 6E 81 37 60
|
||||
0060 | BE F6 05 A8 F8 82 14 3B 4A A8 0E B6 B7 7D B9 E0
|
||||
0070 | A3 AA 0F 7F 0D E6 B2 CD 9B 83 86 92 4C 37 E8 C6
|
||||
0080 | 09 37 2A BC F2 7B C6 48 84 64 13 CF BE 44 19 A3
|
||||
0090 | 0E D3 D9 95 D7 42 E0 74 F2 68 86 89 AB 54 5C BB
|
||||
00A0 | 75 00 BD 0E 51 3D 69 4E 04 25 B9 FF 5C B0 0E 1A
|
||||
00B0 | 61 0E 9A 71 59 EC 47 E2 71 4F 9D 83 2C 93 E0 9F
|
||||
00C0 | BB 3E 05 6A F4 8D CF 02 EB C1 68 E8 8F CA 9B F8
|
||||
00D0 | 8D 95 16 21 0B 22 19 2B 0A 58 97 75 A3 C4 41 CC
|
||||
00E0 | EA 4C 7B 9B CB C9 D7 02 BD 13 C4 D0 D6 20 2E C2
|
||||
00F0 | AC 35 48 98 35 63 D5 01 56 B6 00 19 E8 AC CF DC
|
||||
0100 | 00 76 28 FB AE 3B 79 F1 CA B7 A9 E0 CC C8 77 7B
|
||||
0110 | 6F 6C 49 18 7A D7 84 70 1D D6 3E 44 EF 2A 04 A0
|
||||
0120 | 7B FE 35 96 EF 03 DC 24 D6 D2 04 F7 39 05 A7 FD</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 = BA0D89B5B5599AFA6BAC2EA90ABEE2D7B54DD51D97032293F48BFDEB2D7C79AF5022FEF
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>B5599AFA6BAC2EA90ABEE2D7B54DD51D</code></td>
|
||||
<td><code>4A20F9ECB2FF02EBDCD6FF20BE2C9E9B</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>97032293F48BFDEB2D7C79AF5022FEFE</code></td>
|
||||
<td><code>D6495F55CDAF790C1E0C40559C5E1D91</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE0001006BB1E74F256AA9E11A6D1D40</code> <code>8213ADD2D81809FBF74D24A61392948C</code> <code>0C0D9814CD9FF9ABED79033B4E10E27E</code> <code>A96121F92FB3FE6CE8224AC2ED82B0BA</code> <code>BBC70342D903B8EEDDBC6DB5D5AFAE21</code> <code>4A3C141770C1CE2CDCEA1E223D72ACB0</code> <code>7F53C4583AC19A3FB61D6629DFE0BE02</code> <code>E5C1817DCC07ED57A759F28AF0C0018F</code> <code>8FFFF20A8E686D7F08B8EF3D1CC2310A</code> <code>81E1E577A408A12BFEC439966DBC8D65</code> <code>8FA571399B728325897B4CC3566D6ABA</code> <code>99A688A7011206997BB5970B4CFFBA3A</code> <code>C796FD182CD6C51D9981AB1718F513D9</code> <code>5DE2C9016C2841AFBCDB9651D919921D</code> <code>57B64E6E06127D99051FD4E83FD50939</code> <code>B2C15AD092D7D681ABED7C49CD5A0BBB</code><br> <code>AD40D83C</code></td>
|
||||
<td><code>FE000100BB339605CD86E283C7378EBA</code> <code>3A44A02F02F8B98AC631735206F251F6</code> <code>7E53F0D3ADD1774D919261C696858130</code> <code>6E813760BEF605A8F882143B4AA80EB6</code> <code>B77DB9E0A3AA0F7F0DE6B2CD9B838692</code> <code>4C37E8C609372ABCF27BC648846413CF</code> <code>BE4419A30ED3D995D742E074F2688689</code> <code>AB545CBB7500BD0E513D694E0425B9FF</code> <code>5CB00E1A610E9A7159EC47E2714F9D83</code> <code>2C93E09FBB3E056AF48DCF02EBC168E8</code> <code>8FCA9BF88D9516210B22192B0A589775</code> <code>A3C441CCEA4C7B9BCBC9D702BD13C4D0</code> <code>D6202EC2AC3548983563D50156B60019</code> <code>E8ACCFDC007628FBAE3B79F1CAB7A9E0</code> <code>CCC8777B6F6C49187AD784701DD63E44</code> <code>EF2A04A07BFE3596EF03DC24D6D204F7</code><br> <code>3905A7FD</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 = BA0D89B5B5599AFA6BAC2EA90ABEE2D7B54DD51D97032293F48BFDEB2D7C79AF5022FEF
|
|||
<!-- 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 = 54B64366B5599AFA6BAC2EA90ABEE2D7B54DD51D97032293F48BFDEB2D7C79AF5022FEFE0000000000000000FE0001006BB1E74F256AA9E11A6D1D408213ADD2D81809FBF74D24A61392948C0C0D9814CD9FF9ABED79033B4E10E27EA96121F92FB3FE6CE8224AC2ED82B0BABBC70342D903B8EEDDBC6DB5D5AFAE214A3C141770C1CE2CDCEA1E223D72ACB07F53C4583AC19A3FB61D6629DFE0BE02E5C1817DCC07ED57A759F28AF0C0018F8FFFF20A8E686D7F08B8EF3D1CC2310A81E1E577A408A12BFEC439966DBC8D658FA571399B728325897B4CC3566D6ABA99A688A7011206997BB5970B4CFFBA3AC796FD182CD6C51D9981AB1718F513D95DE2C9016C2841AFBCDB9651D919921D57B64E6E06127D99051FD4E83FD50939B2C15AD092D7D681ABED7C49CD5A0BBBAD40D83C
|
||||
padding = 3E96302300ACDA40DA16C938
|
||||
tmp_aes_key = 1958F662C25BC962035DCDB03466EEE5912D0A27078AC3B48D09FF58C35597ED
|
||||
tmp_aes_iv = 14EAA9C9B97D2BFABEF57C84CEE9FBE743EA0FA0F91CCE32E91A66683BAE9AB8</code></pre>
|
||||
<pre><code>data = 54B643664A20F9ECB2FF02EBDCD6FF20BE2C9E9BD6495F55CDAF790C1E0C40559C5E1D910000000000000000FE000100BB339605CD86E283C7378EBA3A44A02F02F8B98AC631735206F251F67E53F0D3ADD1774D919261C6968581306E813760BEF605A8F882143B4AA80EB6B77DB9E0A3AA0F7F0DE6B2CD9B8386924C37E8C609372ABCF27BC648846413CFBE4419A30ED3D995D742E074F2688689AB545CBB7500BD0E513D694E0425B9FF5CB00E1A610E9A7159EC47E2714F9D832C93E09FBB3E056AF48DCF02EBC168E88FCA9BF88D9516210B22192B0A589775A3C441CCEA4C7B9BCBC9D702BD13C4D0D6202EC2AC3548983563D50156B60019E8ACCFDC007628FBAE3B79F1CAB7A9E0CCC8777B6F6C49187AD784701DD63E44EF2A04A07BFE3596EF03DC24D6D204F73905A7FD
|
||||
padding = 651D0C05CC5A53A6415004D5
|
||||
tmp_aes_key = 59209748A5A4BB1CBE9E3C24FEDE8183AF70A6B0ED09D6B2E9F56E4A9FB8CFB8
|
||||
tmp_aes_iv = 5BB9E9E40F27C0F258D3A1C86CBEF81223618B2BCECEF465E0ACF956820522D4</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 = 307D884EFAE1A7E551D15DF89C96B6DF12AFA5047B19ABB5B726FB9BC3D802CC4546EE5E6AB8928D90869B6C387E0DECF372DC9F937E0ADA1622BBFE64647BBE8291B701530523C7D2A19F704300EE2199FF065F2A04B9598873C37B28978B93B9C461F7B13ECDEEAA45905F453E5A624E97B4FEB56CA1542F66187C22624C4BE1F99A41601E5DCD58410A52A4A02507909FCCF2DACE9A22D1EA6722141705899213C1E8FF168B430F0D13199F3D5E2F7FE6D535CBEFCB727D20B967BF7C90DDA5B96D56B545D98F669DD529FC02C64C7A4E2C0EA4AE5D6DAA6D0ABA0B15C5859F897B8D26DA653772EAACAF7322BB98DDE764B79A5CE4B32AC8E2CFA8D9B31470CE9BBDB501CFDCBCE5D3E35B5C431C6FCD64EA05D7AF5483E1953DCDBB1C04CF3E759A88D289BC9B3A74CEDF1F88D094263B2899A4EE392E8632C96834661D1D1CDC1D675B34E37CF92770780E5E03</code></pre>
|
||||
<pre><code>encrypted_data = 5FCF96B77257F60B8427A7B416803C0FF96024C66966AAB2DCB0A40C2EC048173218735597A2353C37C38D648333A9BFC6F1912A886AF71D1C616B92C2233EDE9F1CF6C8868A92649F9F45A05E5ADF8E4D5BE63821CB35DAB1397E884C8638259A98DBCF913416C082F50EDA3C30D642DDB928D0CEF26BD57A06444081AAFE92061F991F4B81F8D1F8D44158A4CD3D220DB402687ADB26DB0508F47C134736354BFB9610515BB258228F182EE6C0CD746B940F1A5690EA169C80C6FC186603399DD5A5D1820C5BEE0DDF28A5BEA57B293064508D6D2D2AD330345189AEA7A21DE6101A92165319BB0F40B3055DDF92752ABC55D6E2D7285398F6F7EF90F6588F54B4F2718126C5C2CB5A954052ACCF22800647962409F3752B8F79D4E600E69C28B626EAEC61037BD5FF423E06093E14F234F346F66223023CED472884276E97AFFB1FF98ACA6C23E56EE30FF1086631</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 14 B4 04 00 C1 4B 66 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 B5 59 9A FA 6B AC 2E A9
|
||||
0020 | 0A BE E2 D7 B5 4D D5 1D 97 03 22 93 F4 8B FD EB
|
||||
0030 | 2D 7C 79 AF 50 22 FE FE FE 50 01 00 30 7D 88 4E
|
||||
0040 | FA E1 A7 E5 51 D1 5D F8 9C 96 B6 DF 12 AF A5 04
|
||||
0050 | 7B 19 AB B5 B7 26 FB 9B C3 D8 02 CC 45 46 EE 5E
|
||||
0060 | 6A B8 92 8D 90 86 9B 6C 38 7E 0D EC F3 72 DC 9F
|
||||
0070 | 93 7E 0A DA 16 22 BB FE 64 64 7B BE 82 91 B7 01
|
||||
0080 | 53 05 23 C7 D2 A1 9F 70 43 00 EE 21 99 FF 06 5F
|
||||
0090 | 2A 04 B9 59 88 73 C3 7B 28 97 8B 93 B9 C4 61 F7
|
||||
00A0 | B1 3E CD EE AA 45 90 5F 45 3E 5A 62 4E 97 B4 FE
|
||||
00B0 | B5 6C A1 54 2F 66 18 7C 22 62 4C 4B E1 F9 9A 41
|
||||
00C0 | 60 1E 5D CD 58 41 0A 52 A4 A0 25 07 90 9F CC F2
|
||||
00D0 | DA CE 9A 22 D1 EA 67 22 14 17 05 89 92 13 C1 E8
|
||||
00E0 | FF 16 8B 43 0F 0D 13 19 9F 3D 5E 2F 7F E6 D5 35
|
||||
00F0 | CB EF CB 72 7D 20 B9 67 BF 7C 90 DD A5 B9 6D 56
|
||||
0100 | B5 45 D9 8F 66 9D D5 29 FC 02 C6 4C 7A 4E 2C 0E
|
||||
0110 | A4 AE 5D 6D AA 6D 0A BA 0B 15 C5 85 9F 89 7B 8D
|
||||
0120 | 26 DA 65 37 72 EA AC AF 73 22 BB 98 DD E7 64 B7
|
||||
0130 | 9A 5C E4 B3 2A C8 E2 CF A8 D9 B3 14 70 CE 9B BD
|
||||
0140 | B5 01 CF DC BC E5 D3 E3 5B 5C 43 1C 6F CD 64 EA
|
||||
0150 | 05 D7 AF 54 83 E1 95 3D CD BB 1C 04 CF 3E 75 9A
|
||||
0160 | 88 D2 89 BC 9B 3A 74 CE DF 1F 88 D0 94 26 3B 28
|
||||
0170 | 99 A4 EE 39 2E 86 32 C9 68 34 66 1D 1D 1C DC 1D
|
||||
0180 | 67 5B 34 E3 7C F9 27 70 78 0E 5E 03</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 90 E8 0B 00 BB 70 67 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 4A 20 F9 EC B2 FF 02 EB
|
||||
0020 | DC D6 FF 20 BE 2C 9E 9B D6 49 5F 55 CD AF 79 0C
|
||||
0030 | 1E 0C 40 55 9C 5E 1D 91 FE 50 01 00 5F CF 96 B7
|
||||
0040 | 72 57 F6 0B 84 27 A7 B4 16 80 3C 0F F9 60 24 C6
|
||||
0050 | 69 66 AA B2 DC B0 A4 0C 2E C0 48 17 32 18 73 55
|
||||
0060 | 97 A2 35 3C 37 C3 8D 64 83 33 A9 BF C6 F1 91 2A
|
||||
0070 | 88 6A F7 1D 1C 61 6B 92 C2 23 3E DE 9F 1C F6 C8
|
||||
0080 | 86 8A 92 64 9F 9F 45 A0 5E 5A DF 8E 4D 5B E6 38
|
||||
0090 | 21 CB 35 DA B1 39 7E 88 4C 86 38 25 9A 98 DB CF
|
||||
00A0 | 91 34 16 C0 82 F5 0E DA 3C 30 D6 42 DD B9 28 D0
|
||||
00B0 | CE F2 6B D5 7A 06 44 40 81 AA FE 92 06 1F 99 1F
|
||||
00C0 | 4B 81 F8 D1 F8 D4 41 58 A4 CD 3D 22 0D B4 02 68
|
||||
00D0 | 7A DB 26 DB 05 08 F4 7C 13 47 36 35 4B FB 96 10
|
||||
00E0 | 51 5B B2 58 22 8F 18 2E E6 C0 CD 74 6B 94 0F 1A
|
||||
00F0 | 56 90 EA 16 9C 80 C6 FC 18 66 03 39 9D D5 A5 D1
|
||||
0100 | 82 0C 5B EE 0D DF 28 A5 BE A5 7B 29 30 64 50 8D
|
||||
0110 | 6D 2D 2A D3 30 34 51 89 AE A7 A2 1D E6 10 1A 92
|
||||
0120 | 16 53 19 BB 0F 40 B3 05 5D DF 92 75 2A BC 55 D6
|
||||
0130 | E2 D7 28 53 98 F6 F7 EF 90 F6 58 8F 54 B4 F2 71
|
||||
0140 | 81 26 C5 C2 CB 5A 95 40 52 AC CF 22 80 06 47 96
|
||||
0150 | 24 09 F3 75 2B 8F 79 D4 E6 00 E6 9C 28 B6 26 EA
|
||||
0160 | EC 61 03 7B D5 FF 42 3E 06 09 3E 14 F2 34 F3 46
|
||||
0170 | F6 62 23 02 3C ED 47 28 84 27 6E 97 AF FB 1F F9
|
||||
0180 | 8A CA 6C 23 E5 6E E3 0F F1 08 66 31</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>14B40400C14B6665</code></td>
|
||||
<td><code>90E80B00BB706765</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>B5599AFA6BAC2EA90ABEE2D7B54DD51D</code></td>
|
||||
<td><code>4A20F9ECB2FF02EBDCD6FF20BE2C9E9B</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>97032293F48BFDEB2D7C79AF5022FEFE</code></td>
|
||||
<td><code>D6495F55CDAF790C1E0C40559C5E1D91</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE500100307D884EFAE1A7E551D15DF8</code> <code>9C96B6DF12AFA5047B19ABB5B726FB9B</code> <code>C3D802CC4546EE5E6AB8928D90869B6C</code> <code>387E0DECF372DC9F937E0ADA1622BBFE</code> <code>64647BBE8291B701530523C7D2A19F70</code> <code>4300EE2199FF065F2A04B9598873C37B</code> <code>28978B93B9C461F7B13ECDEEAA45905F</code> <code>453E5A624E97B4FEB56CA1542F66187C</code> <code>22624C4BE1F99A41601E5DCD58410A52</code> <code>A4A02507909FCCF2DACE9A22D1EA6722</code> <code>141705899213C1E8FF168B430F0D1319</code> <code>9F3D5E2F7FE6D535CBEFCB727D20B967</code> <code>BF7C90DDA5B96D56B545D98F669DD529</code> <code>FC02C64C7A4E2C0EA4AE5D6DAA6D0ABA</code> <code>0B15C5859F897B8D26DA653772EAACAF</code> <code>7322BB98DDE764B79A5CE4B32AC8E2CF</code> <code>A8D9B31470CE9BBDB501CFDCBCE5D3E3</code> <code>5B5C431C6FCD64EA05D7AF5483E1953D</code> <code>CDBB1C04CF3E759A88D289BC9B3A74CE</code> <code>DF1F88D094263B2899A4EE392E8632C9</code> <code>6834661D1D1CDC1D675B34E37CF92770</code><br> <code>780E5E03</code></td>
|
||||
<td><code>FE5001005FCF96B77257F60B8427A7B4</code> <code>16803C0FF96024C66966AAB2DCB0A40C</code> <code>2EC048173218735597A2353C37C38D64</code> <code>8333A9BFC6F1912A886AF71D1C616B92</code> <code>C2233EDE9F1CF6C8868A92649F9F45A0</code> <code>5E5ADF8E4D5BE63821CB35DAB1397E88</code> <code>4C8638259A98DBCF913416C082F50EDA</code> <code>3C30D642DDB928D0CEF26BD57A064440</code> <code>81AAFE92061F991F4B81F8D1F8D44158</code> <code>A4CD3D220DB402687ADB26DB0508F47C</code> <code>134736354BFB9610515BB258228F182E</code> <code>E6C0CD746B940F1A5690EA169C80C6FC</code> <code>186603399DD5A5D1820C5BEE0DDF28A5</code> <code>BEA57B293064508D6D2D2AD330345189</code> <code>AEA7A21DE6101A92165319BB0F40B305</code> <code>5DDF92752ABC55D6E2D7285398F6F7EF</code> <code>90F6588F54B4F2718126C5C2CB5A9540</code> <code>52ACCF22800647962409F3752B8F79D4</code> <code>E600E69C28B626EAEC61037BD5FF423E</code> <code>06093E14F234F346F66223023CED4728</code> <code>84276E97AFFB1FF98ACA6C23E56EE30F</code><br> <code>F1086631</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 = 2292DBAEE0BFC2859A6AE19B7FEACD33A657DDBB02A7234938AC91B21AED8B368D313899ACFC9CC36CBF2C3373ADAF67B649746145FF92DE00E8AB04C96E266B616C009B389952401D91780937EFCFDB4BD5C0E0657DE4C3B23184C9D5329DB7FF1A8A72B90B9643DD96385C0A3783C1CC5DB095C8E42E6097B92689498368ECDDC023FF6F12E9602F994D37B52B66D8304A269BEE755D6D78EB3794A7DCEB56D32B231A982DED20D180B23295C0E14F0E72133A0A7BF16F4A6801F6F215268DAEBD0674942E4D2DD7A2D789DD79ECE00D9404933FEFA989667A527B4251D8501A7259A580EF50DF95A4B5DE07271BBD00C561E488E3AA38ED9C2EFBCADC97EC</code></pre>
|
||||
<pre><code>auth_key = B84BDBD3B935E5AE0DF7DFEF0EF5B7B736C91D5BC889B8D9D2AFF90A68A6F0E41E9073E7CDFB27A831A958BB6F8DBB911E04724A6F0CA1DBF06AE4D515810600D48BE09E4D69D999AE38C30A58C28D99978C3380EAA2A658ACA2D706E3CC1CB04FBFC675A0BA05D27C5B8C77E28F400B3AA6CF986A7D3129E79507C96AAA6C963AA38963864A2806EF4423B80DAF3CD1936AF9ABBEA039504112F86AFF06D75D20879A7C2B28882D0D16E2086543032A97E97761AD75344E5941FD81C83C73861764DD5AAD7E0C2611A44A7BC5BFB01ECA3F9F4F597D7856073EB977B95871EF4F6EB0A96F503EA3F02DA65B5ADD6ECB6E4B5145108946F42FEC906CE41D4774</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 34 28 F4 C1 4B 66 65
|
||||
0010 | 7C 00 00 00 34 F7 CB 3B B5 59 9A FA 6B AC 2E A9
|
||||
0020 | 0A BE E2 D7 B5 4D D5 1D 97 03 22 93 F4 8B FD EB
|
||||
0030 | 2D 7C 79 AF 50 22 FE FE C3 82 F8 B3 46 D5 E0 CA
|
||||
0040 | BF 03 1B 9F 7D 07 1A C8</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 6C 17 F6 BB 70 67 65
|
||||
0010 | 44 00 00 00 34 F7 CB 3B 4A 20 F9 EC B2 FF 02 EB
|
||||
0020 | DC D6 FF 20 BE 2C 9E 9B D6 49 5F 55 CD AF 79 0C
|
||||
0030 | 1E 0C 40 55 9C 5E 1D 91 9D 52 64 57 64 A5 68 75
|
||||
0040 | 94 59 22 9B 31 A2 94 E8</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>013428F4C14B6665</code></td>
|
||||
<td><code>016C17F6BB706765</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>7C000000</code> (124 in decimal)</td>
|
||||
<td><code>44000000</code> (68 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>B5599AFA6BAC2EA90ABEE2D7B54DD51D</code></td>
|
||||
<td><code>4A20F9ECB2FF02EBDCD6FF20BE2C9E9B</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>97032293F48BFDEB2D7C79AF5022FEFE</code></td>
|
||||
<td><code>D6495F55CDAF790C1E0C40559C5E1D91</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>C382F8B346D5E0CABF031B9F7D071AC8</code></td>
|
||||
<td><code>9D52645764A568759459229B31A294E8</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>
|
||||
|
|
|
@ -477,9 +477,6 @@ i.icon {
|
|||
border: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
.tm-header-action.tm-dropdown > .dropdown-menu {
|
||||
padding: 6px 0;
|
||||
}
|
||||
.tm-dropdown > .dropdown-backdrop {
|
||||
z-index: 89;
|
||||
}
|
||||
|
@ -487,15 +484,11 @@ i.icon {
|
|||
display: block;
|
||||
position: relative;
|
||||
padding: 8px 60px 8px 14px;
|
||||
line-height: 20px;
|
||||
color: var(--dropdown-color);
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
clear: both;
|
||||
}
|
||||
.tm-dropdown > .dropdown-menu > li > .dropdown-menu-item.icon-before {
|
||||
padding-left: 46px;
|
||||
}
|
||||
.tm-dropdown > .dropdown-menu > li > .dropdown-menu-item[data-counter]:after {
|
||||
content: attr(data-counter);
|
||||
display: inline-block;
|
||||
|
@ -524,14 +517,6 @@ i.icon {
|
|||
right: 14px;
|
||||
top: 14px;
|
||||
}
|
||||
.tm-header-action.tm-dropdown > .dropdown-menu > li > .dropdown-menu-item.icon-before:before {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin: 8px 13px;
|
||||
}
|
||||
|
||||
|
||||
#aj_content {
|
||||
|
@ -621,6 +606,9 @@ i.icon {
|
|||
width: 100%;
|
||||
min-width: fit-content;
|
||||
}
|
||||
.tm-header-actions .tm-dropdown > .dropdown-menu > li > .dropdown-menu-item {
|
||||
padding-right: 28px;
|
||||
}
|
||||
.tm-header-button {
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
|
|
Loading…
Add table
Reference in a new issue