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
b9605473d7
commit
dd2f785238
4 changed files with 239 additions and 238 deletions
|
@ -44,7 +44,7 @@
|
|||
|
||||
<div id="dev_page_content"><!-- scroll_nav -->
|
||||
|
||||
<p>Sticker, custom emoji and GIF selection UIs should offer a list of categories to quickly filter results by a (list of) emojis, or by some other criteria. </p>
|
||||
<p>Sticker, emoji, custom emoji and GIF selection UIs should offer a list of categories to quickly filter results by a (list of) emojis, or by some other criteria. </p>
|
||||
<pre><code><a href='/constructor/messages.emojiGroupsNotModified'>messages.emojiGroupsNotModified</a>#6fb4ad87 = <a href='/type/messages.EmojiGroups'>messages.EmojiGroups</a>;
|
||||
<a href='/constructor/messages.emojiGroups'>messages.emojiGroups</a>#881fb94b hash:<a href='/type/int'>int</a> groups:<a href='/type/Vector%20t'>Vector</a><<a href='/type/EmojiGroup'>EmojiGroup</a>> = <a href='/type/messages.EmojiGroups'>messages.EmojiGroups</a>;
|
||||
|
||||
|
@ -55,27 +55,28 @@
|
|||
---functions---
|
||||
|
||||
<a href='/method/messages.getEmojiGroups'>messages.getEmojiGroups</a>#7488ce5b hash:<a href='/type/int'>int</a> = <a href='/type/messages.EmojiGroups'>messages.EmojiGroups</a>;
|
||||
<a href='/method/messages.getEmojiStickerGroups'>messages.getEmojiStickerGroups</a> hash:<a href='/type/int'>int</a> = <a href='/type/messages.EmojiGroups'>messages.EmojiGroups</a>;
|
||||
<a href='/method/messages.getEmojiStickerGroups'>messages.getEmojiStickerGroups</a>#1dd840f5 hash:<a href='/type/int'>int</a> = <a href='/type/messages.EmojiGroups'>messages.EmojiGroups</a>;
|
||||
<a href='/method/messages.getEmojiStatusGroups'>messages.getEmojiStatusGroups</a>#2ecd56cd hash:<a href='/type/int'>int</a> = <a href='/type/messages.EmojiGroups'>messages.EmojiGroups</a>;
|
||||
<a href='/method/messages.getEmojiProfilePhotoGroups'>messages.getEmojiProfilePhotoGroups</a>#21a548f3 hash:<a href='/type/int'>int</a> = <a href='/type/messages.EmojiGroups'>messages.EmojiGroups</a>;</code></pre>
|
||||
<p><a href="/method/messages.getEmojiGroups">messages.getEmojiGroups</a>, <a href="/method/messages.getEmojiStickerGroups">messages.getEmojiStickerGroups</a>, <a href="/method/messages.getEmojiStatusGroups">messages.getEmojiStatusGroups</a> and <a href="/method/messages.getEmojiProfilePhotoGroups">messages.getEmojiProfilePhotoGroups</a> must be used to fetch a categorized list of UTF-8 emojis, periodically refreshed by the client, passing the <code>hash</code> returned by the previous call. </p>
|
||||
<p>Each category is described by a <code>title</code> (i.e. "Animals", "Faces", "Flags"), is represented in the UI by a single <a href="/api/custom-emoji">custom emoji »</a> (<code>icon_emoji_id</code>). </p>
|
||||
<p>All categories should be displayed in the sticker/custom emoji/GIF search bar, located in the top section of the sticker/custom emoji/GIF selection UI, using the <code>icon_emoji_id</code>. </p>
|
||||
<p>When the user clicks on a specific emoji category, the client should display:</p>
|
||||
<ul>
|
||||
<li>All <a href="/api/premium">Premium-only</a> stickers/<a href="/api/custom-emoji">custom emojis</a> if the <a href="/constructor/emojiGroupPremium">emojiGroupPremium</a> category is clicked OR</li>
|
||||
<li>All stickers/<a href="/api/custom-emoji">custom emojis</a>/GIFs matching the <code>emoticons</code> for the selected category, if an <a href="/constructor/emojiGroup">emojiGroup</a>/<a href="/constructor/emojiGroupGreeting">emojiGroupGreeting</a> category is clicked. </li>
|
||||
</ul>
|
||||
<p>Use:</p>
|
||||
<ul>
|
||||
<li><a href="/method/messages.getEmojiStickerGroups">messages.getEmojiStickerGroups</a> when choosing a sticker. </li>
|
||||
<li><a href="/method/messages.getEmojiStatusGroups">messages.getEmojiStatusGroups</a> when choosing a custom emoji to set as <a href="/api/emoji-status">emoji status</a>. </li>
|
||||
<li><a href="/method/messages.getEmojiProfilePhotoGroups">messages.getEmojiProfilePhotoGroups</a> when choosing a custom emoji to set as <a href="/api/files#sticker-profile-pictures">profile picture</a></li>
|
||||
<li><a href="/method/messages.getEmojiGroups">messages.getEmojiGroups</a> in all other cases (including GIFs and custom emojis). </li>
|
||||
<li><a href="/method/messages.getEmojiGroups">messages.getEmojiGroups</a> in all other cases (including GIFs, emojis and custom emojis). </li>
|
||||
</ul>
|
||||
<p>Also note:</p>
|
||||
<p>The methods listed above must be used to fetch a categorized list of UTF-8 emojis, periodically refreshed by the client, passing the <code>hash</code> returned by the previous call. </p>
|
||||
<p>Each category is described by a <code>title</code> (i.e. "Animals", "Faces", "Flags"), is represented in the UI by a single <a href="/api/custom-emoji">custom emoji »</a> (<code>icon_emoji_id</code>). </p>
|
||||
<p>All categories should be displayed in the sticker/emoji/custom emoji/GIF search bar, located in the top section of the sticker/custom emoji/GIF selection UI, using the <code>icon_emoji_id</code>. </p>
|
||||
<p>When the user clicks on a specific emoji category, the client should display:</p>
|
||||
<ul>
|
||||
<li>All <a href="/api/premium">Premium</a>-only stickers (i.e. those with a <a href="/api/stickers#premium-animated-sticker-effects">Premium effect »</a>)/<a href="/api/premium">Premium</a>-only <a href="/api/custom-emoji">custom emojis</a> (i.e. those where the <a href="/constructor/documentAttributeCustomEmoji">documentAttributeCustomEmoji</a>.<code>free</code> flag is <strong>not</strong> set) if the <a href="/constructor/emojiGroupPremium">emojiGroupPremium</a> category is clicked OR</li>
|
||||
<li>All stickers/<a href="/api/custom-emoji">custom emojis</a>/emojis/GIFs matching the emojis in <code>emoticons</code> for the selected category, if an <a href="/constructor/emojiGroup">emojiGroup</a>/<a href="/constructor/emojiGroupGreeting">emojiGroupGreeting</a> category is clicked. </li>
|
||||
</ul>
|
||||
<p>Note:</p>
|
||||
<ul>
|
||||
<li>When <a href="/api/gifs">choosing GIFs</a>, include only <a href="/constructor/emojiGroup">emojiGroup</a>s in the category list.</li>
|
||||
<li>When choosing emojis, first list all (usable, i.e. Premium+non-Premium for Premium users, non-Premium only for non-Premium users) custom emojis matching the <code>emoticons</code> of the chosen category, then the <code>emoticons</code> themselves. </li>
|
||||
<li>When choosing a sticker for a <a href="/api/business#business-introduction">business introduction</a>, locally sort the result of <a href="/method/messages.getEmojiStickerGroups">messages.getEmojiStickerGroups</a>, putting all <a href="/constructor/emojiGroupGreeting">emojiGroupGreeting</a> categories first.</li>
|
||||
</ul></div>
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
<div class="container clearfix">
|
||||
<div class="dev_page">
|
||||
<div id="dev_page_content_wrap" class=" ">
|
||||
<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="/api/gifs" >Working with GIFs</a></li></ul></div>
|
||||
<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="/api/GIFs" >Working with GIFs</a></li></ul></div>
|
||||
<h1 id="dev_page_title">Working with GIFs</h1>
|
||||
|
||||
<div id="dev_page_content"><!-- scroll_nav -->
|
||||
|
|
|
@ -320,25 +320,6 @@ Look for updates of telegram's terms of service…">
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#working-with-gifs-actually-mpeg4-gifs" id="working-with-gifs-actually-mpeg4-gifs" name="working-with-gifs-actually-mpeg4-gifs"><i class="anchor-icon"></i></a>Working with GIFs (actually MPEG4 GIFs)</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="/method/messages.getSavedGifs">messages.getSavedGifs</a></td>
|
||||
<td>Get saved GIFs.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/messages.saveGif">messages.saveGif</a></td>
|
||||
<td>Add GIF to saved gifs list</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#working-with-public-service-announcement-and-mtproxy-channels" id="working-with-public-service-announcement-and-mtproxy-channels" name="working-with-public-service-announcement-and-mtproxy-channels"><i class="anchor-icon"></i></a>Working with Public Service Announcement and MTProxy channels</h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
|
@ -443,6 +424,25 @@ Look for updates of telegram's terms of service…">
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#working-with-gifs-" id="working-with-gifs-" name="working-with-gifs-"><i class="anchor-icon"></i></a>Working with <a href="/api/gifs">GIFs »</a></h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="/method/messages.getSavedGifs">messages.getSavedGifs</a></td>
|
||||
<td>Get saved GIFs.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/messages.saveGif">messages.saveGif</a></td>
|
||||
<td>Add GIF to saved gifs list</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#working-with-seamless-telegram-login" id="working-with-seamless-telegram-login" name="working-with-seamless-telegram-login"><i class="anchor-icon"></i></a>Working with <a href="/api/url-authorization">Seamless Telegram Login</a></h3>
|
||||
<table class="table">
|
||||
<thead>
|
||||
|
|
|
@ -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 6C 1D 0C 00 33 B7 92 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 48 94 4F 38 A8 CC 74 0A
|
||||
0020 | EA 5E D9 B5 FE EE 63 DF</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 04 A6 0C 00 51 C7 93 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE F3 37 16 0C 19 9F 9C AA
|
||||
0020 | 53 58 53 DB 57 2E 50 F7</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>6C1D0C0033B79266</code></td>
|
||||
<td><code>04A60C0051C79366</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>48944F38A8CC740AEA5ED9B5FEEE63DF</code></td>
|
||||
<td><code>F337160C199F9CAA535853DB572E50F7</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 4C B5 CE 33 B7 92 66
|
||||
0010 | 58 00 00 00 63 24 16 05 48 94 4F 38 A8 CC 74 0A
|
||||
0020 | EA 5E D9 B5 FE EE 63 DF 2E D7 F8 E0 A2 C6 3D 14
|
||||
0030 | ED 13 DC CB 07 9A 9D 52 08 11 57 92 5F 70 19 5A
|
||||
0040 | 57 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 20 02 C8 51 C7 93 66
|
||||
0010 | B4 00 00 00 63 24 16 05 F3 37 16 0C 19 9F 9C AA
|
||||
0020 | 53 58 53 DB 57 2E 50 F7 D1 3D 8D A2 85 73 BA 19
|
||||
0030 | 6E AE F2 94 2F 4E 87 3E 08 19 CF C6 5C 4B B8 5F
|
||||
0040 | E9 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>014CB5CE33B79266</code></td>
|
||||
<td><code>012002C851C79366</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>58000000</code> (88 in decimal)</td>
|
||||
<td><code>B4000000</code> (180 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>48944F38A8CC740AEA5ED9B5FEEE63DF</code></td>
|
||||
<td><code>F337160C199F9CAA535853DB572E50F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>2ED7F8E0A2C63D14ED13DCCB079A9D52</code></td>
|
||||
<td><code>D13D8DA28573BA196EAEF2942F4E873E</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>081157925F70195A57000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1249628360218860119</td>
|
||||
<td><code>0819CFC65C4BB85FE9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1859923270836969449</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 = 1249628360218860119</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1249628360218860119 = 1003235927 * 1245597697</code></p>
|
||||
<pre><code>p = 1003235927
|
||||
q = 1245597697</code></pre>
|
||||
<pre><code>pq = 1859923270836969449</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1859923270836969449 = 1119173987 * 1661871427</code></p>
|
||||
<pre><code>p = 1119173987
|
||||
q = 1661871427</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 11 57 92 5F 70 19 5A 57 00 00 00
|
||||
0010 | 04 3B CC 2A 57 00 00 00 04 4A 3E 50 01 00 00 00
|
||||
0020 | 48 94 4F 38 A8 CC 74 0A EA 5E D9 B5 FE EE 63 DF
|
||||
0030 | 2E D7 F8 E0 A2 C6 3D 14 ED 13 DC CB 07 9A 9D 52
|
||||
0040 | B8 C0 06 60 65 59 C9 68 46 DB 4C 1D B6 8E 2C 1A
|
||||
0050 | 82 27 7A CD 0F D7 41 79 FA 1D 1C BD 6D A3 8B CE
|
||||
<pre><code>0000 | 95 5F F5 A9 08 19 CF C6 5C 4B B8 5F E9 00 00 00
|
||||
0010 | 04 42 B5 3D 63 00 00 00 04 63 0E 25 43 00 00 00
|
||||
0020 | F3 37 16 0C 19 9F 9C AA 53 58 53 DB 57 2E 50 F7
|
||||
0030 | D1 3D 8D A2 85 73 BA 19 6E AE F2 94 2F 4E 87 3E
|
||||
0040 | 08 44 DD AD 1D 70 DE 0E 77 77 D0 44 8E 0B BC 9B
|
||||
0050 | F8 19 81 6F AB F0 B2 07 3A 44 30 61 B4 40 CE 82
|
||||
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 = 1245597697</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>081157925F70195A57000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1249628360218860119</td>
|
||||
<td><code>0819CFC65C4BB85FE9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1859923270836969449</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>043BCC2A57000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1003235927</td>
|
||||
<td><code>0442B53D63000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1119173987</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>044A3E5001000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1245597697</td>
|
||||
<td><code>04630E2543000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1661871427</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>48944F38A8CC740AEA5ED9B5FEEE63DF</code></td>
|
||||
<td><code>F337160C199F9CAA535853DB572E50F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>2ED7F8E0A2C63D14ED13DCCB079A9D52</code></td>
|
||||
<td><code>D13D8DA28573BA196EAEF2942F4E873E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>B8C006606559C96846DB4C1DB68E2C1A</code> <code>82277ACD0FD74179FA1D1CBD6DA38BCE</code></td>
|
||||
<td><code>0844DDAD1D70DE0E7777D0448E0BBC9B</code> <code>F819816FABF0B2073A443061B440CE82</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1245597697</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 = 955FF5A9081157925F70195A57000000043BCC2A57000000044A3E500100000048944F38A8CC740AEA5ED9B5FEEE63DF2ED7F8E0A2C63D14ED13DCCB079A9D52B8C006606559C96846DB4C1DB68E2C1A82277ACD0FD74179FA1D1CBD6DA38BCE02000000
|
||||
random_padding_bytes = A187B95462ECDC248C12FD0B5946AB3AE5FCC1B97981BBC1023A60AD42E62475FFD0334686CD46B2B5DE49C9A958285FD341DF9471DBD527C4A2DE1EBDBB06EE42542C3F959272CFA68517A7F3E91F55A988CE2D624793215CE73A3F</code></pre>
|
||||
<pre><code>data = 955FF5A90819CFC65C4BB85FE90000000442B53D6300000004630E2543000000F337160C199F9CAA535853DB572E50F7D13D8DA28573BA196EAEF2942F4E873E0844DDAD1D70DE0E7777D0448E0BBC9BF819816FABF0B2073A443061B440CE8202000000
|
||||
random_padding_bytes = 12D240776B287ED0AEA435CCF24E9F38F0E82C700D48BE6B894405BF5860FA9D26DEDA81B3C11D53CDC5678016E315E7599E6A73A10EF03D59AD12EB24E16C4180BCA1CF7FD2CDB4AA6907EAB577C8D523E42E6F06CC2A85CD7BEEBF</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 = 947802D2D1F7FBBE1DC176A4C9E1ECB82347C11FAB34749AFD6ECC53219F1562C7875D8DCBD75398B0FEDAD834596923F911A85D29C8E10A4041C0AB58CFCCADA6448521602AB15EDA11B339FC8DE8BE8512148DD78C88F2772702B3C11C60C92B6CB2A7F85B1C7729E8D1AD51548257B80750D24B7257F97AB25D80EF29B3965C267F8BFD20BA9B1577FE886A647CBA4EDFC36AE5D0D94DB8223C1ECFC3FEB0B189C1D089A9A56874B4D0554D783BA7DB7453AA67613E53C39CE63AB7EE0C3BF798524F0E014ABFE3AC91A715610B2E4AC4CD0A8DB7D8C8239223AB708A6DDAC58007619C2D28BA3A4C291E4AA0AE2057302D1A97516D0CDF32496A4DD54AF1</code></pre>
|
||||
<pre><code>encrypted_data = 64E271BF386687E6ADEC37485DB0F8CBDF67344B7F05B36124CB75E3DF6BE01AF164BDB246C102E9840F8389BBC5D6F82581AD90959E00EB9C1ECBBF440F3638495BF078EA127F8CCED1DD6E8C3E8F42E2FB974152A56C6700F172D4173A22D66A7DD836721084E130D7D6716A202990EDD0164510EAEFAF319121861E3B6D6FD3FCB90233AA85B01B99E3596B0B4173CE255AAA13AA08A089AD4EE121DFC531204A8D0114321B9D1EF75EDA89F0C9C31DE395153A5ADC434881C04F0541C98668947CA88096D8CA32D47F2073168B9579423A7A89873ADE02BD9C7BAD72776C3600E86A0B7ED686199F22388142FDB26C77F311D3A2323120DD3852C650B5AD</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 70 1D 0C 00 33 B7 92 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 48 94 4F 38 A8 CC 74 0A
|
||||
0020 | EA 5E D9 B5 FE EE 63 DF 2E D7 F8 E0 A2 C6 3D 14
|
||||
0030 | ED 13 DC CB 07 9A 9D 52 04 3B CC 2A 57 00 00 00
|
||||
0040 | 04 4A 3E 50 01 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 94 78 02 D2 D1 F7 FB BE 1D C1 76 A4
|
||||
0060 | C9 E1 EC B8 23 47 C1 1F AB 34 74 9A FD 6E CC 53
|
||||
0070 | 21 9F 15 62 C7 87 5D 8D CB D7 53 98 B0 FE DA D8
|
||||
0080 | 34 59 69 23 F9 11 A8 5D 29 C8 E1 0A 40 41 C0 AB
|
||||
0090 | 58 CF CC AD A6 44 85 21 60 2A B1 5E DA 11 B3 39
|
||||
00A0 | FC 8D E8 BE 85 12 14 8D D7 8C 88 F2 77 27 02 B3
|
||||
00B0 | C1 1C 60 C9 2B 6C B2 A7 F8 5B 1C 77 29 E8 D1 AD
|
||||
00C0 | 51 54 82 57 B8 07 50 D2 4B 72 57 F9 7A B2 5D 80
|
||||
00D0 | EF 29 B3 96 5C 26 7F 8B FD 20 BA 9B 15 77 FE 88
|
||||
00E0 | 6A 64 7C BA 4E DF C3 6A E5 D0 D9 4D B8 22 3C 1E
|
||||
00F0 | CF C3 FE B0 B1 89 C1 D0 89 A9 A5 68 74 B4 D0 55
|
||||
0100 | 4D 78 3B A7 DB 74 53 AA 67 61 3E 53 C3 9C E6 3A
|
||||
0110 | B7 EE 0C 3B F7 98 52 4F 0E 01 4A BF E3 AC 91 A7
|
||||
0120 | 15 61 0B 2E 4A C4 CD 0A 8D B7 D8 C8 23 92 23 AB
|
||||
0130 | 70 8A 6D DA C5 80 07 61 9C 2D 28 BA 3A 4C 29 1E
|
||||
0140 | 4A A0 AE 20 57 30 2D 1A 97 51 6D 0C DF 32 49 6A
|
||||
0150 | 4D D5 4A F1</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 08 A6 0C 00 51 C7 93 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 F3 37 16 0C 19 9F 9C AA
|
||||
0020 | 53 58 53 DB 57 2E 50 F7 D1 3D 8D A2 85 73 BA 19
|
||||
0030 | 6E AE F2 94 2F 4E 87 3E 04 42 B5 3D 63 00 00 00
|
||||
0040 | 04 63 0E 25 43 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 64 E2 71 BF 38 66 87 E6 AD EC 37 48
|
||||
0060 | 5D B0 F8 CB DF 67 34 4B 7F 05 B3 61 24 CB 75 E3
|
||||
0070 | DF 6B E0 1A F1 64 BD B2 46 C1 02 E9 84 0F 83 89
|
||||
0080 | BB C5 D6 F8 25 81 AD 90 95 9E 00 EB 9C 1E CB BF
|
||||
0090 | 44 0F 36 38 49 5B F0 78 EA 12 7F 8C CE D1 DD 6E
|
||||
00A0 | 8C 3E 8F 42 E2 FB 97 41 52 A5 6C 67 00 F1 72 D4
|
||||
00B0 | 17 3A 22 D6 6A 7D D8 36 72 10 84 E1 30 D7 D6 71
|
||||
00C0 | 6A 20 29 90 ED D0 16 45 10 EA EF AF 31 91 21 86
|
||||
00D0 | 1E 3B 6D 6F D3 FC B9 02 33 AA 85 B0 1B 99 E3 59
|
||||
00E0 | 6B 0B 41 73 CE 25 5A AA 13 AA 08 A0 89 AD 4E E1
|
||||
00F0 | 21 DF C5 31 20 4A 8D 01 14 32 1B 9D 1E F7 5E DA
|
||||
0100 | 89 F0 C9 C3 1D E3 95 15 3A 5A DC 43 48 81 C0 4F
|
||||
0110 | 05 41 C9 86 68 94 7C A8 80 96 D8 CA 32 D4 7F 20
|
||||
0120 | 73 16 8B 95 79 42 3A 7A 89 87 3A DE 02 BD 9C 7B
|
||||
0130 | AD 72 77 6C 36 00 E8 6A 0B 7E D6 86 19 9F 22 38
|
||||
0140 | 81 42 FD B2 6C 77 F3 11 D3 A2 32 31 20 DD 38 52
|
||||
0150 | C6 50 B5 AD</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 = A187B95462ECDC248C12FD0B5946AB3AE5FCC1B97981BBC1023A60AD4
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>701D0C0033B79266</code></td>
|
||||
<td><code>08A60C0051C79366</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 = A187B95462ECDC248C12FD0B5946AB3AE5FCC1B97981BBC1023A60AD4
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>48944F38A8CC740AEA5ED9B5FEEE63DF</code></td>
|
||||
<td><code>F337160C199F9CAA535853DB572E50F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>2ED7F8E0A2C63D14ED13DCCB079A9D52</code></td>
|
||||
<td><code>D13D8DA28573BA196EAEF2942F4E873E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>043BCC2A57000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1003235927</td>
|
||||
<td><code>0442B53D63000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1119173987</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>044A3E5001000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1245597697</td>
|
||||
<td><code>04630E2543000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1661871427</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 = A187B95462ECDC248C12FD0B5946AB3AE5FCC1B97981BBC1023A60AD4
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE000100947802D2D1F7FBBE1DC176A4</code> <code>C9E1ECB82347C11FAB34749AFD6ECC53</code> <code>219F1562C7875D8DCBD75398B0FEDAD8</code> <code>34596923F911A85D29C8E10A4041C0AB</code> <code>58CFCCADA6448521602AB15EDA11B339</code> <code>FC8DE8BE8512148DD78C88F2772702B3</code> <code>C11C60C92B6CB2A7F85B1C7729E8D1AD</code> <code>51548257B80750D24B7257F97AB25D80</code> <code>EF29B3965C267F8BFD20BA9B1577FE88</code> <code>6A647CBA4EDFC36AE5D0D94DB8223C1E</code> <code>CFC3FEB0B189C1D089A9A56874B4D055</code> <code>4D783BA7DB7453AA67613E53C39CE63A</code> <code>B7EE0C3BF798524F0E014ABFE3AC91A7</code> <code>15610B2E4AC4CD0A8DB7D8C8239223AB</code> <code>708A6DDAC58007619C2D28BA3A4C291E</code> <code>4AA0AE2057302D1A97516D0CDF32496A</code><br> <code>4DD54AF1</code></td>
|
||||
<td><code>FE00010064E271BF386687E6ADEC3748</code> <code>5DB0F8CBDF67344B7F05B36124CB75E3</code> <code>DF6BE01AF164BDB246C102E9840F8389</code> <code>BBC5D6F82581AD90959E00EB9C1ECBBF</code> <code>440F3638495BF078EA127F8CCED1DD6E</code> <code>8C3E8F42E2FB974152A56C6700F172D4</code> <code>173A22D66A7DD836721084E130D7D671</code> <code>6A202990EDD0164510EAEFAF31912186</code> <code>1E3B6D6FD3FCB90233AA85B01B99E359</code> <code>6B0B4173CE255AAA13AA08A089AD4EE1</code> <code>21DFC531204A8D0114321B9D1EF75EDA</code> <code>89F0C9C31DE395153A5ADC434881C04F</code> <code>0541C98668947CA88096D8CA32D47F20</code> <code>73168B9579423A7A89873ADE02BD9C7B</code> <code>AD72776C3600E86A0B7ED686199F2238</code> <code>8142FDB26C77F311D3A2323120DD3852</code><br> <code>C650B5AD</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = A187B95462ECDC248C12FD0B5946AB3AE5FCC1B97981BBC1023A60AD4
|
|||
<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 A0 F6 7E 34 B7 92 66
|
||||
0010 | 98 02 00 00 5C 07 E8 D0 48 94 4F 38 A8 CC 74 0A
|
||||
0020 | EA 5E D9 B5 FE EE 63 DF 2E D7 F8 E0 A2 C6 3D 14
|
||||
0030 | ED 13 DC CB 07 9A 9D 52 FE 50 02 00 50 64 1F 9D
|
||||
0040 | 2F BC E6 8F 93 E4 C8 EA 07 AD 42 EB 3E DB 1C 61
|
||||
0050 | 1A 39 E5 06 0A 35 CA F7 C7 89 70 8B 69 FD FC C3
|
||||
0060 | 10 43 E8 52 08 9A E9 FC 2D 18 2B D7 01 ED AF 93
|
||||
0070 | 4F 5E 35 E8 6F 14 11 CF 43 40 C2 37 7F CE FF FD
|
||||
0080 | 68 50 7A 08 FD 96 7E D9 77 09 AA 57 44 46 9C B8
|
||||
0090 | 29 4C B1 D8 10 B0 37 9C 26 FB 97 4E 09 93 1A 75
|
||||
00A0 | 53 55 D1 37 66 38 36 30 C5 4A 6D 96 0C 09 62 99
|
||||
00B0 | B1 F5 A9 14 FE 17 3A 46 8D 5F 3B FF 96 47 29 7D
|
||||
00C0 | 62 E2 17 0E 0F 8C A4 47 87 2D 27 9A 5C D2 01 2B
|
||||
00D0 | 5B 82 B3 A5 DC 70 EB 22 F4 C2 E9 A7 3E 71 C0 B9
|
||||
00E0 | B2 31 78 8D 6D 4B DD CC 14 45 8F 89 A4 88 F1 83
|
||||
00F0 | 1D C3 C9 B9 31 AD 65 86 9A 86 97 73 5A 6E 54 B1
|
||||
0100 | 82 7F 81 CE 56 C5 36 DA 01 88 BF 84 EE A4 AC A4
|
||||
0110 | 99 7B A3 13 FA 3C CA 1C E9 2A 26 4F B8 36 F8 8A
|
||||
0120 | B1 00 AA 2B 7F 15 C9 8A 36 30 98 49 A5 86 CA 0E
|
||||
0130 | 3A AB 66 D7 4E 7B 4F C1 11 64 31 9B 88 3B EA 6E
|
||||
0140 | 94 1C DF 0D 59 E7 DF 8E CF 97 E5 A4 4E B8 1F F6
|
||||
0150 | FE 5F CB DA 05 14 BF 81 F6 64 80 91 47 8B F9 E5
|
||||
0160 | 76 2D 63 B3 DB 6B 5B 0A E6 DF 37 3F 61 9B 16 C1
|
||||
0170 | 10 F4 92 6E AE 32 6B 54 57 E1 0D 1E B9 D4 EE 12
|
||||
0180 | 0D 2F 14 DC 22 FF 01 8F A7 09 A5 79 09 8F 4D 4C
|
||||
0190 | B6 15 26 00 5E 14 63 B2 C7 4E B3 E3 D1 FC FC A4
|
||||
01A0 | 20 39 21 05 86 38 4D 76 32 EF D9 7C E4 3C 90 87
|
||||
01B0 | DC 32 B5 6D 6F 2E 14 B3 FB DD B2 FE CF 01 AD 37
|
||||
01C0 | B6 D9 45 85 D9 77 BA 56 8B 96 C5 17 86 7C DB 31
|
||||
01D0 | CB 5C 24 AF 84 1D 00 79 FE 93 3E BC 03 50 4D 82
|
||||
01E0 | 49 1D 6B 24 AF 66 B1 BD 8C 90 E3 59 53 AE 39 2B
|
||||
01F0 | 99 CE 8A 2C 29 3E CD 3B 20 00 45 1C 68 9C DC 60
|
||||
0200 | 27 53 B8 80 DD 42 85 E9 73 FF C4 29 29 E1 02 9A
|
||||
0210 | F1 45 70 34 3E 33 1F C0 90 09 B6 E2 9D 33 33 59
|
||||
0220 | 0F 88 14 52 E0 ED C6 F3 9C E4 E3 0D 62 81 85 F3
|
||||
0230 | 22 DD D0 33 F7 E4 2F 59 15 F2 67 1B 87 EB 6E C1
|
||||
0240 | 1A D6 1A F8 2B F3 9F CD 36 C7 52 A6 82 64 3D 0A
|
||||
0250 | A6 04 83 AA 9F DD 5E F6 EF E4 A5 47 D5 5B 45 C5
|
||||
0260 | 45 B1 39 6C 58 93 A5 CC B8 B2 0D 80 72 31 BE 72
|
||||
0270 | 76 1A 07 33 E5 9A 7A 51 A3 3A 44 28 64 0A 06 24
|
||||
0280 | E2 BB BC 54 0E 73 28 9D 52 C3 70 30</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 F0 21 97 52 C7 93 66
|
||||
0010 | A4 02 00 00 5C 07 E8 D0 F3 37 16 0C 19 9F 9C AA
|
||||
0020 | 53 58 53 DB 57 2E 50 F7 D1 3D 8D A2 85 73 BA 19
|
||||
0030 | 6E AE F2 94 2F 4E 87 3E FE 50 02 00 D5 A3 6D 46
|
||||
0040 | AC 04 17 78 6B D9 F1 99 A5 EA F6 4B BA 6D 50 53
|
||||
0050 | 28 92 C8 BC 04 AB 9E DD 4D 97 BD EC 0A F2 3D F1
|
||||
0060 | 17 48 EC 1D 74 9C 7D BA 83 C2 71 65 99 8E 9A AC
|
||||
0070 | D4 86 79 EF 58 02 7D 79 3E C9 F1 94 64 AF FB C1
|
||||
0080 | 8E 40 BD 5D F7 D2 D1 95 33 AA B5 77 19 06 09 5D
|
||||
0090 | 07 60 56 20 2A F7 EB 04 A4 30 71 AD 6D 6D 07 27
|
||||
00A0 | CA 73 04 5D 38 5A A4 DA AE 8F C7 54 F0 77 2B BD
|
||||
00B0 | 88 40 BA FA D2 AF CF 96 0C D3 7E 28 38 3A E1 96
|
||||
00C0 | 77 48 4B 46 51 31 E4 50 A5 F8 CB 02 B7 F9 DA 32
|
||||
00D0 | 3E 7E 36 19 FF 5D E8 1C A8 A2 61 B5 E0 02 1B 02
|
||||
00E0 | ED 03 A4 A7 2A 03 85 8F 37 F0 DD 2C 52 6F 69 AC
|
||||
00F0 | EB 05 50 9E 24 0D 76 87 C0 7E 12 B5 49 44 C8 FE
|
||||
0100 | 03 68 60 22 D2 A3 40 4C 4C 14 E6 6A 1F F1 99 B4
|
||||
0110 | F1 5F B2 C0 D6 EC 9D C6 6A F3 A3 65 DB 72 D6 1B
|
||||
0120 | A9 4C A3 CF 47 34 CB 61 A8 10 1C 50 FC 85 C9 CE
|
||||
0130 | 44 0E DA 71 7B FB 04 E5 C2 3F EE 0E CE 6E 9E 08
|
||||
0140 | 35 48 12 40 9E F6 0E AC 62 E7 8C 41 4D E7 56 39
|
||||
0150 | 7C 26 E8 64 A1 17 AD 21 4C A5 66 AE 5A DA 63 9A
|
||||
0160 | 76 40 BE 28 39 4D AE 32 88 28 56 E3 6D 03 66 44
|
||||
0170 | DC 3E B6 C4 3A 20 CC 50 2A 66 44 E4 FF 4F 46 1C
|
||||
0180 | 0D 77 5A D5 35 5A 27 D9 30 B7 EC 84 AD 31 68 88
|
||||
0190 | 53 8B 65 CF 4A 07 C6 BE 53 AD 0F 81 90 F6 E4 CE
|
||||
01A0 | 80 48 13 AA A6 43 B1 3C DC 3D 7F A5 6C 0D 84 20
|
||||
01B0 | AB F6 C6 2A F0 C4 19 F4 C5 94 4D FD 7A A8 1B FD
|
||||
01C0 | D2 67 AA 68 FB 26 BF 66 DC 31 1A C6 34 3B 4A 91
|
||||
01D0 | E7 D1 F8 48 23 DA DC 5B 16 61 D1 D4 60 83 66 B0
|
||||
01E0 | 55 9D 33 37 59 76 82 A7 56 C7 18 19 27 BD 8B 1D
|
||||
01F0 | E7 45 0E 08 EC 82 0C 9D 6C 8B 22 E3 47 11 17 50
|
||||
0200 | B3 B9 A3 01 34 2B 5B F4 C1 6C E0 0D 4D 04 B2 00
|
||||
0210 | 73 F5 02 3F D7 18 FF 73 C8 EC 2E 89 00 A6 0E 2D
|
||||
0220 | 7F 0F 93 F9 E2 61 FE AB 28 48 E3 AA FF BA 08 EE
|
||||
0230 | 21 94 F6 CA E1 84 E9 10 75 01 D4 9B 16 54 4C B3
|
||||
0240 | 0B F2 F4 77 19 38 50 9F E3 36 3B CB 9B 60 DF A8
|
||||
0250 | 0E F9 7B 01 D7 72 C6 D1 4B 5E C0 8C E7 12 C0 5E
|
||||
0260 | EB 4B A1 A7 1E A1 AE 32 C8 A9 6E 13 89 67 65 B4
|
||||
0270 | C6 F9 D7 C8 A5 BC 77 56 CE 49 90 2D 54 C3 A4 87
|
||||
0280 | FC 21 71 3D A8 24 49 D1 7B C7 64 3B</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 = A187B95462ECDC248C12FD0B5946AB3AE5FCC1B97981BBC1023A60AD4
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01A0F67E34B79266</code></td>
|
||||
<td><code>01F0219752C79366</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>A4020000</code> (676 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = A187B95462ECDC248C12FD0B5946AB3AE5FCC1B97981BBC1023A60AD4
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>48944F38A8CC740AEA5ED9B5FEEE63DF</code></td>
|
||||
<td><code>F337160C199F9CAA535853DB572E50F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>2ED7F8E0A2C63D14ED13DCCB079A9D52</code></td>
|
||||
<td><code>D13D8DA28573BA196EAEF2942F4E873E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE50020050641F9D2FBCE68F93E4C8EA</code> <code>07AD42EB3EDB1C611A39E5060A35CAF7</code> <code>C789708B69FDFCC31043E852089AE9FC</code> <code>2D182BD701EDAF934F5E35E86F1411CF</code> <code>4340C2377FCEFFFD68507A08FD967ED9</code> <code>7709AA5744469CB8294CB1D810B0379C</code> <code>26FB974E09931A755355D13766383630</code> <code>C54A6D960C096299B1F5A914FE173A46</code> <code>8D5F3BFF9647297D62E2170E0F8CA447</code> <code>872D279A5CD2012B5B82B3A5DC70EB22</code> <code>F4C2E9A73E71C0B9B231788D6D4BDDCC</code> <code>14458F89A488F1831DC3C9B931AD6586</code> <code>9A8697735A6E54B1827F81CE56C536DA</code> <code>0188BF84EEA4ACA4997BA313FA3CCA1C</code> <code>E92A264FB836F88AB100AA2B7F15C98A</code> <code>36309849A586CA0E3AAB66D74E7B4FC1</code> <code>1164319B883BEA6E941CDF0D59E7DF8E</code> <code>CF97E5A44EB81FF6FE5FCBDA0514BF81</code> <code>F6648091478BF9E5762D63B3DB6B5B0A</code> <code>E6DF373F619B16C110F4926EAE326B54</code> <code>57E10D1EB9D4EE120D2F14DC22FF018F</code> <code>A709A579098F4D4CB61526005E1463B2</code> <code>C74EB3E3D1FCFCA42039210586384D76</code> <code>32EFD97CE43C9087DC32B56D6F2E14B3</code> <code>FBDDB2FECF01AD37B6D94585D977BA56</code> <code>8B96C517867CDB31CB5C24AF841D0079</code> <code>FE933EBC03504D82491D6B24AF66B1BD</code> <code>8C90E35953AE392B99CE8A2C293ECD3B</code> <code>2000451C689CDC602753B880DD4285E9</code> <code>73FFC42929E1029AF14570343E331FC0</code> <code>9009B6E29D3333590F881452E0EDC6F3</code> <code>9CE4E30D628185F322DDD033F7E42F59</code> <code>15F2671B87EB6EC11AD61AF82BF39FCD</code> <code>36C752A682643D0AA60483AA9FDD5EF6</code> <code>EFE4A547D55B45C545B1396C5893A5CC</code> <code>B8B20D807231BE72761A0733E59A7A51</code> <code>A33A4428640A0624E2BBBC540E73289D</code><br> <code>52C37030</code></td>
|
||||
<td><code>FE500200D5A36D46AC0417786BD9F199</code> <code>A5EAF64BBA6D50532892C8BC04AB9EDD</code> <code>4D97BDEC0AF23DF11748EC1D749C7DBA</code> <code>83C27165998E9AACD48679EF58027D79</code> <code>3EC9F19464AFFBC18E40BD5DF7D2D195</code> <code>33AAB5771906095D076056202AF7EB04</code> <code>A43071AD6D6D0727CA73045D385AA4DA</code> <code>AE8FC754F0772BBD8840BAFAD2AFCF96</code> <code>0CD37E28383AE19677484B465131E450</code> <code>A5F8CB02B7F9DA323E7E3619FF5DE81C</code> <code>A8A261B5E0021B02ED03A4A72A03858F</code> <code>37F0DD2C526F69ACEB05509E240D7687</code> <code>C07E12B54944C8FE03686022D2A3404C</code> <code>4C14E66A1FF199B4F15FB2C0D6EC9DC6</code> <code>6AF3A365DB72D61BA94CA3CF4734CB61</code> <code>A8101C50FC85C9CE440EDA717BFB04E5</code> <code>C23FEE0ECE6E9E08354812409EF60EAC</code> <code>62E78C414DE756397C26E864A117AD21</code> <code>4CA566AE5ADA639A7640BE28394DAE32</code> <code>882856E36D036644DC3EB6C43A20CC50</code> <code>2A6644E4FF4F461C0D775AD5355A27D9</code> <code>30B7EC84AD316888538B65CF4A07C6BE</code> <code>53AD0F8190F6E4CE804813AAA643B13C</code> <code>DC3D7FA56C0D8420ABF6C62AF0C419F4</code> <code>C5944DFD7AA81BFDD267AA68FB26BF66</code> <code>DC311AC6343B4A91E7D1F84823DADC5B</code> <code>1661D1D4608366B0559D3337597682A7</code> <code>56C7181927BD8B1DE7450E08EC820C9D</code> <code>6C8B22E347111750B3B9A301342B5BF4</code> <code>C16CE00D4D04B20073F5023FD718FF73</code> <code>C8EC2E8900A60E2D7F0F93F9E261FEAB</code> <code>2848E3AAFFBA08EE2194F6CAE184E910</code> <code>7501D49B16544CB30BF2F4771938509F</code> <code>E3363BCB9B60DFA80EF97B01D772C6D1</code> <code>4B5EC08CE712C05EEB4BA1A71EA1AE32</code> <code>C8A96E13896765B4C6F9D7C8A5BC7756</code> <code>CE49902D54C3A487FC21713DA82449D1</code><br> <code>7BC7643B</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = A187B95462ECDC248C12FD0B5946AB3AE5FCC1B97981BBC1023A60AD4
|
|||
<!-- 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 = 50641F9D2FBCE68F93E4C8EA07AD42EB3EDB1C611A39E5060A35CAF7C789708B69FDFCC31043E852089AE9FC2D182BD701EDAF934F5E35E86F1411CF4340C2377FCEFFFD68507A08FD967ED97709AA5744469CB8294CB1D810B0379C26FB974E09931A755355D13766383630C54A6D960C096299B1F5A914FE173A468D5F3BFF9647297D62E2170E0F8CA447872D279A5CD2012B5B82B3A5DC70EB22F4C2E9A73E71C0B9B231788D6D4BDDCC14458F89A488F1831DC3C9B931AD65869A8697735A6E54B1827F81CE56C536DA0188BF84EEA4ACA4997BA313FA3CCA1CE92A264FB836F88AB100AA2B7F15C98A36309849A586CA0E3AAB66D74E7B4FC11164319B883BEA6E941CDF0D59E7DF8ECF97E5A44EB81FF6FE5FCBDA0514BF81F6648091478BF9E5762D63B3DB6B5B0AE6DF373F619B16C110F4926EAE326B5457E10D1EB9D4EE120D2F14DC22FF018FA709A579098F4D4CB61526005E1463B2C74EB3E3D1FCFCA42039210586384D7632EFD97CE43C9087DC32B56D6F2E14B3FBDDB2FECF01AD37B6D94585D977BA568B96C517867CDB31CB5C24AF841D0079FE933EBC03504D82491D6B24AF66B1BD8C90E35953AE392B99CE8A2C293ECD3B2000451C689CDC602753B880DD4285E973FFC42929E1029AF14570343E331FC09009B6E29D3333590F881452E0EDC6F39CE4E30D628185F322DDD033F7E42F5915F2671B87EB6EC11AD61AF82BF39FCD36C752A682643D0AA60483AA9FDD5EF6EFE4A547D55B45C545B1396C5893A5CCB8B20D807231BE72761A0733E59A7A51A33A4428640A0624E2BBBC540E73289D52C37030
|
||||
tmp_aes_key = A5E7AEE690B167CBD0589EF1B4CE787E419A77BF2274F5AA04236744FE17426B
|
||||
tmp_aes_iv = 7828906EA860A7DE71FF938BBF2DDEF3AE3A6EA9652657ECC37AEA1BB8C00660</code></pre>
|
||||
<pre><code>encrypted_answer = D5A36D46AC0417786BD9F199A5EAF64BBA6D50532892C8BC04AB9EDD4D97BDEC0AF23DF11748EC1D749C7DBA83C27165998E9AACD48679EF58027D793EC9F19464AFFBC18E40BD5DF7D2D19533AAB5771906095D076056202AF7EB04A43071AD6D6D0727CA73045D385AA4DAAE8FC754F0772BBD8840BAFAD2AFCF960CD37E28383AE19677484B465131E450A5F8CB02B7F9DA323E7E3619FF5DE81CA8A261B5E0021B02ED03A4A72A03858F37F0DD2C526F69ACEB05509E240D7687C07E12B54944C8FE03686022D2A3404C4C14E66A1FF199B4F15FB2C0D6EC9DC66AF3A365DB72D61BA94CA3CF4734CB61A8101C50FC85C9CE440EDA717BFB04E5C23FEE0ECE6E9E08354812409EF60EAC62E78C414DE756397C26E864A117AD214CA566AE5ADA639A7640BE28394DAE32882856E36D036644DC3EB6C43A20CC502A6644E4FF4F461C0D775AD5355A27D930B7EC84AD316888538B65CF4A07C6BE53AD0F8190F6E4CE804813AAA643B13CDC3D7FA56C0D8420ABF6C62AF0C419F4C5944DFD7AA81BFDD267AA68FB26BF66DC311AC6343B4A91E7D1F84823DADC5B1661D1D4608366B0559D3337597682A756C7181927BD8B1DE7450E08EC820C9D6C8B22E347111750B3B9A301342B5BF4C16CE00D4D04B20073F5023FD718FF73C8EC2E8900A60E2D7F0F93F9E261FEAB2848E3AAFFBA08EE2194F6CAE184E9107501D49B16544CB30BF2F4771938509FE3363BCB9B60DFA80EF97B01D772C6D14B5EC08CE712C05EEB4BA1A71EA1AE32C8A96E13896765B4C6F9D7C8A5BC7756CE49902D54C3A487FC21713DA82449D17BC7643B
|
||||
tmp_aes_key = 70BCC211C7FA9B9C4BB4125FB60EE21DA8F45E5271D759DDEECE1108787AEECF
|
||||
tmp_aes_iv = 94C61F4FE781457C93DECE378CA3D1C4FFE334120F063E688F3458670844DDAD</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = 699222A0D5732CE66169A90669A6F1AC5882BD25BA0D89B548944F38A8CC740AEA5ED9B5FEEE63DF2ED7F8E0A2C63D14ED13DCCB079A9D5203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009816BAA5752B2921F7817155E1D9247232F913D748BF958957AF3A74C549E0D5322C4FE5F0B0F1DFD47B36BAA2777948F0218A2EC85F19F90332781436D57F2A1DDFBCBFB8FADB83082E7FD6D22338542563079AA109BEF2664026B7CFDF6A148554743FC92795C06E9498EF30EEFF12CE86B5C989DA61A59587992D653E0B29BBECA39460202882023AE263140C0C395DB2906EDD04D95350414D3089E734A1BECDBF7E5FCC96D5E0B464C8A9C769ED35E0D07BD5AB6648CF388B517584B45D5BE6BCA10094785563CCD26F27926E48AA4BB5ABDBBD0534767405D5F280170F10F3C33181254BD110578F6B443557D9BD07D89108B136D46880112906A8DB3034B79266901F3B2787731321
|
||||
answer = BA0D89B548944F38A8CC740AEA5ED9B5FEEE63DF2ED7F8E0A2C63D14ED13DCCB079A9D5203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001009816BAA5752B2921F7817155E1D9247232F913D748BF958957AF3A74C549E0D5322C4FE5F0B0F1DFD47B36BAA2777948F0218A2EC85F19F90332781436D57F2A1DDFBCBFB8FADB83082E7FD6D22338542563079AA109BEF2664026B7CFDF6A148554743FC92795C06E9498EF30EEFF12CE86B5C989DA61A59587992D653E0B29BBECA39460202882023AE263140C0C395DB2906EDD04D95350414D3089E734A1BECDBF7E5FCC96D5E0B464C8A9C769ED35E0D07BD5AB6648CF388B517584B45D5BE6BCA10094785563CCD26F27926E48AA4BB5ABDBBD0534767405D5F280170F10F3C33181254BD110578F6B443557D9BD07D89108B136D46880112906A8DB3034B79266901F3B2787731321</code></pre>
|
||||
<pre><code>answer_with_hash = 6D88489BF2099547551EF0149C34197C83E16612BA0D89B5F337160C199F9CAA535853DB572E50F7D13D8DA28573BA196EAEF2942F4E873E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010076056AD0A66EBB0B411EFBAC47EC3788B2382CC325439AE02F59BF65270CE71505984E0F5320A6888A02711DF0F662C816E95AA263BF7869BDBB0EAD6FBE079B0124F0881EE90A28392D03904F7F6A268B853DB39EC9B94F526D941B7783CE0A41CFD2CD99B771BDC8F2A2402C8B9D392A1E553A2CCD55EDC472A4A4082C84F1F121746DD353C99ADBC010133E4550595148B9FD9BC5902D571E716679D6279338908A88CC4C8744720F65EA313D7DB5FB65A84EFC5BD462637BF1F83E1C83EB5533B3B91CF3C4D6778E208B7AFADB76EBAB2706AAC5C2484A366F6230D00CBFD3D1ECEA7F2B639A1C93CDBE4F2F262955F12CADAE4E61B626F0D9E7A91DDEC452C79366D6821ADF5DA007A5
|
||||
answer = BA0D89B5F337160C199F9CAA535853DB572E50F7D13D8DA28573BA196EAEF2942F4E873E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010076056AD0A66EBB0B411EFBAC47EC3788B2382CC325439AE02F59BF65270CE71505984E0F5320A6888A02711DF0F662C816E95AA263BF7869BDBB0EAD6FBE079B0124F0881EE90A28392D03904F7F6A268B853DB39EC9B94F526D941B7783CE0A41CFD2CD99B771BDC8F2A2402C8B9D392A1E553A2CCD55EDC472A4A4082C84F1F121746DD353C99ADBC010133E4550595148B9FD9BC5902D571E716679D6279338908A88CC4C8744720F65EA313D7DB5FB65A84EFC5BD462637BF1F83E1C83EB5533B3B91CF3C4D6778E208B7AFADB76EBAB2706AAC5C2484A366F6230D00CBFD3D1ECEA7F2B639A1C93CDBE4F2F262955F12CADAE4E61B626F0D9E7A91DDEC452C79366D6821ADF5DA007A5</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 48 94 4F 38 A8 CC 74 0A EA 5E D9 B5
|
||||
0010 | FE EE 63 DF 2E D7 F8 E0 A2 C6 3D 14 ED 13 DC CB
|
||||
0020 | 07 9A 9D 52 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 F3 37 16 0C 19 9F 9C AA 53 58 53 DB
|
||||
0010 | 57 2E 50 F7 D1 3D 8D A2 85 73 BA 19 6E AE F2 94
|
||||
0020 | 2F 4E 87 3E 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 = BA0D89B548944F38A8CC740AEA5ED9B5FEEE63DF2ED7F8E0A2C63D14ED13DCCB079A9D5
|
|||
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 16 BA A5 75 2B 29 21 F7 81 71 55 E1 D9 24 72
|
||||
0140 | 32 F9 13 D7 48 BF 95 89 57 AF 3A 74 C5 49 E0 D5
|
||||
0150 | 32 2C 4F E5 F0 B0 F1 DF D4 7B 36 BA A2 77 79 48
|
||||
0160 | F0 21 8A 2E C8 5F 19 F9 03 32 78 14 36 D5 7F 2A
|
||||
0170 | 1D DF BC BF B8 FA DB 83 08 2E 7F D6 D2 23 38 54
|
||||
0180 | 25 63 07 9A A1 09 BE F2 66 40 26 B7 CF DF 6A 14
|
||||
0190 | 85 54 74 3F C9 27 95 C0 6E 94 98 EF 30 EE FF 12
|
||||
01A0 | CE 86 B5 C9 89 DA 61 A5 95 87 99 2D 65 3E 0B 29
|
||||
01B0 | BB EC A3 94 60 20 28 82 02 3A E2 63 14 0C 0C 39
|
||||
01C0 | 5D B2 90 6E DD 04 D9 53 50 41 4D 30 89 E7 34 A1
|
||||
01D0 | BE CD BF 7E 5F CC 96 D5 E0 B4 64 C8 A9 C7 69 ED
|
||||
01E0 | 35 E0 D0 7B D5 AB 66 48 CF 38 8B 51 75 84 B4 5D
|
||||
01F0 | 5B E6 BC A1 00 94 78 55 63 CC D2 6F 27 92 6E 48
|
||||
0200 | AA 4B B5 AB DB BD 05 34 76 74 05 D5 F2 80 17 0F
|
||||
0210 | 10 F3 C3 31 81 25 4B D1 10 57 8F 6B 44 35 57 D9
|
||||
0220 | BD 07 D8 91 08 B1 36 D4 68 80 11 29 06 A8 DB 30
|
||||
0230 | 34 B7 92 66</code></pre>
|
||||
0130 | 76 05 6A D0 A6 6E BB 0B 41 1E FB AC 47 EC 37 88
|
||||
0140 | B2 38 2C C3 25 43 9A E0 2F 59 BF 65 27 0C E7 15
|
||||
0150 | 05 98 4E 0F 53 20 A6 88 8A 02 71 1D F0 F6 62 C8
|
||||
0160 | 16 E9 5A A2 63 BF 78 69 BD BB 0E AD 6F BE 07 9B
|
||||
0170 | 01 24 F0 88 1E E9 0A 28 39 2D 03 90 4F 7F 6A 26
|
||||
0180 | 8B 85 3D B3 9E C9 B9 4F 52 6D 94 1B 77 83 CE 0A
|
||||
0190 | 41 CF D2 CD 99 B7 71 BD C8 F2 A2 40 2C 8B 9D 39
|
||||
01A0 | 2A 1E 55 3A 2C CD 55 ED C4 72 A4 A4 08 2C 84 F1
|
||||
01B0 | F1 21 74 6D D3 53 C9 9A DB C0 10 13 3E 45 50 59
|
||||
01C0 | 51 48 B9 FD 9B C5 90 2D 57 1E 71 66 79 D6 27 93
|
||||
01D0 | 38 90 8A 88 CC 4C 87 44 72 0F 65 EA 31 3D 7D B5
|
||||
01E0 | FB 65 A8 4E FC 5B D4 62 63 7B F1 F8 3E 1C 83 EB
|
||||
01F0 | 55 33 B3 B9 1C F3 C4 D6 77 8E 20 8B 7A FA DB 76
|
||||
0200 | EB AB 27 06 AA C5 C2 48 4A 36 6F 62 30 D0 0C BF
|
||||
0210 | D3 D1 EC EA 7F 2B 63 9A 1C 93 CD BE 4F 2F 26 29
|
||||
0220 | 55 F1 2C AD AE 4E 61 B6 26 F0 D9 E7 A9 1D DE C4
|
||||
0230 | 52 C7 93 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 = BA0D89B548944F38A8CC740AEA5ED9B5FEEE63DF2ED7F8E0A2C63D14ED13DCCB079A9D5
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>48944F38A8CC740AEA5ED9B5FEEE63DF</code></td>
|
||||
<td><code>F337160C199F9CAA535853DB572E50F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>2ED7F8E0A2C63D14ED13DCCB079A9D52</code></td>
|
||||
<td><code>D13D8DA28573BA196EAEF2942F4E873E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B548944F38A8CC740AEA5ED9B5FEEE63DF2ED7F8E0A2C63D14ED13DCCB079A9D5
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE0001009816BAA5752B2921F7817155</code> <code>E1D9247232F913D748BF958957AF3A74</code> <code>C549E0D5322C4FE5F0B0F1DFD47B36BA</code> <code>A2777948F0218A2EC85F19F903327814</code> <code>36D57F2A1DDFBCBFB8FADB83082E7FD6</code> <code>D22338542563079AA109BEF2664026B7</code> <code>CFDF6A148554743FC92795C06E9498EF</code> <code>30EEFF12CE86B5C989DA61A59587992D</code> <code>653E0B29BBECA39460202882023AE263</code> <code>140C0C395DB2906EDD04D95350414D30</code> <code>89E734A1BECDBF7E5FCC96D5E0B464C8</code> <code>A9C769ED35E0D07BD5AB6648CF388B51</code> <code>7584B45D5BE6BCA10094785563CCD26F</code> <code>27926E48AA4BB5ABDBBD0534767405D5</code> <code>F280170F10F3C33181254BD110578F6B</code> <code>443557D9BD07D89108B136D468801129</code><br> <code>06A8DB30</code></td>
|
||||
<td><code>FE00010076056AD0A66EBB0B411EFBAC</code> <code>47EC3788B2382CC325439AE02F59BF65</code> <code>270CE71505984E0F5320A6888A02711D</code> <code>F0F662C816E95AA263BF7869BDBB0EAD</code> <code>6FBE079B0124F0881EE90A28392D0390</code> <code>4F7F6A268B853DB39EC9B94F526D941B</code> <code>7783CE0A41CFD2CD99B771BDC8F2A240</code> <code>2C8B9D392A1E553A2CCD55EDC472A4A4</code> <code>082C84F1F121746DD353C99ADBC01013</code> <code>3E4550595148B9FD9BC5902D571E7166</code> <code>79D6279338908A88CC4C8744720F65EA</code> <code>313D7DB5FB65A84EFC5BD462637BF1F8</code> <code>3E1C83EB5533B3B91CF3C4D6778E208B</code> <code>7AFADB76EBAB2706AAC5C2484A366F62</code> <code>30D00CBFD3D1ECEA7F2B639A1C93CDBE</code> <code>4F2F262955F12CADAE4E61B626F0D9E7</code><br> <code>A91DDEC4</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>34B79266</code> (1720891188 in decimal)</td>
|
||||
<td><code>52C79366</code> (1720960850 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B548944F38A8CC740AEA5ED9B5FEEE63DF2ED7F8E0A2C63D14ED13DCCB079A9D5
|
|||
<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 = 68BF58E88A6CBC8BE492F7422DFE81F3812545E2C3EFDAEFB0F47656FB4EE179EB07853F9FCFBBB64FA7286CE5CF81FC5B6C722A95F13F9D9142E3DF24CA6530900AE03DFF174062C789B92A4D5EFC7761350EEA625DB69CC1FF49D83FFEF147406057077D024D0DFDDA4E9ACF6B49A69DE7295A6290BD5D028EDF5F45ED82D2EB80CE5D6B9AD03E71AFE08641064F2955836D5649DB99A755E3FE5E259DE6C6912664267B40432E7FED22C4C027ED9D62DCECDF21ED5A2B6236BC5FA6F672994ECE45556F467E66626253C22B63387BE9C8EB42B4A72E661410D9544F923114E712CD977F6E5F001B16874DA174BB6B176DA0853C3D6E0602FAAC8AE9782E40</code></pre>
|
||||
<pre><code>b = 9F5016C1AE42399DBC9A81494FC3490959F56E870D35CD49C34A713DBE1E264696B76EA9AD052BB25BE285DC969D11A6733318561B2B760ACF3852F12C871E5FCA237060BAC007B068BBA5D82515D64B4346AC2D6CF8F9AF4FDA66DB93F4C5A26CD9ECEFEDD4AE4E7C8C6C2F0BC8D9B1376D07FD0B309C8A6E8AC39B5F2304AC78F0DEC79874795329F3AC070AC7C8018B78AE180C8E6610B9BDEEDBAC9A945AF7FE9D9BF2BE9EBF93D03CECA384BF1CE891CD46AA2ACC4B567FAB0B1DDE84ECE010C4C6D441126F7EB51ECDC7E097E3A3D27FE293EB8D09C050F5AD93D5F44C65CF84B87C01B42C56700B58AD25ACB36ABFBCA1DC336904DA86EE6676A5D62D</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 = 39679113512A4013CCB3E42E3FD9EFF48EAD1FB31102CB20B73D1F8A09721D11765F85CF7CF94AA81FA23E082E8018F9F01072DD4D038A4E26512A3828E01AF99EA1C7F75763CA34E41ECF0E8D11FF0B5FFC004C69325F54689043270B50B3B60B6D57EA18062FF03FEEE5A08FD897ACECEDCDEF5E1335259221AAF457D439DDB188862C9BD5CE010C6C25BE3141E2206DFC5E4769B80356147191FE5A3CB6BF29D6433A4A524B326E51D05C4961A18507DABB3EEFB930C871DB8AB28BAEED64C52D7802683E90F5018927BD623C2B67EA99C1B8C4EB364230E7590C6D025F0E9E09455616E768BA851E89AC462C16E3562610DAE6E4A12A53487C46B5DAF72B</code></pre>
|
||||
<pre><code>g_b = 1D17194A577BFC517552058DFB3DBD68023E2D009E995DBC0A48E0D2690E275CF3E992F534418CFED20AFCE7CE477C04CB33FA73E8DF2C18C3FCE55ABF2D774567DCA3CC5503439DCE15CD72A5E33C3995EE0EF3D1F635C3EB41A09E8DA93A43CC9CFBD38F007F5000BACE33492365A44B6B8B782D9E12E430ECCBA85C524307444911A5241F35DD7D35459479350A7887CC7A7D2EA69DC5AEFDE67AB5880560FB1EBD57DE74FF04B04FD9906E53F474E9A3AAD6FE5C08E43A19FC84AF5E0CE3EF2B61FBB487B1811377453B0F668A9A81EF26F0F951B8061008361AD8F27A5928FDD3427B5C32728F9E3B8B941771EC2D90821632A73FEFCA194886ED6FEAC8</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 48 94 4F 38 A8 CC 74 0A EA 5E D9 B5
|
||||
0010 | FE EE 63 DF 2E D7 F8 E0 A2 C6 3D 14 ED 13 DC CB
|
||||
0020 | 07 9A 9D 52 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 39 67 91 13 51 2A 40 13 CC B3 E4 2E 3F D9 EF F4
|
||||
0040 | 8E AD 1F B3 11 02 CB 20 B7 3D 1F 8A 09 72 1D 11
|
||||
0050 | 76 5F 85 CF 7C F9 4A A8 1F A2 3E 08 2E 80 18 F9
|
||||
0060 | F0 10 72 DD 4D 03 8A 4E 26 51 2A 38 28 E0 1A F9
|
||||
0070 | 9E A1 C7 F7 57 63 CA 34 E4 1E CF 0E 8D 11 FF 0B
|
||||
0080 | 5F FC 00 4C 69 32 5F 54 68 90 43 27 0B 50 B3 B6
|
||||
0090 | 0B 6D 57 EA 18 06 2F F0 3F EE E5 A0 8F D8 97 AC
|
||||
00A0 | EC ED CD EF 5E 13 35 25 92 21 AA F4 57 D4 39 DD
|
||||
00B0 | B1 88 86 2C 9B D5 CE 01 0C 6C 25 BE 31 41 E2 20
|
||||
00C0 | 6D FC 5E 47 69 B8 03 56 14 71 91 FE 5A 3C B6 BF
|
||||
00D0 | 29 D6 43 3A 4A 52 4B 32 6E 51 D0 5C 49 61 A1 85
|
||||
00E0 | 07 DA BB 3E EF B9 30 C8 71 DB 8A B2 8B AE ED 64
|
||||
00F0 | C5 2D 78 02 68 3E 90 F5 01 89 27 BD 62 3C 2B 67
|
||||
0100 | EA 99 C1 B8 C4 EB 36 42 30 E7 59 0C 6D 02 5F 0E
|
||||
0110 | 9E 09 45 56 16 E7 68 BA 85 1E 89 AC 46 2C 16 E3
|
||||
0120 | 56 26 10 DA E6 E4 A1 2A 53 48 7C 46 B5 DA F7 2B</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 F3 37 16 0C 19 9F 9C AA 53 58 53 DB
|
||||
0010 | 57 2E 50 F7 D1 3D 8D A2 85 73 BA 19 6E AE F2 94
|
||||
0020 | 2F 4E 87 3E 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 1D 17 19 4A 57 7B FC 51 75 52 05 8D FB 3D BD 68
|
||||
0040 | 02 3E 2D 00 9E 99 5D BC 0A 48 E0 D2 69 0E 27 5C
|
||||
0050 | F3 E9 92 F5 34 41 8C FE D2 0A FC E7 CE 47 7C 04
|
||||
0060 | CB 33 FA 73 E8 DF 2C 18 C3 FC E5 5A BF 2D 77 45
|
||||
0070 | 67 DC A3 CC 55 03 43 9D CE 15 CD 72 A5 E3 3C 39
|
||||
0080 | 95 EE 0E F3 D1 F6 35 C3 EB 41 A0 9E 8D A9 3A 43
|
||||
0090 | CC 9C FB D3 8F 00 7F 50 00 BA CE 33 49 23 65 A4
|
||||
00A0 | 4B 6B 8B 78 2D 9E 12 E4 30 EC CB A8 5C 52 43 07
|
||||
00B0 | 44 49 11 A5 24 1F 35 DD 7D 35 45 94 79 35 0A 78
|
||||
00C0 | 87 CC 7A 7D 2E A6 9D C5 AE FD E6 7A B5 88 05 60
|
||||
00D0 | FB 1E BD 57 DE 74 FF 04 B0 4F D9 90 6E 53 F4 74
|
||||
00E0 | E9 A3 AA D6 FE 5C 08 E4 3A 19 FC 84 AF 5E 0C E3
|
||||
00F0 | EF 2B 61 FB B4 87 B1 81 13 77 45 3B 0F 66 8A 9A
|
||||
0100 | 81 EF 26 F0 F9 51 B8 06 10 08 36 1A D8 F2 7A 59
|
||||
0110 | 28 FD D3 42 7B 5C 32 72 8F 9E 3B 8B 94 17 71 EC
|
||||
0120 | 2D 90 82 16 32 A7 3F EF CA 19 48 86 ED 6F EA C8</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 = BA0D89B548944F38A8CC740AEA5ED9B5FEEE63DF2ED7F8E0A2C63D14ED13DCCB079A9D5
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>48944F38A8CC740AEA5ED9B5FEEE63DF</code></td>
|
||||
<td><code>F337160C199F9CAA535853DB572E50F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>2ED7F8E0A2C63D14ED13DCCB079A9D52</code></td>
|
||||
<td><code>D13D8DA28573BA196EAEF2942F4E873E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE00010039679113512A4013CCB3E42E</code> <code>3FD9EFF48EAD1FB31102CB20B73D1F8A</code> <code>09721D11765F85CF7CF94AA81FA23E08</code> <code>2E8018F9F01072DD4D038A4E26512A38</code> <code>28E01AF99EA1C7F75763CA34E41ECF0E</code> <code>8D11FF0B5FFC004C69325F5468904327</code> <code>0B50B3B60B6D57EA18062FF03FEEE5A0</code> <code>8FD897ACECEDCDEF5E1335259221AAF4</code> <code>57D439DDB188862C9BD5CE010C6C25BE</code> <code>3141E2206DFC5E4769B80356147191FE</code> <code>5A3CB6BF29D6433A4A524B326E51D05C</code> <code>4961A18507DABB3EEFB930C871DB8AB2</code> <code>8BAEED64C52D7802683E90F5018927BD</code> <code>623C2B67EA99C1B8C4EB364230E7590C</code> <code>6D025F0E9E09455616E768BA851E89AC</code> <code>462C16E3562610DAE6E4A12A53487C46</code><br> <code>B5DAF72B</code></td>
|
||||
<td><code>FE0001001D17194A577BFC517552058D</code> <code>FB3DBD68023E2D009E995DBC0A48E0D2</code> <code>690E275CF3E992F534418CFED20AFCE7</code> <code>CE477C04CB33FA73E8DF2C18C3FCE55A</code> <code>BF2D774567DCA3CC5503439DCE15CD72</code> <code>A5E33C3995EE0EF3D1F635C3EB41A09E</code> <code>8DA93A43CC9CFBD38F007F5000BACE33</code> <code>492365A44B6B8B782D9E12E430ECCBA8</code> <code>5C524307444911A5241F35DD7D354594</code> <code>79350A7887CC7A7D2EA69DC5AEFDE67A</code> <code>B5880560FB1EBD57DE74FF04B04FD990</code> <code>6E53F474E9A3AAD6FE5C08E43A19FC84</code> <code>AF5E0CE3EF2B61FBB487B1811377453B</code> <code>0F668A9A81EF26F0F951B8061008361A</code> <code>D8F27A5928FDD3427B5C32728F9E3B8B</code> <code>941771EC2D90821632A73FEFCA194886</code><br> <code>ED6FEAC8</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 = BA0D89B548944F38A8CC740AEA5ED9B5FEEE63DF2ED7F8E0A2C63D14ED13DCCB079A9D5
|
|||
<!-- 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 = 54B6436648944F38A8CC740AEA5ED9B5FEEE63DF2ED7F8E0A2C63D14ED13DCCB079A9D520000000000000000FE00010039679113512A4013CCB3E42E3FD9EFF48EAD1FB31102CB20B73D1F8A09721D11765F85CF7CF94AA81FA23E082E8018F9F01072DD4D038A4E26512A3828E01AF99EA1C7F75763CA34E41ECF0E8D11FF0B5FFC004C69325F54689043270B50B3B60B6D57EA18062FF03FEEE5A08FD897ACECEDCDEF5E1335259221AAF457D439DDB188862C9BD5CE010C6C25BE3141E2206DFC5E4769B80356147191FE5A3CB6BF29D6433A4A524B326E51D05C4961A18507DABB3EEFB930C871DB8AB28BAEED64C52D7802683E90F5018927BD623C2B67EA99C1B8C4EB364230E7590C6D025F0E9E09455616E768BA851E89AC462C16E3562610DAE6E4A12A53487C46B5DAF72B
|
||||
padding = CE9F80A32B3D107F7388706C
|
||||
tmp_aes_key = A5E7AEE690B167CBD0589EF1B4CE787E419A77BF2274F5AA04236744FE17426B
|
||||
tmp_aes_iv = 7828906EA860A7DE71FF938BBF2DDEF3AE3A6EA9652657ECC37AEA1BB8C00660</code></pre>
|
||||
<pre><code>data = 54B64366F337160C199F9CAA535853DB572E50F7D13D8DA28573BA196EAEF2942F4E873E0000000000000000FE0001001D17194A577BFC517552058DFB3DBD68023E2D009E995DBC0A48E0D2690E275CF3E992F534418CFED20AFCE7CE477C04CB33FA73E8DF2C18C3FCE55ABF2D774567DCA3CC5503439DCE15CD72A5E33C3995EE0EF3D1F635C3EB41A09E8DA93A43CC9CFBD38F007F5000BACE33492365A44B6B8B782D9E12E430ECCBA85C524307444911A5241F35DD7D35459479350A7887CC7A7D2EA69DC5AEFDE67AB5880560FB1EBD57DE74FF04B04FD9906E53F474E9A3AAD6FE5C08E43A19FC84AF5E0CE3EF2B61FBB487B1811377453B0F668A9A81EF26F0F951B8061008361AD8F27A5928FDD3427B5C32728F9E3B8B941771EC2D90821632A73FEFCA194886ED6FEAC8
|
||||
padding = 167395E0F0147E766DCA8022
|
||||
tmp_aes_key = 70BCC211C7FA9B9C4BB4125FB60EE21DA8F45E5271D759DDEECE1108787AEECF
|
||||
tmp_aes_iv = 94C61F4FE781457C93DECE378CA3D1C4FFE334120F063E688F3458670844DDAD</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 = F777A0959856A3AA96F43B79A124200DB8217CA8C2980722D67A8493711CA7F733B64438665CF8FBF406E62F2AA11B600748BCC94BEAAC7222FFB319D44E2983A1C0612D59656853C0EA82468FE51E521C4E18AC3B8FC5F6CBF381EAEA42A157975428D6A0276E47AC27B480C0DC7E4B09F0E83592EDDB6C9865F10A5D7F269A924C75C9D9F92EAC832E88A1B36D2462E93F0031FAA7854DD3913CA1A38692239A07C9B6B78FB784DD48F91995A8C2076B43D0D6186BF495787E30BFEE130F827B6749DB1158DE16C215CB162D1CADE98E54824656E2D6EA0649577165780ADEFA5337086401E7535FFD07BF1641FAE7E09BDD4FD4A4BA2B82FA544152D075014E6F95264ACFDECFD24A71CD1A30F6B8E493D96560D11E6968F486202B7A59E61AD0B4C260A897F0BB9BD2E13AF3D94ED2938E2DE8B4665A92160D9A8DB602C5D8EE48E7AA13FC40A5E8F586025E7BF8</code></pre>
|
||||
<pre><code>encrypted_data = C58C61FBD50E99A2853166591272284EF4F453D137D650CCE2140DAB29790FB0ED86952DA606CDCE2C234274F7CBF4C274041CA6D2DFEF35F368AF84FEC311F7662A3169DFA676462E950E70CD5143D358C0906910F3565530FA8541D607451C379482D19FD94A416638F4ACD4B09E7DD9C4C2E2CE429D4DAB8D020DBC4E7729AA057195C1D6517F6D6D821C9A694A3B02F45DF398E9A628AB841DB3A990FB3AFBF35A2FBF79174583042CA2949114F2E0C401597D7C6BCD73BCEEF767C739B120D874F0FD015771F42248F97FD155E27654673FC21C09B5022BC95934C9CF23A20425B0459AA6C8D5BDCBA3B5FEDAFA1BC6D5A8019F2142E0163D1AA981A5DCD5800FC4D1C3D08C77B13BD5F4B404DAD32A533CA963FAEFA123CA9E3D2A070A06F915C650EF2D86785C88CF56ED472FA57BDBDD8DE688EE8BE9970E92210F4055A7E60E17594BB8BC68A25ACEE33B81</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 FC 2A 01 00 34 B7 92 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 48 94 4F 38 A8 CC 74 0A
|
||||
0020 | EA 5E D9 B5 FE EE 63 DF 2E D7 F8 E0 A2 C6 3D 14
|
||||
0030 | ED 13 DC CB 07 9A 9D 52 FE 50 01 00 F7 77 A0 95
|
||||
0040 | 98 56 A3 AA 96 F4 3B 79 A1 24 20 0D B8 21 7C A8
|
||||
0050 | C2 98 07 22 D6 7A 84 93 71 1C A7 F7 33 B6 44 38
|
||||
0060 | 66 5C F8 FB F4 06 E6 2F 2A A1 1B 60 07 48 BC C9
|
||||
0070 | 4B EA AC 72 22 FF B3 19 D4 4E 29 83 A1 C0 61 2D
|
||||
0080 | 59 65 68 53 C0 EA 82 46 8F E5 1E 52 1C 4E 18 AC
|
||||
0090 | 3B 8F C5 F6 CB F3 81 EA EA 42 A1 57 97 54 28 D6
|
||||
00A0 | A0 27 6E 47 AC 27 B4 80 C0 DC 7E 4B 09 F0 E8 35
|
||||
00B0 | 92 ED DB 6C 98 65 F1 0A 5D 7F 26 9A 92 4C 75 C9
|
||||
00C0 | D9 F9 2E AC 83 2E 88 A1 B3 6D 24 62 E9 3F 00 31
|
||||
00D0 | FA A7 85 4D D3 91 3C A1 A3 86 92 23 9A 07 C9 B6
|
||||
00E0 | B7 8F B7 84 DD 48 F9 19 95 A8 C2 07 6B 43 D0 D6
|
||||
00F0 | 18 6B F4 95 78 7E 30 BF EE 13 0F 82 7B 67 49 DB
|
||||
0100 | 11 58 DE 16 C2 15 CB 16 2D 1C AD E9 8E 54 82 46
|
||||
0110 | 56 E2 D6 EA 06 49 57 71 65 78 0A DE FA 53 37 08
|
||||
0120 | 64 01 E7 53 5F FD 07 BF 16 41 FA E7 E0 9B DD 4F
|
||||
0130 | D4 A4 BA 2B 82 FA 54 41 52 D0 75 01 4E 6F 95 26
|
||||
0140 | 4A CF DE CF D2 4A 71 CD 1A 30 F6 B8 E4 93 D9 65
|
||||
0150 | 60 D1 1E 69 68 F4 86 20 2B 7A 59 E6 1A D0 B4 C2
|
||||
0160 | 60 A8 97 F0 BB 9B D2 E1 3A F3 D9 4E D2 93 8E 2D
|
||||
0170 | E8 B4 66 5A 92 16 0D 9A 8D B6 02 C5 D8 EE 48 E7
|
||||
0180 | AA 13 FC 40 A5 E8 F5 86 02 5E 7B F8</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 70 73 06 00 52 C7 93 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 F3 37 16 0C 19 9F 9C AA
|
||||
0020 | 53 58 53 DB 57 2E 50 F7 D1 3D 8D A2 85 73 BA 19
|
||||
0030 | 6E AE F2 94 2F 4E 87 3E FE 50 01 00 C5 8C 61 FB
|
||||
0040 | D5 0E 99 A2 85 31 66 59 12 72 28 4E F4 F4 53 D1
|
||||
0050 | 37 D6 50 CC E2 14 0D AB 29 79 0F B0 ED 86 95 2D
|
||||
0060 | A6 06 CD CE 2C 23 42 74 F7 CB F4 C2 74 04 1C A6
|
||||
0070 | D2 DF EF 35 F3 68 AF 84 FE C3 11 F7 66 2A 31 69
|
||||
0080 | DF A6 76 46 2E 95 0E 70 CD 51 43 D3 58 C0 90 69
|
||||
0090 | 10 F3 56 55 30 FA 85 41 D6 07 45 1C 37 94 82 D1
|
||||
00A0 | 9F D9 4A 41 66 38 F4 AC D4 B0 9E 7D D9 C4 C2 E2
|
||||
00B0 | CE 42 9D 4D AB 8D 02 0D BC 4E 77 29 AA 05 71 95
|
||||
00C0 | C1 D6 51 7F 6D 6D 82 1C 9A 69 4A 3B 02 F4 5D F3
|
||||
00D0 | 98 E9 A6 28 AB 84 1D B3 A9 90 FB 3A FB F3 5A 2F
|
||||
00E0 | BF 79 17 45 83 04 2C A2 94 91 14 F2 E0 C4 01 59
|
||||
00F0 | 7D 7C 6B CD 73 BC EE F7 67 C7 39 B1 20 D8 74 F0
|
||||
0100 | FD 01 57 71 F4 22 48 F9 7F D1 55 E2 76 54 67 3F
|
||||
0110 | C2 1C 09 B5 02 2B C9 59 34 C9 CF 23 A2 04 25 B0
|
||||
0120 | 45 9A A6 C8 D5 BD CB A3 B5 FE DA FA 1B C6 D5 A8
|
||||
0130 | 01 9F 21 42 E0 16 3D 1A A9 81 A5 DC D5 80 0F C4
|
||||
0140 | D1 C3 D0 8C 77 B1 3B D5 F4 B4 04 DA D3 2A 53 3C
|
||||
0150 | A9 63 FA EF A1 23 CA 9E 3D 2A 07 0A 06 F9 15 C6
|
||||
0160 | 50 EF 2D 86 78 5C 88 CF 56 ED 47 2F A5 7B DB DD
|
||||
0170 | 8D E6 88 EE 8B E9 97 0E 92 21 0F 40 55 A7 E6 0E
|
||||
0180 | 17 59 4B B8 BC 68 A2 5A CE E3 3B 81</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>FC2A010034B79266</code></td>
|
||||
<td><code>7073060052C79366</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>48944F38A8CC740AEA5ED9B5FEEE63DF</code></td>
|
||||
<td><code>F337160C199F9CAA535853DB572E50F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>2ED7F8E0A2C63D14ED13DCCB079A9D52</code></td>
|
||||
<td><code>D13D8DA28573BA196EAEF2942F4E873E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE500100F777A0959856A3AA96F43B79</code> <code>A124200DB8217CA8C2980722D67A8493</code> <code>711CA7F733B64438665CF8FBF406E62F</code> <code>2AA11B600748BCC94BEAAC7222FFB319</code> <code>D44E2983A1C0612D59656853C0EA8246</code> <code>8FE51E521C4E18AC3B8FC5F6CBF381EA</code> <code>EA42A157975428D6A0276E47AC27B480</code> <code>C0DC7E4B09F0E83592EDDB6C9865F10A</code> <code>5D7F269A924C75C9D9F92EAC832E88A1</code> <code>B36D2462E93F0031FAA7854DD3913CA1</code> <code>A38692239A07C9B6B78FB784DD48F919</code> <code>95A8C2076B43D0D6186BF495787E30BF</code> <code>EE130F827B6749DB1158DE16C215CB16</code> <code>2D1CADE98E54824656E2D6EA06495771</code> <code>65780ADEFA5337086401E7535FFD07BF</code> <code>1641FAE7E09BDD4FD4A4BA2B82FA5441</code> <code>52D075014E6F95264ACFDECFD24A71CD</code> <code>1A30F6B8E493D96560D11E6968F48620</code> <code>2B7A59E61AD0B4C260A897F0BB9BD2E1</code> <code>3AF3D94ED2938E2DE8B4665A92160D9A</code> <code>8DB602C5D8EE48E7AA13FC40A5E8F586</code><br> <code>025E7BF8</code></td>
|
||||
<td><code>FE500100C58C61FBD50E99A285316659</code> <code>1272284EF4F453D137D650CCE2140DAB</code> <code>29790FB0ED86952DA606CDCE2C234274</code> <code>F7CBF4C274041CA6D2DFEF35F368AF84</code> <code>FEC311F7662A3169DFA676462E950E70</code> <code>CD5143D358C0906910F3565530FA8541</code> <code>D607451C379482D19FD94A416638F4AC</code> <code>D4B09E7DD9C4C2E2CE429D4DAB8D020D</code> <code>BC4E7729AA057195C1D6517F6D6D821C</code> <code>9A694A3B02F45DF398E9A628AB841DB3</code> <code>A990FB3AFBF35A2FBF79174583042CA2</code> <code>949114F2E0C401597D7C6BCD73BCEEF7</code> <code>67C739B120D874F0FD015771F42248F9</code> <code>7FD155E27654673FC21C09B5022BC959</code> <code>34C9CF23A20425B0459AA6C8D5BDCBA3</code> <code>B5FEDAFA1BC6D5A8019F2142E0163D1A</code> <code>A981A5DCD5800FC4D1C3D08C77B13BD5</code> <code>F4B404DAD32A533CA963FAEFA123CA9E</code> <code>3D2A070A06F915C650EF2D86785C88CF</code> <code>56ED472FA57BDBDD8DE688EE8BE9970E</code> <code>92210F4055A7E60E17594BB8BC68A25A</code><br> <code>CEE33B81</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 = 87C49174C3DE070B9CC8DECD2AA3A29E37A5D5662213D765D4224B9223533E73735CF75DFBEA585F01842EA294A949A3997639344C20A4C7CD963A1F1EA33B44D1798A0F07B2E07A030A3214DD9843C71CAE22E4980045D8AF62EE55E19535B2BFE990F31026A1BF00E54438BAFDDC57AAB531643DE47CC16EBB9D053A5095C1C34FC90D0E0559E84B8E432F1E482476034AB1C727A6738D97B6FE9CA60CD7498269642266E625F83AD711E61D27576EF7C38D88305C036E0A27424D74F523A3BA7A873D0C27B8514B4DFAA2FBEF39B9BCABA890AE08C6C37EDEFBA65D12537406B58352FBFAC27F0335D9C4C7D027A3A80FECBA8CB369C32FD9EA991217D44C</code></pre>
|
||||
<pre><code>auth_key = 03776F250AF75EC0D9091AA5380C7DA3B66DC03ED85F2C7D546DF4425BF89E7608D5774B6C99B3F0AC8CC8CAAE3C30B3B045281D1F9C952BCB1293284D62379DF9F5AE78886CD942585148412A55FE50FA7161FC0D5833D6BC9F1FDFE97BFD70EFCFE745DF0698531FDD715D97A99CC8023EBE3EFC80C7EB62AB8ECE0587626E4BAF03CDD88BC8261BDAA5C31F1618EA7AB035AA9F110C4314E6DFDA8E810BB744422B5BAB27949E9FEB4B3F5DCB7D1E14F5216C7A5E38D1444F051C9ADFFCDBEC3792328BEF0255C35508BF3CF78442BE08E29B0D483E7BE1C94A5088DC72AF93BA7CA9E128E64FF4B6062762FCBD82CC50F70A18BAD44CB85443A03DAF7786</code></pre>
|
||||
<!-- end auth_key -->
|
||||
<h5><a class="anchor" href="#9-final-server-reply" id="9-final-server-reply" name="9-final-server-reply"><i class="anchor-icon"></i></a>9) Final server reply</h5>
|
||||
<p>The server verifies and confirms that auth_key_hash is unique: since it's unique, it replies with the following:</p>
|
||||
<!-- start dh_gen_ok -->
|
||||
<p>Received payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 20 E4 3A 35 B7 92 66
|
||||
0010 | 48 00 00 00 34 F7 CB 3B 48 94 4F 38 A8 CC 74 0A
|
||||
0020 | EA 5E D9 B5 FE EE 63 DF 2E D7 F8 E0 A2 C6 3D 14
|
||||
0030 | ED 13 DC CB 07 9A 9D 52 B8 CC 3D 23 EB 0F 21 E9
|
||||
0040 | E3 D1 7B 79 56 2E 41 EC</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 6C 26 34 53 C7 93 66
|
||||
0010 | 68 00 00 00 34 F7 CB 3B F3 37 16 0C 19 9F 9C AA
|
||||
0020 | 53 58 53 DB 57 2E 50 F7 D1 3D 8D A2 85 73 BA 19
|
||||
0030 | 6E AE F2 94 2F 4E 87 3E 26 6B FE 27 48 AE 2D DC
|
||||
0040 | 9E BD 4B 3F C9 DF 3D 48</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>0120E43A35B79266</code></td>
|
||||
<td><code>016C263453C79366</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>48000000</code> (72 in decimal)</td>
|
||||
<td><code>68000000</code> (104 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>48944F38A8CC740AEA5ED9B5FEEE63DF</code></td>
|
||||
<td><code>F337160C199F9CAA535853DB572E50F7</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>2ED7F8E0A2C63D14ED13DCCB079A9D52</code></td>
|
||||
<td><code>D13D8DA28573BA196EAEF2942F4E873E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>B8CC3D23EB0F21E9E3D17B79562E41EC</code></td>
|
||||
<td><code>266BFE2748AE2DDC9EBD4B3FC9DF3D48</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