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
0a30d25d42
commit
527e3ae24c
7 changed files with 245 additions and 279 deletions
|
@ -466,8 +466,8 @@
|
|||
<li>Added <a href="/constructor/businessWeeklyOpen">businessWeeklyOpen</a> - </li>
|
||||
<li>Added <a href="/constructor/businessWorkHours">businessWorkHours</a> - </li>
|
||||
<li>Added <a href="/constructor/businessLocation">businessLocation</a> - </li>
|
||||
<li>Added <a href="/constructor/inputBusinessRecipients">inputBusinessRecipients</a> - </li>
|
||||
<li>Added <a href="/constructor/businessRecipients">businessRecipients</a> - </li>
|
||||
<li>Added <a href="/constructor/inputBusinessRecipients">inputBusinessRecipients</a> - Specifies the chats that <strong>can</strong> receive Telegram Business <a href="/api/business#away-message">away »</a> and <a href="/api/business#greeting-message">greeting »</a> messages.</li>
|
||||
<li>Added <a href="/constructor/businessRecipients">businessRecipients</a> - Specifies the chats that <strong>can</strong> receive Telegram Business <a href="/api/business#away-message">away »</a> and <a href="/api/business#greeting-message">greeting »</a> messages.</li>
|
||||
<li>Added <a href="/constructor/businessAwayMessageScheduleAlways">businessAwayMessageScheduleAlways</a> - Always send <a href="/api/business#away-messages">Telegram Business away messages</a> to users writing to us in private.</li>
|
||||
<li>Added <a href="/constructor/businessAwayMessageScheduleOutsideWorkHours">businessAwayMessageScheduleOutsideWorkHours</a> - Send <a href="/api/business#away-messages">Telegram Business away messages</a> to users writing to us in private outside of the configured <a href="/api/business#opening-hours">Telegram Business working hours</a>.</li>
|
||||
<li>Added <a href="/constructor/businessAwayMessageScheduleCustom">businessAwayMessageScheduleCustom</a> - Send <a href="/api/business#away-messages">Telegram Business away messages</a> to users writing to us in private in the specified time span.</li>
|
||||
|
|
|
@ -4,32 +4,10 @@
|
|||
<meta charset="utf-8">
|
||||
<title>businessRecipients</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields
|
||||
existing_chats
|
||||
flags.0?true
|
||||
|
||||
new_chats
|
||||
flags.1?true…">
|
||||
<meta property="description" content="Specifies the chats that can receive Telegram Business away » and greeting » messages. If exclude_selected is set, specifies all chats that cannot receive Telegram Business away » and greeting » messages.">
|
||||
<meta property="og:title" content="businessRecipients">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields
|
||||
existing_chats
|
||||
flags.0?true
|
||||
|
||||
new_chats
|
||||
flags.1?true…">
|
||||
<meta property="og:description" content="Specifies the chats that can receive Telegram Business away » and greeting » messages. If exclude_selected is set, specifies all chats that cannot receive Telegram Business away » and greeting » messages.">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -64,7 +42,9 @@ flags.1?true…">
|
|||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/businessRecipients" >businessRecipients</a></li></ul></div>
|
||||
<h1 id="dev_page_title">businessRecipients</h1>
|
||||
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<div id="dev_page_content"><p>Specifies the chats that <strong>can</strong> receive Telegram Business <a href="/api/business#away-message">away »</a> and <a href="/api/business#greeting-message">greeting »</a> messages.</p>
|
||||
<p>If <code>exclude_selected</code> is set, specifies all chats that <strong>cannot</strong> receive Telegram Business <a href="/api/business#away-message">away »</a> and <a href="/api/business#greeting-message">greeting »</a> messages.</p>
|
||||
<p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 181 <b class="caret"></b></a>
|
||||
|
@ -95,37 +75,40 @@ flags.1?true…">
|
|||
<tr>
|
||||
<td><strong>existing_chats</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
<td>All existing private chats.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>new_chats</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
<td>All new private chats.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>contacts</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>All private chats with contacts.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>non_contacts</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
<td>All private chats with non-contacts.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>exclude_selected</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
<td>If set, inverts the selection.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>users</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>></td>
|
||||
<td> </td>
|
||||
<td>Only private chats with the specified users.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/BusinessRecipients">BusinessRecipients</a></p></div>
|
||||
<p><a href="/type/BusinessRecipients">BusinessRecipients</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#business" id="business" name="business"><i class="anchor-icon"></i></a><a href="/api/business">Business</a></h4>
|
||||
<p>Users can turn their Telegram account into a business account, gaining access to business features such as opening hours, location, quick replies, automated messages, custom start page, chatbot support, and more.</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -4,32 +4,10 @@
|
|||
<meta charset="utf-8">
|
||||
<title>inputBusinessRecipients</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields
|
||||
existing_chats
|
||||
flags.0?true
|
||||
|
||||
new_chats
|
||||
flags.1?true…">
|
||||
<meta property="description" content="Specifies the chats that can receive Telegram Business away » and greeting » messages. If exclude_selected is set, specifies all chats that cannot receive Telegram Business away » and greeting » messages.">
|
||||
<meta property="og:title" content="inputBusinessRecipients">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields
|
||||
existing_chats
|
||||
flags.0?true
|
||||
|
||||
new_chats
|
||||
flags.1?true…">
|
||||
<meta property="og:description" content="Specifies the chats that can receive Telegram Business away » and greeting » messages. If exclude_selected is set, specifies all chats that cannot receive Telegram Business away » and greeting » messages.">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -64,7 +42,9 @@ flags.1?true…">
|
|||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputBusinessRecipients" >inputBusinessRecipients</a></li></ul></div>
|
||||
<h1 id="dev_page_title">inputBusinessRecipients</h1>
|
||||
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<div id="dev_page_content"><p>Specifies the chats that <strong>can</strong> receive Telegram Business <a href="/api/business#away-message">away »</a> and <a href="/api/business#greeting-message">greeting »</a> messages.</p>
|
||||
<p>If <code>exclude_selected</code> is set, specifies all chats that <strong>cannot</strong> receive Telegram Business <a href="/api/business#away-message">away »</a> and <a href="/api/business#greeting-message">greeting »</a> messages.</p>
|
||||
<p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 181 <b class="caret"></b></a>
|
||||
|
@ -95,37 +75,40 @@ flags.1?true…">
|
|||
<tr>
|
||||
<td><strong>existing_chats</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
<td>All existing private chats.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>new_chats</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
<td>All new private chats.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>contacts</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>All private chats with contacts.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>non_contacts</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
<td>All private chats with non-contacts.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>exclude_selected</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/constructor/true">true</a></td>
|
||||
<td> </td>
|
||||
<td>If set, inverts the selection.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>users</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/Vector%20t">Vector</a><<a href="/type/InputUser">InputUser</a>></td>
|
||||
<td> </td>
|
||||
<td>Only private chats with the specified users.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/InputBusinessRecipients">InputBusinessRecipients</a></p></div>
|
||||
<p><a href="/type/InputBusinessRecipients">InputBusinessRecipients</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#business" id="business" name="business"><i class="anchor-icon"></i></a><a href="/api/business">Business</a></h4>
|
||||
<p>Users can turn their Telegram account into a business account, gaining access to business features such as opening hours, location, quick replies, automated messages, custom start page, chatbot support, and more.</p></div>
|
||||
|
||||
</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 98 B3 03 00 E0 7A 81 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE E5 13 A2 1E BE 09 99 3F
|
||||
0020 | 92 7E B1 38 D8 5B 28 87</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 9C 27 0B 00 55 7C 81 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 26 42 06 E4 2D 00 4B 77
|
||||
0020 | E8 23 76 A4 40 D7 9E 0F</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>98B30300E07A8166</code></td>
|
||||
<td><code>9C270B00557C8166</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>E513A21EBE09993F927EB138D85B2887</code></td>
|
||||
<td><code>264206E42D004B77E82376A440D79E0F</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 60 4B 47 E0 7A 81 66
|
||||
0010 | 80 00 00 00 63 24 16 05 E5 13 A2 1E BE 09 99 3F
|
||||
0020 | 92 7E B1 38 D8 5B 28 87 20 8C D9 6C 6E 2E A8 51
|
||||
0030 | CC 03 32 86 E4 9C 99 E8 08 13 58 38 91 7A 18 0D
|
||||
0040 | 95 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 E8 EB B7 55 7C 81 66
|
||||
0010 | 64 00 00 00 63 24 16 05 26 42 06 E4 2D 00 4B 77
|
||||
0020 | E8 23 76 A4 40 D7 9E 0F 36 C0 74 7D 7C 98 4C 57
|
||||
0030 | 73 98 4B 10 C2 DE 52 A3 08 11 6D 8C 24 73 B6 44
|
||||
0040 | 01 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>01604B47E07A8166</code></td>
|
||||
<td><code>01E8EBB7557C8166</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>80000000</code> (128 in decimal)</td>
|
||||
<td><code>64000000</code> (100 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>E513A21EBE09993F927EB138D85B2887</code></td>
|
||||
<td><code>264206E42D004B77E82376A440D79E0F</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>208CD96C6E2EA851CC033286E49C99E8</code></td>
|
||||
<td><code>36C0747D7C984C5773984B10C2DE52A3</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>08135838917A180D95000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1393926282140978581</td>
|
||||
<td><code>08116D8C2473B64401000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1255813959294272513</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 = 1393926282140978581</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1393926282140978581 = 1068871513 * 1304110237</code></p>
|
||||
<pre><code>p = 1068871513
|
||||
q = 1304110237</code></pre>
|
||||
<pre><code>pq = 1255813959294272513</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1255813959294272513 = 1120424969 * 1120837177</code></p>
|
||||
<pre><code>p = 1120424969
|
||||
q = 1120837177</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 13 58 38 91 7A 18 0D 95 00 00 00
|
||||
0010 | 04 3F B5 AF 59 00 00 00 04 4D BB 24 9D 00 00 00
|
||||
0020 | E5 13 A2 1E BE 09 99 3F 92 7E B1 38 D8 5B 28 87
|
||||
0030 | 20 8C D9 6C 6E 2E A8 51 CC 03 32 86 E4 9C 99 E8
|
||||
0040 | A9 5E 45 9C F0 31 60 8C F1 4A 59 23 05 A3 2D 8D
|
||||
0050 | B7 9E A2 79 FE 81 78 7A 01 9A 35 8D 4D 35 DD C6
|
||||
<pre><code>0000 | 95 5F F5 A9 08 11 6D 8C 24 73 B6 44 01 00 00 00
|
||||
0010 | 04 42 C8 54 09 00 00 00 04 42 CE 9E 39 00 00 00
|
||||
0020 | 26 42 06 E4 2D 00 4B 77 E8 23 76 A4 40 D7 9E 0F
|
||||
0030 | 36 C0 74 7D 7C 98 4C 57 73 98 4B 10 C2 DE 52 A3
|
||||
0040 | D4 B7 96 AE 7E EB 59 65 F0 52 96 B8 CD 81 16 32
|
||||
0050 | 3E AE D5 0F FC 80 A8 80 4E D1 9A 8D 58 84 54 6D
|
||||
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 = 1304110237</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>08135838917A180D95000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1393926282140978581</td>
|
||||
<td><code>08116D8C2473B64401000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1255813959294272513</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>043FB5AF59000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1068871513</td>
|
||||
<td><code>0442C85409000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1120424969</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>044DBB249D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1304110237</td>
|
||||
<td><code>0442CE9E39000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1120837177</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>E513A21EBE09993F927EB138D85B2887</code></td>
|
||||
<td><code>264206E42D004B77E82376A440D79E0F</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>208CD96C6E2EA851CC033286E49C99E8</code></td>
|
||||
<td><code>36C0747D7C984C5773984B10C2DE52A3</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>A95E459CF031608CF14A592305A32D8D</code> <code>B79EA279FE81787A019A358D4D35DDC6</code></td>
|
||||
<td><code>D4B796AE7EEB5965F05296B8CD811632</code> <code>3EAED50FFC80A8804ED19A8D5884546D</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1304110237</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 = 955FF5A908135838917A180D95000000043FB5AF59000000044DBB249D000000E513A21EBE09993F927EB138D85B2887208CD96C6E2EA851CC033286E49C99E8A95E459CF031608CF14A592305A32D8DB79EA279FE81787A019A358D4D35DDC602000000
|
||||
random_padding_bytes = D8C09583EA4ADB0247123F26F250522B8E0B2D6E39417C454EE9E3D0F0AAF926554F8BBA26D35B12FB3AE2FF7F02A5BA049AA04BE4C19308C4C01CDB55785B46C40EAAFD1EFF1E9DB88337C0D24D5A0B6AA9E18AC10B6FD1E32FD52D</code></pre>
|
||||
<pre><code>data = 955FF5A908116D8C2473B644010000000442C854090000000442CE9E39000000264206E42D004B77E82376A440D79E0F36C0747D7C984C5773984B10C2DE52A3D4B796AE7EEB5965F05296B8CD8116323EAED50FFC80A8804ED19A8D5884546D02000000
|
||||
random_padding_bytes = 81FD20ED98562D09FF752B332E9030BD19F278131FF6DC6E09B0B444D3EEA6488DCAAE8E6B10D4E664376303DC5B0A29EE6623856A1F43FEDAF4DDF46C08B97584A6FDA990C18F7661EF75164E82C3CEC5EE530307EF0A0F2765FC6B</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 = 6C642CD629ABA36B314453C6F3788A4F0BD3590AE3E37352874E4C96E272F85A7E097CB6D8B7F902C4B32273CD88DBA77F936F84B86A402F720CBF4C1137B32439D6474D3A103E1EAE3D3E37C49FC4CBEE3ED4A953790F8EB01921203BE521BC909D3167C1598A45D5FAE98F988CF3581B85F107F29C194754CC4357AE44ED60672CC93821995759AF9F654CA33A36EF117C59A2F3ABC7BB7D5C9A20A37853C59858C77E7CFA1761C2551161D1439BB00AD9C56F783CB1A11D0FEF236800F223846C9A8293C1F21DEFB71BB6BD76405DE10F0182E4A30F4A858FE4681F46289C2CE371311B3CC1351DAA2BCB8D4433BA588182A555ED3B159FDAB53391373954</code></pre>
|
||||
<pre><code>encrypted_data = BADF37EA080A7B56CFEF30AEB3395C03FED4209572F32CEE21347AE5A4738249B52AF03243F90B4FA83D9F9B4C7988D54DD3F141158225D60B244D1F70DD31945954ADA298ADFA944E955F0D2E2AA789E52623A54E2AB19EDF4C95DFB97BEEF8823DFA5285515FC3717F56C6012D8EE6FE2505B6CE343EB4183ABAB9214C22B115992CC0BD9C57732DA25AD8D6385156456F1B63B6A0F7139A5274CE3AB9A00EE9D657EE706F4A3BEE79CD4D856943A68D42A8727B233ECCEB76F8F86030EF57A90221679B031DEE07B929B7C597F77766AE1ADDC44610F0D9B71D034BF8F02CE913B9086428FFFC4770B96B027B48E863AC314DB586A76CCA03213565811FC2</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 60 DF 03 00 E0 7A 81 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 E5 13 A2 1E BE 09 99 3F
|
||||
0020 | 92 7E B1 38 D8 5B 28 87 20 8C D9 6C 6E 2E A8 51
|
||||
0030 | CC 03 32 86 E4 9C 99 E8 04 3F B5 AF 59 00 00 00
|
||||
0040 | 04 4D BB 24 9D 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 6C 64 2C D6 29 AB A3 6B 31 44 53 C6
|
||||
0060 | F3 78 8A 4F 0B D3 59 0A E3 E3 73 52 87 4E 4C 96
|
||||
0070 | E2 72 F8 5A 7E 09 7C B6 D8 B7 F9 02 C4 B3 22 73
|
||||
0080 | CD 88 DB A7 7F 93 6F 84 B8 6A 40 2F 72 0C BF 4C
|
||||
0090 | 11 37 B3 24 39 D6 47 4D 3A 10 3E 1E AE 3D 3E 37
|
||||
00A0 | C4 9F C4 CB EE 3E D4 A9 53 79 0F 8E B0 19 21 20
|
||||
00B0 | 3B E5 21 BC 90 9D 31 67 C1 59 8A 45 D5 FA E9 8F
|
||||
00C0 | 98 8C F3 58 1B 85 F1 07 F2 9C 19 47 54 CC 43 57
|
||||
00D0 | AE 44 ED 60 67 2C C9 38 21 99 57 59 AF 9F 65 4C
|
||||
00E0 | A3 3A 36 EF 11 7C 59 A2 F3 AB C7 BB 7D 5C 9A 20
|
||||
00F0 | A3 78 53 C5 98 58 C7 7E 7C FA 17 61 C2 55 11 61
|
||||
0100 | D1 43 9B B0 0A D9 C5 6F 78 3C B1 A1 1D 0F EF 23
|
||||
0110 | 68 00 F2 23 84 6C 9A 82 93 C1 F2 1D EF B7 1B B6
|
||||
0120 | BD 76 40 5D E1 0F 01 82 E4 A3 0F 4A 85 8F E4 68
|
||||
0130 | 1F 46 28 9C 2C E3 71 31 1B 3C C1 35 1D AA 2B CB
|
||||
0140 | 8D 44 33 BA 58 81 82 A5 55 ED 3B 15 9F DA B5 33
|
||||
0150 | 91 37 39 54</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 A0 27 0B 00 55 7C 81 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 26 42 06 E4 2D 00 4B 77
|
||||
0020 | E8 23 76 A4 40 D7 9E 0F 36 C0 74 7D 7C 98 4C 57
|
||||
0030 | 73 98 4B 10 C2 DE 52 A3 04 42 C8 54 09 00 00 00
|
||||
0040 | 04 42 CE 9E 39 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 BA DF 37 EA 08 0A 7B 56 CF EF 30 AE
|
||||
0060 | B3 39 5C 03 FE D4 20 95 72 F3 2C EE 21 34 7A E5
|
||||
0070 | A4 73 82 49 B5 2A F0 32 43 F9 0B 4F A8 3D 9F 9B
|
||||
0080 | 4C 79 88 D5 4D D3 F1 41 15 82 25 D6 0B 24 4D 1F
|
||||
0090 | 70 DD 31 94 59 54 AD A2 98 AD FA 94 4E 95 5F 0D
|
||||
00A0 | 2E 2A A7 89 E5 26 23 A5 4E 2A B1 9E DF 4C 95 DF
|
||||
00B0 | B9 7B EE F8 82 3D FA 52 85 51 5F C3 71 7F 56 C6
|
||||
00C0 | 01 2D 8E E6 FE 25 05 B6 CE 34 3E B4 18 3A BA B9
|
||||
00D0 | 21 4C 22 B1 15 99 2C C0 BD 9C 57 73 2D A2 5A D8
|
||||
00E0 | D6 38 51 56 45 6F 1B 63 B6 A0 F7 13 9A 52 74 CE
|
||||
00F0 | 3A B9 A0 0E E9 D6 57 EE 70 6F 4A 3B EE 79 CD 4D
|
||||
0100 | 85 69 43 A6 8D 42 A8 72 7B 23 3E CC EB 76 F8 F8
|
||||
0110 | 60 30 EF 57 A9 02 21 67 9B 03 1D EE 07 B9 29 B7
|
||||
0120 | C5 97 F7 77 66 AE 1A DD C4 46 10 F0 D9 B7 1D 03
|
||||
0130 | 4B F8 F0 2C E9 13 B9 08 64 28 FF FC 47 70 B9 6B
|
||||
0140 | 02 7B 48 E8 63 AC 31 4D B5 86 A7 6C CA 03 21 35
|
||||
0150 | 65 81 1F C2</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 = D8C09583EA4ADB0247123F26F250522B8E0B2D6E39417C454EE9E3D0F
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>60DF0300E07A8166</code></td>
|
||||
<td><code>A0270B00557C8166</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 = D8C09583EA4ADB0247123F26F250522B8E0B2D6E39417C454EE9E3D0F
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>E513A21EBE09993F927EB138D85B2887</code></td>
|
||||
<td><code>264206E42D004B77E82376A440D79E0F</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>208CD96C6E2EA851CC033286E49C99E8</code></td>
|
||||
<td><code>36C0747D7C984C5773984B10C2DE52A3</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>043FB5AF59000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1068871513</td>
|
||||
<td><code>0442C85409000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1120424969</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>044DBB249D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1304110237</td>
|
||||
<td><code>0442CE9E39000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1120837177</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 = D8C09583EA4ADB0247123F26F250522B8E0B2D6E39417C454EE9E3D0F
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE0001006C642CD629ABA36B314453C6</code> <code>F3788A4F0BD3590AE3E37352874E4C96</code> <code>E272F85A7E097CB6D8B7F902C4B32273</code> <code>CD88DBA77F936F84B86A402F720CBF4C</code> <code>1137B32439D6474D3A103E1EAE3D3E37</code> <code>C49FC4CBEE3ED4A953790F8EB0192120</code> <code>3BE521BC909D3167C1598A45D5FAE98F</code> <code>988CF3581B85F107F29C194754CC4357</code> <code>AE44ED60672CC93821995759AF9F654C</code> <code>A33A36EF117C59A2F3ABC7BB7D5C9A20</code> <code>A37853C59858C77E7CFA1761C2551161</code> <code>D1439BB00AD9C56F783CB1A11D0FEF23</code> <code>6800F223846C9A8293C1F21DEFB71BB6</code> <code>BD76405DE10F0182E4A30F4A858FE468</code> <code>1F46289C2CE371311B3CC1351DAA2BCB</code> <code>8D4433BA588182A555ED3B159FDAB533</code><br> <code>91373954</code></td>
|
||||
<td><code>FE000100BADF37EA080A7B56CFEF30AE</code> <code>B3395C03FED4209572F32CEE21347AE5</code> <code>A4738249B52AF03243F90B4FA83D9F9B</code> <code>4C7988D54DD3F141158225D60B244D1F</code> <code>70DD31945954ADA298ADFA944E955F0D</code> <code>2E2AA789E52623A54E2AB19EDF4C95DF</code> <code>B97BEEF8823DFA5285515FC3717F56C6</code> <code>012D8EE6FE2505B6CE343EB4183ABAB9</code> <code>214C22B115992CC0BD9C57732DA25AD8</code> <code>D6385156456F1B63B6A0F7139A5274CE</code> <code>3AB9A00EE9D657EE706F4A3BEE79CD4D</code> <code>856943A68D42A8727B233ECCEB76F8F8</code> <code>6030EF57A90221679B031DEE07B929B7</code> <code>C597F77766AE1ADDC44610F0D9B71D03</code> <code>4BF8F02CE913B9086428FFFC4770B96B</code> <code>027B48E863AC314DB586A76CCA032135</code><br> <code>65811FC2</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = D8C09583EA4ADB0247123F26F250522B8E0B2D6E39417C454EE9E3D0F
|
|||
<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 C0 8E 01 E1 7A 81 66
|
||||
0010 | 78 02 00 00 5C 07 E8 D0 E5 13 A2 1E BE 09 99 3F
|
||||
0020 | 92 7E B1 38 D8 5B 28 87 20 8C D9 6C 6E 2E A8 51
|
||||
0030 | CC 03 32 86 E4 9C 99 E8 FE 50 02 00 68 FC 5F BB
|
||||
0040 | 57 8C CB D0 EB 73 57 A6 55 48 20 75 3B F9 EF 11
|
||||
0050 | 79 55 67 43 9E 7C DE 07 52 3F 9A 51 44 5B 2A BA
|
||||
0060 | 4E B2 4D FF DA DE CF 4F EE 2F AD 49 72 71 4E 35
|
||||
0070 | FC 82 C3 87 C1 23 BE 80 72 0B 71 58 C7 DB 5E 9C
|
||||
0080 | 54 EF D5 3F F5 55 14 45 56 A7 5B 8F 91 61 A1 5A
|
||||
0090 | 50 23 CE 68 2F 13 08 E3 44 0D B9 E9 AC DC 7F 4E
|
||||
00A0 | 83 52 C0 1C 23 8C 67 B7 5C F9 63 2C 33 75 70 09
|
||||
00B0 | 70 AA C2 8A BD E8 DB A9 5E 9F 7C DC CB CB 24 EC
|
||||
00C0 | FB B3 76 7E 28 51 48 7F 3D CA A2 6A 59 3E F5 4C
|
||||
00D0 | A8 9E 36 2C 41 06 12 03 DC 26 EB D4 27 37 EB B2
|
||||
00E0 | AF 76 A7 75 97 23 C1 A1 7D D5 28 76 57 92 F0 C8
|
||||
00F0 | 2F 00 8C E2 A4 D7 C0 2D E0 B4 71 AE 80 77 FF F8
|
||||
0100 | AA 4C EE 24 99 53 3E 31 4E 88 6E FE 69 44 CD E7
|
||||
0110 | 3D C9 29 CF 0A 83 43 D5 10 D6 DA 0A CF E2 E8 EE
|
||||
0120 | 66 48 3E C1 E6 C7 67 19 1C 1F 0C 05 BF D9 91 76
|
||||
0130 | C1 36 31 D0 7A 6B DF 1B 7C 6C 94 5F 7B A5 EA 70
|
||||
0140 | EA 08 89 5A 69 12 64 94 6B 00 1D F4 F7 8A 5B 77
|
||||
0150 | 87 C3 0B 4D 95 AC 8C D4 68 8E EC 52 93 6E A8 46
|
||||
0160 | FE 4D E6 27 A0 55 1F AD 23 2F 51 CF B8 2C AB E3
|
||||
0170 | FE 45 26 6F 7D 2B BE F4 BB C8 BE CA 5B 0B 12 13
|
||||
0180 | CD 97 38 CE AC BF 05 76 AF 54 80 35 8E A7 A5 75
|
||||
0190 | 83 CC 71 40 35 7F E6 2F 8C 12 86 56 E2 90 16 7F
|
||||
01A0 | 64 DD 14 58 4F BB 3E 03 81 AD E2 AA 7A D7 12 E8
|
||||
01B0 | D6 FC CC 1B 3D 23 17 7D 02 18 0B 5A BA FF FA 9B
|
||||
01C0 | 3E 23 FE FF B2 50 4B C3 9A 99 74 DA CD 0B 91 D9
|
||||
01D0 | 8E 73 E9 22 D9 60 DF 90 0D 87 56 A7 2C C4 10 16
|
||||
01E0 | 09 D7 18 5A BD 3E 51 AB 34 45 2A 94 92 A5 CA BF
|
||||
01F0 | 00 B8 66 D1 24 40 CD 32 40 F1 5A DB A5 D8 15 31
|
||||
0200 | 77 1E AC 01 3C BB 1F E8 95 E0 71 4A 4D 39 B3 7F
|
||||
0210 | 4C DB 30 8F 3D 81 CD 39 1D 78 03 A0 14 15 ED 5E
|
||||
0220 | A0 9A 3F 9E 64 E7 1F DB 5F 68 C4 53 1F CD 21 16
|
||||
0230 | 6D BE 45 5A C2 E5 40 48 2A 6B 2F 9C 82 76 D3 8B
|
||||
0240 | B5 16 50 7E 12 FC 6C FF A3 18 B2 99 12 0C 7F C1
|
||||
0250 | 76 14 F2 99 34 9F 6E B4 5A 9A C0 DB 0D 7D 5B 80
|
||||
0260 | EE 42 BA C4 20 DD 66 7E 1A 36 D1 C9 BF 84 C8 D5
|
||||
0270 | A4 9B E6 A4 4F B1 84 3B 2A D3 5E 2A F2 14 80 30
|
||||
0280 | 85 E2 0D 18 B9 70 5F BB F1 90 00 4E</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 98 E0 62 56 7C 81 66
|
||||
0010 | D8 02 00 00 5C 07 E8 D0 26 42 06 E4 2D 00 4B 77
|
||||
0020 | E8 23 76 A4 40 D7 9E 0F 36 C0 74 7D 7C 98 4C 57
|
||||
0030 | 73 98 4B 10 C2 DE 52 A3 FE 50 02 00 00 B3 3E 76
|
||||
0040 | 84 B6 DF D1 E7 07 B3 35 FB 29 3C 5D 2C 25 BA 0D
|
||||
0050 | 47 DF 1B C2 8F F3 60 40 D7 7D 48 AD E4 F4 41 85
|
||||
0060 | AF AE 97 D8 88 C4 59 0C 39 CD 64 22 02 D2 D8 2E
|
||||
0070 | 8D 2A 7C 14 3E 8D 87 B4 A3 9E 4A 0F 89 51 E9 F3
|
||||
0080 | 56 E5 4F DB 91 74 00 BF 6A E3 AA 7A 54 12 2F 9C
|
||||
0090 | B5 FC 0C FD FA 2F BD FB 7A 6C F1 D9 C4 26 1C DF
|
||||
00A0 | DE DA 96 A0 32 B3 BA 14 4E 0F DC D0 A7 32 E5 B0
|
||||
00B0 | 68 19 45 F4 A2 3D 8E E1 3F CB 93 61 88 84 E3 6D
|
||||
00C0 | D3 58 AD 53 6E 98 F5 62 C8 6E 0E 80 0D 99 F9 5F
|
||||
00D0 | 71 28 EC 00 17 D9 61 7D F2 AF DE C3 B3 02 C8 DA
|
||||
00E0 | 5E 9B B8 1C 54 17 F1 DF 76 D7 90 09 E4 A3 5E F0
|
||||
00F0 | F3 2F 87 83 3B 9D 77 FE 28 D7 EA A6 9C 22 F6 C1
|
||||
0100 | A6 1F 82 83 8D 80 94 36 E4 F5 BB C3 64 E6 2E 92
|
||||
0110 | 3F 9E 76 8C 63 88 B0 A5 67 1D DE D7 73 22 EC 12
|
||||
0120 | F7 AD 0D 41 31 09 1A FF F8 C9 1B 97 6A 78 63 E6
|
||||
0130 | 0D 56 0D 06 30 B7 F4 17 8C 45 0F 3B F6 20 39 10
|
||||
0140 | 41 34 17 BE 23 E4 75 CE 7E 42 4A 08 F7 E2 DE AA
|
||||
0150 | 16 9E A7 96 6F 29 37 0F 4B 10 19 C7 2B 50 48 8A
|
||||
0160 | 37 B1 17 4D 76 E8 CB 9F 25 C0 01 42 0D 72 69 32
|
||||
0170 | 54 94 76 1B D4 E8 08 E9 41 5F A8 30 F6 93 47 4B
|
||||
0180 | 3F 94 C5 85 D0 C0 74 22 01 57 30 31 63 A9 70 EC
|
||||
0190 | 95 D9 5A 8F 82 0A 2C 40 A7 51 C8 A4 17 56 E9 DC
|
||||
01A0 | F6 14 98 7A 2F 7B 7D 93 AA D5 24 70 50 D3 C8 7C
|
||||
01B0 | A1 50 73 CC 2B 03 67 61 6D 80 6B CA 86 CE AE 75
|
||||
01C0 | 4C 5D DD 5B DC D5 EB C9 E4 65 4E D3 31 78 75 29
|
||||
01D0 | FD 52 C5 79 A3 61 30 41 B5 61 11 4C 4C 5A 64 FF
|
||||
01E0 | 5F B7 8F F3 AC 10 92 EF 41 89 F7 8A B7 16 27 7A
|
||||
01F0 | 76 47 19 9C 6E B5 1B 6A 4B 79 E5 00 A3 0A 50 70
|
||||
0200 | 2F 5F 04 33 96 74 0C 00 33 C1 EB 5F 6D 9E C1 88
|
||||
0210 | B4 79 8E BF C9 C4 3B EF 7F 8F E6 15 BA 97 E6 18
|
||||
0220 | 90 71 86 A8 0B D9 A2 05 AD FF BB 3F B1 97 47 F7
|
||||
0230 | BD 6E BD 68 63 94 8A 68 D3 D2 7B EB 37 BD 98 2B
|
||||
0240 | E7 8F DF 90 B9 43 56 40 37 4F 4E D3 09 C6 4A 92
|
||||
0250 | DF 25 04 FB EF 07 53 4D F2 BB 3E F4 38 3B 1F B3
|
||||
0260 | 90 18 48 4C 79 EE EF B0 BB 1A 49 D2 7B 2B 9A 5B
|
||||
0270 | B4 93 E1 7E 36 90 D1 E2 C1 38 DC A1 59 76 9B 05
|
||||
0280 | 57 0A CA 6F 38 36 F1 71 7A 1C 57 F9</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 = D8C09583EA4ADB0247123F26F250522B8E0B2D6E39417C454EE9E3D0F
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01C08E01E17A8166</code></td>
|
||||
<td><code>0198E062567C8166</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>78020000</code> (632 in decimal)</td>
|
||||
<td><code>D8020000</code> (728 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = D8C09583EA4ADB0247123F26F250522B8E0B2D6E39417C454EE9E3D0F
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>E513A21EBE09993F927EB138D85B2887</code></td>
|
||||
<td><code>264206E42D004B77E82376A440D79E0F</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>208CD96C6E2EA851CC033286E49C99E8</code></td>
|
||||
<td><code>36C0747D7C984C5773984B10C2DE52A3</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE50020068FC5FBB578CCBD0EB7357A6</code> <code>554820753BF9EF11795567439E7CDE07</code> <code>523F9A51445B2ABA4EB24DFFDADECF4F</code> <code>EE2FAD4972714E35FC82C387C123BE80</code> <code>720B7158C7DB5E9C54EFD53FF5551445</code> <code>56A75B8F9161A15A5023CE682F1308E3</code> <code>440DB9E9ACDC7F4E8352C01C238C67B7</code> <code>5CF9632C3375700970AAC28ABDE8DBA9</code> <code>5E9F7CDCCBCB24ECFBB3767E2851487F</code> <code>3DCAA26A593EF54CA89E362C41061203</code> <code>DC26EBD42737EBB2AF76A7759723C1A1</code> <code>7DD528765792F0C82F008CE2A4D7C02D</code> <code>E0B471AE8077FFF8AA4CEE2499533E31</code> <code>4E886EFE6944CDE73DC929CF0A8343D5</code> <code>10D6DA0ACFE2E8EE66483EC1E6C76719</code> <code>1C1F0C05BFD99176C13631D07A6BDF1B</code> <code>7C6C945F7BA5EA70EA08895A69126494</code> <code>6B001DF4F78A5B7787C30B4D95AC8CD4</code> <code>688EEC52936EA846FE4DE627A0551FAD</code> <code>232F51CFB82CABE3FE45266F7D2BBEF4</code> <code>BBC8BECA5B0B1213CD9738CEACBF0576</code> <code>AF5480358EA7A57583CC7140357FE62F</code> <code>8C128656E290167F64DD14584FBB3E03</code> <code>81ADE2AA7AD712E8D6FCCC1B3D23177D</code> <code>02180B5ABAFFFA9B3E23FEFFB2504BC3</code> <code>9A9974DACD0B91D98E73E922D960DF90</code> <code>0D8756A72CC4101609D7185ABD3E51AB</code> <code>34452A9492A5CABF00B866D12440CD32</code> <code>40F15ADBA5D81531771EAC013CBB1FE8</code> <code>95E0714A4D39B37F4CDB308F3D81CD39</code> <code>1D7803A01415ED5EA09A3F9E64E71FDB</code> <code>5F68C4531FCD21166DBE455AC2E54048</code> <code>2A6B2F9C8276D38BB516507E12FC6CFF</code> <code>A318B299120C7FC17614F299349F6EB4</code> <code>5A9AC0DB0D7D5B80EE42BAC420DD667E</code> <code>1A36D1C9BF84C8D5A49BE6A44FB1843B</code> <code>2AD35E2AF214803085E20D18B9705FBB</code><br> <code>F190004E</code></td>
|
||||
<td><code>FE50020000B33E7684B6DFD1E707B335</code> <code>FB293C5D2C25BA0D47DF1BC28FF36040</code> <code>D77D48ADE4F44185AFAE97D888C4590C</code> <code>39CD642202D2D82E8D2A7C143E8D87B4</code> <code>A39E4A0F8951E9F356E54FDB917400BF</code> <code>6AE3AA7A54122F9CB5FC0CFDFA2FBDFB</code> <code>7A6CF1D9C4261CDFDEDA96A032B3BA14</code> <code>4E0FDCD0A732E5B0681945F4A23D8EE1</code> <code>3FCB93618884E36DD358AD536E98F562</code> <code>C86E0E800D99F95F7128EC0017D9617D</code> <code>F2AFDEC3B302C8DA5E9BB81C5417F1DF</code> <code>76D79009E4A35EF0F32F87833B9D77FE</code> <code>28D7EAA69C22F6C1A61F82838D809436</code> <code>E4F5BBC364E62E923F9E768C6388B0A5</code> <code>671DDED77322EC12F7AD0D4131091AFF</code> <code>F8C91B976A7863E60D560D0630B7F417</code> <code>8C450F3BF6203910413417BE23E475CE</code> <code>7E424A08F7E2DEAA169EA7966F29370F</code> <code>4B1019C72B50488A37B1174D76E8CB9F</code> <code>25C001420D7269325494761BD4E808E9</code> <code>415FA830F693474B3F94C585D0C07422</code> <code>0157303163A970EC95D95A8F820A2C40</code> <code>A751C8A41756E9DCF614987A2F7B7D93</code> <code>AAD5247050D3C87CA15073CC2B036761</code> <code>6D806BCA86CEAE754C5DDD5BDCD5EBC9</code> <code>E4654ED331787529FD52C579A3613041</code> <code>B561114C4C5A64FF5FB78FF3AC1092EF</code> <code>4189F78AB716277A7647199C6EB51B6A</code> <code>4B79E500A30A50702F5F043396740C00</code> <code>33C1EB5F6D9EC188B4798EBFC9C43BEF</code> <code>7F8FE615BA97E618907186A80BD9A205</code> <code>ADFFBB3FB19747F7BD6EBD6863948A68</code> <code>D3D27BEB37BD982BE78FDF90B9435640</code> <code>374F4ED309C64A92DF2504FBEF07534D</code> <code>F2BB3EF4383B1FB39018484C79EEEFB0</code> <code>BB1A49D27B2B9A5BB493E17E3690D1E2</code> <code>C138DCA159769B05570ACA6F3836F171</code><br> <code>7A1C57F9</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = D8C09583EA4ADB0247123F26F250522B8E0B2D6E39417C454EE9E3D0F
|
|||
<!-- 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 = 68FC5FBB578CCBD0EB7357A6554820753BF9EF11795567439E7CDE07523F9A51445B2ABA4EB24DFFDADECF4FEE2FAD4972714E35FC82C387C123BE80720B7158C7DB5E9C54EFD53FF555144556A75B8F9161A15A5023CE682F1308E3440DB9E9ACDC7F4E8352C01C238C67B75CF9632C3375700970AAC28ABDE8DBA95E9F7CDCCBCB24ECFBB3767E2851487F3DCAA26A593EF54CA89E362C41061203DC26EBD42737EBB2AF76A7759723C1A17DD528765792F0C82F008CE2A4D7C02DE0B471AE8077FFF8AA4CEE2499533E314E886EFE6944CDE73DC929CF0A8343D510D6DA0ACFE2E8EE66483EC1E6C767191C1F0C05BFD99176C13631D07A6BDF1B7C6C945F7BA5EA70EA08895A691264946B001DF4F78A5B7787C30B4D95AC8CD4688EEC52936EA846FE4DE627A0551FAD232F51CFB82CABE3FE45266F7D2BBEF4BBC8BECA5B0B1213CD9738CEACBF0576AF5480358EA7A57583CC7140357FE62F8C128656E290167F64DD14584FBB3E0381ADE2AA7AD712E8D6FCCC1B3D23177D02180B5ABAFFFA9B3E23FEFFB2504BC39A9974DACD0B91D98E73E922D960DF900D8756A72CC4101609D7185ABD3E51AB34452A9492A5CABF00B866D12440CD3240F15ADBA5D81531771EAC013CBB1FE895E0714A4D39B37F4CDB308F3D81CD391D7803A01415ED5EA09A3F9E64E71FDB5F68C4531FCD21166DBE455AC2E540482A6B2F9C8276D38BB516507E12FC6CFFA318B299120C7FC17614F299349F6EB45A9AC0DB0D7D5B80EE42BAC420DD667E1A36D1C9BF84C8D5A49BE6A44FB1843B2AD35E2AF214803085E20D18B9705FBBF190004E
|
||||
tmp_aes_key = CF23EC44DE45FD3A03AA827E598B3AB47B8EE0B043D64FBD235703D21496F977
|
||||
tmp_aes_iv = D1ADA3FBAAE77657362A1628CE31D6240C5754B126BA2E3FCB1ED87FA95E459C</code></pre>
|
||||
<pre><code>encrypted_answer = 00B33E7684B6DFD1E707B335FB293C5D2C25BA0D47DF1BC28FF36040D77D48ADE4F44185AFAE97D888C4590C39CD642202D2D82E8D2A7C143E8D87B4A39E4A0F8951E9F356E54FDB917400BF6AE3AA7A54122F9CB5FC0CFDFA2FBDFB7A6CF1D9C4261CDFDEDA96A032B3BA144E0FDCD0A732E5B0681945F4A23D8EE13FCB93618884E36DD358AD536E98F562C86E0E800D99F95F7128EC0017D9617DF2AFDEC3B302C8DA5E9BB81C5417F1DF76D79009E4A35EF0F32F87833B9D77FE28D7EAA69C22F6C1A61F82838D809436E4F5BBC364E62E923F9E768C6388B0A5671DDED77322EC12F7AD0D4131091AFFF8C91B976A7863E60D560D0630B7F4178C450F3BF6203910413417BE23E475CE7E424A08F7E2DEAA169EA7966F29370F4B1019C72B50488A37B1174D76E8CB9F25C001420D7269325494761BD4E808E9415FA830F693474B3F94C585D0C074220157303163A970EC95D95A8F820A2C40A751C8A41756E9DCF614987A2F7B7D93AAD5247050D3C87CA15073CC2B0367616D806BCA86CEAE754C5DDD5BDCD5EBC9E4654ED331787529FD52C579A3613041B561114C4C5A64FF5FB78FF3AC1092EF4189F78AB716277A7647199C6EB51B6A4B79E500A30A50702F5F043396740C0033C1EB5F6D9EC188B4798EBFC9C43BEF7F8FE615BA97E618907186A80BD9A205ADFFBB3FB19747F7BD6EBD6863948A68D3D27BEB37BD982BE78FDF90B9435640374F4ED309C64A92DF2504FBEF07534DF2BB3EF4383B1FB39018484C79EEEFB0BB1A49D27B2B9A5BB493E17E3690D1E2C138DCA159769B05570ACA6F3836F1717A1C57F9
|
||||
tmp_aes_key = 4DD1F82FEA74E6AC13FCFB1C34E05A6FDD50954939D0B647E93440DEA62C9CC7
|
||||
tmp_aes_iv = 6EFD8D392FD679BB65A5D15EDD981946A61912D23CBBCDCFE92F867AD4B796AE</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = 1E460FA44597896E051E84B959EF39ADF380E9D2BA0D89B5E513A21EBE09993F927EB138D85B2887208CD96C6E2EA851CC033286E49C99E803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100989EDFACA03A3B00314641D862F03CEC6022E965E518756D07C9C06EF0BFEB09E0220EF22566DB9B3D9DF3AA87B2B12F2DC70A734AE54AF7EC37CBDFD7ECFF99022B71DFABF4A8E99890411099227EE3B6B56ED24479A9867F815228EAA95EC40A8FB66F764D2FAE766FED04752DCD491993A941A9D716D0BDFD65C2FDAAEA1D476E4C81FE01E86B01A6C3F9C03225D4920687122847D8584AA4F21317E66D0C661B51E71DB52DB38CEC046BB9636F66A7FAA0AA96186848F36AA57F86076553A826F707A9802D84C62C1B8D27E6A2FB871B2BBCCB10EC26BEB970F09B85A6384F8A992640ACF2A02F8AA69A52FD0DC220E34E7237AD2815F1A95CF1BF4615C4E17A8166CEAC715B148B50B2
|
||||
answer = BA0D89B5E513A21EBE09993F927EB138D85B2887208CD96C6E2EA851CC033286E49C99E803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100989EDFACA03A3B00314641D862F03CEC6022E965E518756D07C9C06EF0BFEB09E0220EF22566DB9B3D9DF3AA87B2B12F2DC70A734AE54AF7EC37CBDFD7ECFF99022B71DFABF4A8E99890411099227EE3B6B56ED24479A9867F815228EAA95EC40A8FB66F764D2FAE766FED04752DCD491993A941A9D716D0BDFD65C2FDAAEA1D476E4C81FE01E86B01A6C3F9C03225D4920687122847D8584AA4F21317E66D0C661B51E71DB52DB38CEC046BB9636F66A7FAA0AA96186848F36AA57F86076553A826F707A9802D84C62C1B8D27E6A2FB871B2BBCCB10EC26BEB970F09B85A6384F8A992640ACF2A02F8AA69A52FD0DC220E34E7237AD2815F1A95CF1BF4615C4E17A8166CEAC715B148B50B2</code></pre>
|
||||
<pre><code>answer_with_hash = 74ED3105B9B3B74508A6D77BC119EF23D78BCE37BA0D89B5264206E42D004B77E82376A440D79E0F36C0747D7C984C5773984B10C2DE52A303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009573324A84D5A8E6175C56EDF0FED91478605A883C632548DC8812F1C127E55C0CEE23E1A8CBE9460CA2182A9AF1FF04433BE4B49B21023B65BEE5D23FD7C1315C771C2EC5CF71155D4F2F1AED657C9652EA758952D95CEAC0270C3449B37251C9AA338B4692B2A1E609F8583CA4C7AD0DC89BF0A90F0A2B34B27CE9DCBC02580C15DFBDA3F1F4A6FBC1882E1EC1B952C2F5196DBC31165F1F957256D50CC5C69CD23958478E82DE0126E76C877C2D9BCB4E810861E4E76267728CBB8E301DA44847CDB43A896D7B0CDEB4D717BAFEB88C05C5EC8A49E7F03960D02BF27059FA7174172B50C6C6C9D5B0116B73FDE40B74A05AC09B4602995583187D5DA52E2C567C8166628D172F1865EC85
|
||||
answer = BA0D89B5264206E42D004B77E82376A440D79E0F36C0747D7C984C5773984B10C2DE52A303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009573324A84D5A8E6175C56EDF0FED91478605A883C632548DC8812F1C127E55C0CEE23E1A8CBE9460CA2182A9AF1FF04433BE4B49B21023B65BEE5D23FD7C1315C771C2EC5CF71155D4F2F1AED657C9652EA758952D95CEAC0270C3449B37251C9AA338B4692B2A1E609F8583CA4C7AD0DC89BF0A90F0A2B34B27CE9DCBC02580C15DFBDA3F1F4A6FBC1882E1EC1B952C2F5196DBC31165F1F957256D50CC5C69CD23958478E82DE0126E76C877C2D9BCB4E810861E4E76267728CBB8E301DA44847CDB43A896D7B0CDEB4D717BAFEB88C05C5EC8A49E7F03960D02BF27059FA7174172B50C6C6C9D5B0116B73FDE40B74A05AC09B4602995583187D5DA52E2C567C8166628D172F1865EC85</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 E5 13 A2 1E BE 09 99 3F 92 7E B1 38
|
||||
0010 | D8 5B 28 87 20 8C D9 6C 6E 2E A8 51 CC 03 32 86
|
||||
0020 | E4 9C 99 E8 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 26 42 06 E4 2D 00 4B 77 E8 23 76 A4
|
||||
0010 | 40 D7 9E 0F 36 C0 74 7D 7C 98 4C 57 73 98 4B 10
|
||||
0020 | C2 DE 52 A3 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 = BA0D89B5E513A21EBE09993F927EB138D85B2887208CD96C6E2EA851CC033286E49C99E
|
|||
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 | 98 9E DF AC A0 3A 3B 00 31 46 41 D8 62 F0 3C EC
|
||||
0140 | 60 22 E9 65 E5 18 75 6D 07 C9 C0 6E F0 BF EB 09
|
||||
0150 | E0 22 0E F2 25 66 DB 9B 3D 9D F3 AA 87 B2 B1 2F
|
||||
0160 | 2D C7 0A 73 4A E5 4A F7 EC 37 CB DF D7 EC FF 99
|
||||
0170 | 02 2B 71 DF AB F4 A8 E9 98 90 41 10 99 22 7E E3
|
||||
0180 | B6 B5 6E D2 44 79 A9 86 7F 81 52 28 EA A9 5E C4
|
||||
0190 | 0A 8F B6 6F 76 4D 2F AE 76 6F ED 04 75 2D CD 49
|
||||
01A0 | 19 93 A9 41 A9 D7 16 D0 BD FD 65 C2 FD AA EA 1D
|
||||
01B0 | 47 6E 4C 81 FE 01 E8 6B 01 A6 C3 F9 C0 32 25 D4
|
||||
01C0 | 92 06 87 12 28 47 D8 58 4A A4 F2 13 17 E6 6D 0C
|
||||
01D0 | 66 1B 51 E7 1D B5 2D B3 8C EC 04 6B B9 63 6F 66
|
||||
01E0 | A7 FA A0 AA 96 18 68 48 F3 6A A5 7F 86 07 65 53
|
||||
01F0 | A8 26 F7 07 A9 80 2D 84 C6 2C 1B 8D 27 E6 A2 FB
|
||||
0200 | 87 1B 2B BC CB 10 EC 26 BE B9 70 F0 9B 85 A6 38
|
||||
0210 | 4F 8A 99 26 40 AC F2 A0 2F 8A A6 9A 52 FD 0D C2
|
||||
0220 | 20 E3 4E 72 37 AD 28 15 F1 A9 5C F1 BF 46 15 C4
|
||||
0230 | E1 7A 81 66</code></pre>
|
||||
0130 | 95 73 32 4A 84 D5 A8 E6 17 5C 56 ED F0 FE D9 14
|
||||
0140 | 78 60 5A 88 3C 63 25 48 DC 88 12 F1 C1 27 E5 5C
|
||||
0150 | 0C EE 23 E1 A8 CB E9 46 0C A2 18 2A 9A F1 FF 04
|
||||
0160 | 43 3B E4 B4 9B 21 02 3B 65 BE E5 D2 3F D7 C1 31
|
||||
0170 | 5C 77 1C 2E C5 CF 71 15 5D 4F 2F 1A ED 65 7C 96
|
||||
0180 | 52 EA 75 89 52 D9 5C EA C0 27 0C 34 49 B3 72 51
|
||||
0190 | C9 AA 33 8B 46 92 B2 A1 E6 09 F8 58 3C A4 C7 AD
|
||||
01A0 | 0D C8 9B F0 A9 0F 0A 2B 34 B2 7C E9 DC BC 02 58
|
||||
01B0 | 0C 15 DF BD A3 F1 F4 A6 FB C1 88 2E 1E C1 B9 52
|
||||
01C0 | C2 F5 19 6D BC 31 16 5F 1F 95 72 56 D5 0C C5 C6
|
||||
01D0 | 9C D2 39 58 47 8E 82 DE 01 26 E7 6C 87 7C 2D 9B
|
||||
01E0 | CB 4E 81 08 61 E4 E7 62 67 72 8C BB 8E 30 1D A4
|
||||
01F0 | 48 47 CD B4 3A 89 6D 7B 0C DE B4 D7 17 BA FE B8
|
||||
0200 | 8C 05 C5 EC 8A 49 E7 F0 39 60 D0 2B F2 70 59 FA
|
||||
0210 | 71 74 17 2B 50 C6 C6 C9 D5 B0 11 6B 73 FD E4 0B
|
||||
0220 | 74 A0 5A C0 9B 46 02 99 55 83 18 7D 5D A5 2E 2C
|
||||
0230 | 56 7C 81 66</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -570,13 +570,13 @@ answer = BA0D89B5E513A21EBE09993F927EB138D85B2887208CD96C6E2EA851CC033286E49C99E
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>E513A21EBE09993F927EB138D85B2887</code></td>
|
||||
<td><code>264206E42D004B77E82376A440D79E0F</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>208CD96C6E2EA851CC033286E49C99E8</code></td>
|
||||
<td><code>36C0747D7C984C5773984B10C2DE52A3</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B5E513A21EBE09993F927EB138D85B2887208CD96C6E2EA851CC033286E49C99E
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE000100989EDFACA03A3B00314641D8</code> <code>62F03CEC6022E965E518756D07C9C06E</code> <code>F0BFEB09E0220EF22566DB9B3D9DF3AA</code> <code>87B2B12F2DC70A734AE54AF7EC37CBDF</code> <code>D7ECFF99022B71DFABF4A8E998904110</code> <code>99227EE3B6B56ED24479A9867F815228</code> <code>EAA95EC40A8FB66F764D2FAE766FED04</code> <code>752DCD491993A941A9D716D0BDFD65C2</code> <code>FDAAEA1D476E4C81FE01E86B01A6C3F9</code> <code>C03225D4920687122847D8584AA4F213</code> <code>17E66D0C661B51E71DB52DB38CEC046B</code> <code>B9636F66A7FAA0AA96186848F36AA57F</code> <code>86076553A826F707A9802D84C62C1B8D</code> <code>27E6A2FB871B2BBCCB10EC26BEB970F0</code> <code>9B85A6384F8A992640ACF2A02F8AA69A</code> <code>52FD0DC220E34E7237AD2815F1A95CF1</code><br> <code>BF4615C4</code></td>
|
||||
<td><code>FE0001009573324A84D5A8E6175C56ED</code> <code>F0FED91478605A883C632548DC8812F1</code> <code>C127E55C0CEE23E1A8CBE9460CA2182A</code> <code>9AF1FF04433BE4B49B21023B65BEE5D2</code> <code>3FD7C1315C771C2EC5CF71155D4F2F1A</code> <code>ED657C9652EA758952D95CEAC0270C34</code> <code>49B37251C9AA338B4692B2A1E609F858</code> <code>3CA4C7AD0DC89BF0A90F0A2B34B27CE9</code> <code>DCBC02580C15DFBDA3F1F4A6FBC1882E</code> <code>1EC1B952C2F5196DBC31165F1F957256</code> <code>D50CC5C69CD23958478E82DE0126E76C</code> <code>877C2D9BCB4E810861E4E76267728CBB</code> <code>8E301DA44847CDB43A896D7B0CDEB4D7</code> <code>17BAFEB88C05C5EC8A49E7F03960D02B</code> <code>F27059FA7174172B50C6C6C9D5B0116B</code> <code>73FDE40B74A05AC09B4602995583187D</code><br> <code>5DA52E2C</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>E17A8166</code> (1719761633 in decimal)</td>
|
||||
<td><code>567C8166</code> (1719762006 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B5E513A21EBE09993F927EB138D85B2887208CD96C6E2EA851CC033286E49C99E
|
|||
<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 = 4A32C267CECCB4D454FF0BB7F67493DEF82A37E3AD8BD4A81A5FE1604D3E353EED0FA42751AEE5C81DFE9A685BEFBD4ABA6974D03A4C176FA4C4E4D62A94C0A076EF8CAA886D8544555116B0CCACDC6D701F795E4C6CA4F4629B7E624C5C2AFF35B831B8B919435EDBA13ABD6EA94A47F828CE7D4D7308E98DC462B8569E4E268D91BA230572CF94CDEA8AB2C925331E3A4A2D602A13DF2FE0091AFF7C315AC2F7CAE7D4D432F362767A9DA8CA149EAF858CF8CEACA3EB76342154D7A83C3EEB14B3F6B46A3E9E58EC8BBB972061E6E48877C70AD86A31E38DD98EC06B272BA2857A65BB3D9373E5B66486997639FD4D10FADDD49D17AEF76B09860911406A0E</code></pre>
|
||||
<pre><code>b = F551A3F288F2CA7F5A5924BAAF6DB4A08D9B6F4C10AE64B370B38B6C9FEA4BA75DF1C42394C3575A78368AE5CA760659C4E0B13C3E984D31DD131A2B1C42B7B149BFA859C7DA7802A07685FA3AEB6F3A1275F1A6DD8CEE8CEAE1B74F7CC8956CBDE115EBFE8B0AA6B9130488D6F34474AF2159CCD1E814A024377473D4991B936C8EAB8013F937459EEAFCC02A69F4CC4932423675854D5C1CF092F2027BA1B3395500D539755C79A9C4976B22ED71A31046AC779B9469BAD0D7BE7E80012DF586B50E0A9325992248E3FD6E94FC7A734A283C5C4F5AD6E26DC8C360E0334AC07D97AAD849403FC12F739462934B69E12F7DB1EE95BA211F8C070FEC9C94D6E9</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 = 17D902F86FB6A6E20E84902826DE3E6BEA06B3B9369192A1D6B869795C068FD7D4C8DE1109EF4930CBC5E05835E8217F6EE67E85F36D787266BCB0CBCC1F7D1DB37183C5A469E2927E31898C1B81AE181EF645372B440FA39E3E460654F787BFAF4FB21A1CF8C4A511FDAB712D6EEC796FE0AE1102F28C323645DACB302F7C6CC6BB4D8F24FC9F6433235BCCD1A391EDF650F6998332A49402917A2CB285ED6FDE670A37478C8AE902EE54B17FD0F7D393460FF959ADDE60E9F129ECA1F2A62EEE52A5870DF04FAB7006F1A7837514952D503E405C223BE486CF25E56F5CE49AA3DEFE7432244AE07A30B53589E16E5110AE3AB7EB44008F0DDD381C5ED685B1</code></pre>
|
||||
<pre><code>g_b = 1C9203526D093C160AE19CCB14102BE896EDBD35E93EB19B1F6984BBFCFC0408256DD9EE1EB33181BE534CE5654AAEA706F84C3735F82945B4257FC6E47064E5E71C04E88547F662F3AC7BFCD38C37FF65971B32800AB57C4F3A26EBD19B23F17EDCC2F23546F021A4B096CEB00DC3FB875A3C56C6CA4B5F2254656EEA259B0AFA64BF0F6B9345699DC6B97728FDABECE8CDFE6B42142126BB17AD195951AD0094C0D0E64BA9ACC6B86C232649D2C937B6C4CFB3192BCC93C0E614DB39786F5D7CAB1422B45147978EAAAD21D34448E51B5038D6600E2DBA14F7E8F6265BAFDFE6A83763517DB1F6FA36114C347B7F0E371ED379F47A008407B3772BFE3B6AD4</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 E5 13 A2 1E BE 09 99 3F 92 7E B1 38
|
||||
0010 | D8 5B 28 87 20 8C D9 6C 6E 2E A8 51 CC 03 32 86
|
||||
0020 | E4 9C 99 E8 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 17 D9 02 F8 6F B6 A6 E2 0E 84 90 28 26 DE 3E 6B
|
||||
0040 | EA 06 B3 B9 36 91 92 A1 D6 B8 69 79 5C 06 8F D7
|
||||
0050 | D4 C8 DE 11 09 EF 49 30 CB C5 E0 58 35 E8 21 7F
|
||||
0060 | 6E E6 7E 85 F3 6D 78 72 66 BC B0 CB CC 1F 7D 1D
|
||||
0070 | B3 71 83 C5 A4 69 E2 92 7E 31 89 8C 1B 81 AE 18
|
||||
0080 | 1E F6 45 37 2B 44 0F A3 9E 3E 46 06 54 F7 87 BF
|
||||
0090 | AF 4F B2 1A 1C F8 C4 A5 11 FD AB 71 2D 6E EC 79
|
||||
00A0 | 6F E0 AE 11 02 F2 8C 32 36 45 DA CB 30 2F 7C 6C
|
||||
00B0 | C6 BB 4D 8F 24 FC 9F 64 33 23 5B CC D1 A3 91 ED
|
||||
00C0 | F6 50 F6 99 83 32 A4 94 02 91 7A 2C B2 85 ED 6F
|
||||
00D0 | DE 67 0A 37 47 8C 8A E9 02 EE 54 B1 7F D0 F7 D3
|
||||
00E0 | 93 46 0F F9 59 AD DE 60 E9 F1 29 EC A1 F2 A6 2E
|
||||
00F0 | EE 52 A5 87 0D F0 4F AB 70 06 F1 A7 83 75 14 95
|
||||
0100 | 2D 50 3E 40 5C 22 3B E4 86 CF 25 E5 6F 5C E4 9A
|
||||
0110 | A3 DE FE 74 32 24 4A E0 7A 30 B5 35 89 E1 6E 51
|
||||
0120 | 10 AE 3A B7 EB 44 00 8F 0D DD 38 1C 5E D6 85 B1</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 26 42 06 E4 2D 00 4B 77 E8 23 76 A4
|
||||
0010 | 40 D7 9E 0F 36 C0 74 7D 7C 98 4C 57 73 98 4B 10
|
||||
0020 | C2 DE 52 A3 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 1C 92 03 52 6D 09 3C 16 0A E1 9C CB 14 10 2B E8
|
||||
0040 | 96 ED BD 35 E9 3E B1 9B 1F 69 84 BB FC FC 04 08
|
||||
0050 | 25 6D D9 EE 1E B3 31 81 BE 53 4C E5 65 4A AE A7
|
||||
0060 | 06 F8 4C 37 35 F8 29 45 B4 25 7F C6 E4 70 64 E5
|
||||
0070 | E7 1C 04 E8 85 47 F6 62 F3 AC 7B FC D3 8C 37 FF
|
||||
0080 | 65 97 1B 32 80 0A B5 7C 4F 3A 26 EB D1 9B 23 F1
|
||||
0090 | 7E DC C2 F2 35 46 F0 21 A4 B0 96 CE B0 0D C3 FB
|
||||
00A0 | 87 5A 3C 56 C6 CA 4B 5F 22 54 65 6E EA 25 9B 0A
|
||||
00B0 | FA 64 BF 0F 6B 93 45 69 9D C6 B9 77 28 FD AB EC
|
||||
00C0 | E8 CD FE 6B 42 14 21 26 BB 17 AD 19 59 51 AD 00
|
||||
00D0 | 94 C0 D0 E6 4B A9 AC C6 B8 6C 23 26 49 D2 C9 37
|
||||
00E0 | B6 C4 CF B3 19 2B CC 93 C0 E6 14 DB 39 78 6F 5D
|
||||
00F0 | 7C AB 14 22 B4 51 47 97 8E AA AD 21 D3 44 48 E5
|
||||
0100 | 1B 50 38 D6 60 0E 2D BA 14 F7 E8 F6 26 5B AF DF
|
||||
0110 | E6 A8 37 63 51 7D B1 F6 FA 36 11 4C 34 7B 7F 0E
|
||||
0120 | 37 1E D3 79 F4 7A 00 84 07 B3 77 2B FE 3B 6A D4</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 = BA0D89B5E513A21EBE09993F927EB138D85B2887208CD96C6E2EA851CC033286E49C99E
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>E513A21EBE09993F927EB138D85B2887</code></td>
|
||||
<td><code>264206E42D004B77E82376A440D79E0F</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>208CD96C6E2EA851CC033286E49C99E8</code></td>
|
||||
<td><code>36C0747D7C984C5773984B10C2DE52A3</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE00010017D902F86FB6A6E20E849028</code> <code>26DE3E6BEA06B3B9369192A1D6B86979</code> <code>5C068FD7D4C8DE1109EF4930CBC5E058</code> <code>35E8217F6EE67E85F36D787266BCB0CB</code> <code>CC1F7D1DB37183C5A469E2927E31898C</code> <code>1B81AE181EF645372B440FA39E3E4606</code> <code>54F787BFAF4FB21A1CF8C4A511FDAB71</code> <code>2D6EEC796FE0AE1102F28C323645DACB</code> <code>302F7C6CC6BB4D8F24FC9F6433235BCC</code> <code>D1A391EDF650F6998332A49402917A2C</code> <code>B285ED6FDE670A37478C8AE902EE54B1</code> <code>7FD0F7D393460FF959ADDE60E9F129EC</code> <code>A1F2A62EEE52A5870DF04FAB7006F1A7</code> <code>837514952D503E405C223BE486CF25E5</code> <code>6F5CE49AA3DEFE7432244AE07A30B535</code> <code>89E16E5110AE3AB7EB44008F0DDD381C</code><br> <code>5ED685B1</code></td>
|
||||
<td><code>FE0001001C9203526D093C160AE19CCB</code> <code>14102BE896EDBD35E93EB19B1F6984BB</code> <code>FCFC0408256DD9EE1EB33181BE534CE5</code> <code>654AAEA706F84C3735F82945B4257FC6</code> <code>E47064E5E71C04E88547F662F3AC7BFC</code> <code>D38C37FF65971B32800AB57C4F3A26EB</code> <code>D19B23F17EDCC2F23546F021A4B096CE</code> <code>B00DC3FB875A3C56C6CA4B5F2254656E</code> <code>EA259B0AFA64BF0F6B9345699DC6B977</code> <code>28FDABECE8CDFE6B42142126BB17AD19</code> <code>5951AD0094C0D0E64BA9ACC6B86C2326</code> <code>49D2C937B6C4CFB3192BCC93C0E614DB</code> <code>39786F5D7CAB1422B45147978EAAAD21</code> <code>D34448E51B5038D6600E2DBA14F7E8F6</code> <code>265BAFDFE6A83763517DB1F6FA36114C</code> <code>347B7F0E371ED379F47A008407B3772B</code><br> <code>FE3B6AD4</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 = BA0D89B5E513A21EBE09993F927EB138D85B2887208CD96C6E2EA851CC033286E49C99E
|
|||
<!-- 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 = 54B64366E513A21EBE09993F927EB138D85B2887208CD96C6E2EA851CC033286E49C99E80000000000000000FE00010017D902F86FB6A6E20E84902826DE3E6BEA06B3B9369192A1D6B869795C068FD7D4C8DE1109EF4930CBC5E05835E8217F6EE67E85F36D787266BCB0CBCC1F7D1DB37183C5A469E2927E31898C1B81AE181EF645372B440FA39E3E460654F787BFAF4FB21A1CF8C4A511FDAB712D6EEC796FE0AE1102F28C323645DACB302F7C6CC6BB4D8F24FC9F6433235BCCD1A391EDF650F6998332A49402917A2CB285ED6FDE670A37478C8AE902EE54B17FD0F7D393460FF959ADDE60E9F129ECA1F2A62EEE52A5870DF04FAB7006F1A7837514952D503E405C223BE486CF25E56F5CE49AA3DEFE7432244AE07A30B53589E16E5110AE3AB7EB44008F0DDD381C5ED685B1
|
||||
padding = 6D3B66A7CE56384B9810247C
|
||||
tmp_aes_key = CF23EC44DE45FD3A03AA827E598B3AB47B8EE0B043D64FBD235703D21496F977
|
||||
tmp_aes_iv = D1ADA3FBAAE77657362A1628CE31D6240C5754B126BA2E3FCB1ED87FA95E459C</code></pre>
|
||||
<pre><code>data = 54B64366264206E42D004B77E82376A440D79E0F36C0747D7C984C5773984B10C2DE52A30000000000000000FE0001001C9203526D093C160AE19CCB14102BE896EDBD35E93EB19B1F6984BBFCFC0408256DD9EE1EB33181BE534CE5654AAEA706F84C3735F82945B4257FC6E47064E5E71C04E88547F662F3AC7BFCD38C37FF65971B32800AB57C4F3A26EBD19B23F17EDCC2F23546F021A4B096CEB00DC3FB875A3C56C6CA4B5F2254656EEA259B0AFA64BF0F6B9345699DC6B97728FDABECE8CDFE6B42142126BB17AD195951AD0094C0D0E64BA9ACC6B86C232649D2C937B6C4CFB3192BCC93C0E614DB39786F5D7CAB1422B45147978EAAAD21D34448E51B5038D6600E2DBA14F7E8F6265BAFDFE6A83763517DB1F6FA36114C347B7F0E371ED379F47A008407B3772BFE3B6AD4
|
||||
padding = 65264F208203F02A43C83301
|
||||
tmp_aes_key = 4DD1F82FEA74E6AC13FCFB1C34E05A6FDD50954939D0B647E93440DEA62C9CC7
|
||||
tmp_aes_iv = 6EFD8D392FD679BB65A5D15EDD981946A61912D23CBBCDCFE92F867AD4B796AE</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 = 24A98346AED40FE134212501317F5B3CB5CBA1966F76C3E0E2D6F33DA17DBBB550741FE7F5F1B2A470E6C60327017713C8F15672B264B196F2FBD98B034FD1BC88067D95CDB1CE2594913DC85C0911C3B622FE317E43AE91743AD3EFECE5D54338F2F19A6E242C4EFC04BF9B7BB0CE1A4BC2CA6FFAD61750602020642627CB8977066D88F5D183EB9AE6D9CB231DBB0D6C8733C25C1F42C8A53F9C3341B9BFFCB5EBBF269BB2F0150A3C60C78AA4F4D7ECE0E626467879EA78DE4AD14BEF9738F63106322C419A91A8279B5C3AF3F6EFFC719BF2FBE791F63FA7397420C9913D31F2DEDE2A670DDE89FA147BE8F71F6EABBDE3EACC9247AEBA7E5454E04120C5B932AB6D2E4199CFDC8FAB8DC1FB9C198610F4D81D3B0B3FC703A33FC337694963156AFCE7B96241588CF340255A56AAE44786BB1448F59966D39808ACE52F06ED974C7652063429A7F1227BFBB9D8E9</code></pre>
|
||||
<pre><code>encrypted_data = 4D067B75538C141F45F0E658C3E0560239D75E2650BB0D4DD703C657D98EEE6F93C30E77F40730BA0A4A3374D4867F701069203481B225ED5B8235F789D3653CCF5D5673CD4E93953DB0E0174C565FF90D5CDDCED2167647E77C0617BCB22AED94CF17F98EF5D50CC498745AED4BED6DAF4A33F5FFC4389DB08069821BC82041D702AE603900CDD6A37D40323A2A969F4E5C8CE92778521B4860AE458E8E14C114CAB523D92169D98C1DBBC9D4A995AB2FCBEAC08307116A87744B9CE0B828138A11F00BBCF10AB42A401DB152E99C08E4DED2C3371B98BE001C736F098ACF118A5DC1DB1CF356292A900D66396196E86A1100E86492900B7607C67AA1EDA333E732926C54CF6292DEC9BC17ECDD289FD25E6F299D6A811AB8D5BF0CEE12A2E20B902E98C87378206D46F1DFE65395E7F46AADD0942772622C73F57EE36FBF5A4582F69EE3D9D676FF2B8AA39EFE8F8B</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 6C 47 0A 00 E1 7A 81 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 E5 13 A2 1E BE 09 99 3F
|
||||
0020 | 92 7E B1 38 D8 5B 28 87 20 8C D9 6C 6E 2E A8 51
|
||||
0030 | CC 03 32 86 E4 9C 99 E8 FE 50 01 00 24 A9 83 46
|
||||
0040 | AE D4 0F E1 34 21 25 01 31 7F 5B 3C B5 CB A1 96
|
||||
0050 | 6F 76 C3 E0 E2 D6 F3 3D A1 7D BB B5 50 74 1F E7
|
||||
0060 | F5 F1 B2 A4 70 E6 C6 03 27 01 77 13 C8 F1 56 72
|
||||
0070 | B2 64 B1 96 F2 FB D9 8B 03 4F D1 BC 88 06 7D 95
|
||||
0080 | CD B1 CE 25 94 91 3D C8 5C 09 11 C3 B6 22 FE 31
|
||||
0090 | 7E 43 AE 91 74 3A D3 EF EC E5 D5 43 38 F2 F1 9A
|
||||
00A0 | 6E 24 2C 4E FC 04 BF 9B 7B B0 CE 1A 4B C2 CA 6F
|
||||
00B0 | FA D6 17 50 60 20 20 64 26 27 CB 89 77 06 6D 88
|
||||
00C0 | F5 D1 83 EB 9A E6 D9 CB 23 1D BB 0D 6C 87 33 C2
|
||||
00D0 | 5C 1F 42 C8 A5 3F 9C 33 41 B9 BF FC B5 EB BF 26
|
||||
00E0 | 9B B2 F0 15 0A 3C 60 C7 8A A4 F4 D7 EC E0 E6 26
|
||||
00F0 | 46 78 79 EA 78 DE 4A D1 4B EF 97 38 F6 31 06 32
|
||||
0100 | 2C 41 9A 91 A8 27 9B 5C 3A F3 F6 EF FC 71 9B F2
|
||||
0110 | FB E7 91 F6 3F A7 39 74 20 C9 91 3D 31 F2 DE DE
|
||||
0120 | 2A 67 0D DE 89 FA 14 7B E8 F7 1F 6E AB BD E3 EA
|
||||
0130 | CC 92 47 AE BA 7E 54 54 E0 41 20 C5 B9 32 AB 6D
|
||||
0140 | 2E 41 99 CF DC 8F AB 8D C1 FB 9C 19 86 10 F4 D8
|
||||
0150 | 1D 3B 0B 3F C7 03 A3 3F C3 37 69 49 63 15 6A FC
|
||||
0160 | E7 B9 62 41 58 8C F3 40 25 5A 56 AA E4 47 86 BB
|
||||
0170 | 14 48 F5 99 66 D3 98 08 AC E5 2F 06 ED 97 4C 76
|
||||
0180 | 52 06 34 29 A7 F1 22 7B FB B9 D8 E9</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 F8 07 04 00 57 7C 81 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 26 42 06 E4 2D 00 4B 77
|
||||
0020 | E8 23 76 A4 40 D7 9E 0F 36 C0 74 7D 7C 98 4C 57
|
||||
0030 | 73 98 4B 10 C2 DE 52 A3 FE 50 01 00 4D 06 7B 75
|
||||
0040 | 53 8C 14 1F 45 F0 E6 58 C3 E0 56 02 39 D7 5E 26
|
||||
0050 | 50 BB 0D 4D D7 03 C6 57 D9 8E EE 6F 93 C3 0E 77
|
||||
0060 | F4 07 30 BA 0A 4A 33 74 D4 86 7F 70 10 69 20 34
|
||||
0070 | 81 B2 25 ED 5B 82 35 F7 89 D3 65 3C CF 5D 56 73
|
||||
0080 | CD 4E 93 95 3D B0 E0 17 4C 56 5F F9 0D 5C DD CE
|
||||
0090 | D2 16 76 47 E7 7C 06 17 BC B2 2A ED 94 CF 17 F9
|
||||
00A0 | 8E F5 D5 0C C4 98 74 5A ED 4B ED 6D AF 4A 33 F5
|
||||
00B0 | FF C4 38 9D B0 80 69 82 1B C8 20 41 D7 02 AE 60
|
||||
00C0 | 39 00 CD D6 A3 7D 40 32 3A 2A 96 9F 4E 5C 8C E9
|
||||
00D0 | 27 78 52 1B 48 60 AE 45 8E 8E 14 C1 14 CA B5 23
|
||||
00E0 | D9 21 69 D9 8C 1D BB C9 D4 A9 95 AB 2F CB EA C0
|
||||
00F0 | 83 07 11 6A 87 74 4B 9C E0 B8 28 13 8A 11 F0 0B
|
||||
0100 | BC F1 0A B4 2A 40 1D B1 52 E9 9C 08 E4 DE D2 C3
|
||||
0110 | 37 1B 98 BE 00 1C 73 6F 09 8A CF 11 8A 5D C1 DB
|
||||
0120 | 1C F3 56 29 2A 90 0D 66 39 61 96 E8 6A 11 00 E8
|
||||
0130 | 64 92 90 0B 76 07 C6 7A A1 ED A3 33 E7 32 92 6C
|
||||
0140 | 54 CF 62 92 DE C9 BC 17 EC DD 28 9F D2 5E 6F 29
|
||||
0150 | 9D 6A 81 1A B8 D5 BF 0C EE 12 A2 E2 0B 90 2E 98
|
||||
0160 | C8 73 78 20 6D 46 F1 DF E6 53 95 E7 F4 6A AD D0
|
||||
0170 | 94 27 72 62 2C 73 F5 7E E3 6F BF 5A 45 82 F6 9E
|
||||
0180 | E3 D9 D6 76 FF 2B 8A A3 9E FE 8F 8B</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>6C470A00E17A8166</code></td>
|
||||
<td><code>F8070400577C8166</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>E513A21EBE09993F927EB138D85B2887</code></td>
|
||||
<td><code>264206E42D004B77E82376A440D79E0F</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>208CD96C6E2EA851CC033286E49C99E8</code></td>
|
||||
<td><code>36C0747D7C984C5773984B10C2DE52A3</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE50010024A98346AED40FE134212501</code> <code>317F5B3CB5CBA1966F76C3E0E2D6F33D</code> <code>A17DBBB550741FE7F5F1B2A470E6C603</code> <code>27017713C8F15672B264B196F2FBD98B</code> <code>034FD1BC88067D95CDB1CE2594913DC8</code> <code>5C0911C3B622FE317E43AE91743AD3EF</code> <code>ECE5D54338F2F19A6E242C4EFC04BF9B</code> <code>7BB0CE1A4BC2CA6FFAD6175060202064</code> <code>2627CB8977066D88F5D183EB9AE6D9CB</code> <code>231DBB0D6C8733C25C1F42C8A53F9C33</code> <code>41B9BFFCB5EBBF269BB2F0150A3C60C7</code> <code>8AA4F4D7ECE0E626467879EA78DE4AD1</code> <code>4BEF9738F63106322C419A91A8279B5C</code> <code>3AF3F6EFFC719BF2FBE791F63FA73974</code> <code>20C9913D31F2DEDE2A670DDE89FA147B</code> <code>E8F71F6EABBDE3EACC9247AEBA7E5454</code> <code>E04120C5B932AB6D2E4199CFDC8FAB8D</code> <code>C1FB9C198610F4D81D3B0B3FC703A33F</code> <code>C337694963156AFCE7B96241588CF340</code> <code>255A56AAE44786BB1448F59966D39808</code> <code>ACE52F06ED974C7652063429A7F1227B</code><br> <code>FBB9D8E9</code></td>
|
||||
<td><code>FE5001004D067B75538C141F45F0E658</code> <code>C3E0560239D75E2650BB0D4DD703C657</code> <code>D98EEE6F93C30E77F40730BA0A4A3374</code> <code>D4867F701069203481B225ED5B8235F7</code> <code>89D3653CCF5D5673CD4E93953DB0E017</code> <code>4C565FF90D5CDDCED2167647E77C0617</code> <code>BCB22AED94CF17F98EF5D50CC498745A</code> <code>ED4BED6DAF4A33F5FFC4389DB0806982</code> <code>1BC82041D702AE603900CDD6A37D4032</code> <code>3A2A969F4E5C8CE92778521B4860AE45</code> <code>8E8E14C114CAB523D92169D98C1DBBC9</code> <code>D4A995AB2FCBEAC08307116A87744B9C</code> <code>E0B828138A11F00BBCF10AB42A401DB1</code> <code>52E99C08E4DED2C3371B98BE001C736F</code> <code>098ACF118A5DC1DB1CF356292A900D66</code> <code>396196E86A1100E86492900B7607C67A</code> <code>A1EDA333E732926C54CF6292DEC9BC17</code> <code>ECDD289FD25E6F299D6A811AB8D5BF0C</code> <code>EE12A2E20B902E98C87378206D46F1DF</code> <code>E65395E7F46AADD0942772622C73F57E</code> <code>E36FBF5A4582F69EE3D9D676FF2B8AA3</code><br> <code>9EFE8F8B</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 = 075A5BD962A4DC0178D33FF48730219966E6EBEE0AF4B9994353AB75022CD6116E00632316B31CBCBF4701D608AE260E800030FFC7D56971F78DC518EE18CC5DF5ADDAC1A8D35361D4DC6DB492B515EBF0D287EC6532AA5ADEA1D42697E58D347ECE3B8E0CD4F37AB0CE0BBF499CC6ABDF85DCA873BD891101150B8B56478B959D2A0F8E733A2EE131A7978C85E1CD6E2B7C13A3946C686B9A7308B6719860D72F6A91CC5D78872345F72344D0D3126E67FA0AC7538DB518BD2A13ABD81A56F760684CD25DD12394F96A996E684A0B708B4DDFCB9906B2A3399B5E04D58DC3D3B8E62962EA9735ED677789141C2E8E1843D24E523863F371866AFF0AB8E08CB5</code></pre>
|
||||
<pre><code>auth_key = B90DF59DA1482FBB5709B1743A6F49814EF1AC233B51F191FACAB22627198EF3832C9748BF8B72D795961EA32B745C04F749E52A5CB001B5242849BA1AD45C467490CCD941AA8F2D4D5A16A42AA999B7B9184244FAAC385DE2F1A35177523A6CDDF7AAF78B9312DCE2D0DF39D9E691CFC69CCA363A70D1ECEA58E7A9FF40F62914DE8EF2F524EFBE7F7DD8A43F4B8A83196193546F2DBC6706A7D78F7D36EF4C9356F8CED0D09600F9125C88D48F2D292DE98CF6B6000548803C5060084B2935C37A26F9A102B2A9147E7EA29BF2E2AD7B303B84DD92D1790B05868266B615E8BE6BD61441B58D422B4FCD9B8CBB0216D83A890A5B01F6DFC1C602BC68F3329A</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 98 2C E5 E1 7A 81 66
|
||||
0010 | A8 00 00 00 34 F7 CB 3B E5 13 A2 1E BE 09 99 3F
|
||||
0020 | 92 7E B1 38 D8 5B 28 87 20 8C D9 6C 6E 2E A8 51
|
||||
0030 | CC 03 32 86 E4 9C 99 E8 D5 58 A2 84 E9 13 85 89
|
||||
0040 | 04 EA BE 25 64 86 AD 6F</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 0C 15 35 58 7C 81 66
|
||||
0010 | 8C 00 00 00 34 F7 CB 3B 26 42 06 E4 2D 00 4B 77
|
||||
0020 | E8 23 76 A4 40 D7 9E 0F 36 C0 74 7D 7C 98 4C 57
|
||||
0030 | 73 98 4B 10 C2 DE 52 A3 A9 FD B9 62 4B 62 72 76
|
||||
0040 | BB 09 FC 08 2D 7B B4 4E</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>01982CE5E17A8166</code></td>
|
||||
<td><code>010C1535587C8166</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>A8000000</code> (168 in decimal)</td>
|
||||
<td><code>8C000000</code> (140 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>E513A21EBE09993F927EB138D85B2887</code></td>
|
||||
<td><code>264206E42D004B77E82376A440D79E0F</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>208CD96C6E2EA851CC033286E49C99E8</code></td>
|
||||
<td><code>36C0747D7C984C5773984B10C2DE52A3</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>D558A284E913858904EABE256486AD6F</code></td>
|
||||
<td><code>A9FDB9624B627276BB09FC082D7BB44E</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>
|
||||
|
|
|
@ -8,14 +8,14 @@
|
|||
Constructor
|
||||
Description
|
||||
businessRecipients
|
||||
">
|
||||
Specifies the chats that can receive Telegram Business away » and…">
|
||||
<meta property="og:title" content="BusinessRecipients">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Constructors
|
||||
Constructor
|
||||
Description
|
||||
businessRecipients
|
||||
">
|
||||
Specifies the chats that can receive Telegram Business away » and…">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -74,7 +74,7 @@ businessRecipients
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><a href="/constructor/businessRecipients">businessRecipients</a></td>
|
||||
<td> </td>
|
||||
<td>Specifies the chats that <strong>can</strong> receive Telegram Business <a href="/api/business#away-message">away »</a> and <a href="/api/business#greeting-message">greeting »</a> messages.<br><br>If <code>exclude_selected</code> is set, specifies all chats that <strong>cannot</strong> receive Telegram Business <a href="/api/business#away-message">away »</a> and <a href="/api/business#greeting-message">greeting »</a> messages.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
|
|
|
@ -8,14 +8,14 @@
|
|||
Constructor
|
||||
Description
|
||||
inputBusinessRecipients
|
||||
">
|
||||
Specifies the chats that can receive Telegram Business away…">
|
||||
<meta property="og:title" content="InputBusinessRecipients">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Constructors
|
||||
Constructor
|
||||
Description
|
||||
inputBusinessRecipients
|
||||
">
|
||||
Specifies the chats that can receive Telegram Business away…">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -74,7 +74,7 @@ inputBusinessRecipients
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><a href="/constructor/inputBusinessRecipients">inputBusinessRecipients</a></td>
|
||||
<td> </td>
|
||||
<td>Specifies the chats that <strong>can</strong> receive Telegram Business <a href="/api/business#away-message">away »</a> and <a href="/api/business#greeting-message">greeting »</a> messages.<br><br>If <code>exclude_selected</code> is set, specifies all chats that <strong>cannot</strong> receive Telegram Business <a href="/api/business#away-message">away »</a> and <a href="/api/business#greeting-message">greeting »</a> messages.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
|
|
|
@ -174,7 +174,7 @@
|
|||
|
||||
<p>To use Stars for ads, go to your bot's or channels' <em>Balance</em> or <em>Monetization</em> section and tap <em>'Buy Ads'</em>. Stars can only be used to advertise <strong>the same bot or channel</strong> that earned them.</p>
|
||||
<blockquote>
|
||||
<p>For more details on managing your Stars, receiving rewards, and placing ads, check out the <a href="https://telegram.org/tos/bot-developers#6-2-digital-goods-and-services">Terms of Service for Bot Developers</a> and <a href="https://telegram.org/tos/LINK">Content Creators</a>.</p>
|
||||
<p>For more details on managing your Stars, receiving rewards, and placing ads, check out the <a href="https://telegram.org/tos/bot-developers#6-2-digital-goods-and-services">Terms of Service for Bot Developers</a> and <a href="https://telegram.org/tos/content-creator-rewards">Content Creators</a>.</p>
|
||||
</blockquote>
|
||||
<p>That's all for today – we'll be busy browsing stories and playing games instead of working on the next update.</p>
|
||||
<div><br></div>
|
||||
|
|
Loading…
Add table
Reference in a new issue