mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-02-26 22:58:25 +01:00
Update content of files
This commit is contained in:
parent
fba3876e89
commit
c12274e922
4 changed files with 236 additions and 227 deletions
|
@ -542,7 +542,7 @@ Note that the stickerset can be fetched using <a href="/constructor/inputSticker
|
|||
<h4><a class="anchor" href="#recommended-channels-limit-premium" id="recommended-channels-limit-premium" name="recommended-channels-limit-premium"><i class="anchor-icon"></i></a><code>recommended_channels_limit_premium</code></h4>
|
||||
<p>The maximum number of similar channels that can be recommended by <a href="/method/channels.getChannelRecommendations">channels.getChannelRecommendations»</a> to <a href="/api/premium">Premium</a> users. (integer)</p>
|
||||
<h4><a class="anchor" href="#quote-length-max" id="quote-length-max" name="quote-length-max"><i class="anchor-icon"></i></a><code>quote_length_max</code></h4>
|
||||
<p> </p>
|
||||
<p>Maximum UTF-8 length of <a href="/constructor/inputReplyToMessage">quoted text</a>. (integer)</p>
|
||||
<h3><a class="anchor" href="#suggestions" id="suggestions" name="suggestions"><i class="anchor-icon"></i></a>Suggestions</h3>
|
||||
<p>The API can return a set of useful suggestions for users of graphical clients. </p>
|
||||
<h4><a class="anchor" href="#basic-suggestions" id="basic-suggestions" name="basic-suggestions"><i class="anchor-icon"></i></a>Basic suggestions</h4>
|
||||
|
|
|
@ -46,6 +46,31 @@
|
|||
|
||||
<p>Below you will find information on schema changes. For more details on the use of layers, see <a href="/api/invoking#layers">Invoking API methods</a>.</p>
|
||||
<h3><a class="anchor" href="#layer-167" id="layer-167" name="layer-167"><i class="anchor-icon"></i></a><a href="/schema?layer=167">Layer 167</a></h3>
|
||||
<p>To view all the changes since the last update, start reading the changelog @ <a href="#layer-159">Layer 159</a>.</p>
|
||||
<p>Most importantly, the following detailed articles were added:</p>
|
||||
<ul>
|
||||
<li><a href="/api/stories">Working with stories »</a></li>
|
||||
<li><a href="/api/boost">Working with boosts »</a></li>
|
||||
<li><a href="/api/giveaways">Working with giveaways »</a></li>
|
||||
<li><a href="/api/colors">Working with accent colors »</a></li>
|
||||
<li><a href="/api/recommend">Working with the recommendation system »</a></li>
|
||||
<li><a href="/api/action-bar">Working with the action bar »</a></li>
|
||||
<li><a href="/api/contacts">Working with contacts »</a></li>
|
||||
<li><a href="/api/block">Working with the blocklist »</a></li>
|
||||
<li><a href="/api/nearby">Working with geochats »</a></li>
|
||||
<li><a href="/api/privacy">Working with privacy settings »</a></li>
|
||||
<li><a href="/api/takeout">Working with the takeout API »</a></li>
|
||||
</ul>
|
||||
<p>Also added documentation for <a href="/api/files#streamed-uploads">streamed uploads</a> and improved the <a href="/api/invoking#sequential-requests">method queue</a> documentation.</p>
|
||||
<p>The following new deep links were added:</p>
|
||||
<ul>
|
||||
<li><a href="/api/links#story-links">Story links »</a></li>
|
||||
<li><a href="/api/links#boost-links">Boost links »</a></li>
|
||||
<li><a href="/api/links#mini-app-links">Direct mini app links »</a></li>
|
||||
<li><a href="/api/links#premium-giftcode-links">Premium giftcode links »</a></li>
|
||||
</ul>
|
||||
<p>And now, here are the changes that were made in this layer.</p>
|
||||
<p>Added support for <a href="/api/stories#reposting-stories">reposting stories</a>, <a href="/api/colors">profile colors</a>, <a href="/api/stories#statistics">story statistics</a>, <a href="/api/recommend">channel recommendations</a>, setting a <a href="/api/wallpapers#installing-wallpapers-in-a-specific-chat">wallpaper on both sides of a chat</a>, <a href="/method/channels.toggleViewForumAsMessages">syncing the "View as messages" setting</a> for forums, <a href="/api/transcribe">audio transcription</a> for non-<a href="/api/premium">Premium</a> users, improved quotes, improved <a href="/api/sponsored-messages">sponsored messages</a> and improved methods for <a href="/api/custom-emoji">custom emoji stickersets</a>.</p>
|
||||
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
|
@ -158,6 +183,7 @@
|
|||
<a href="/method/help.getPeerColors">help.getPeerColors</a>#da80f42f hash:<a href="/type/int">int</a> = <a href="/type/help.PeerColors">help.PeerColors</a>;
|
||||
<a href="/method/help.getPeerProfileColors">help.getPeerProfileColors</a>#abcfa9fd hash:<a href="/type/int">int</a> = <a href="/type/help.PeerColors">help.PeerColors</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-166" id="layer-166" name="layer-166"><i class="anchor-icon"></i></a><a href="/schema?layer=166">Layer 166</a></h3>
|
||||
<p>Introducing <a href="/api/giveaways">giveaways</a>, <a href="/api/links#premium-giftcode-links">gift code links</a>, <a href="/api/colors">accent colors</a>, <a href="/constructor/inputReplyToMessage">quotes</a>, improved <a href="/api/boost">boosts</a> and improved webpage previews.</p>
|
||||
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
|
||||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
|
@ -311,25 +337,6 @@
|
|||
<a href="/method/premium.getBoostsStatus">premium.getBoostsStatus</a>#042f1f61 peer:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/premium.BoostsStatus">premium.BoostsStatus</a>;
|
||||
<a href="/method/premium.getUserBoosts">premium.getUserBoosts</a>#39854d1f peer:<a href="/type/InputPeer">InputPeer</a> user_id:<a href="/type/InputUser">InputUser</a> = <a href="/type/premium.BoostsList">premium.BoostsList</a>;<br></code></pre></div>
|
||||
<h3><a class="anchor" href="#layer-164" id="layer-164" name="layer-164"><i class="anchor-icon"></i></a><a href="/schema?layer=164">Layer 164</a></h3>
|
||||
<p>To view all the changes since the last update, start reading the changelog @ <a href="#layer-159">Layer 159</a>.</p>
|
||||
<p>Most importantly, the following detailed articles were added:</p>
|
||||
<ul>
|
||||
<li><a href="/api/stories">Working with stories »</a></li>
|
||||
<li><a href="/api/action-bar">Working with the action bar »</a></li>
|
||||
<li><a href="/api/contacts">Working with contacts »</a></li>
|
||||
<li><a href="/api/block">Working with the blocklist »</a></li>
|
||||
<li><a href="/api/nearby">Working with geochats »</a></li>
|
||||
<li><a href="/api/privacy">Working with privacy settings »</a></li>
|
||||
<li><a href="/api/takeout">Working with the takeout API »</a></li>
|
||||
</ul>
|
||||
<p>Also added documentation for <a href="/api/files#streamed-uploads">streamed uploads</a> and improved the <a href="/api/invoking#sequential-requests">method queue</a> documentation.</p>
|
||||
<p>The following new deep links were added:</p>
|
||||
<ul>
|
||||
<li><a href="/api/links#story-links">Story links »</a></li>
|
||||
<li><a href="/api/links#boost-links">Boost links »</a></li>
|
||||
<li><a href="/api/links#mini-app-links">Direct mini app links »</a></li>
|
||||
</ul>
|
||||
<p>And now, here are the changes that were made in this layer.</p>
|
||||
<p>Introducing <a href="/api/stories">Telegram Stories</a>, <a href="/api/boost">channel boosts</a>, <a href="/api/auth#confirming-login">session confirmation</a>, <a href="/api/bots/webapps#side-menu-mini-apps">side menu Mini Apps</a>, <a href="/api/bots/webapps#direct-link-mini-apps">direct link Mini Apps</a>, custom methods and multiple new events for <a href="/api/bots/webapps">Mini Apps</a> and a <a href="/api/privacy">close friends list</a>.</p>
|
||||
<p>A new <code>story</code> <a href="/api/premium">premium feature identifier</a> was added.</p>
|
||||
<p>The following new <a href="/api/web-events">web events</a> were also added to provide more functionality to <a href="/api/bots/webapps">mini apps</a>:</p>
|
||||
|
|
|
@ -89,7 +89,7 @@
|
|||
<tr>
|
||||
<td><strong>quote_text</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td>
|
||||
<td>Used to quote-reply to only a certain section (specified here) of the original message.</td>
|
||||
<td>Used to quote-reply to only a certain section (specified here) of the original message. The maximum UTF-8 length for quotes is specified in the <a href="/api/config#quote-length-max">quote_length_max</a> config key.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>quote_entities</strong></td>
|
||||
|
@ -106,6 +106,8 @@
|
|||
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
|
||||
<p><a href="/type/InputReplyTo">InputReplyTo</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="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4>
|
||||
<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</p>
|
||||
<h4><a class="anchor" href="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4>
|
||||
<p>How to create styled text with message entities</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 E8 0E 0C 00 68 25 88 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 00 A3 0B 00 68 2B 88 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 92 F0 49 59 80 B4 76 E4
|
||||
0020 | 6B DF 65 7D 07 70 71 60</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>E80E0C0068258865</code></td>
|
||||
<td><code>00A30B00682B8865</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>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td><code>92F0495980B476E46BDF657D07707160</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 98 CA AF 68 25 88 65
|
||||
0010 | C8 00 00 00 63 24 16 05 D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D
|
||||
0030 | 53 37 4C DB 6D C7 9F 47 08 0E B6 DC 88 26 FC 4C
|
||||
0040 | F1 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 18 AD F8 68 2B 88 65
|
||||
0010 | CC 00 00 00 63 24 16 05 92 F0 49 59 80 B4 76 E4
|
||||
0020 | 6B DF 65 7D 07 70 71 60 2F 63 0E FC 18 D8 3F 59
|
||||
0030 | 08 18 FE 24 F6 6F 01 7A 08 1F E2 54 46 76 91 C4
|
||||
0040 | A9 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>0198CAAF68258865</code></td>
|
||||
<td><code>0118ADF8682B8865</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>C8000000</code> (200 in decimal)</td>
|
||||
<td><code>CC000000</code> (204 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td><code>92F0495980B476E46BDF657D07707160</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td><code>2F630EFC18D83F590818FE24F66F017A</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>080EB6DC8826FC4CF1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1060277239620062449</td>
|
||||
<td><code>081FE254467691C4A9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2297491421526082729</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 = 1060277239620062449</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1060277239620062449 = 1026477719 * 1032927671</code></p>
|
||||
<pre><code>p = 1026477719
|
||||
q = 1032927671</code></pre>
|
||||
<pre><code>pq = 2297491421526082729</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2297491421526082729 = 1266380771 * 1814218499</code></p>
|
||||
<pre><code>p = 1266380771
|
||||
q = 1814218499</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 0E B6 DC 88 26 FC 4C F1 00 00 00
|
||||
0010 | 04 3D 2E CE 97 00 00 00 04 3D 91 39 B7 00 00 00
|
||||
0020 | D2 08 7A B2 B7 EF 08 2C F1 3E 12 F8 22 63 E2 72
|
||||
0030 | A2 0E 1D AF 2E 4F 2B 1D 53 37 4C DB 6D C7 9F 47
|
||||
0040 | CD 73 18 26 F3 7B 34 0A 9D B0 A8 AA 8A 8C 07 B3
|
||||
0050 | B0 A8 2F D2 0D 4C 42 B8 F5 81 3F 70 34 5C CF F3
|
||||
<pre><code>0000 | 95 5F F5 A9 08 1F E2 54 46 76 91 C4 A9 00 00 00
|
||||
0010 | 04 4B 7B 6F E3 00 00 00 04 6C 22 C7 03 00 00 00
|
||||
0020 | 92 F0 49 59 80 B4 76 E4 6B DF 65 7D 07 70 71 60
|
||||
0030 | 2F 63 0E FC 18 D8 3F 59 08 18 FE 24 F6 6F 01 7A
|
||||
0040 | 89 0B EA EA BD 5B 69 76 A6 C5 C8 81 CF 33 A0 DA
|
||||
0050 | 76 17 6E 00 E9 FD 04 69 DC E4 8B 84 6D 2E 5D 5C
|
||||
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 = 1032927671</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>080EB6DC8826FC4CF1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1060277239620062449</td>
|
||||
<td><code>081FE254467691C4A9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2297491421526082729</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>043D2ECE97000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1026477719</td>
|
||||
<td><code>044B7B6FE3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1266380771</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>043D9139B7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1032927671</td>
|
||||
<td><code>046C22C703000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1814218499</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>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td><code>92F0495980B476E46BDF657D07707160</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td><code>2F630EFC18D83F590818FE24F66F017A</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>CD731826F37B340A9DB0A8AA8A8C07B3</code> <code>B0A82FD20D4C42B8F5813F70345CCFF3</code></td>
|
||||
<td><code>890BEAEABD5B6976A6C5C881CF33A0DA</code> <code>76176E00E9FD0469DCE48B846D2E5D5C</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1032927671</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 = 955FF5A9080EB6DC8826FC4CF1000000043D2ECE97000000043D9139B7000000D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F47CD731826F37B340A9DB0A8AA8A8C07B3B0A82FD20D4C42B8F5813F70345CCFF302000000
|
||||
random_padding_bytes = 2E73D9D0C93AAB380AE6EF27EBF31871543DC810D77E42C50CEAA1DB94C035E93B1BCB0CCEA69E9AE49D73EEA597D8CD47C9CA4A148E8E5875A3F00F576B5A5E8E700421185FEEB43B778073974064D7EBC3EABB6EC5D011F3A657A2</code></pre>
|
||||
<pre><code>data = 955FF5A9081FE254467691C4A9000000044B7B6FE3000000046C22C70300000092F0495980B476E46BDF657D077071602F630EFC18D83F590818FE24F66F017A890BEAEABD5B6976A6C5C881CF33A0DA76176E00E9FD0469DCE48B846D2E5D5C02000000
|
||||
random_padding_bytes = 86C4B7EED21EC45F0C30C385989248950C2C53001603D28ECBDC8DA82485EBE51074D3FC1976F4438D627D86849DB9289669247AE2C6EEF1E240D82E578B332A791ABF5C5C7D1AA4167143C80915155778106B6D40EF01C9C11618E4</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 = E3A7D57B19C3E792872C9D58B57E98599F6E26EE5A35A5368F4F97869B44FE71814F2C2DB42F99D6E9607A0D8D1A8534CCA8AFAB51F331244160B39A71DF59F7206D7C8309FFC25FE85470F6FB3A4B5A9151D971AE129787B2DD0C47FFD4C607DBDA9AB76D8A393DE0DDF7EA321BC77AB1CBE5055DA969A506EB0A131EEA6476FC40CED87DFB8300003EAEA81A775426A927A971D166D583323A7FC60B45C40B15BBFAFEF27C267AE9D4ED013672580562ED71BF148ED43959AAE3C3BABEA82E03625CC66E87ABFFC48454249AB7C644B97ABDD2BD5D8F03AD25B72272D18089285995B1BCAAE6BA5C69A52A105B1867D88A87A1F1DC3BF39092BBA8B9C0708F</code></pre>
|
||||
<pre><code>encrypted_data = 5B9412A8C31EE8ECD66EB148789C4C76F35A3A8F3F32A70E3F311369E9AD3545E60F527923112BA22F651632DE61DA429282A3CA7E86FDF3905088E338B415985DB8D57CDB3E993D4C6C25169277446FC1058B108FFFD6734615B27B0901F07B37FBCF05DDC8D6AD7B8C6B22A13AC74FCAEA972BEA4530D8004D63DBC93B484DABB91AF5B436983DA08E34825F725D2C751313FD49C708AAB9144F4E50D31D7B6FEED1EAF42AC6E76FF52D275FE3DBAE6B3119A6FDCDF9CB898393774E10F2A8F57996A0FDACDCFB22FA1F2908117A50CEA79A35D7752DD0E13A3B68DFBED5C39DF19ED757881E359A8679F9A0EA37CFAA7FE59122C922B52F2E5C4808E8540A</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 EC 0E 0C 00 68 25 88 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D
|
||||
0030 | 53 37 4C DB 6D C7 9F 47 04 3D 2E CE 97 00 00 00
|
||||
0040 | 04 3D 91 39 B7 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 E3 A7 D5 7B 19 C3 E7 92 87 2C 9D 58
|
||||
0060 | B5 7E 98 59 9F 6E 26 EE 5A 35 A5 36 8F 4F 97 86
|
||||
0070 | 9B 44 FE 71 81 4F 2C 2D B4 2F 99 D6 E9 60 7A 0D
|
||||
0080 | 8D 1A 85 34 CC A8 AF AB 51 F3 31 24 41 60 B3 9A
|
||||
0090 | 71 DF 59 F7 20 6D 7C 83 09 FF C2 5F E8 54 70 F6
|
||||
00A0 | FB 3A 4B 5A 91 51 D9 71 AE 12 97 87 B2 DD 0C 47
|
||||
00B0 | FF D4 C6 07 DB DA 9A B7 6D 8A 39 3D E0 DD F7 EA
|
||||
00C0 | 32 1B C7 7A B1 CB E5 05 5D A9 69 A5 06 EB 0A 13
|
||||
00D0 | 1E EA 64 76 FC 40 CE D8 7D FB 83 00 00 3E AE A8
|
||||
00E0 | 1A 77 54 26 A9 27 A9 71 D1 66 D5 83 32 3A 7F C6
|
||||
00F0 | 0B 45 C4 0B 15 BB FA FE F2 7C 26 7A E9 D4 ED 01
|
||||
0100 | 36 72 58 05 62 ED 71 BF 14 8E D4 39 59 AA E3 C3
|
||||
0110 | BA BE A8 2E 03 62 5C C6 6E 87 AB FF C4 84 54 24
|
||||
0120 | 9A B7 C6 44 B9 7A BD D2 BD 5D 8F 03 AD 25 B7 22
|
||||
0130 | 72 D1 80 89 28 59 95 B1 BC AA E6 BA 5C 69 A5 2A
|
||||
0140 | 10 5B 18 67 D8 8A 87 A1 F1 DC 3B F3 90 92 BB A8
|
||||
0150 | B9 C0 70 8F</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 C8 E1 07 00 69 2B 88 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 92 F0 49 59 80 B4 76 E4
|
||||
0020 | 6B DF 65 7D 07 70 71 60 2F 63 0E FC 18 D8 3F 59
|
||||
0030 | 08 18 FE 24 F6 6F 01 7A 04 4B 7B 6F E3 00 00 00
|
||||
0040 | 04 6C 22 C7 03 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 5B 94 12 A8 C3 1E E8 EC D6 6E B1 48
|
||||
0060 | 78 9C 4C 76 F3 5A 3A 8F 3F 32 A7 0E 3F 31 13 69
|
||||
0070 | E9 AD 35 45 E6 0F 52 79 23 11 2B A2 2F 65 16 32
|
||||
0080 | DE 61 DA 42 92 82 A3 CA 7E 86 FD F3 90 50 88 E3
|
||||
0090 | 38 B4 15 98 5D B8 D5 7C DB 3E 99 3D 4C 6C 25 16
|
||||
00A0 | 92 77 44 6F C1 05 8B 10 8F FF D6 73 46 15 B2 7B
|
||||
00B0 | 09 01 F0 7B 37 FB CF 05 DD C8 D6 AD 7B 8C 6B 22
|
||||
00C0 | A1 3A C7 4F CA EA 97 2B EA 45 30 D8 00 4D 63 DB
|
||||
00D0 | C9 3B 48 4D AB B9 1A F5 B4 36 98 3D A0 8E 34 82
|
||||
00E0 | 5F 72 5D 2C 75 13 13 FD 49 C7 08 AA B9 14 4F 4E
|
||||
00F0 | 50 D3 1D 7B 6F EE D1 EA F4 2A C6 E7 6F F5 2D 27
|
||||
0100 | 5F E3 DB AE 6B 31 19 A6 FD CD F9 CB 89 83 93 77
|
||||
0110 | 4E 10 F2 A8 F5 79 96 A0 FD AC DC FB 22 FA 1F 29
|
||||
0120 | 08 11 7A 50 CE A7 9A 35 D7 75 2D D0 E1 3A 3B 68
|
||||
0130 | DF BE D5 C3 9D F1 9E D7 57 88 1E 35 9A 86 79 F9
|
||||
0140 | A0 EA 37 CF AA 7F E5 91 22 C9 22 B5 2F 2E 5C 48
|
||||
0150 | 08 E8 54 0A</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 = 2E73D9D0C93AAB380AE6EF27EBF31871543DC810D77E42C50CEAA1DB9
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>EC0E0C0068258865</code></td>
|
||||
<td><code>C8E10700692B8865</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 = 2E73D9D0C93AAB380AE6EF27EBF31871543DC810D77E42C50CEAA1DB9
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td><code>92F0495980B476E46BDF657D07707160</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td><code>2F630EFC18D83F590818FE24F66F017A</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>043D2ECE97000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1026477719</td>
|
||||
<td><code>044B7B6FE3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1266380771</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>043D9139B7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1032927671</td>
|
||||
<td><code>046C22C703000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1814218499</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 = 2E73D9D0C93AAB380AE6EF27EBF31871543DC810D77E42C50CEAA1DB9
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE000100E3A7D57B19C3E792872C9D58</code> <code>B57E98599F6E26EE5A35A5368F4F9786</code> <code>9B44FE71814F2C2DB42F99D6E9607A0D</code> <code>8D1A8534CCA8AFAB51F331244160B39A</code> <code>71DF59F7206D7C8309FFC25FE85470F6</code> <code>FB3A4B5A9151D971AE129787B2DD0C47</code> <code>FFD4C607DBDA9AB76D8A393DE0DDF7EA</code> <code>321BC77AB1CBE5055DA969A506EB0A13</code> <code>1EEA6476FC40CED87DFB8300003EAEA8</code> <code>1A775426A927A971D166D583323A7FC6</code> <code>0B45C40B15BBFAFEF27C267AE9D4ED01</code> <code>3672580562ED71BF148ED43959AAE3C3</code> <code>BABEA82E03625CC66E87ABFFC4845424</code> <code>9AB7C644B97ABDD2BD5D8F03AD25B722</code> <code>72D18089285995B1BCAAE6BA5C69A52A</code> <code>105B1867D88A87A1F1DC3BF39092BBA8</code><br> <code>B9C0708F</code></td>
|
||||
<td><code>FE0001005B9412A8C31EE8ECD66EB148</code> <code>789C4C76F35A3A8F3F32A70E3F311369</code> <code>E9AD3545E60F527923112BA22F651632</code> <code>DE61DA429282A3CA7E86FDF3905088E3</code> <code>38B415985DB8D57CDB3E993D4C6C2516</code> <code>9277446FC1058B108FFFD6734615B27B</code> <code>0901F07B37FBCF05DDC8D6AD7B8C6B22</code> <code>A13AC74FCAEA972BEA4530D8004D63DB</code> <code>C93B484DABB91AF5B436983DA08E3482</code> <code>5F725D2C751313FD49C708AAB9144F4E</code> <code>50D31D7B6FEED1EAF42AC6E76FF52D27</code> <code>5FE3DBAE6B3119A6FDCDF9CB89839377</code> <code>4E10F2A8F57996A0FDACDCFB22FA1F29</code> <code>08117A50CEA79A35D7752DD0E13A3B68</code> <code>DFBED5C39DF19ED757881E359A8679F9</code> <code>A0EA37CFAA7FE59122C922B52F2E5C48</code><br> <code>08E8540A</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = 2E73D9D0C93AAB380AE6EF27EBF31871543DC810D77E42C50CEAA1DB9
|
|||
<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 F0 AE 79 69 25 88 65
|
||||
0010 | 98 02 00 00 5C 07 E8 D0 D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D
|
||||
0030 | 53 37 4C DB 6D C7 9F 47 FE 50 02 00 EF E1 2F 5F
|
||||
0040 | 46 FC 0A 39 40 03 05 58 E3 0F E7 23 0C 76 D3 19
|
||||
0050 | C3 23 1D 8D 73 04 A2 69 3F A1 2B E4 A6 79 CA F5
|
||||
0060 | 2B 2B 33 4D A4 E9 F8 42 CD EB 46 C6 E6 53 92 80
|
||||
0070 | E3 F7 C2 53 D3 EB 82 70 A4 B6 86 DB 8B FB 19 DB
|
||||
0080 | 29 6E DB 7B 95 CF 3B 42 53 83 12 9B 36 80 0D E5
|
||||
0090 | 3A 85 5F C0 8D 6C 14 93 D8 03 65 3F 95 13 C9 B0
|
||||
00A0 | 79 B5 F0 D2 FC D1 66 B2 5B 19 9C E1 CE FE 7B B4
|
||||
00B0 | 69 82 AD 38 B2 69 79 3D 7A 46 7E 77 6C BB D8 5D
|
||||
00C0 | 26 95 4E 20 31 91 C2 5B 6B 3C 11 EB C6 88 40 97
|
||||
00D0 | F4 12 AE 90 04 9F 6E D5 DA 99 37 96 48 79 F9 D0
|
||||
00E0 | D2 0B 5E 52 23 A7 59 CF C3 AC 77 27 57 6F CA FD
|
||||
00F0 | 5B 69 58 5B 73 F7 EB 87 9D F0 E3 75 0A 67 A2 CD
|
||||
0100 | A2 46 83 E7 9B 5A 23 D6 5D 1D 48 07 63 A3 1A 41
|
||||
0110 | AC AC EF 45 B8 AD 2C 74 F4 27 92 7E EC 57 79 67
|
||||
0120 | 70 77 47 03 F1 62 BC EE 3A 78 30 0B B2 94 CC F5
|
||||
0130 | 1A 25 99 CB B4 01 1D 35 82 1C E9 3E 79 2B 83 CE
|
||||
0140 | B3 E2 0B 1E B1 38 00 22 4A 52 AF 1A 15 0C BF 65
|
||||
0150 | 9B 53 5F 8E 1B 80 77 F7 65 D8 7E C6 38 EA 36 B0
|
||||
0160 | 11 E4 88 01 98 8D 58 2A 10 02 B2 10 AA 7D E8 E0
|
||||
0170 | BF 0D 69 F2 A8 A7 F7 2D 93 9E E3 DC 27 D9 1B C1
|
||||
0180 | C9 10 32 19 06 2A EB 6D 62 1F BA 77 DA 23 E6 36
|
||||
0190 | B8 1F 84 B8 5B B1 39 74 DE 74 C9 53 3D B0 A0 29
|
||||
01A0 | 4C BD AD 81 C1 D9 70 04 DE 6F E1 49 76 8A CD 0F
|
||||
01B0 | AD 17 17 D4 BF FD 57 0F 2C 80 2E EA E3 DA F1 8C
|
||||
01C0 | 9B FE 08 C7 08 D4 33 19 D5 61 E2 47 96 7D A5 42
|
||||
01D0 | F5 CA 8C 2E DE 98 C8 43 A1 88 C9 62 8C AC E0 44
|
||||
01E0 | 44 D3 C9 A3 66 E4 CE B6 A3 0C 08 8B F3 E5 AA AC
|
||||
01F0 | 77 A0 C8 8B 02 51 5A CE D1 37 4C E5 4F A7 FE 9F
|
||||
0200 | 8B E1 36 82 D3 E7 41 22 4D BB A8 B9 4E 08 F6 F4
|
||||
0210 | AD 16 8D 0B 01 C0 AA AF 7A 7B 95 32 BF 6F 45 5C
|
||||
0220 | 60 32 DA 76 07 95 B7 88 73 7C 6A 9B 6B 11 B2 E5
|
||||
0230 | 4A 27 A9 94 26 2F 41 99 02 D9 8A 0A 2E 0E 2B C7
|
||||
0240 | F5 8F 98 45 6D DF 5E 4D 40 E1 3E 98 F7 6F D3 36
|
||||
0250 | 57 E0 AE 6F B8 DB AB 20 58 AE F1 43 D2 1F 03 16
|
||||
0260 | DE 1A 6B 65 4B 6F 37 C4 A4 00 33 C9 0E 33 DB 19
|
||||
0270 | 5E D2 4B D9 6C 46 E8 26 D4 F9 1A 1C 9B 06 E2 93
|
||||
0280 | 93 B4 9E E9 AD 9A 6F 1D 8C 02 07 09</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 94 76 BD 69 2B 88 65
|
||||
0010 | 94 02 00 00 5C 07 E8 D0 92 F0 49 59 80 B4 76 E4
|
||||
0020 | 6B DF 65 7D 07 70 71 60 2F 63 0E FC 18 D8 3F 59
|
||||
0030 | 08 18 FE 24 F6 6F 01 7A FE 50 02 00 13 45 C3 6E
|
||||
0040 | 4F A8 9C B1 A6 92 04 0F EB ED 93 5A 8B DF DA FB
|
||||
0050 | 4D 49 0C 0B 8C BC B8 B7 47 40 71 29 C2 8B 97 59
|
||||
0060 | 5A ED 04 0C 36 86 46 5E B0 E4 1E 9F AD 13 6C 00
|
||||
0070 | 16 60 A7 BC 78 A7 89 BE CD 3E 21 FF 7C 5C 03 E6
|
||||
0080 | EC 86 D0 B7 C0 F7 B0 EF 24 2C 1A E8 67 CB 55 80
|
||||
0090 | 05 A3 CE 0A EE 71 9F 76 E0 DE 0F 93 51 8C AE 54
|
||||
00A0 | 35 D5 7A AE 85 50 DF D1 76 D5 85 0D 91 62 FE EC
|
||||
00B0 | FF F0 3A 62 BB A5 E9 37 19 BC F4 80 C3 9F 8F 5D
|
||||
00C0 | D7 3B F9 D4 56 AB 2A 41 33 2C 80 B8 1A 41 19 EF
|
||||
00D0 | 68 6B 83 E1 58 AB 41 0A 33 6F AF 67 E1 2C D3 F8
|
||||
00E0 | 5C CB 39 EE 55 3C 2F 36 7C 21 6C 9A 24 18 81 DF
|
||||
00F0 | F5 F9 68 88 E1 58 CD EF 64 0A 69 B9 8E 3D 5E 66
|
||||
0100 | 3B 90 0B 8E 92 C9 4D 84 92 96 24 AE 28 8E D7 86
|
||||
0110 | 26 45 2F 76 0E CB EB F2 F2 35 D4 32 DB 14 14 70
|
||||
0120 | F0 67 76 A7 84 8C 63 23 EC 93 29 62 39 86 88 1D
|
||||
0130 | FE 2F EC 38 DE 7B 83 99 C5 7E B5 A7 7B 66 84 6F
|
||||
0140 | 92 E3 E1 67 74 1A 07 BA F0 FC CA FA EC 06 D3 1B
|
||||
0150 | 54 56 30 11 9D A3 A1 E7 9B 68 47 31 47 E9 A1 BA
|
||||
0160 | BB 6C 8B 77 05 1F 4F D5 0C 69 43 63 8E FE 96 46
|
||||
0170 | 61 6C 53 5E C7 22 1D E0 93 69 82 63 14 B7 B0 7B
|
||||
0180 | 12 D4 1F 29 62 E6 8D 91 D8 CD 0B 38 A4 E7 D7 85
|
||||
0190 | 16 F4 8F 55 F4 C2 77 99 E0 22 B1 2B 33 F5 A1 CB
|
||||
01A0 | FD 2D 72 0B 06 28 4B 49 CB 2B C4 9A 72 C9 48 69
|
||||
01B0 | 05 E3 4C 85 7A C1 A0 F8 8D 15 F4 69 64 A4 F6 F5
|
||||
01C0 | EA 6C F8 C1 35 0A F6 F9 93 05 91 8D 0A 55 E2 1E
|
||||
01D0 | D8 61 DB D9 1E C5 55 B9 78 D2 DF 8D 4E CB B5 12
|
||||
01E0 | 41 BF 9F E9 DA 2E 61 C8 C9 C8 33 4E DB D7 8D E9
|
||||
01F0 | 34 8A 91 7B A3 87 5C A0 F4 03 AE EF 4A 21 BD 22
|
||||
0200 | CB B8 34 BA 75 A9 F0 27 74 A5 AF 1F 29 F9 30 97
|
||||
0210 | EE DC BF 9B BB 8D 4E A1 C5 9A AB 26 19 50 AF 03
|
||||
0220 | C9 3A CB 6C F1 FC 46 CD 8A A8 13 18 03 CA E5 3D
|
||||
0230 | 1C 31 B7 83 8C 7A 26 69 13 D2 88 89 2F F3 BC DF
|
||||
0240 | BC B4 34 EE E6 48 36 17 9C C2 70 55 BB E1 D0 BC
|
||||
0250 | 56 33 01 5A 29 27 0C 58 E5 D3 5B C0 4F 00 87 C9
|
||||
0260 | 51 59 54 8E 11 8D 1C CE 4D 17 8D 90 60 E8 5E A6
|
||||
0270 | 96 7B ED 40 48 FF 8F 75 DB BC A2 61 C1 4E 65 D6
|
||||
0280 | 71 99 69 E2 8A BF BC 21 2C 2B 21 90</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 = 2E73D9D0C93AAB380AE6EF27EBF31871543DC810D77E42C50CEAA1DB9
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01F0AE7969258865</code></td>
|
||||
<td><code>019476BD692B8865</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>98020000</code> (664 in decimal)</td>
|
||||
<td><code>94020000</code> (660 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = 2E73D9D0C93AAB380AE6EF27EBF31871543DC810D77E42C50CEAA1DB9
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td><code>92F0495980B476E46BDF657D07707160</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td><code>2F630EFC18D83F590818FE24F66F017A</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE500200EFE12F5F46FC0A3940030558</code> <code>E30FE7230C76D319C3231D8D7304A269</code> <code>3FA12BE4A679CAF52B2B334DA4E9F842</code> <code>CDEB46C6E6539280E3F7C253D3EB8270</code> <code>A4B686DB8BFB19DB296EDB7B95CF3B42</code> <code>5383129B36800DE53A855FC08D6C1493</code> <code>D803653F9513C9B079B5F0D2FCD166B2</code> <code>5B199CE1CEFE7BB46982AD38B269793D</code> <code>7A467E776CBBD85D26954E203191C25B</code> <code>6B3C11EBC6884097F412AE90049F6ED5</code> <code>DA9937964879F9D0D20B5E5223A759CF</code> <code>C3AC7727576FCAFD5B69585B73F7EB87</code> <code>9DF0E3750A67A2CDA24683E79B5A23D6</code> <code>5D1D480763A31A41ACACEF45B8AD2C74</code> <code>F427927EEC57796770774703F162BCEE</code> <code>3A78300BB294CCF51A2599CBB4011D35</code> <code>821CE93E792B83CEB3E20B1EB1380022</code> <code>4A52AF1A150CBF659B535F8E1B8077F7</code> <code>65D87EC638EA36B011E48801988D582A</code> <code>1002B210AA7DE8E0BF0D69F2A8A7F72D</code> <code>939EE3DC27D91BC1C9103219062AEB6D</code> <code>621FBA77DA23E636B81F84B85BB13974</code> <code>DE74C9533DB0A0294CBDAD81C1D97004</code> <code>DE6FE149768ACD0FAD1717D4BFFD570F</code> <code>2C802EEAE3DAF18C9BFE08C708D43319</code> <code>D561E247967DA542F5CA8C2EDE98C843</code> <code>A188C9628CACE04444D3C9A366E4CEB6</code> <code>A30C088BF3E5AAAC77A0C88B02515ACE</code> <code>D1374CE54FA7FE9F8BE13682D3E74122</code> <code>4DBBA8B94E08F6F4AD168D0B01C0AAAF</code> <code>7A7B9532BF6F455C6032DA760795B788</code> <code>737C6A9B6B11B2E54A27A994262F4199</code> <code>02D98A0A2E0E2BC7F58F98456DDF5E4D</code> <code>40E13E98F76FD33657E0AE6FB8DBAB20</code> <code>58AEF143D21F0316DE1A6B654B6F37C4</code> <code>A40033C90E33DB195ED24BD96C46E826</code> <code>D4F91A1C9B06E29393B49EE9AD9A6F1D</code><br> <code>8C020709</code></td>
|
||||
<td><code>FE5002001345C36E4FA89CB1A692040F</code> <code>EBED935A8BDFDAFB4D490C0B8CBCB8B7</code> <code>47407129C28B97595AED040C3686465E</code> <code>B0E41E9FAD136C001660A7BC78A789BE</code> <code>CD3E21FF7C5C03E6EC86D0B7C0F7B0EF</code> <code>242C1AE867CB558005A3CE0AEE719F76</code> <code>E0DE0F93518CAE5435D57AAE8550DFD1</code> <code>76D5850D9162FEECFFF03A62BBA5E937</code> <code>19BCF480C39F8F5DD73BF9D456AB2A41</code> <code>332C80B81A4119EF686B83E158AB410A</code> <code>336FAF67E12CD3F85CCB39EE553C2F36</code> <code>7C216C9A241881DFF5F96888E158CDEF</code> <code>640A69B98E3D5E663B900B8E92C94D84</code> <code>929624AE288ED78626452F760ECBEBF2</code> <code>F235D432DB141470F06776A7848C6323</code> <code>EC9329623986881DFE2FEC38DE7B8399</code> <code>C57EB5A77B66846F92E3E167741A07BA</code> <code>F0FCCAFAEC06D31B545630119DA3A1E7</code> <code>9B68473147E9A1BABB6C8B77051F4FD5</code> <code>0C6943638EFE9646616C535EC7221DE0</code> <code>9369826314B7B07B12D41F2962E68D91</code> <code>D8CD0B38A4E7D78516F48F55F4C27799</code> <code>E022B12B33F5A1CBFD2D720B06284B49</code> <code>CB2BC49A72C9486905E34C857AC1A0F8</code> <code>8D15F46964A4F6F5EA6CF8C1350AF6F9</code> <code>9305918D0A55E21ED861DBD91EC555B9</code> <code>78D2DF8D4ECBB51241BF9FE9DA2E61C8</code> <code>C9C8334EDBD78DE9348A917BA3875CA0</code> <code>F403AEEF4A21BD22CBB834BA75A9F027</code> <code>74A5AF1F29F93097EEDCBF9BBB8D4EA1</code> <code>C59AAB261950AF03C93ACB6CF1FC46CD</code> <code>8AA8131803CAE53D1C31B7838C7A2669</code> <code>13D288892FF3BCDFBCB434EEE6483617</code> <code>9CC27055BBE1D0BC5633015A29270C58</code> <code>E5D35BC04F0087C95159548E118D1CCE</code> <code>4D178D9060E85EA6967BED4048FF8F75</code> <code>DBBCA261C14E65D6719969E28ABFBC21</code><br> <code>2C2B2190</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = 2E73D9D0C93AAB380AE6EF27EBF31871543DC810D77E42C50CEAA1DB9
|
|||
<!-- 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 = EFE12F5F46FC0A3940030558E30FE7230C76D319C3231D8D7304A2693FA12BE4A679CAF52B2B334DA4E9F842CDEB46C6E6539280E3F7C253D3EB8270A4B686DB8BFB19DB296EDB7B95CF3B425383129B36800DE53A855FC08D6C1493D803653F9513C9B079B5F0D2FCD166B25B199CE1CEFE7BB46982AD38B269793D7A467E776CBBD85D26954E203191C25B6B3C11EBC6884097F412AE90049F6ED5DA9937964879F9D0D20B5E5223A759CFC3AC7727576FCAFD5B69585B73F7EB879DF0E3750A67A2CDA24683E79B5A23D65D1D480763A31A41ACACEF45B8AD2C74F427927EEC57796770774703F162BCEE3A78300BB294CCF51A2599CBB4011D35821CE93E792B83CEB3E20B1EB13800224A52AF1A150CBF659B535F8E1B8077F765D87EC638EA36B011E48801988D582A1002B210AA7DE8E0BF0D69F2A8A7F72D939EE3DC27D91BC1C9103219062AEB6D621FBA77DA23E636B81F84B85BB13974DE74C9533DB0A0294CBDAD81C1D97004DE6FE149768ACD0FAD1717D4BFFD570F2C802EEAE3DAF18C9BFE08C708D43319D561E247967DA542F5CA8C2EDE98C843A188C9628CACE04444D3C9A366E4CEB6A30C088BF3E5AAAC77A0C88B02515ACED1374CE54FA7FE9F8BE13682D3E741224DBBA8B94E08F6F4AD168D0B01C0AAAF7A7B9532BF6F455C6032DA760795B788737C6A9B6B11B2E54A27A994262F419902D98A0A2E0E2BC7F58F98456DDF5E4D40E13E98F76FD33657E0AE6FB8DBAB2058AEF143D21F0316DE1A6B654B6F37C4A40033C90E33DB195ED24BD96C46E826D4F91A1C9B06E29393B49EE9AD9A6F1D8C020709
|
||||
tmp_aes_key = 7485114AC6140821FF57D30B90473FED4F905B663D46526B50D36FF6A90DBA26
|
||||
tmp_aes_iv = 5E472BBF1F2782B792E0EB7E26E3BCEF79A02E6CF37F0F6DFFBB2899CD731826</code></pre>
|
||||
<pre><code>encrypted_answer = 1345C36E4FA89CB1A692040FEBED935A8BDFDAFB4D490C0B8CBCB8B747407129C28B97595AED040C3686465EB0E41E9FAD136C001660A7BC78A789BECD3E21FF7C5C03E6EC86D0B7C0F7B0EF242C1AE867CB558005A3CE0AEE719F76E0DE0F93518CAE5435D57AAE8550DFD176D5850D9162FEECFFF03A62BBA5E93719BCF480C39F8F5DD73BF9D456AB2A41332C80B81A4119EF686B83E158AB410A336FAF67E12CD3F85CCB39EE553C2F367C216C9A241881DFF5F96888E158CDEF640A69B98E3D5E663B900B8E92C94D84929624AE288ED78626452F760ECBEBF2F235D432DB141470F06776A7848C6323EC9329623986881DFE2FEC38DE7B8399C57EB5A77B66846F92E3E167741A07BAF0FCCAFAEC06D31B545630119DA3A1E79B68473147E9A1BABB6C8B77051F4FD50C6943638EFE9646616C535EC7221DE09369826314B7B07B12D41F2962E68D91D8CD0B38A4E7D78516F48F55F4C27799E022B12B33F5A1CBFD2D720B06284B49CB2BC49A72C9486905E34C857AC1A0F88D15F46964A4F6F5EA6CF8C1350AF6F99305918D0A55E21ED861DBD91EC555B978D2DF8D4ECBB51241BF9FE9DA2E61C8C9C8334EDBD78DE9348A917BA3875CA0F403AEEF4A21BD22CBB834BA75A9F02774A5AF1F29F93097EEDCBF9BBB8D4EA1C59AAB261950AF03C93ACB6CF1FC46CD8AA8131803CAE53D1C31B7838C7A266913D288892FF3BCDFBCB434EEE64836179CC27055BBE1D0BC5633015A29270C58E5D35BC04F0087C95159548E118D1CCE4D178D9060E85EA6967BED4048FF8F75DBBCA261C14E65D6719969E28ABFBC212C2B2190
|
||||
tmp_aes_key = 3A2455F86992C73BB43A2A7A7397E18CD56E1756616A3CBF4F601F32E08176B7
|
||||
tmp_aes_iv = EBE760B2B410B8ADE48EC7F9702FF9B9E76D9E5C4C18FD3ACE47DF2A890BEAEA</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = F6DB36B3D0AD50E262DC9B8CB08961283051B8C8BA0D89B5D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F4703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100544DC651034C590A0B2ACC429B32D2A381696C92401BE264CD63159498AE0B28BB1D3B9CF5F907ED3A05D62AE10D08797FB4103CB09E2265ACE276CB9454BCFA92D68792720FED32CB6008E98D22BA5FFA5605DDB0D85426CAA73538A75043ED81E90519EC6D8F1680E694C2543DB5C11472244CA7B8CBAE49D3FAEA10DA929D28034CCE837153416BCD54D93CC3B13015BBC3E9A8950DAD0925837BE01348B54BEE8D5415F5F0A8B5A1F96906B570CBE092B0C1DAB1B5A6C9617B1A476CDFC44FAA2A1DB0162EAC404E9FDD38C2412BDB2ABDE041A0C5A92AB07693D0EFA164D3F2FF2054C19BB296F1278716C7138168147F2A02E842D1488E1ECE9206038669258865210D0FAFE251C1DB
|
||||
answer = BA0D89B5D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F4703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100544DC651034C590A0B2ACC429B32D2A381696C92401BE264CD63159498AE0B28BB1D3B9CF5F907ED3A05D62AE10D08797FB4103CB09E2265ACE276CB9454BCFA92D68792720FED32CB6008E98D22BA5FFA5605DDB0D85426CAA73538A75043ED81E90519EC6D8F1680E694C2543DB5C11472244CA7B8CBAE49D3FAEA10DA929D28034CCE837153416BCD54D93CC3B13015BBC3E9A8950DAD0925837BE01348B54BEE8D5415F5F0A8B5A1F96906B570CBE092B0C1DAB1B5A6C9617B1A476CDFC44FAA2A1DB0162EAC404E9FDD38C2412BDB2ABDE041A0C5A92AB07693D0EFA164D3F2FF2054C19BB296F1278716C7138168147F2A02E842D1488E1ECE9206038669258865210D0FAFE251C1DB</code></pre>
|
||||
<pre><code>answer_with_hash = 6A51F258B5F58C53F4C54618B948DB07A5393D9CBA0D89B592F0495980B476E46BDF657D077071602F630EFC18D83F590818FE24F66F017A03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100232939B8A5969CA74982302C5B03AC4A9F14E18E0D75EC871CEACDF00B02BE7D1892EAC44715DA81D27D1D6EFAE52DEB320BB4D09B126E1E560BC672E0DB586F1D6ED0B7374595F1B53E0EDDC9F5C33C79F673BE0511A5839A2791AF995D18FE10BCA1274A28E8CF147287D4F38A3C4BB33C7779FA8A2100E9715C0023E595D760D6C9A6695A6A085CCD8F22712575ABE74A01C1A05400F56D4B61E8A83B75596B2688A2D6EBCA22AAF4ED3EE0E4356978251B99333FE224730FD8371A34919DAD073E46C6E503470394D60FDFC7C11FC62B87FAC8AB93456B139D49F9DA6E77B3DF4CACEB0C1F9B3FE2CD466354FC3B8CB2923C1F8F12505159210A7796535F692B886531701530C6F9AF84
|
||||
answer = BA0D89B592F0495980B476E46BDF657D077071602F630EFC18D83F590818FE24F66F017A03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100232939B8A5969CA74982302C5B03AC4A9F14E18E0D75EC871CEACDF00B02BE7D1892EAC44715DA81D27D1D6EFAE52DEB320BB4D09B126E1E560BC672E0DB586F1D6ED0B7374595F1B53E0EDDC9F5C33C79F673BE0511A5839A2791AF995D18FE10BCA1274A28E8CF147287D4F38A3C4BB33C7779FA8A2100E9715C0023E595D760D6C9A6695A6A085CCD8F22712575ABE74A01C1A05400F56D4B61E8A83B75596B2688A2D6EBCA22AAF4ED3EE0E4356978251B99333FE224730FD8371A34919DAD073E46C6E503470394D60FDFC7C11FC62B87FAC8AB93456B139D49F9DA6E77B3DF4CACEB0C1F9B3FE2CD466354FC3B8CB2923C1F8F12505159210A7796535F692B886531701530C6F9AF84</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 D2 08 7A B2 B7 EF 08 2C F1 3E 12 F8
|
||||
0010 | 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D 53 37 4C DB
|
||||
0020 | 6D C7 9F 47 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 92 F0 49 59 80 B4 76 E4 6B DF 65 7D
|
||||
0010 | 07 70 71 60 2F 63 0E FC 18 D8 3F 59 08 18 FE 24
|
||||
0020 | F6 6F 01 7A 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 = BA0D89B5D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F4
|
|||
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 | 54 4D C6 51 03 4C 59 0A 0B 2A CC 42 9B 32 D2 A3
|
||||
0140 | 81 69 6C 92 40 1B E2 64 CD 63 15 94 98 AE 0B 28
|
||||
0150 | BB 1D 3B 9C F5 F9 07 ED 3A 05 D6 2A E1 0D 08 79
|
||||
0160 | 7F B4 10 3C B0 9E 22 65 AC E2 76 CB 94 54 BC FA
|
||||
0170 | 92 D6 87 92 72 0F ED 32 CB 60 08 E9 8D 22 BA 5F
|
||||
0180 | FA 56 05 DD B0 D8 54 26 CA A7 35 38 A7 50 43 ED
|
||||
0190 | 81 E9 05 19 EC 6D 8F 16 80 E6 94 C2 54 3D B5 C1
|
||||
01A0 | 14 72 24 4C A7 B8 CB AE 49 D3 FA EA 10 DA 92 9D
|
||||
01B0 | 28 03 4C CE 83 71 53 41 6B CD 54 D9 3C C3 B1 30
|
||||
01C0 | 15 BB C3 E9 A8 95 0D AD 09 25 83 7B E0 13 48 B5
|
||||
01D0 | 4B EE 8D 54 15 F5 F0 A8 B5 A1 F9 69 06 B5 70 CB
|
||||
01E0 | E0 92 B0 C1 DA B1 B5 A6 C9 61 7B 1A 47 6C DF C4
|
||||
01F0 | 4F AA 2A 1D B0 16 2E AC 40 4E 9F DD 38 C2 41 2B
|
||||
0200 | DB 2A BD E0 41 A0 C5 A9 2A B0 76 93 D0 EF A1 64
|
||||
0210 | D3 F2 FF 20 54 C1 9B B2 96 F1 27 87 16 C7 13 81
|
||||
0220 | 68 14 7F 2A 02 E8 42 D1 48 8E 1E CE 92 06 03 86
|
||||
0230 | 69 25 88 65</code></pre>
|
||||
0130 | 23 29 39 B8 A5 96 9C A7 49 82 30 2C 5B 03 AC 4A
|
||||
0140 | 9F 14 E1 8E 0D 75 EC 87 1C EA CD F0 0B 02 BE 7D
|
||||
0150 | 18 92 EA C4 47 15 DA 81 D2 7D 1D 6E FA E5 2D EB
|
||||
0160 | 32 0B B4 D0 9B 12 6E 1E 56 0B C6 72 E0 DB 58 6F
|
||||
0170 | 1D 6E D0 B7 37 45 95 F1 B5 3E 0E DD C9 F5 C3 3C
|
||||
0180 | 79 F6 73 BE 05 11 A5 83 9A 27 91 AF 99 5D 18 FE
|
||||
0190 | 10 BC A1 27 4A 28 E8 CF 14 72 87 D4 F3 8A 3C 4B
|
||||
01A0 | B3 3C 77 79 FA 8A 21 00 E9 71 5C 00 23 E5 95 D7
|
||||
01B0 | 60 D6 C9 A6 69 5A 6A 08 5C CD 8F 22 71 25 75 AB
|
||||
01C0 | E7 4A 01 C1 A0 54 00 F5 6D 4B 61 E8 A8 3B 75 59
|
||||
01D0 | 6B 26 88 A2 D6 EB CA 22 AA F4 ED 3E E0 E4 35 69
|
||||
01E0 | 78 25 1B 99 33 3F E2 24 73 0F D8 37 1A 34 91 9D
|
||||
01F0 | AD 07 3E 46 C6 E5 03 47 03 94 D6 0F DF C7 C1 1F
|
||||
0200 | C6 2B 87 FA C8 AB 93 45 6B 13 9D 49 F9 DA 6E 77
|
||||
0210 | B3 DF 4C AC EB 0C 1F 9B 3F E2 CD 46 63 54 FC 3B
|
||||
0220 | 8C B2 92 3C 1F 8F 12 50 51 59 21 0A 77 96 53 5F
|
||||
0230 | 69 2B 88 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 = BA0D89B5D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F4
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td><code>92F0495980B476E46BDF657D07707160</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td><code>2F630EFC18D83F590818FE24F66F017A</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B5D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F4
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE000100544DC651034C590A0B2ACC42</code> <code>9B32D2A381696C92401BE264CD631594</code> <code>98AE0B28BB1D3B9CF5F907ED3A05D62A</code> <code>E10D08797FB4103CB09E2265ACE276CB</code> <code>9454BCFA92D68792720FED32CB6008E9</code> <code>8D22BA5FFA5605DDB0D85426CAA73538</code> <code>A75043ED81E90519EC6D8F1680E694C2</code> <code>543DB5C11472244CA7B8CBAE49D3FAEA</code> <code>10DA929D28034CCE837153416BCD54D9</code> <code>3CC3B13015BBC3E9A8950DAD0925837B</code> <code>E01348B54BEE8D5415F5F0A8B5A1F969</code> <code>06B570CBE092B0C1DAB1B5A6C9617B1A</code> <code>476CDFC44FAA2A1DB0162EAC404E9FDD</code> <code>38C2412BDB2ABDE041A0C5A92AB07693</code> <code>D0EFA164D3F2FF2054C19BB296F12787</code> <code>16C7138168147F2A02E842D1488E1ECE</code><br> <code>92060386</code></td>
|
||||
<td><code>FE000100232939B8A5969CA74982302C</code> <code>5B03AC4A9F14E18E0D75EC871CEACDF0</code> <code>0B02BE7D1892EAC44715DA81D27D1D6E</code> <code>FAE52DEB320BB4D09B126E1E560BC672</code> <code>E0DB586F1D6ED0B7374595F1B53E0EDD</code> <code>C9F5C33C79F673BE0511A5839A2791AF</code> <code>995D18FE10BCA1274A28E8CF147287D4</code> <code>F38A3C4BB33C7779FA8A2100E9715C00</code> <code>23E595D760D6C9A6695A6A085CCD8F22</code> <code>712575ABE74A01C1A05400F56D4B61E8</code> <code>A83B75596B2688A2D6EBCA22AAF4ED3E</code> <code>E0E4356978251B99333FE224730FD837</code> <code>1A34919DAD073E46C6E503470394D60F</code> <code>DFC7C11FC62B87FAC8AB93456B139D49</code> <code>F9DA6E77B3DF4CACEB0C1F9B3FE2CD46</code> <code>6354FC3B8CB2923C1F8F12505159210A</code><br> <code>7796535F</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>69258865</code> (1703421289 in decimal)</td>
|
||||
<td><code>692B8865</code> (1703422825 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B5D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F4
|
|||
<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 = 86187B02975022C9C73549603451911D41AC68E6632EE10BCE9ED1E98D83CC92F2B63119DE3E47B54044A02EC6782673F35DBB3BF33C6D33F20354071215FF4EE9E60ED745B024B5AF1EAAF9B76882C65BE26C0BC8FDB2D65F4AE8AA22358FBE7561BD19CB13C0711053BFD3E0704CE1DE86B93BC3DAC71AA4A7F1374536B6EAF96FE733F0094AD945A4D855641F2C00A323AD0151251FE6255EE717E166BFE2C4B0C0F3FBA38989FD1B362FE468272884FAFFE12874A3E42F87EFB0E336CEEFCF1AD6596B1C86756B6EDADB4222495B01FB95C9214B8AD025213A45EFCEAAFB386A6712311A4CB05DC13292CF5050774B4D413847441E6C7AF1DCACC64DE105</code></pre>
|
||||
<pre><code>b = 8AB50D0843BF6FA3B20AB89B66D9A96ACF8C118F9595F81C31FAE3136CF59B0687CD98C1FDC764B1EAB24EB2E21AA84934CFA7456E4D562F85ED13EDFF1E039B43B2452B2960269A7B71FED89FF43BD10CD4043887725A91D10FE241769107A4E479E24FE880D87D0CB88CD4A413E48A9AADCBFE905483C95152B5BA0CB1918B9BC448F4A06F82BAFDD48E19B5772F5BA7D7FE7BAFB9DE526225E67B91CB5FED49F9EE469A5DA90300D3626442DBD5040E697735983BE9E688A5E3B7DEC349A45CCCA1FC6EFC1E867B204B562EEB1742826C487F9966463E452DA067AC11C68905B6730E5C00451DD3B7BCF77ADEE61E504708CF16BA755E1D0DEF02D1B32C33</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 = C8A0AF3369F5194F3F4A6A37FF8B2EF8B88F9F5B0813F2B5160046862395A604230EFA17A69A6FEE669C005E7D19E84DAA0DE3302B7512C61413EA9124F9C36B93FB2A8C8EF1973A1773169AB5AB7DF272678A66448AF4B8326824483E6A54348E993B9F412DE09DA82E67DEA7484A1E9B90A7D423DBD00313155B1DCAE1D5B5DBD80E47716C6AB9751BD8FF447C1130E2EE32FCF86B28C0D5F0C2334E4F2903B931334A384B3E327CB8C595F2641E88D85C387B504F3B1998D165576522D2C780ADD95684580847A611B4160760A2D3D6CB956633A82335C76C8C696876D885B1D99D3B99AB8C6DC03F9C1EB531E8F53B628B8FA5A778FDE7EE92779001B1</code></pre>
|
||||
<pre><code>g_b = B466195E80BDA27A26984FD61F37C70104ED1014482068434D5DA41DCC313A5FAC36FCD07DC07855611F104BB90C12818432CB3FEA1A9CA13400ED17F1D9CCC0C75E0337155FD42C677DFFB2439C58F5781DCD8C25A11EB474C6F9B350FD206379D29199784FB1CCA1404C2864187CB613F14B7229294B42619091CFB6160FDC8D05F25445646710A6D498CB00360C81250D1AAD71F25DE845B0F1BF51266C910976FF27D87D310258274A576C407D685B839E0F0BFC56F22135BF43B2949253FE7F927D7B967D7CCA0E18CFB30F6B98EFF384D3DA572A38BFEF2664F4EA3912E7AF6C98FDD10AB15F58263794A62938CB184BF9365CBE2D80D38AB8BC2F54DD</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 D2 08 7A B2 B7 EF 08 2C F1 3E 12 F8
|
||||
0010 | 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D 53 37 4C DB
|
||||
0020 | 6D C7 9F 47 00 00 00 00 00 00 00 00 FE FF 00 00
|
||||
0030 | C8 A0 AF 33 69 F5 19 4F 3F 4A 6A 37 FF 8B 2E F8
|
||||
0040 | B8 8F 9F 5B 08 13 F2 B5 16 00 46 86 23 95 A6 04
|
||||
0050 | 23 0E FA 17 A6 9A 6F EE 66 9C 00 5E 7D 19 E8 4D
|
||||
0060 | AA 0D E3 30 2B 75 12 C6 14 13 EA 91 24 F9 C3 6B
|
||||
0070 | 93 FB 2A 8C 8E F1 97 3A 17 73 16 9A B5 AB 7D F2
|
||||
0080 | 72 67 8A 66 44 8A F4 B8 32 68 24 48 3E 6A 54 34
|
||||
0090 | 8E 99 3B 9F 41 2D E0 9D A8 2E 67 DE A7 48 4A 1E
|
||||
00A0 | 9B 90 A7 D4 23 DB D0 03 13 15 5B 1D CA E1 D5 B5
|
||||
00B0 | DB D8 0E 47 71 6C 6A B9 75 1B D8 FF 44 7C 11 30
|
||||
00C0 | E2 EE 32 FC F8 6B 28 C0 D5 F0 C2 33 4E 4F 29 03
|
||||
00D0 | B9 31 33 4A 38 4B 3E 32 7C B8 C5 95 F2 64 1E 88
|
||||
00E0 | D8 5C 38 7B 50 4F 3B 19 98 D1 65 57 65 22 D2 C7
|
||||
00F0 | 80 AD D9 56 84 58 08 47 A6 11 B4 16 07 60 A2 D3
|
||||
0100 | D6 CB 95 66 33 A8 23 35 C7 6C 8C 69 68 76 D8 85
|
||||
0110 | B1 D9 9D 3B 99 AB 8C 6D C0 3F 9C 1E B5 31 E8 F5
|
||||
0120 | 3B 62 8B 8F A5 A7 78 FD E7 EE 92 77 90 01 B1 00</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 92 F0 49 59 80 B4 76 E4 6B DF 65 7D
|
||||
0010 | 07 70 71 60 2F 63 0E FC 18 D8 3F 59 08 18 FE 24
|
||||
0020 | F6 6F 01 7A 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | B4 66 19 5E 80 BD A2 7A 26 98 4F D6 1F 37 C7 01
|
||||
0040 | 04 ED 10 14 48 20 68 43 4D 5D A4 1D CC 31 3A 5F
|
||||
0050 | AC 36 FC D0 7D C0 78 55 61 1F 10 4B B9 0C 12 81
|
||||
0060 | 84 32 CB 3F EA 1A 9C A1 34 00 ED 17 F1 D9 CC C0
|
||||
0070 | C7 5E 03 37 15 5F D4 2C 67 7D FF B2 43 9C 58 F5
|
||||
0080 | 78 1D CD 8C 25 A1 1E B4 74 C6 F9 B3 50 FD 20 63
|
||||
0090 | 79 D2 91 99 78 4F B1 CC A1 40 4C 28 64 18 7C B6
|
||||
00A0 | 13 F1 4B 72 29 29 4B 42 61 90 91 CF B6 16 0F DC
|
||||
00B0 | 8D 05 F2 54 45 64 67 10 A6 D4 98 CB 00 36 0C 81
|
||||
00C0 | 25 0D 1A AD 71 F2 5D E8 45 B0 F1 BF 51 26 6C 91
|
||||
00D0 | 09 76 FF 27 D8 7D 31 02 58 27 4A 57 6C 40 7D 68
|
||||
00E0 | 5B 83 9E 0F 0B FC 56 F2 21 35 BF 43 B2 94 92 53
|
||||
00F0 | FE 7F 92 7D 7B 96 7D 7C CA 0E 18 CF B3 0F 6B 98
|
||||
0100 | EF F3 84 D3 DA 57 2A 38 BF EF 26 64 F4 EA 39 12
|
||||
0110 | E7 AF 6C 98 FD D1 0A B1 5F 58 26 37 94 A6 29 38
|
||||
0120 | CB 18 4B F9 36 5C BE 2D 80 D3 8A B8 BC 2F 54 DD</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 = BA0D89B5D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F4
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td><code>92F0495980B476E46BDF657D07707160</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td><code>2F630EFC18D83F590818FE24F66F017A</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FEFF0000C8A0AF3369F5194F3F4A6A37</code> <code>FF8B2EF8B88F9F5B0813F2B516004686</code> <code>2395A604230EFA17A69A6FEE669C005E</code> <code>7D19E84DAA0DE3302B7512C61413EA91</code> <code>24F9C36B93FB2A8C8EF1973A1773169A</code> <code>B5AB7DF272678A66448AF4B832682448</code> <code>3E6A54348E993B9F412DE09DA82E67DE</code> <code>A7484A1E9B90A7D423DBD00313155B1D</code> <code>CAE1D5B5DBD80E47716C6AB9751BD8FF</code> <code>447C1130E2EE32FCF86B28C0D5F0C233</code> <code>4E4F2903B931334A384B3E327CB8C595</code> <code>F2641E88D85C387B504F3B1998D16557</code> <code>6522D2C780ADD95684580847A611B416</code> <code>0760A2D3D6CB956633A82335C76C8C69</code> <code>6876D885B1D99D3B99AB8C6DC03F9C1E</code> <code>B531E8F53B628B8FA5A778FDE7EE9277</code><br> <code>9001B100</code></td>
|
||||
<td><code>FE000100B466195E80BDA27A26984FD6</code> <code>1F37C70104ED1014482068434D5DA41D</code> <code>CC313A5FAC36FCD07DC07855611F104B</code> <code>B90C12818432CB3FEA1A9CA13400ED17</code> <code>F1D9CCC0C75E0337155FD42C677DFFB2</code> <code>439C58F5781DCD8C25A11EB474C6F9B3</code> <code>50FD206379D29199784FB1CCA1404C28</code> <code>64187CB613F14B7229294B42619091CF</code> <code>B6160FDC8D05F25445646710A6D498CB</code> <code>00360C81250D1AAD71F25DE845B0F1BF</code> <code>51266C910976FF27D87D310258274A57</code> <code>6C407D685B839E0F0BFC56F22135BF43</code> <code>B2949253FE7F927D7B967D7CCA0E18CF</code> <code>B30F6B98EFF384D3DA572A38BFEF2664</code> <code>F4EA3912E7AF6C98FDD10AB15F582637</code> <code>94A62938CB184BF9365CBE2D80D38AB8</code><br> <code>BC2F54DD</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 = BA0D89B5D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F4
|
|||
<!-- 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 = 54B64366D2087AB2B7EF082CF13E12F82263E272A20E1DAF2E4F2B1D53374CDB6DC79F470000000000000000FEFF0000C8A0AF3369F5194F3F4A6A37FF8B2EF8B88F9F5B0813F2B5160046862395A604230EFA17A69A6FEE669C005E7D19E84DAA0DE3302B7512C61413EA9124F9C36B93FB2A8C8EF1973A1773169AB5AB7DF272678A66448AF4B8326824483E6A54348E993B9F412DE09DA82E67DEA7484A1E9B90A7D423DBD00313155B1DCAE1D5B5DBD80E47716C6AB9751BD8FF447C1130E2EE32FCF86B28C0D5F0C2334E4F2903B931334A384B3E327CB8C595F2641E88D85C387B504F3B1998D165576522D2C780ADD95684580847A611B4160760A2D3D6CB956633A82335C76C8C696876D885B1D99D3B99AB8C6DC03F9C1EB531E8F53B628B8FA5A778FDE7EE92779001B100
|
||||
padding = 8C8E6724036934BE02708A38
|
||||
tmp_aes_key = 7485114AC6140821FF57D30B90473FED4F905B663D46526B50D36FF6A90DBA26
|
||||
tmp_aes_iv = 5E472BBF1F2782B792E0EB7E26E3BCEF79A02E6CF37F0F6DFFBB2899CD731826</code></pre>
|
||||
<pre><code>data = 54B6436692F0495980B476E46BDF657D077071602F630EFC18D83F590818FE24F66F017A0000000000000000FE000100B466195E80BDA27A26984FD61F37C70104ED1014482068434D5DA41DCC313A5FAC36FCD07DC07855611F104BB90C12818432CB3FEA1A9CA13400ED17F1D9CCC0C75E0337155FD42C677DFFB2439C58F5781DCD8C25A11EB474C6F9B350FD206379D29199784FB1CCA1404C2864187CB613F14B7229294B42619091CFB6160FDC8D05F25445646710A6D498CB00360C81250D1AAD71F25DE845B0F1BF51266C910976FF27D87D310258274A576C407D685B839E0F0BFC56F22135BF43B2949253FE7F927D7B967D7CCA0E18CFB30F6B98EFF384D3DA572A38BFEF2664F4EA3912E7AF6C98FDD10AB15F58263794A62938CB184BF9365CBE2D80D38AB8BC2F54DD
|
||||
padding = 8CD71C42C31884520DEFD6DB
|
||||
tmp_aes_key = 3A2455F86992C73BB43A2A7A7397E18CD56E1756616A3CBF4F601F32E08176B7
|
||||
tmp_aes_iv = EBE760B2B410B8ADE48EC7F9702FF9B9E76D9E5C4C18FD3ACE47DF2A890BEAEA</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 = 9619702B57EF02FA81BFAA7E4F074F4072B9CD65E7184B84FE66CAC6CFF515AE749C651B60D8B383F5EA77BE79B023B52A52C4CD7F8AD36210137A10D2EBEEA539BE86FEB428A0FEA8012FDCD84FFA968716C609F2B96AC6729E4EBD07037F6D81A151C9361E03AB1E54CE8B53F32C2A27F2744A1BED378B5A341F5F9764244C5937AC6C22876C46E9178DFE5A3220AEB586782C43120B0A87CAEABEE6C70DBDED469EA2937A9574429F7B1095BB7A6C74C7EADD2DE406178193A2DBE2F48CAD343BD5D4843BC4CD4503C23C477A489B0D4771AF5B9194A4F02FEF4891A40D1F0EF44E4A7A1E7630AF2712D85B7F50735DC39D89E7A84E258C6BF5BAAF4535835508C7399A3D6EC1FFBE64A82F6AE2EA001C23EAA815A9B2E8611359506623AB89C3636AD657082D20B1A37408E9E91A91DF0413779EB70348650E4A0DB32427133F4656D1741687E92F0A1BE4075C79</code></pre>
|
||||
<pre><code>encrypted_data = 6A85518F682E9B22FC69D96C945BF8AF75AE0078600F14C4D7CB19E5699744F8BA3652151CAFFCEC52C7AEBE0E651D73ECC52151463357E991C71B733BF82C8ECA9FCDD7CE98ED540C9B4C5A14B31FF9E1BCAB6A0167F03316AAF5252F3038CDAFF7ED55B0B827DD8DF15C9CA5ABA43001196C889928EA3C2A8DDA17AA6BD6043B3CB72B19D8C70B22C03437237003D90A372FA6EF7E63A48D965345686F4828BE5504B1A7BE126AEE30A981C94EE25ABD35285271BA0708A7F27E7E9F9C5300E627D1915EDA2AA91979B78C84DA24EB26EEBFC345EE7AC7CDBEB1E5A60E095745341EAADB809E4C38B3551E0AB066DDFED64345F28037648A4F38078D1C491E9E40DCEAB280D86B4532656FAADB1C06573332EEBBA573A0A9DB98C1F9CE301D6A9FEAE3B2476B432454E9C005823283F710F21DFEA3A5151D3404A5D007E45C985FA12B89B7CF1C8BD80437DC000279</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 C4 49 0D 00 69 25 88 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D
|
||||
0030 | 53 37 4C DB 6D C7 9F 47 FE 50 01 00 96 19 70 2B
|
||||
0040 | 57 EF 02 FA 81 BF AA 7E 4F 07 4F 40 72 B9 CD 65
|
||||
0050 | E7 18 4B 84 FE 66 CA C6 CF F5 15 AE 74 9C 65 1B
|
||||
0060 | 60 D8 B3 83 F5 EA 77 BE 79 B0 23 B5 2A 52 C4 CD
|
||||
0070 | 7F 8A D3 62 10 13 7A 10 D2 EB EE A5 39 BE 86 FE
|
||||
0080 | B4 28 A0 FE A8 01 2F DC D8 4F FA 96 87 16 C6 09
|
||||
0090 | F2 B9 6A C6 72 9E 4E BD 07 03 7F 6D 81 A1 51 C9
|
||||
00A0 | 36 1E 03 AB 1E 54 CE 8B 53 F3 2C 2A 27 F2 74 4A
|
||||
00B0 | 1B ED 37 8B 5A 34 1F 5F 97 64 24 4C 59 37 AC 6C
|
||||
00C0 | 22 87 6C 46 E9 17 8D FE 5A 32 20 AE B5 86 78 2C
|
||||
00D0 | 43 12 0B 0A 87 CA EA BE E6 C7 0D BD ED 46 9E A2
|
||||
00E0 | 93 7A 95 74 42 9F 7B 10 95 BB 7A 6C 74 C7 EA DD
|
||||
00F0 | 2D E4 06 17 81 93 A2 DB E2 F4 8C AD 34 3B D5 D4
|
||||
0100 | 84 3B C4 CD 45 03 C2 3C 47 7A 48 9B 0D 47 71 AF
|
||||
0110 | 5B 91 94 A4 F0 2F EF 48 91 A4 0D 1F 0E F4 4E 4A
|
||||
0120 | 7A 1E 76 30 AF 27 12 D8 5B 7F 50 73 5D C3 9D 89
|
||||
0130 | E7 A8 4E 25 8C 6B F5 BA AF 45 35 83 55 08 C7 39
|
||||
0140 | 9A 3D 6E C1 FF BE 64 A8 2F 6A E2 EA 00 1C 23 EA
|
||||
0150 | A8 15 A9 B2 E8 61 13 59 50 66 23 AB 89 C3 63 6A
|
||||
0160 | D6 57 08 2D 20 B1 A3 74 08 E9 E9 1A 91 DF 04 13
|
||||
0170 | 77 9E B7 03 48 65 0E 4A 0D B3 24 27 13 3F 46 56
|
||||
0180 | D1 74 16 87 E9 2F 0A 1B E4 07 5C 79</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 F4 34 0A 00 69 2B 88 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 92 F0 49 59 80 B4 76 E4
|
||||
0020 | 6B DF 65 7D 07 70 71 60 2F 63 0E FC 18 D8 3F 59
|
||||
0030 | 08 18 FE 24 F6 6F 01 7A FE 50 01 00 6A 85 51 8F
|
||||
0040 | 68 2E 9B 22 FC 69 D9 6C 94 5B F8 AF 75 AE 00 78
|
||||
0050 | 60 0F 14 C4 D7 CB 19 E5 69 97 44 F8 BA 36 52 15
|
||||
0060 | 1C AF FC EC 52 C7 AE BE 0E 65 1D 73 EC C5 21 51
|
||||
0070 | 46 33 57 E9 91 C7 1B 73 3B F8 2C 8E CA 9F CD D7
|
||||
0080 | CE 98 ED 54 0C 9B 4C 5A 14 B3 1F F9 E1 BC AB 6A
|
||||
0090 | 01 67 F0 33 16 AA F5 25 2F 30 38 CD AF F7 ED 55
|
||||
00A0 | B0 B8 27 DD 8D F1 5C 9C A5 AB A4 30 01 19 6C 88
|
||||
00B0 | 99 28 EA 3C 2A 8D DA 17 AA 6B D6 04 3B 3C B7 2B
|
||||
00C0 | 19 D8 C7 0B 22 C0 34 37 23 70 03 D9 0A 37 2F A6
|
||||
00D0 | EF 7E 63 A4 8D 96 53 45 68 6F 48 28 BE 55 04 B1
|
||||
00E0 | A7 BE 12 6A EE 30 A9 81 C9 4E E2 5A BD 35 28 52
|
||||
00F0 | 71 BA 07 08 A7 F2 7E 7E 9F 9C 53 00 E6 27 D1 91
|
||||
0100 | 5E DA 2A A9 19 79 B7 8C 84 DA 24 EB 26 EE BF C3
|
||||
0110 | 45 EE 7A C7 CD BE B1 E5 A6 0E 09 57 45 34 1E AA
|
||||
0120 | DB 80 9E 4C 38 B3 55 1E 0A B0 66 DD FE D6 43 45
|
||||
0130 | F2 80 37 64 8A 4F 38 07 8D 1C 49 1E 9E 40 DC EA
|
||||
0140 | B2 80 D8 6B 45 32 65 6F AA DB 1C 06 57 33 32 EE
|
||||
0150 | BB A5 73 A0 A9 DB 98 C1 F9 CE 30 1D 6A 9F EA E3
|
||||
0160 | B2 47 6B 43 24 54 E9 C0 05 82 32 83 F7 10 F2 1D
|
||||
0170 | FE A3 A5 15 1D 34 04 A5 D0 07 E4 5C 98 5F A1 2B
|
||||
0180 | 89 B7 CF 1C 8B D8 04 37 DC 00 02 79</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>C4490D0069258865</code></td>
|
||||
<td><code>F4340A00692B8865</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>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td><code>92F0495980B476E46BDF657D07707160</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td><code>2F630EFC18D83F590818FE24F66F017A</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE5001009619702B57EF02FA81BFAA7E</code> <code>4F074F4072B9CD65E7184B84FE66CAC6</code> <code>CFF515AE749C651B60D8B383F5EA77BE</code> <code>79B023B52A52C4CD7F8AD36210137A10</code> <code>D2EBEEA539BE86FEB428A0FEA8012FDC</code> <code>D84FFA968716C609F2B96AC6729E4EBD</code> <code>07037F6D81A151C9361E03AB1E54CE8B</code> <code>53F32C2A27F2744A1BED378B5A341F5F</code> <code>9764244C5937AC6C22876C46E9178DFE</code> <code>5A3220AEB586782C43120B0A87CAEABE</code> <code>E6C70DBDED469EA2937A9574429F7B10</code> <code>95BB7A6C74C7EADD2DE406178193A2DB</code> <code>E2F48CAD343BD5D4843BC4CD4503C23C</code> <code>477A489B0D4771AF5B9194A4F02FEF48</code> <code>91A40D1F0EF44E4A7A1E7630AF2712D8</code> <code>5B7F50735DC39D89E7A84E258C6BF5BA</code> <code>AF4535835508C7399A3D6EC1FFBE64A8</code> <code>2F6AE2EA001C23EAA815A9B2E8611359</code> <code>506623AB89C3636AD657082D20B1A374</code> <code>08E9E91A91DF0413779EB70348650E4A</code> <code>0DB32427133F4656D1741687E92F0A1B</code><br> <code>E4075C79</code></td>
|
||||
<td><code>FE5001006A85518F682E9B22FC69D96C</code> <code>945BF8AF75AE0078600F14C4D7CB19E5</code> <code>699744F8BA3652151CAFFCEC52C7AEBE</code> <code>0E651D73ECC52151463357E991C71B73</code> <code>3BF82C8ECA9FCDD7CE98ED540C9B4C5A</code> <code>14B31FF9E1BCAB6A0167F03316AAF525</code> <code>2F3038CDAFF7ED55B0B827DD8DF15C9C</code> <code>A5ABA43001196C889928EA3C2A8DDA17</code> <code>AA6BD6043B3CB72B19D8C70B22C03437</code> <code>237003D90A372FA6EF7E63A48D965345</code> <code>686F4828BE5504B1A7BE126AEE30A981</code> <code>C94EE25ABD35285271BA0708A7F27E7E</code> <code>9F9C5300E627D1915EDA2AA91979B78C</code> <code>84DA24EB26EEBFC345EE7AC7CDBEB1E5</code> <code>A60E095745341EAADB809E4C38B3551E</code> <code>0AB066DDFED64345F28037648A4F3807</code> <code>8D1C491E9E40DCEAB280D86B4532656F</code> <code>AADB1C06573332EEBBA573A0A9DB98C1</code> <code>F9CE301D6A9FEAE3B2476B432454E9C0</code> <code>05823283F710F21DFEA3A5151D3404A5</code> <code>D007E45C985FA12B89B7CF1C8BD80437</code><br> <code>DC000279</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 = 3F1407958B54C897F4A8B876EBEC04FCCDCAEAE844BD64AC0146A4E75BD9959F39ECBFDFC1FFFD54F1811917956C9388CBA9439C15038CDCE70A35DD95751C43900CD0FC79DE65FD89BABF8BF1E0C3D4099E7679BB2675B6352C5B9CDD02A1F4CB43E09EE40A28261F6A285585E8FF355B57AD2D34E404573C7B4CA68B259DFDDC224E8809B91D4BF21F41B90FE5762BD326771E0B5E2947C79F6642A6DAEC7BC17690C5720F3C158426F023D0920C239E616E27C7B29574A2567DEEBC0A29F1C9360A2D3BD948E13213F21034E47666B271302A1EF116D5A2EE264C7CC6933E24BC509A284A406E358E4E9ED1F66559D47FF3E1C339DCA9CDC7A6F8D774AB21</code></pre>
|
||||
<pre><code>auth_key = B2CE93368B11A779FE0440FCA53E14CB828D362BB785BC143189BFEA6568C3984B849E539520AADFDC707D757EAD1D484F9E21DB23C401B24DAEB77BCD24393119AFBB76A3565A8524FEBB8826A19FA9F3C8AA6DE9CD3E61ACCC67397F15DEAF85485E65A91DDFF0B42AB0A116CA1836B29AB202C4BB23EB4D3CD83A9E9AF768195EA5896A2E45BF57B39BDF100AA65A48E1ED45C94075AB0ED92C382BB6E3FC1EF0C86A0014E7271B84D0EC0C81A7410015760BE32D8AF026AB7C317A8B7103E178983A16B8E29B0C36B034595C733A5101E0B1A38ACC4D884089483C0FAB3815325604C679B865DB93759F05BAC1E74F37E3E300DE8FA39189FE898DC53B40</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 CC 9B D0 69 25 88 65
|
||||
0010 | 68 00 00 00 34 F7 CB 3B D2 08 7A B2 B7 EF 08 2C
|
||||
0020 | F1 3E 12 F8 22 63 E2 72 A2 0E 1D AF 2E 4F 2B 1D
|
||||
0030 | 53 37 4C DB 6D C7 9F 47 8A 9B 84 08 DF 87 E2 BE
|
||||
0040 | F6 0E 57 06 6B E3 08 57</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 48 20 23 6A 2B 88 65
|
||||
0010 | 7C 00 00 00 34 F7 CB 3B 92 F0 49 59 80 B4 76 E4
|
||||
0020 | 6B DF 65 7D 07 70 71 60 2F 63 0E FC 18 D8 3F 59
|
||||
0030 | 08 18 FE 24 F6 6F 01 7A F0 68 88 B1 E3 27 FC B7
|
||||
0040 | 41 9B 90 89 C4 4B AF BF</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>01CC9BD069258865</code></td>
|
||||
<td><code>014820236A2B8865</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>68000000</code> (104 in decimal)</td>
|
||||
<td><code>7C000000</code> (124 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>D2087AB2B7EF082CF13E12F82263E272</code></td>
|
||||
<td><code>92F0495980B476E46BDF657D07707160</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>A20E1DAF2E4F2B1D53374CDB6DC79F47</code></td>
|
||||
<td><code>2F630EFC18D83F590818FE24F66F017A</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>8A9B8408DF87E2BEF60E57066BE30857</code></td>
|
||||
<td><code>F06888B1E327FCB7419B9089C44BAFBF</code></td>
|
||||
<td>The 128 lower-order bits of SHA1 of the byte string derived from the <code>new_nonce</code> string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with <code>auth_key_aux_hash</code>. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
Loading…
Add table
Reference in a new issue