Update content of files

This commit is contained in:
GitHub Action 2023-12-12 19:28:55 +00:00
parent c1ebe4ae1e
commit ca4de99d93
5 changed files with 232 additions and 239 deletions

View file

@ -50,12 +50,12 @@
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/channels.toggleViewForumAsMessages">channels.toggleViewForumAsMessages</a> - </li>
<li>Added <a href="/method/messages.searchEmojiStickerSets">messages.searchEmojiStickerSets</a> - </li>
<li>Added <a href="/method/messages.searchEmojiStickerSets">messages.searchEmojiStickerSets</a> - Search for <a href="/api/custom-emoji">custom emoji stickersets »</a></li>
<li>Added <a href="/method/channels.getChannelRecommendations">channels.getChannelRecommendations</a> - </li>
<li>Added <a href="/method/stats.getStoryStats">stats.getStoryStats</a> - </li>
<li>Added <a href="/method/stats.getStoryPublicForwards">stats.getStoryPublicForwards</a> - </li>
<li>Added <a href="/method/help.getPeerColors">help.getPeerColors</a> - Get the set of <a href="/api/colors">accent color palettes »</a> that can be used for messages</li>
<li>Added <a href="/method/help.getPeerProfileColors">help.getPeerProfileColors</a> - Get the set of <a href="/api/colors">accent color palettes »</a> that can be used for profiles</li>
<li>Added <a href="/method/help.getPeerColors">help.getPeerColors</a> - Get the set of <a href="/api/colors">accent color palettes »</a> that can be used for message accents.</li>
<li>Added <a href="/method/help.getPeerProfileColors">help.getPeerProfileColors</a> - Get the set of <a href="/api/colors">accent color palettes »</a> that can be used in profile page backgrounds.</li>
</ul>
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
<ul>
@ -76,11 +76,11 @@
<li>Added <a href="/constructor/publicForwardStory">publicForwardStory</a> - </li>
<li>Added <a href="/constructor/stats.publicForwards">stats.publicForwards</a> - </li>
<li>Added <a href="/constructor/peerColor">peerColor</a> - </li>
<li>Added <a href="/constructor/help.peerColorSet">help.peerColorSet</a> - </li>
<li>Added <a href="/constructor/help.peerColorProfileSet">help.peerColorProfileSet</a> - </li>
<li>Added <a href="/constructor/help.peerColorOption">help.peerColorOption</a> - </li>
<li>Added <a href="/constructor/help.peerColorsNotModified">help.peerColorsNotModified</a> - </li>
<li>Added <a href="/constructor/help.peerColors">help.peerColors</a> - </li>
<li>Added <a href="/constructor/help.peerColorSet">help.peerColorSet</a> - Represents a <a href="/api/colors">color palette that can be used in message accents »</a>.</li>
<li>Added <a href="/constructor/help.peerColorProfileSet">help.peerColorProfileSet</a> - Represents a <a href="/api/colors">color palette that can be used in profile pages »</a>.</li>
<li>Added <a href="/constructor/help.peerColorOption">help.peerColorOption</a> - Contains info about a <a href="/api/colors">color palette »</a>.</li>
<li>Added <a href="/constructor/help.peerColorsNotModified">help.peerColorsNotModified</a> - The list of color palettes has not changed.</li>
<li>Added <a href="/constructor/help.peerColors">help.peerColors</a> - Contains info about multiple <a href="/api/colors">color palettes »</a>.</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>

View file

@ -255,8 +255,10 @@ Use <a href="/method/stickers.removeStickerFromSet">stickers.removeStickerFromSe
---functions---
<a href='/method/messages.searchStickerSets'>messages.searchStickerSets</a>#35705b8a flags:<a href='/type/%23'>#</a> exclude_featured:flags.0?<a href='/constructor/true'>true</a> q:<a href='/type/string'>string</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.FoundStickerSets'>messages.FoundStickerSets</a>;</code></pre>
<p>You can use <a href="/method/messages.searchStickerSets">messages.searchStickerSets</a> to search globally available stickersets by name: note that this method returns a set of <a href="#stickerset-previews">stickerset previews »</a>.</p>
<a href='/method/messages.searchStickerSets'>messages.searchStickerSets</a>#35705b8a flags:<a href='/type/%23'>#</a> exclude_featured:flags.0?<a href='/constructor/true'>true</a> q:<a href='/type/string'>string</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.FoundStickerSets'>messages.FoundStickerSets</a>;
<a href='/method/messages.searchEmojiStickerSets'>messages.searchEmojiStickerSets</a>#92b4494c flags:<a href='/type/%23'>#</a> exclude_featured:flags.0?<a href='/constructor/true'>true</a> q:<a href='/type/string'>string</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.FoundStickerSets'>messages.FoundStickerSets</a>;</code></pre>
<p>You can use <a href="/method/messages.searchStickerSets">messages.searchStickerSets</a> and <a href="/method/messages.searchEmojiStickerSets">messages.searchEmojiStickerSets</a> to search globally available normal stickersets and <a href="/api/custom-emoji">custom emoji stickersets »</a> by name: note that this method returns a set of <a href="#stickerset-previews">stickerset previews »</a>.</p>
<h3><a class="anchor" href="#featured-stickersets" id="featured-stickersets" name="featured-stickersets"><i class="anchor-icon"></i></a>Featured stickersets</h3>
<pre><code><a href='/constructor/messages.featuredStickersNotModified'>messages.featuredStickersNotModified</a>#c6dc0c66 count:<a href='/type/int'>int</a> = <a href='/type/messages.FeaturedStickers'>messages.FeaturedStickers</a>;
<a href='/constructor/messages.featuredStickers'>messages.featuredStickers</a>#be382906 flags:<a href='/type/%23'>#</a> premium:flags.0?<a href='/constructor/true'>true</a> hash:<a href='/type/long'>long</a> count:<a href='/type/int'>int</a> sets:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/StickerSetCovered'>StickerSetCovered</a>&gt; unread:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt; = <a href='/type/messages.FeaturedStickers'>messages.FeaturedStickers</a>;

View file

@ -3036,7 +3036,7 @@ Look for updates of telegram&#39;s terms of service…">
</tr>
<tr>
<td><a href="/method/messages.searchEmojiStickerSets">messages.searchEmojiStickerSets</a></td>
<td> </td>
<td>Search for <a href="/api/custom-emoji">custom emoji stickersets »</a></td>
</tr>
<tr>
<td><a href="/method/channels.getChannelRecommendations">channels.getChannelRecommendations</a></td>
@ -3052,11 +3052,11 @@ Look for updates of telegram&#39;s terms of service…">
</tr>
<tr>
<td><a href="/method/help.getPeerColors">help.getPeerColors</a></td>
<td>Get the set of <a href="/api/colors">accent color palettes »</a> that can be used for messages</td>
<td>Get the set of <a href="/api/colors">accent color palettes »</a> that can be used for message accents.</td>
</tr>
<tr>
<td><a href="/method/help.getPeerProfileColors">help.getPeerProfileColors</a></td>
<td>Get the set of <a href="/api/colors">accent color palettes »</a> that can be used for profiles</td>
<td>Get the set of <a href="/api/colors">accent color palettes »</a> that can be used in profile page backgrounds.</td>
</tr>
</tbody>
</table></div>

View file

@ -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 D4 4F 0D 00 E1 5A 77 65
0010 | 14 00 00 00 F1 8E 7E BE 83 FE 4F A7 D6 AD 1B 8A
0020 | C7 63 8A 36 AD AB 7A 9A</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 94 F5 00 00 AF B3 78 65
0010 | 14 00 00 00 F1 8E 7E BE 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80</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>D44F0D00E15A7765</code></td>
<td><code>94F50000AFB37865</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -95,7 +95,7 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>83FE4FA7D6AD1B8AC7638A36ADAB7A9A</code></td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</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 48 2B A5 E1 5A 77 65
0010 | 50 00 00 00 63 24 16 05 83 FE 4F A7 D6 AD 1B 8A
0020 | C7 63 8A 36 AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A
0030 | 23 E8 D1 8C 4D 3B 8A B7 08 20 CF 44 AD 25 51 F1
0040 | A5 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 94 C9 42 AF B3 78 65
0010 | 74 00 00 00 63 24 16 05 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80 1E C0 DE B4 07 3E F9 1C
0030 | BA A6 BE D7 12 3C 95 B0 08 19 80 F4 E6 79 52 AB
0040 | 69 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>01482BA5E15A7765</code></td>
<td><code>0194C942AFB37865</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>50000000</code> (80 in decimal)</td>
<td><code>74000000</code> (116 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>83FE4FA7D6AD1B8AC7638A36ADAB7A9A</code></td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>65D66D4E1CC2165A23E8D18C4D3B8AB7</code></td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0820CF44AD2551F1A5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2364183839838957989</td>
<td><code>081980F4E67952AB69000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1837737918682278761</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 &lt; q.</h5>
<!-- start pq -->
<pre><code>pq = 2364183839838957989</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2364183839838957989 = 1537378891 * 1537801679</code></p>
<pre><code>p = 1537378891
q = 1537801679</code></pre>
<pre><code>pq = 1837737918682278761</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1837737918682278761 = 1032884053 * 1779229637</code></p>
<pre><code>p = 1032884053
q = 1779229637</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 20 CF 44 AD 25 51 F1 A5 00 00 00
0010 | 04 5B A2 8A 4B 00 00 00 04 5B A8 FD CF 00 00 00
0020 | 83 FE 4F A7 D6 AD 1B 8A C7 63 8A 36 AD AB 7A 9A
0030 | 65 D6 6D 4E 1C C2 16 5A 23 E8 D1 8C 4D 3B 8A B7
0040 | 31 44 7E EA FB 1F D5 B6 FF 81 2A 79 EA 09 64 82
0050 | C4 D8 2B 69 5B 78 4E 95 AE 15 F1 FD 4D 3B 3B 27
<pre><code>0000 | 95 5F F5 A9 08 19 80 F4 E6 79 52 AB 69 00 00 00
0010 | 04 3D 90 8F 55 00 00 00 04 6A 0C E3 C5 00 00 00
0020 | 6F E8 1D BD DA C6 62 6F C1 8E 41 56 90 E0 76 80
0030 | 1E C0 DE B4 07 3E F9 1C BA A6 BE D7 12 3C 95 B0
0040 | 2D E6 3E 15 D1 29 45 59 42 4C ED 43 14 2B 66 52
0050 | 8A 0B 31 E7 AC 60 1B 3E 87 91 A3 DE 7B 5F 05 3C
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 = 1537801679</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0820CF44AD2551F1A5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2364183839838957989</td>
<td><code>081980F4E67952AB69000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1837737918682278761</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>045BA28A4B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1537378891</td>
<td><code>043D908F55000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1032884053</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>045BA8FDCF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1537801679</td>
<td><code>046A0CE3C5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1779229637</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>83FE4FA7D6AD1B8AC7638A36ADAB7A9A</code></td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>65D66D4E1CC2165A23E8D18C4D3B8AB7</code></td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>31447EEAFB1FD5B6FF812A79EA096482</code> <code>C4D82B695B784E95AE15F1FD4D3B3B27</code></td>
<td><code>2DE63E15D1294559424CED43142B6652</code> <code>8A0B31E7AC601B3E8791A3DE7B5F053C</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1537801679</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 = 955FF5A90820CF44AD2551F1A5000000045BA28A4B000000045BA8FDCF00000083FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB731447EEAFB1FD5B6FF812A79EA096482C4D82B695B784E95AE15F1FD4D3B3B2702000000
random_padding_bytes = 5C1FC0512F2CBE5890F34A0389768EC59F8D369EA3FB98795CF7624BBF2ADC6CF0758829E4F76B167D4EAEF4495D095CE9E3819F7ACB4E02326B1CD2FE68A23F853CD6B5464497B80CEC4373ABBA570278A4D86EA92C49BC65975D55</code></pre>
<pre><code>data = 955FF5A9081980F4E67952AB69000000043D908F55000000046A0CE3C50000006FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B02DE63E15D1294559424CED43142B66528A0B31E7AC601B3E8791A3DE7B5F053C02000000
random_padding_bytes = B657CB82804DE75AEBD3D3BCFF6B12CBDA7216E22A5FA24054A83A5177AEF303B01AFF5E44E0F266EA451BF7595653269547A0372282D3EF875E45AED3BE1C766C678796388FC4E2D5654972A2265EAC8391A698F7025352C5BC6483</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 = 45EF3882B8D866441F9099FDC19285855319042329013E110DCF0C325DE077A434D7D49F0CE10453D313CD034D26E7B1531DBE1B266578B1EB39993C9F4F4A41120C2FC41C78961AD6D35315F51E1FAC62836E08B3422D8CC5179DF4947B6E66F9F6F6836A985CE87D2C27FEEF33B4101281BEB2E9E45EBC026F4EFF3A47EC2EE2AF310D63579575C85D24A0CBE8B95D1AA03DA954C319B8A369FA8D4C057875C87317C016D43A4F6F4B631B15900D6AE7A8138712B4234694C18B8F4CA381D6E123262DBE51793B81771F70B74983F1FEDD5A57296EA575C78B08026E116CC32B5F1A7E3F6C44E03F342689682386B6E61D2A9DEAA5BC5E8C074EE3450D8847</code></pre>
<pre><code>encrypted_data = 048799C4AC7595856CB043A3092E3C12C18C247102D9C4DAF1521D5FB4FC4D20ABA04F6F18F5E1A792725CB48D2043AFAE55B14948FA4BE7DBFFFCBBDC43125A9870EA64682665D24405C5EFECA3B123F4992D81FE86D1289E83FE73FADD0D6811C7FD6D5BB4F9D190DD4512401B1CB73F119466CBFF0B0D981DAA103535244C3EB9A28962337E589E2F283E6C0D493727E38EEF747D22378A56EA8DD60FFF878BBA199907F8C9DD142BD0D8F505F35EED5EDB261EC311CA14BE8F5038AECEB7038E63FE083547BC24528A31661AC0BE81364541562B8D5BB73382CB192783BF8B8DC3AE1152CA22E0CE846D76AD3CA45934EF735738A8DE40865891E739E34B</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 D8 4F 0D 00 E1 5A 77 65
0010 | 40 01 00 00 BE E4 12 D7 83 FE 4F A7 D6 AD 1B 8A
0020 | C7 63 8A 36 AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A
0030 | 23 E8 D1 8C 4D 3B 8A B7 04 5B A2 8A 4B 00 00 00
0040 | 04 5B A8 FD CF 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 45 EF 38 82 B8 D8 66 44 1F 90 99 FD
0060 | C1 92 85 85 53 19 04 23 29 01 3E 11 0D CF 0C 32
0070 | 5D E0 77 A4 34 D7 D4 9F 0C E1 04 53 D3 13 CD 03
0080 | 4D 26 E7 B1 53 1D BE 1B 26 65 78 B1 EB 39 99 3C
0090 | 9F 4F 4A 41 12 0C 2F C4 1C 78 96 1A D6 D3 53 15
00A0 | F5 1E 1F AC 62 83 6E 08 B3 42 2D 8C C5 17 9D F4
00B0 | 94 7B 6E 66 F9 F6 F6 83 6A 98 5C E8 7D 2C 27 FE
00C0 | EF 33 B4 10 12 81 BE B2 E9 E4 5E BC 02 6F 4E FF
00D0 | 3A 47 EC 2E E2 AF 31 0D 63 57 95 75 C8 5D 24 A0
00E0 | CB E8 B9 5D 1A A0 3D A9 54 C3 19 B8 A3 69 FA 8D
00F0 | 4C 05 78 75 C8 73 17 C0 16 D4 3A 4F 6F 4B 63 1B
0100 | 15 90 0D 6A E7 A8 13 87 12 B4 23 46 94 C1 8B 8F
0110 | 4C A3 81 D6 E1 23 26 2D BE 51 79 3B 81 77 1F 70
0120 | B7 49 83 F1 FE DD 5A 57 29 6E A5 75 C7 8B 08 02
0130 | 6E 11 6C C3 2B 5F 1A 7E 3F 6C 44 E0 3F 34 26 89
0140 | 68 23 86 B6 E6 1D 2A 9D EA A5 BC 5E 8C 07 4E E3
0150 | 45 0D 88 47</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 4C 07 09 00 AF B3 78 65
0010 | 40 01 00 00 BE E4 12 D7 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80 1E C0 DE B4 07 3E F9 1C
0030 | BA A6 BE D7 12 3C 95 B0 04 3D 90 8F 55 00 00 00
0040 | 04 6A 0C E3 C5 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 04 87 99 C4 AC 75 95 85 6C B0 43 A3
0060 | 09 2E 3C 12 C1 8C 24 71 02 D9 C4 DA F1 52 1D 5F
0070 | B4 FC 4D 20 AB A0 4F 6F 18 F5 E1 A7 92 72 5C B4
0080 | 8D 20 43 AF AE 55 B1 49 48 FA 4B E7 DB FF FC BB
0090 | DC 43 12 5A 98 70 EA 64 68 26 65 D2 44 05 C5 EF
00A0 | EC A3 B1 23 F4 99 2D 81 FE 86 D1 28 9E 83 FE 73
00B0 | FA DD 0D 68 11 C7 FD 6D 5B B4 F9 D1 90 DD 45 12
00C0 | 40 1B 1C B7 3F 11 94 66 CB FF 0B 0D 98 1D AA 10
00D0 | 35 35 24 4C 3E B9 A2 89 62 33 7E 58 9E 2F 28 3E
00E0 | 6C 0D 49 37 27 E3 8E EF 74 7D 22 37 8A 56 EA 8D
00F0 | D6 0F FF 87 8B BA 19 99 07 F8 C9 DD 14 2B D0 D8
0100 | F5 05 F3 5E ED 5E DB 26 1E C3 11 CA 14 BE 8F 50
0110 | 38 AE CE B7 03 8E 63 FE 08 35 47 BC 24 52 8A 31
0120 | 66 1A C0 BE 81 36 45 41 56 2B 8D 5B B7 33 82 CB
0130 | 19 27 83 BF 8B 8D C3 AE 11 52 CA 22 E0 CE 84 6D
0140 | 76 AD 3C A4 59 34 EF 73 57 38 A8 DE 40 86 58 91
0150 | E7 39 E3 4B</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 = 5C1FC0512F2CBE5890F34A0389768EC59F8D369EA3FB98795CF7624BB
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>D84F0D00E15A7765</code></td>
<td><code>4C070900AFB37865</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -363,25 +363,25 @@ random_padding_bytes = 5C1FC0512F2CBE5890F34A0389768EC59F8D369EA3FB98795CF7624BB
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>83FE4FA7D6AD1B8AC7638A36ADAB7A9A</code></td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>65D66D4E1CC2165A23E8D18C4D3B8AB7</code></td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>045BA28A4B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1537378891</td>
<td><code>043D908F55000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1032884053</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>045BA8FDCF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1537801679</td>
<td><code>046A0CE3C5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1779229637</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 = 5C1FC0512F2CBE5890F34A0389768EC59F8D369EA3FB98795CF7624BB
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE00010045EF3882B8D866441F9099FD</code> <code>C19285855319042329013E110DCF0C32</code> <code>5DE077A434D7D49F0CE10453D313CD03</code> <code>4D26E7B1531DBE1B266578B1EB39993C</code> <code>9F4F4A41120C2FC41C78961AD6D35315</code> <code>F51E1FAC62836E08B3422D8CC5179DF4</code> <code>947B6E66F9F6F6836A985CE87D2C27FE</code> <code>EF33B4101281BEB2E9E45EBC026F4EFF</code> <code>3A47EC2EE2AF310D63579575C85D24A0</code> <code>CBE8B95D1AA03DA954C319B8A369FA8D</code> <code>4C057875C87317C016D43A4F6F4B631B</code> <code>15900D6AE7A8138712B4234694C18B8F</code> <code>4CA381D6E123262DBE51793B81771F70</code> <code>B74983F1FEDD5A57296EA575C78B0802</code> <code>6E116CC32B5F1A7E3F6C44E03F342689</code> <code>682386B6E61D2A9DEAA5BC5E8C074EE3</code><br> <code>450D8847</code></td>
<td><code>FE000100048799C4AC7595856CB043A3</code> <code>092E3C12C18C247102D9C4DAF1521D5F</code> <code>B4FC4D20ABA04F6F18F5E1A792725CB4</code> <code>8D2043AFAE55B14948FA4BE7DBFFFCBB</code> <code>DC43125A9870EA64682665D24405C5EF</code> <code>ECA3B123F4992D81FE86D1289E83FE73</code> <code>FADD0D6811C7FD6D5BB4F9D190DD4512</code> <code>401B1CB73F119466CBFF0B0D981DAA10</code> <code>3535244C3EB9A28962337E589E2F283E</code> <code>6C0D493727E38EEF747D22378A56EA8D</code> <code>D60FFF878BBA199907F8C9DD142BD0D8</code> <code>F505F35EED5EDB261EC311CA14BE8F50</code> <code>38AECEB7038E63FE083547BC24528A31</code> <code>661AC0BE81364541562B8D5BB73382CB</code> <code>192783BF8B8DC3AE1152CA22E0CE846D</code> <code>76AD3CA45934EF735738A8DE40865891</code><br> <code>E739E34B</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 5C1FC0512F2CBE5890F34A0389768EC59F8D369EA3FB98795CF7624BB
<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 08 20 3C E2 5A 77 65
0010 | 7C 02 00 00 5C 07 E8 D0 83 FE 4F A7 D6 AD 1B 8A
0020 | C7 63 8A 36 AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A
0030 | 23 E8 D1 8C 4D 3B 8A B7 FE 50 02 00 1B 41 8E 98
0040 | EC D0 FD 3F D2 EF 59 07 95 5A 6B A0 9F EE BE BD
0050 | 4D 57 93 DB 90 D1 81 71 0B FD 5A 3A E1 22 7C D4
0060 | 68 DF 74 2E C1 C8 52 57 B5 6F 50 36 4F FE E2 EF
0070 | F1 50 F7 8A EE 2B 71 FC AD 2F CB 68 4A 8C D3 88
0080 | 71 44 A1 E4 26 D8 86 A0 31 42 D2 88 69 FA 5B 5E
0090 | 01 C8 98 49 43 75 AB 2B 68 55 71 A7 5D 98 81 AA
00A0 | 39 5B C9 89 E7 CF 09 AF FE E9 B5 EA E4 2A 9C C1
00B0 | DF 8C 15 FD C3 70 85 9E FA CF 1D 86 3A EA DD A1
00C0 | A0 F8 3A C2 94 2B EB 91 57 A4 9A 70 69 2B 28 4E
00D0 | 4B 45 B8 BF 7B 3B B4 09 58 88 C6 A1 7A 11 04 B7
00E0 | 72 43 91 10 A0 FB B5 5F 89 47 A6 6A 1A B2 30 E8
00F0 | F2 52 51 41 62 0F E3 5D AC 0A 4F 21 16 F0 0B 11
0100 | CF 1F DF 9D 2A C1 74 3F E6 BF 55 66 F9 0B 7D C4
0110 | 86 95 BE EF 87 60 C4 E6 9E 4B AD D2 F6 B9 FA ED
0120 | 26 51 92 F2 92 56 BB BA 9B D2 AA 52 72 1C 76 0D
0130 | BA 91 7B C1 DC 33 BF 7C FD 2B C0 EE 0B 9E 78 9B
0140 | DB 96 DA 36 62 00 D7 27 96 80 7A FF CE 87 09 12
0150 | 1E A4 60 AD 44 CD 21 20 2A 84 34 7B B8 F9 D5 81
0160 | DA 1D A0 03 1B AB 51 23 8B 17 3A 66 0D DF 1A 25
0170 | DB 4C D5 1C 6F 77 2E 59 8D E6 B6 27 EB FE 69 32
0180 | 1C B8 BC 00 09 B4 87 A0 6C 0C 18 0B 5C 82 32 B9
0190 | 16 B5 17 AA 63 6A 1F 14 53 14 E4 F8 39 84 47 08
01A0 | E6 11 43 62 BD FC 4B D3 22 6F 21 B5 9C AA 01 AC
01B0 | FE 2D 76 03 71 96 BC F5 E2 94 DC D6 4E 80 90 A1
01C0 | 2D D6 8F 6E 23 A1 04 79 0D F8 0D EA 65 31 3A 15
01D0 | 6F 45 C3 18 49 0F 5F EF 40 74 B8 E0 4B 0B C3 C5
01E0 | F9 FB FF 6A 0B F4 BC 6E 7C 81 86 EF C3 E3 31 AB
01F0 | 3C 3F 29 4D F2 6D 91 A4 00 57 74 A5 E2 DB E4 49
0200 | 75 A2 7F 9E 23 F1 24 71 FE DF DF A5 75 89 3C B4
0210 | 26 31 71 F6 B3 DE 8E 6D C7 C8 BE 0D 93 6B 2E 21
0220 | 2E 79 EA 90 8A EC 26 B6 B9 88 12 5B 47 63 07 DE
0230 | 4C B5 50 19 24 11 2E 49 B0 42 35 F3 87 34 CD FF
0240 | B5 11 D3 D8 B0 C7 CA 21 A7 89 BC 86 D4 37 77 BF
0250 | 20 5E B8 82 95 1C 4E 5C 82 20 E6 62 1F CA 6E 1A
0260 | BF 02 7B B9 C3 DF 35 6A 78 50 16 E4 A9 F4 C9 C5
0270 | 42 2E 08 81 EF F3 DC F6 16 78 5E EE E5 E8 F3 6E
0280 | 8A C8 3A D6 1A 51 35 22 9F C0 66 A7</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 78 8A F2 AF B3 78 65
0010 | D8 02 00 00 5C 07 E8 D0 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80 1E C0 DE B4 07 3E F9 1C
0030 | BA A6 BE D7 12 3C 95 B0 FE 50 02 00 AA CF 4C 3F
0040 | BA 8B 3B 0E C4 EC 9A FE 87 F2 D0 A1 83 1E 1B 41
0050 | 29 C8 F3 8B 2A DF 9C 50 65 6E 93 01 54 86 F3 34
0060 | 35 5A 9F 26 F6 B3 DB 8C 3E F2 75 45 F6 3C 28 63
0070 | D3 12 6D 1E 2F 1C 85 7E C9 5C B7 CC 50 08 74 86
0080 | EB 6D D1 84 0C 10 E7 F3 B7 28 D2 E6 2D FB F0 98
0090 | E2 1B E6 F4 43 80 DD 22 04 3F 7C C3 24 2B AC 89
00A0 | 11 F3 EC 48 DC CC 34 FD 21 45 B3 C9 9B 12 50 67
00B0 | CF DB 36 EA 4B F8 C1 AD 3D 50 C8 35 5A B7 9F D7
00C0 | 38 E9 0B 98 F7 A0 22 2C 4D 38 C7 5E 77 46 0B DD
00D0 | 99 7F E7 D4 7A 5B 33 01 A3 23 98 49 A9 53 51 14
00E0 | 70 DF D2 70 E8 1B 7A D4 03 47 7D 2D 5C 4F ED 8C
00F0 | 66 B0 0A 69 A7 F3 BD 64 5F 61 40 FF 89 7D 40 03
0100 | 7E 0C 9D 14 D5 93 91 05 33 E5 24 5D 4F 36 EB D8
0110 | E4 04 23 87 43 A9 A0 15 E9 F6 AA 39 AD 6E 4B A7
0120 | F6 54 1F CA 4D 17 77 BB F5 94 3C 75 93 03 3C BB
0130 | 68 5E 5F 1C DF 23 53 25 C7 E3 64 D9 51 1C C8 54
0140 | 58 39 F3 7E F0 D6 F3 33 A1 9D DC 28 71 60 B7 6D
0150 | 1B 30 7A 3B 85 C3 4B 4D 1F 0E 2D 57 46 80 8F C8
0160 | D2 6B A3 90 5B A5 43 56 26 E1 38 FB 06 7C D5 50
0170 | 7D 6F D4 39 5E D0 41 9C 8B 5B 34 CD 53 85 DA 6C
0180 | C6 0A 35 09 3D 47 F3 59 16 03 33 A5 25 91 1E 52
0190 | F3 3F DA 10 08 5A B2 81 1C 67 47 C5 AD 5A 47 59
01A0 | 32 D8 A1 E6 0B 10 46 7D 35 59 00 B5 31 5D 68 00
01B0 | 3E 0A FE FE 0F E7 BC B3 22 D7 CF 70 F8 3A 60 2F
01C0 | 48 12 1F 91 69 B9 CF EE 93 A7 67 C6 7B B2 7F 8F
01D0 | AE 17 D9 1C 81 3E E1 46 1A D1 04 F3 48 4F DA D8
01E0 | 13 DF D5 E4 1B 98 8B 64 0F 3F 33 C1 89 AA B1 C3
01F0 | C1 61 71 9B 9B 33 72 23 D8 86 46 BF 1C 4E 2E A4
0200 | B5 EF ED DA 96 63 24 DB E1 C4 D6 11 DF 29 38 80
0210 | 76 CC 3B C3 C6 2F E6 DE A7 EF 00 83 81 BF 8B B1
0220 | E4 AB 43 BB 73 9B FC 69 D6 A0 77 A2 56 27 96 8C
0230 | CC 6E 7F 38 09 57 94 CF 88 36 3A 65 C5 9E 94 AB
0240 | D8 AE 77 7C 1F 36 F3 9B 25 21 01 EE 37 03 62 EF
0250 | CB A2 F6 DB FF F7 C6 5E D7 5B 0E A1 A2 DB 3B 64
0260 | 06 9F 77 60 E8 45 44 1F 54 11 9C 1B 27 22 9F 63
0270 | B5 CB F8 6B B5 92 61 06 70 56 84 3A CF EE 21 A1
0280 | 24 74 E5 3C 6E 0E 08 2A 59 BB AA F2</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 = 5C1FC0512F2CBE5890F34A0389768EC59F8D369EA3FB98795CF7624BB
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>0108203CE25A7765</code></td>
<td><code>01788AF2AFB37865</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>7C020000</code> (636 in decimal)</td>
<td><code>D8020000</code> (728 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 5C1FC0512F2CBE5890F34A0389768EC59F8D369EA3FB98795CF7624BB
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>83FE4FA7D6AD1B8AC7638A36ADAB7A9A</code></td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>65D66D4E1CC2165A23E8D18C4D3B8AB7</code></td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002001B418E98ECD0FD3FD2EF5907</code> <code>955A6BA09FEEBEBD4D5793DB90D18171</code> <code>0BFD5A3AE1227CD468DF742EC1C85257</code> <code>B56F50364FFEE2EFF150F78AEE2B71FC</code> <code>AD2FCB684A8CD3887144A1E426D886A0</code> <code>3142D28869FA5B5E01C898494375AB2B</code> <code>685571A75D9881AA395BC989E7CF09AF</code> <code>FEE9B5EAE42A9CC1DF8C15FDC370859E</code> <code>FACF1D863AEADDA1A0F83AC2942BEB91</code> <code>57A49A70692B284E4B45B8BF7B3BB409</code> <code>5888C6A17A1104B772439110A0FBB55F</code> <code>8947A66A1AB230E8F2525141620FE35D</code> <code>AC0A4F2116F00B11CF1FDF9D2AC1743F</code> <code>E6BF5566F90B7DC48695BEEF8760C4E6</code> <code>9E4BADD2F6B9FAED265192F29256BBBA</code> <code>9BD2AA52721C760DBA917BC1DC33BF7C</code> <code>FD2BC0EE0B9E789BDB96DA366200D727</code> <code>96807AFFCE8709121EA460AD44CD2120</code> <code>2A84347BB8F9D581DA1DA0031BAB5123</code> <code>8B173A660DDF1A25DB4CD51C6F772E59</code> <code>8DE6B627EBFE69321CB8BC0009B487A0</code> <code>6C0C180B5C8232B916B517AA636A1F14</code> <code>5314E4F839844708E6114362BDFC4BD3</code> <code>226F21B59CAA01ACFE2D76037196BCF5</code> <code>E294DCD64E8090A12DD68F6E23A10479</code> <code>0DF80DEA65313A156F45C318490F5FEF</code> <code>4074B8E04B0BC3C5F9FBFF6A0BF4BC6E</code> <code>7C8186EFC3E331AB3C3F294DF26D91A4</code> <code>005774A5E2DBE44975A27F9E23F12471</code> <code>FEDFDFA575893CB4263171F6B3DE8E6D</code> <code>C7C8BE0D936B2E212E79EA908AEC26B6</code> <code>B988125B476307DE4CB5501924112E49</code> <code>B04235F38734CDFFB511D3D8B0C7CA21</code> <code>A789BC86D43777BF205EB882951C4E5C</code> <code>8220E6621FCA6E1ABF027BB9C3DF356A</code> <code>785016E4A9F4C9C5422E0881EFF3DCF6</code> <code>16785EEEE5E8F36E8AC83AD61A513522</code><br> <code>9FC066A7</code></td>
<td><code>FE500200AACF4C3FBA8B3B0EC4EC9AFE</code> <code>87F2D0A1831E1B4129C8F38B2ADF9C50</code> <code>656E93015486F334355A9F26F6B3DB8C</code> <code>3EF27545F63C2863D3126D1E2F1C857E</code> <code>C95CB7CC50087486EB6DD1840C10E7F3</code> <code>B728D2E62DFBF098E21BE6F44380DD22</code> <code>043F7CC3242BAC8911F3EC48DCCC34FD</code> <code>2145B3C99B125067CFDB36EA4BF8C1AD</code> <code>3D50C8355AB79FD738E90B98F7A0222C</code> <code>4D38C75E77460BDD997FE7D47A5B3301</code> <code>A3239849A953511470DFD270E81B7AD4</code> <code>03477D2D5C4FED8C66B00A69A7F3BD64</code> <code>5F6140FF897D40037E0C9D14D5939105</code> <code>33E5245D4F36EBD8E404238743A9A015</code> <code>E9F6AA39AD6E4BA7F6541FCA4D1777BB</code> <code>F5943C7593033CBB685E5F1CDF235325</code> <code>C7E364D9511CC8545839F37EF0D6F333</code> <code>A19DDC287160B76D1B307A3B85C34B4D</code> <code>1F0E2D5746808FC8D26BA3905BA54356</code> <code>26E138FB067CD5507D6FD4395ED0419C</code> <code>8B5B34CD5385DA6CC60A35093D47F359</code> <code>160333A525911E52F33FDA10085AB281</code> <code>1C6747C5AD5A475932D8A1E60B10467D</code> <code>355900B5315D68003E0AFEFE0FE7BCB3</code> <code>22D7CF70F83A602F48121F9169B9CFEE</code> <code>93A767C67BB27F8FAE17D91C813EE146</code> <code>1AD104F3484FDAD813DFD5E41B988B64</code> <code>0F3F33C189AAB1C3C161719B9B337223</code> <code>D88646BF1C4E2EA4B5EFEDDA966324DB</code> <code>E1C4D611DF29388076CC3BC3C62FE6DE</code> <code>A7EF008381BF8BB1E4AB43BB739BFC69</code> <code>D6A077A25627968CCC6E7F38095794CF</code> <code>88363A65C59E94ABD8AE777C1F36F39B</code> <code>252101EE370362EFCBA2F6DBFFF7C65E</code> <code>D75B0EA1A2DB3B64069F7760E845441F</code> <code>54119C1B27229F63B5CBF86BB5926106</code> <code>7056843ACFEE21A12474E53C6E0E082A</code><br> <code>59BBAAF2</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 5C1FC0512F2CBE5890F34A0389768EC59F8D369EA3FB98795CF7624BB
<!-- 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 = 1B418E98ECD0FD3FD2EF5907955A6BA09FEEBEBD4D5793DB90D181710BFD5A3AE1227CD468DF742EC1C85257B56F50364FFEE2EFF150F78AEE2B71FCAD2FCB684A8CD3887144A1E426D886A03142D28869FA5B5E01C898494375AB2B685571A75D9881AA395BC989E7CF09AFFEE9B5EAE42A9CC1DF8C15FDC370859EFACF1D863AEADDA1A0F83AC2942BEB9157A49A70692B284E4B45B8BF7B3BB4095888C6A17A1104B772439110A0FBB55F8947A66A1AB230E8F2525141620FE35DAC0A4F2116F00B11CF1FDF9D2AC1743FE6BF5566F90B7DC48695BEEF8760C4E69E4BADD2F6B9FAED265192F29256BBBA9BD2AA52721C760DBA917BC1DC33BF7CFD2BC0EE0B9E789BDB96DA366200D72796807AFFCE8709121EA460AD44CD21202A84347BB8F9D581DA1DA0031BAB51238B173A660DDF1A25DB4CD51C6F772E598DE6B627EBFE69321CB8BC0009B487A06C0C180B5C8232B916B517AA636A1F145314E4F839844708E6114362BDFC4BD3226F21B59CAA01ACFE2D76037196BCF5E294DCD64E8090A12DD68F6E23A104790DF80DEA65313A156F45C318490F5FEF4074B8E04B0BC3C5F9FBFF6A0BF4BC6E7C8186EFC3E331AB3C3F294DF26D91A4005774A5E2DBE44975A27F9E23F12471FEDFDFA575893CB4263171F6B3DE8E6DC7C8BE0D936B2E212E79EA908AEC26B6B988125B476307DE4CB5501924112E49B04235F38734CDFFB511D3D8B0C7CA21A789BC86D43777BF205EB882951C4E5C8220E6621FCA6E1ABF027BB9C3DF356A785016E4A9F4C9C5422E0881EFF3DCF616785EEEE5E8F36E8AC83AD61A5135229FC066A7
tmp_aes_key = 77956CAD707C98DD3C0873D0AF3F3388D352E8EF9E3A478719F1F8FD0A1946A3
tmp_aes_iv = 37D0003B77E9B64CC8CB4DF0E64D69CB4A3520877049D1AE1843149831447EEA</code></pre>
<pre><code>encrypted_answer = AACF4C3FBA8B3B0EC4EC9AFE87F2D0A1831E1B4129C8F38B2ADF9C50656E93015486F334355A9F26F6B3DB8C3EF27545F63C2863D3126D1E2F1C857EC95CB7CC50087486EB6DD1840C10E7F3B728D2E62DFBF098E21BE6F44380DD22043F7CC3242BAC8911F3EC48DCCC34FD2145B3C99B125067CFDB36EA4BF8C1AD3D50C8355AB79FD738E90B98F7A0222C4D38C75E77460BDD997FE7D47A5B3301A3239849A953511470DFD270E81B7AD403477D2D5C4FED8C66B00A69A7F3BD645F6140FF897D40037E0C9D14D593910533E5245D4F36EBD8E404238743A9A015E9F6AA39AD6E4BA7F6541FCA4D1777BBF5943C7593033CBB685E5F1CDF235325C7E364D9511CC8545839F37EF0D6F333A19DDC287160B76D1B307A3B85C34B4D1F0E2D5746808FC8D26BA3905BA5435626E138FB067CD5507D6FD4395ED0419C8B5B34CD5385DA6CC60A35093D47F359160333A525911E52F33FDA10085AB2811C6747C5AD5A475932D8A1E60B10467D355900B5315D68003E0AFEFE0FE7BCB322D7CF70F83A602F48121F9169B9CFEE93A767C67BB27F8FAE17D91C813EE1461AD104F3484FDAD813DFD5E41B988B640F3F33C189AAB1C3C161719B9B337223D88646BF1C4E2EA4B5EFEDDA966324DBE1C4D611DF29388076CC3BC3C62FE6DEA7EF008381BF8BB1E4AB43BB739BFC69D6A077A25627968CCC6E7F38095794CF88363A65C59E94ABD8AE777C1F36F39B252101EE370362EFCBA2F6DBFFF7C65ED75B0EA1A2DB3B64069F7760E845441F54119C1B27229F63B5CBF86BB59261067056843ACFEE21A12474E53C6E0E082A59BBAAF2
tmp_aes_key = A7BAE872D171E4221E338E2CEEE4ED7FE283DBAFB5C2AC2F5D45C4346ED11604
tmp_aes_iv = 293025CCC9576AB027A6F0F77FDAF40709A19A8BF28215831FFF83E42DE63E15</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 6AE107D87B0AC6EF18785CB308A21F0D961516CBBA0D89B583FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100BC15179B7B777707A4BC1DD6EFEB86AE7266F68F792CEB76DE1F052FB95BC4C3C8FC438496ED2AAE99DE6E31D49027448A5C7FF6695600E2F368B3E4437EAC9CFA9E21E7AEBCFCAE28A506D6B30A187163A01905EDE179B80DF01BBBC224FBEBB6CF0BE21C4057A71FB57D9664E3458893ED3F88C4A980FC0C0A225E52F7AF4791E91AE862279B9A998A462A759630C5F15DCDC4E1DA9473326E86AD62441805D14C0E8AF75AC36B41418AB0C42BEE3DA18530F891509AA43B9AE8915EFAA45BC2D27B8A69FC1061E1AE2573891B3ADB21E306594347BB09407D41760D8E3DEA1948909A4D8CAE0EA61B4C32FE4E0D11F48D8ED82C1D3BEA6FD5B42EA962251CE25A7765495A203E6B0661AC
answer = BA0D89B583FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100BC15179B7B777707A4BC1DD6EFEB86AE7266F68F792CEB76DE1F052FB95BC4C3C8FC438496ED2AAE99DE6E31D49027448A5C7FF6695600E2F368B3E4437EAC9CFA9E21E7AEBCFCAE28A506D6B30A187163A01905EDE179B80DF01BBBC224FBEBB6CF0BE21C4057A71FB57D9664E3458893ED3F88C4A980FC0C0A225E52F7AF4791E91AE862279B9A998A462A759630C5F15DCDC4E1DA9473326E86AD62441805D14C0E8AF75AC36B41418AB0C42BEE3DA18530F891509AA43B9AE8915EFAA45BC2D27B8A69FC1061E1AE2573891B3ADB21E306594347BB09407D41760D8E3DEA1948909A4D8CAE0EA61B4C32FE4E0D11F48D8ED82C1D3BEA6FD5B42EA962251CE25A7765495A203E6B0661AC</code></pre>
<pre><code>answer_with_hash = 1ECCD752980F14790949011EE637A8DC4053C72DBA0D89B56FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010020A42F3268BA3136F8E19D2524AEF90905BC7097582855408170E4113F9F82EA5DD1704A11279C9505186EC2D0B6B9630183F318C978266F2E79D36C759E76958228193152B745F183E30DEAE3D8A6E39C2B0AD688D86C16F9F7D27862075ADD16BFB3000E3CA49DD95CCD72A8ECE2AB7B3138A530FBF35CCF318EAF0D7EBA8D2622E2484DB4E9D08D885C3832E5C49484531DEDB141AD107460C3FE8B345837002D59BA76242039E41987C4FCA446EA606B451731581FE10098285B298DD250CF0604F1982EEED75CD514FB3F36DE159FE2EB5E4006EAC0493E96BA8AE816476F771EF4AAC55D3D02E1F97DFD4016873C0C407692558EE0A56DEF2A186BF35FAFB37865D4CA936D6593D061
answer = BA0D89B56FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010020A42F3268BA3136F8E19D2524AEF90905BC7097582855408170E4113F9F82EA5DD1704A11279C9505186EC2D0B6B9630183F318C978266F2E79D36C759E76958228193152B745F183E30DEAE3D8A6E39C2B0AD688D86C16F9F7D27862075ADD16BFB3000E3CA49DD95CCD72A8ECE2AB7B3138A530FBF35CCF318EAF0D7EBA8D2622E2484DB4E9D08D885C3832E5C49484531DEDB141AD107460C3FE8B345837002D59BA76242039E41987C4FCA446EA606B451731581FE10098285B298DD250CF0604F1982EEED75CD514FB3F36DE159FE2EB5E4006EAC0493E96BA8AE816476F771EF4AAC55D3D02E1F97DFD4016873C0C407692558EE0A56DEF2A186BF35FAFB37865D4CA936D6593D061</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 83 FE 4F A7 D6 AD 1B 8A C7 63 8A 36
0010 | AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A 23 E8 D1 8C
0020 | 4D 3B 8A B7 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 6F E8 1D BD DA C6 62 6F C1 8E 41 56
0010 | 90 E0 76 80 1E C0 DE B4 07 3E F9 1C BA A6 BE D7
0020 | 12 3C 95 B0 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 = BA0D89B583FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB
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 | BC 15 17 9B 7B 77 77 07 A4 BC 1D D6 EF EB 86 AE
0140 | 72 66 F6 8F 79 2C EB 76 DE 1F 05 2F B9 5B C4 C3
0150 | C8 FC 43 84 96 ED 2A AE 99 DE 6E 31 D4 90 27 44
0160 | 8A 5C 7F F6 69 56 00 E2 F3 68 B3 E4 43 7E AC 9C
0170 | FA 9E 21 E7 AE BC FC AE 28 A5 06 D6 B3 0A 18 71
0180 | 63 A0 19 05 ED E1 79 B8 0D F0 1B BB C2 24 FB EB
0190 | B6 CF 0B E2 1C 40 57 A7 1F B5 7D 96 64 E3 45 88
01A0 | 93 ED 3F 88 C4 A9 80 FC 0C 0A 22 5E 52 F7 AF 47
01B0 | 91 E9 1A E8 62 27 9B 9A 99 8A 46 2A 75 96 30 C5
01C0 | F1 5D CD C4 E1 DA 94 73 32 6E 86 AD 62 44 18 05
01D0 | D1 4C 0E 8A F7 5A C3 6B 41 41 8A B0 C4 2B EE 3D
01E0 | A1 85 30 F8 91 50 9A A4 3B 9A E8 91 5E FA A4 5B
01F0 | C2 D2 7B 8A 69 FC 10 61 E1 AE 25 73 89 1B 3A DB
0200 | 21 E3 06 59 43 47 BB 09 40 7D 41 76 0D 8E 3D EA
0210 | 19 48 90 9A 4D 8C AE 0E A6 1B 4C 32 FE 4E 0D 11
0220 | F4 8D 8E D8 2C 1D 3B EA 6F D5 B4 2E A9 62 25 1C
0230 | E2 5A 77 65</code></pre>
0130 | 20 A4 2F 32 68 BA 31 36 F8 E1 9D 25 24 AE F9 09
0140 | 05 BC 70 97 58 28 55 40 81 70 E4 11 3F 9F 82 EA
0150 | 5D D1 70 4A 11 27 9C 95 05 18 6E C2 D0 B6 B9 63
0160 | 01 83 F3 18 C9 78 26 6F 2E 79 D3 6C 75 9E 76 95
0170 | 82 28 19 31 52 B7 45 F1 83 E3 0D EA E3 D8 A6 E3
0180 | 9C 2B 0A D6 88 D8 6C 16 F9 F7 D2 78 62 07 5A DD
0190 | 16 BF B3 00 0E 3C A4 9D D9 5C CD 72 A8 EC E2 AB
01A0 | 7B 31 38 A5 30 FB F3 5C CF 31 8E AF 0D 7E BA 8D
01B0 | 26 22 E2 48 4D B4 E9 D0 8D 88 5C 38 32 E5 C4 94
01C0 | 84 53 1D ED B1 41 AD 10 74 60 C3 FE 8B 34 58 37
01D0 | 00 2D 59 BA 76 24 20 39 E4 19 87 C4 FC A4 46 EA
01E0 | 60 6B 45 17 31 58 1F E1 00 98 28 5B 29 8D D2 50
01F0 | CF 06 04 F1 98 2E EE D7 5C D5 14 FB 3F 36 DE 15
0200 | 9F E2 EB 5E 40 06 EA C0 49 3E 96 BA 8A E8 16 47
0210 | 6F 77 1E F4 AA C5 5D 3D 02 E1 F9 7D FD 40 16 87
0220 | 3C 0C 40 76 92 55 8E E0 A5 6D EF 2A 18 6B F3 5F
0230 | AF B3 78 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 = BA0D89B583FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>83FE4FA7D6AD1B8AC7638A36ADAB7A9A</code></td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>65D66D4E1CC2165A23E8D18C4D3B8AB7</code></td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B583FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE000100BC15179B7B777707A4BC1DD6</code> <code>EFEB86AE7266F68F792CEB76DE1F052F</code> <code>B95BC4C3C8FC438496ED2AAE99DE6E31</code> <code>D49027448A5C7FF6695600E2F368B3E4</code> <code>437EAC9CFA9E21E7AEBCFCAE28A506D6</code> <code>B30A187163A01905EDE179B80DF01BBB</code> <code>C224FBEBB6CF0BE21C4057A71FB57D96</code> <code>64E3458893ED3F88C4A980FC0C0A225E</code> <code>52F7AF4791E91AE862279B9A998A462A</code> <code>759630C5F15DCDC4E1DA9473326E86AD</code> <code>62441805D14C0E8AF75AC36B41418AB0</code> <code>C42BEE3DA18530F891509AA43B9AE891</code> <code>5EFAA45BC2D27B8A69FC1061E1AE2573</code> <code>891B3ADB21E306594347BB09407D4176</code> <code>0D8E3DEA1948909A4D8CAE0EA61B4C32</code> <code>FE4E0D11F48D8ED82C1D3BEA6FD5B42E</code><br> <code>A962251C</code></td>
<td><code>FE00010020A42F3268BA3136F8E19D25</code> <code>24AEF90905BC7097582855408170E411</code> <code>3F9F82EA5DD1704A11279C9505186EC2</code> <code>D0B6B9630183F318C978266F2E79D36C</code> <code>759E76958228193152B745F183E30DEA</code> <code>E3D8A6E39C2B0AD688D86C16F9F7D278</code> <code>62075ADD16BFB3000E3CA49DD95CCD72</code> <code>A8ECE2AB7B3138A530FBF35CCF318EAF</code> <code>0D7EBA8D2622E2484DB4E9D08D885C38</code> <code>32E5C49484531DEDB141AD107460C3FE</code> <code>8B345837002D59BA76242039E41987C4</code> <code>FCA446EA606B451731581FE10098285B</code> <code>298DD250CF0604F1982EEED75CD514FB</code> <code>3F36DE159FE2EB5E4006EAC0493E96BA</code> <code>8AE816476F771EF4AAC55D3D02E1F97D</code> <code>FD4016873C0C407692558EE0A56DEF2A</code><br> <code>186BF35F</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>E25A7765</code> (1702320866 in decimal)</td>
<td><code>AFB37865</code> (1702409135 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B583FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB
<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 = D03EB9F7EAE9C226883F2EDF3E567C95B46E967B896EE5B3B4809F553AE78643827F179D03F886CD10A5953B855CCE619227A18BEB308E85312A3CD092213A9B6FE79FE1F6C3E69A76AC0B42A27C14F71277ED22895E5B46ED82DD91D1A0823A65E1C2911EC15674448137A3AC724E47B4C75A8FC4700AC2A87A23DC5D018C9CB3C4E8AC6A4B88C2D4A534858F906287823A847CDE105C5071704675648D26539E457B0D2918B431736962A437EA25B1693DD8309A622FD2B4A69E8E8A7BA8AD258ABCCE4257A32161A0C81EFC90A41B504462D7272E25E611509C211A6E1B3E27E61691E050662F3EEA9BB93844FA41CBC9850BA93AFAD3AB71F6118BA27631</code></pre>
<pre><code>b = 5D5615680F343505009F03052CA06904AADB5BBC42B9405698DC399CA0A0654F4FF8906FE7C2B176203EA19F31342BC2DD5D697471ABD126179B2AB10BD8B7B8B81E3B2A8694450D6DBF7F7E98D112CE3226B4AC54D6062CCA3F960CC673375BD46DFE8315043421A8DEAFFEFA5A221FD5501B5EE747C0468AC2F7FCE57F550451B150D1ADFB96D7D537DAEA087965208BD178B38E4B7FD2CEF52F593997657E436C502E09FDB16A5B325036FD3600B297271E7C15516C1BBFA5CB7A7B16DCA2B2447079A1F39BC95DF87676FA1307835A91350C6BCBA83D3DA2BC5C4FFEA66875B6DAB9719EF7E2ABE6761CE4EB8ED256B7833703FA3061E2F107E21974F8D0</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 = 7FC2C58B9603B3D75A35AFA493AE2D14DCAA0B5E5D8BF64521ABC28CB1FA7E0850C01F3D50A91722E39655632710D583822751C84AF1629B0E47C6DC5394A0AA1D51392C22CBCF87BD5A5C333438CE292AE3B1CCF58339A436CE0EAD46CDD80C7AF9CA32F52DA53693741C79EE2A209150194C04B407291B81A897D8817CAD435594C2BA944A4D326C8CB91EF417182922D7B5F0DF85F8DD8FCCC84834E6BFFF6C4A36BD6C7C316A7A0729F22ED3FFD2EA3AEF2071BA8D7BBEC13DC2BE08F1A36F203DB03130E04CE226188CABE6AC90F9D1038DE6A7D99A4400E8669F8910D22849C6B00A2B10A1E6AA7B7B2BFF59279574EE2286E4EE45E64152AFE9990899</code></pre>
<pre><code>g_b = 71171AF934ABD6DC248E06DAE32C618D9023A927832FB6AB50CFE8E9B6DA46796096E47573C79A159D1EA1A48CC595D2EE1234CB5409D2632CE23A2FACAE2816A1C3D4C939734D24749A45877081A18B6851585F9CB9DC26C2FEE4FC1E8D324B0700893A81CB0DDB8A1C26E6127DDEF3E4054E898D0FC9493A283FAFCE31AE19C1D673CF650BB9C17D7287DA011A96D633FF3D1162E3F354E8A191EB153F13E7DEE2B60E96ED27B96253BBC658A40BA6A763EE57B95C027FC2EAE7A4A93EB28C82030060FB0554CF6F502AB4799EDE7790E8B17AC244D89762AD7871EBA54D6884CC66251620FD49A8FC284840073FFF66C37D7F958822D433870E1B78C60B00</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 83 FE 4F A7 D6 AD 1B 8A C7 63 8A 36
0010 | AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A 23 E8 D1 8C
0020 | 4D 3B 8A B7 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 7F C2 C5 8B 96 03 B3 D7 5A 35 AF A4 93 AE 2D 14
0040 | DC AA 0B 5E 5D 8B F6 45 21 AB C2 8C B1 FA 7E 08
0050 | 50 C0 1F 3D 50 A9 17 22 E3 96 55 63 27 10 D5 83
0060 | 82 27 51 C8 4A F1 62 9B 0E 47 C6 DC 53 94 A0 AA
0070 | 1D 51 39 2C 22 CB CF 87 BD 5A 5C 33 34 38 CE 29
0080 | 2A E3 B1 CC F5 83 39 A4 36 CE 0E AD 46 CD D8 0C
0090 | 7A F9 CA 32 F5 2D A5 36 93 74 1C 79 EE 2A 20 91
00A0 | 50 19 4C 04 B4 07 29 1B 81 A8 97 D8 81 7C AD 43
00B0 | 55 94 C2 BA 94 4A 4D 32 6C 8C B9 1E F4 17 18 29
00C0 | 22 D7 B5 F0 DF 85 F8 DD 8F CC C8 48 34 E6 BF FF
00D0 | 6C 4A 36 BD 6C 7C 31 6A 7A 07 29 F2 2E D3 FF D2
00E0 | EA 3A EF 20 71 BA 8D 7B BE C1 3D C2 BE 08 F1 A3
00F0 | 6F 20 3D B0 31 30 E0 4C E2 26 18 8C AB E6 AC 90
0100 | F9 D1 03 8D E6 A7 D9 9A 44 00 E8 66 9F 89 10 D2
0110 | 28 49 C6 B0 0A 2B 10 A1 E6 AA 7B 7B 2B FF 59 27
0120 | 95 74 EE 22 86 E4 EE 45 E6 41 52 AF E9 99 08 99</code></pre>
<pre><code>0000 | 54 B6 43 66 6F E8 1D BD DA C6 62 6F C1 8E 41 56
0010 | 90 E0 76 80 1E C0 DE B4 07 3E F9 1C BA A6 BE D7
0020 | 12 3C 95 B0 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 71 17 1A F9 34 AB D6 DC 24 8E 06 DA E3 2C 61 8D
0040 | 90 23 A9 27 83 2F B6 AB 50 CF E8 E9 B6 DA 46 79
0050 | 60 96 E4 75 73 C7 9A 15 9D 1E A1 A4 8C C5 95 D2
0060 | EE 12 34 CB 54 09 D2 63 2C E2 3A 2F AC AE 28 16
0070 | A1 C3 D4 C9 39 73 4D 24 74 9A 45 87 70 81 A1 8B
0080 | 68 51 58 5F 9C B9 DC 26 C2 FE E4 FC 1E 8D 32 4B
0090 | 07 00 89 3A 81 CB 0D DB 8A 1C 26 E6 12 7D DE F3
00A0 | E4 05 4E 89 8D 0F C9 49 3A 28 3F AF CE 31 AE 19
00B0 | C1 D6 73 CF 65 0B B9 C1 7D 72 87 DA 01 1A 96 D6
00C0 | 33 FF 3D 11 62 E3 F3 54 E8 A1 91 EB 15 3F 13 E7
00D0 | DE E2 B6 0E 96 ED 27 B9 62 53 BB C6 58 A4 0B A6
00E0 | A7 63 EE 57 B9 5C 02 7F C2 EA E7 A4 A9 3E B2 8C
00F0 | 82 03 00 60 FB 05 54 CF 6F 50 2A B4 79 9E DE 77
0100 | 90 E8 B1 7A C2 44 D8 97 62 AD 78 71 EB A5 4D 68
0110 | 84 CC 66 25 16 20 FD 49 A8 FC 28 48 40 07 3F FF
0120 | 66 C3 7D 7F 95 88 22 D4 33 87 0E 1B 78 C6 0B 00</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 = BA0D89B583FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>83FE4FA7D6AD1B8AC7638A36ADAB7A9A</code></td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>65D66D4E1CC2165A23E8D18C4D3B8AB7</code></td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001007FC2C58B9603B3D75A35AFA4</code> <code>93AE2D14DCAA0B5E5D8BF64521ABC28C</code> <code>B1FA7E0850C01F3D50A91722E3965563</code> <code>2710D583822751C84AF1629B0E47C6DC</code> <code>5394A0AA1D51392C22CBCF87BD5A5C33</code> <code>3438CE292AE3B1CCF58339A436CE0EAD</code> <code>46CDD80C7AF9CA32F52DA53693741C79</code> <code>EE2A209150194C04B407291B81A897D8</code> <code>817CAD435594C2BA944A4D326C8CB91E</code> <code>F417182922D7B5F0DF85F8DD8FCCC848</code> <code>34E6BFFF6C4A36BD6C7C316A7A0729F2</code> <code>2ED3FFD2EA3AEF2071BA8D7BBEC13DC2</code> <code>BE08F1A36F203DB03130E04CE226188C</code> <code>ABE6AC90F9D1038DE6A7D99A4400E866</code> <code>9F8910D22849C6B00A2B10A1E6AA7B7B</code> <code>2BFF59279574EE2286E4EE45E64152AF</code><br> <code>E9990899</code></td>
<td><code>FE00010071171AF934ABD6DC248E06DA</code> <code>E32C618D9023A927832FB6AB50CFE8E9</code> <code>B6DA46796096E47573C79A159D1EA1A4</code> <code>8CC595D2EE1234CB5409D2632CE23A2F</code> <code>ACAE2816A1C3D4C939734D24749A4587</code> <code>7081A18B6851585F9CB9DC26C2FEE4FC</code> <code>1E8D324B0700893A81CB0DDB8A1C26E6</code> <code>127DDEF3E4054E898D0FC9493A283FAF</code> <code>CE31AE19C1D673CF650BB9C17D7287DA</code> <code>011A96D633FF3D1162E3F354E8A191EB</code> <code>153F13E7DEE2B60E96ED27B96253BBC6</code> <code>58A40BA6A763EE57B95C027FC2EAE7A4</code> <code>A93EB28C82030060FB0554CF6F502AB4</code> <code>799EDE7790E8B17AC244D89762AD7871</code> <code>EBA54D6884CC66251620FD49A8FC2848</code> <code>40073FFF66C37D7F958822D433870E1B</code><br> <code>78C60B00</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 = BA0D89B583FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB
<!-- 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 = 54B6436683FE4FA7D6AD1B8AC7638A36ADAB7A9A65D66D4E1CC2165A23E8D18C4D3B8AB70000000000000000FE0001007FC2C58B9603B3D75A35AFA493AE2D14DCAA0B5E5D8BF64521ABC28CB1FA7E0850C01F3D50A91722E39655632710D583822751C84AF1629B0E47C6DC5394A0AA1D51392C22CBCF87BD5A5C333438CE292AE3B1CCF58339A436CE0EAD46CDD80C7AF9CA32F52DA53693741C79EE2A209150194C04B407291B81A897D8817CAD435594C2BA944A4D326C8CB91EF417182922D7B5F0DF85F8DD8FCCC84834E6BFFF6C4A36BD6C7C316A7A0729F22ED3FFD2EA3AEF2071BA8D7BBEC13DC2BE08F1A36F203DB03130E04CE226188CABE6AC90F9D1038DE6A7D99A4400E8669F8910D22849C6B00A2B10A1E6AA7B7B2BFF59279574EE2286E4EE45E64152AFE9990899
padding = 0BA27B8C75CCDFCFB67AAB25
tmp_aes_key = 77956CAD707C98DD3C0873D0AF3F3388D352E8EF9E3A478719F1F8FD0A1946A3
tmp_aes_iv = 37D0003B77E9B64CC8CB4DF0E64D69CB4A3520877049D1AE1843149831447EEA</code></pre>
<pre><code>data = 54B643666FE81DBDDAC6626FC18E415690E076801EC0DEB4073EF91CBAA6BED7123C95B00000000000000000FE00010071171AF934ABD6DC248E06DAE32C618D9023A927832FB6AB50CFE8E9B6DA46796096E47573C79A159D1EA1A48CC595D2EE1234CB5409D2632CE23A2FACAE2816A1C3D4C939734D24749A45877081A18B6851585F9CB9DC26C2FEE4FC1E8D324B0700893A81CB0DDB8A1C26E6127DDEF3E4054E898D0FC9493A283FAFCE31AE19C1D673CF650BB9C17D7287DA011A96D633FF3D1162E3F354E8A191EB153F13E7DEE2B60E96ED27B96253BBC658A40BA6A763EE57B95C027FC2EAE7A4A93EB28C82030060FB0554CF6F502AB4799EDE7790E8B17AC244D89762AD7871EBA54D6884CC66251620FD49A8FC284840073FFF66C37D7F958822D433870E1B78C60B00
padding = 7215E47027D2CF4AC80B77F5
tmp_aes_key = A7BAE872D171E4221E338E2CEEE4ED7FE283DBAFB5C2AC2F5D45C4346ED11604
tmp_aes_iv = 293025CCC9576AB027A6F0F77FDAF40709A19A8BF28215831FFF83E42DE63E15</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 = 3E0AB10AD2B21A9DF4A4FE1D48F23232F6154DFAEDBFC85DD7D7DEF84DACCD7214E21C8E48BE56BEBBBCD8E892A5F0FA02C512708285F45D5A9B8CAE8AA28D800BC4468FA801B95F7A1E5695ABA9B5D5E87D72EA3A27B91CE1AB09DE038249C2E49A12B85C4772701C71468643C5F88DCB5CFFC95662C94F927DB65B3027CCEA8C98D46CE8E8944A520CC148AB5C1A705960BBA9855E040AA88C933103518883398C9AFDAF782DBB6394337A5ED0A2E6D68A04D02CFDC53DE5D93238908C8735C0BD1AC6406D8327D71D1E81E51EAD160CB29AFF53D381100096EE29900C194B3395DF8C89EF566BF2EFF4E9E2FE2E56640580437037E4309965D11C2291BB95CF9E8DDE4B5F172553FB61AD43EDB40BCC44CF76D4245F88E03C0C2699576301F6B1A8164F67EBA98ED2E87D9D15364747C8CA7EA6C6FC55873C5DD0C41E5014165253359DCFDB2BB955C3AD3CA97D4C</code></pre>
<pre><code>encrypted_data = E340C849B4F3612951CC4B38FC0ACDD0BA2A19211C3D7805DD79B0615026C8C06CD38DDA3038C06A7765052BE7A7A9C16ED1AE60CAB33FDAB632854A5B0109328A8EC5BE2D1B2A6C4827C41836D88B7E6CF483F7F9452AD87E77661F160A57998C4EB6C1CAC8E53C799513A546A11B1423B2EE03FB900A2BDF115257C82E4170B25EC634DB6BB1DDB6A18A5394E2D5A652F0C22F9E945D2055DEF174552D3ACF5714F7FBFEA76E9C241437387844D208E8CB1AC337419C07FFED4BA36592AB806C4F82E742448D73451F7114F2E5BE4CB9EECE49FBA0DF13871A7DBBC007A38C76C4B0BCE4C87D48FA23E93D3796A1F3FE67D3C1709B1DA63A78536F3040322F0CEE4E3C788177F51FE6C0FB32A2C37E0DA1589E32DB964EA56ECD28505C082560CE85C2317E1512BF05C688348759A2E03102F777453FB06F34150F4C8A68567A6F5595726AF07088AD79C9EAFD4245</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 AC 24 0D 00 E2 5A 77 65
0010 | 78 01 00 00 1F 5F 04 F5 83 FE 4F A7 D6 AD 1B 8A
0020 | C7 63 8A 36 AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A
0030 | 23 E8 D1 8C 4D 3B 8A B7 FE 50 01 00 3E 0A B1 0A
0040 | D2 B2 1A 9D F4 A4 FE 1D 48 F2 32 32 F6 15 4D FA
0050 | ED BF C8 5D D7 D7 DE F8 4D AC CD 72 14 E2 1C 8E
0060 | 48 BE 56 BE BB BC D8 E8 92 A5 F0 FA 02 C5 12 70
0070 | 82 85 F4 5D 5A 9B 8C AE 8A A2 8D 80 0B C4 46 8F
0080 | A8 01 B9 5F 7A 1E 56 95 AB A9 B5 D5 E8 7D 72 EA
0090 | 3A 27 B9 1C E1 AB 09 DE 03 82 49 C2 E4 9A 12 B8
00A0 | 5C 47 72 70 1C 71 46 86 43 C5 F8 8D CB 5C FF C9
00B0 | 56 62 C9 4F 92 7D B6 5B 30 27 CC EA 8C 98 D4 6C
00C0 | E8 E8 94 4A 52 0C C1 48 AB 5C 1A 70 59 60 BB A9
00D0 | 85 5E 04 0A A8 8C 93 31 03 51 88 83 39 8C 9A FD
00E0 | AF 78 2D BB 63 94 33 7A 5E D0 A2 E6 D6 8A 04 D0
00F0 | 2C FD C5 3D E5 D9 32 38 90 8C 87 35 C0 BD 1A C6
0100 | 40 6D 83 27 D7 1D 1E 81 E5 1E AD 16 0C B2 9A FF
0110 | 53 D3 81 10 00 96 EE 29 90 0C 19 4B 33 95 DF 8C
0120 | 89 EF 56 6B F2 EF F4 E9 E2 FE 2E 56 64 05 80 43
0130 | 70 37 E4 30 99 65 D1 1C 22 91 BB 95 CF 9E 8D DE
0140 | 4B 5F 17 25 53 FB 61 AD 43 ED B4 0B CC 44 CF 76
0150 | D4 24 5F 88 E0 3C 0C 26 99 57 63 01 F6 B1 A8 16
0160 | 4F 67 EB A9 8E D2 E8 7D 9D 15 36 47 47 C8 CA 7E
0170 | A6 C6 FC 55 87 3C 5D D0 C4 1E 50 14 16 52 53 35
0180 | 9D CF DB 2B B9 55 C3 AD 3C A9 7D 4C</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 34 6A 0B 00 AF B3 78 65
0010 | 78 01 00 00 1F 5F 04 F5 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80 1E C0 DE B4 07 3E F9 1C
0030 | BA A6 BE D7 12 3C 95 B0 FE 50 01 00 E3 40 C8 49
0040 | B4 F3 61 29 51 CC 4B 38 FC 0A CD D0 BA 2A 19 21
0050 | 1C 3D 78 05 DD 79 B0 61 50 26 C8 C0 6C D3 8D DA
0060 | 30 38 C0 6A 77 65 05 2B E7 A7 A9 C1 6E D1 AE 60
0070 | CA B3 3F DA B6 32 85 4A 5B 01 09 32 8A 8E C5 BE
0080 | 2D 1B 2A 6C 48 27 C4 18 36 D8 8B 7E 6C F4 83 F7
0090 | F9 45 2A D8 7E 77 66 1F 16 0A 57 99 8C 4E B6 C1
00A0 | CA C8 E5 3C 79 95 13 A5 46 A1 1B 14 23 B2 EE 03
00B0 | FB 90 0A 2B DF 11 52 57 C8 2E 41 70 B2 5E C6 34
00C0 | DB 6B B1 DD B6 A1 8A 53 94 E2 D5 A6 52 F0 C2 2F
00D0 | 9E 94 5D 20 55 DE F1 74 55 2D 3A CF 57 14 F7 FB
00E0 | FE A7 6E 9C 24 14 37 38 78 44 D2 08 E8 CB 1A C3
00F0 | 37 41 9C 07 FF ED 4B A3 65 92 AB 80 6C 4F 82 E7
0100 | 42 44 8D 73 45 1F 71 14 F2 E5 BE 4C B9 EE CE 49
0110 | FB A0 DF 13 87 1A 7D BB C0 07 A3 8C 76 C4 B0 BC
0120 | E4 C8 7D 48 FA 23 E9 3D 37 96 A1 F3 FE 67 D3 C1
0130 | 70 9B 1D A6 3A 78 53 6F 30 40 32 2F 0C EE 4E 3C
0140 | 78 81 77 F5 1F E6 C0 FB 32 A2 C3 7E 0D A1 58 9E
0150 | 32 DB 96 4E A5 6E CD 28 50 5C 08 25 60 CE 85 C2
0160 | 31 7E 15 12 BF 05 C6 88 34 87 59 A2 E0 31 02 F7
0170 | 77 45 3F B0 6F 34 15 0F 4C 8A 68 56 7A 6F 55 95
0180 | 72 6A F0 70 88 AD 79 C9 EA FD 42 45</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>AC240D00E25A7765</code></td>
<td><code>346A0B00AFB37865</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 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>83FE4FA7D6AD1B8AC7638A36ADAB7A9A</code></td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>65D66D4E1CC2165A23E8D18C4D3B8AB7</code></td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE5001003E0AB10AD2B21A9DF4A4FE1D</code> <code>48F23232F6154DFAEDBFC85DD7D7DEF8</code> <code>4DACCD7214E21C8E48BE56BEBBBCD8E8</code> <code>92A5F0FA02C512708285F45D5A9B8CAE</code> <code>8AA28D800BC4468FA801B95F7A1E5695</code> <code>ABA9B5D5E87D72EA3A27B91CE1AB09DE</code> <code>038249C2E49A12B85C4772701C714686</code> <code>43C5F88DCB5CFFC95662C94F927DB65B</code> <code>3027CCEA8C98D46CE8E8944A520CC148</code> <code>AB5C1A705960BBA9855E040AA88C9331</code> <code>03518883398C9AFDAF782DBB6394337A</code> <code>5ED0A2E6D68A04D02CFDC53DE5D93238</code> <code>908C8735C0BD1AC6406D8327D71D1E81</code> <code>E51EAD160CB29AFF53D381100096EE29</code> <code>900C194B3395DF8C89EF566BF2EFF4E9</code> <code>E2FE2E56640580437037E4309965D11C</code> <code>2291BB95CF9E8DDE4B5F172553FB61AD</code> <code>43EDB40BCC44CF76D4245F88E03C0C26</code> <code>99576301F6B1A8164F67EBA98ED2E87D</code> <code>9D15364747C8CA7EA6C6FC55873C5DD0</code> <code>C41E5014165253359DCFDB2BB955C3AD</code><br> <code>3CA97D4C</code></td>
<td><code>FE500100E340C849B4F3612951CC4B38</code> <code>FC0ACDD0BA2A19211C3D7805DD79B061</code> <code>5026C8C06CD38DDA3038C06A7765052B</code> <code>E7A7A9C16ED1AE60CAB33FDAB632854A</code> <code>5B0109328A8EC5BE2D1B2A6C4827C418</code> <code>36D88B7E6CF483F7F9452AD87E77661F</code> <code>160A57998C4EB6C1CAC8E53C799513A5</code> <code>46A11B1423B2EE03FB900A2BDF115257</code> <code>C82E4170B25EC634DB6BB1DDB6A18A53</code> <code>94E2D5A652F0C22F9E945D2055DEF174</code> <code>552D3ACF5714F7FBFEA76E9C24143738</code> <code>7844D208E8CB1AC337419C07FFED4BA3</code> <code>6592AB806C4F82E742448D73451F7114</code> <code>F2E5BE4CB9EECE49FBA0DF13871A7DBB</code> <code>C007A38C76C4B0BCE4C87D48FA23E93D</code> <code>3796A1F3FE67D3C1709B1DA63A78536F</code> <code>3040322F0CEE4E3C788177F51FE6C0FB</code> <code>32A2C37E0DA1589E32DB964EA56ECD28</code> <code>505C082560CE85C2317E1512BF05C688</code> <code>348759A2E03102F777453FB06F34150F</code> <code>4C8A68567A6F5595726AF07088AD79C9</code><br> <code>EAFD4245</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 = 5A4BCAAF3EAEFA5842187B2DA426AF63241C8E476F50D8AA9AF636F9E36324830AC9E2ACEA926D9FB31B74A0AB107A2A2FF2B555F389A0084C44DE425A45D8F335513DD84E0442E7264A1CDB67FE324D325892FA3869087B2D452CE4386A8C11651E5356FA4E68F06B9D2DE5D49E561EBF9778AE4AA591B00EA4EB305A6FB3F2A8CCC3BC84F0E72F5342DA05D4614B669DD88145D61B6B7515719F3120E06C3BFCE06293428C762166CC0AF8E474BF4E5DBCDF1FEB0CA75FAF63571F131A30A15B81B70B71D5365DA5A711A4F890E4A0305D5D0152E916D66D6E9FC0D207B526B0939D2225D6CF851EA402C67D4A1F90D4D975A81C0D7D0E3AF4D3218C96D60E</code></pre>
<pre><code>auth_key = 61FB2EA919481794D5E3A843C79BD667CDB0500AA178D78E226B9E1137752A8BB4809D3A6E52B68DCCEACC440247EF05CCF805AFD072B0CD9B55EE95EB8745F6DAF9D9BA5EE60F28212A2C147DF139C9FD69E7BE5BAA331A04EEF1593A1587CBD8B49AC4526C693912021F3573C74FB9CF525A385FC978618C3293BF4DF0E79C2AB9FE39575A715574A359682FC16CCC840C5E43FAD839EDF471A78C1384B072DC2EADEF255120C632E8BC3543D6641AB2FDCD0ECE4389866F820FF3B0A965D774C7CAE579E3605DE9C7D6482D318ADA69CF611772F97A31E402EA59A971E823BC0E0BC82D2C8D69487AC006B219156D8238C9D6FA3DBAD4BF03A705426AF45B</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 24 A2 00 E3 5A 77 65
0010 | 98 00 00 00 34 F7 CB 3B 83 FE 4F A7 D6 AD 1B 8A
0020 | C7 63 8A 36 AD AB 7A 9A 65 D6 6D 4E 1C C2 16 5A
0030 | 23 E8 D1 8C 4D 3B 8A B7 ED C5 AF E1 45 3C E4 5A
0040 | 47 37 F5 F4 C7 01 2B A9</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 9C 43 44 B0 B3 78 65
0010 | 94 00 00 00 34 F7 CB 3B 6F E8 1D BD DA C6 62 6F
0020 | C1 8E 41 56 90 E0 76 80 1E C0 DE B4 07 3E F9 1C
0030 | BA A6 BE D7 12 3C 95 B0 CA F7 62 81 A6 F2 B3 33
0040 | 97 90 2E AD 01 2E FE 78</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>0124A200E35A7765</code></td>
<td><code>019C4344B0B37865</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>98000000</code> (152 in decimal)</td>
<td><code>94000000</code> (148 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>83FE4FA7D6AD1B8AC7638A36ADAB7A9A</code></td>
<td><code>6FE81DBDDAC6626FC18E415690E07680</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>65D66D4E1CC2165A23E8D18C4D3B8AB7</code></td>
<td><code>1EC0DEB4073EF91CBAA6BED7123C95B0</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>EDC5AFE1453CE45A4737F5F4C7012BA9</code></td>
<td><code>CAF76281A6F2B33397902EAD012EFE78</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>

View file

@ -4,22 +4,10 @@
<meta charset="utf-8">
<title>Help.PeerColors</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Contains info about multiple color palettes ».
Constructors
Constructor
Description
help.peerColorsNotModified
 
help.peerColors…">
<meta property="description" content="Contains info about multiple color palettes ».">
<meta property="og:title" content="Help.PeerColors">
<meta property="og:image" content="">
<meta property="og:description" content="Contains info about multiple color palettes ».
Constructors
Constructor
Description
help.peerColorsNotModified
 
help.peerColors…">
<meta property="og:description" content="Contains info about multiple color palettes ».">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -54,7 +42,7 @@ help.peerColors…">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/help.PeerColors" >Help.PeerColors</a></li></ul></div>
<h1 id="dev_page_title">Help.PeerColors</h1>
<div id="dev_page_content"><p>Contains info about multiple <a href="/api/colors">color palettes »</a>. </p>
<div id="dev_page_content"><p>Contains info about multiple <a href="/api/colors">color palettes »</a>.</p>
<p><div class="clearfix">
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
<li class="dropdown">
@ -85,11 +73,11 @@ help.peerColors…">
<tbody>
<tr>
<td><a href="/constructor/help.peerColorsNotModified">help.peerColorsNotModified</a></td>
<td> </td>
<td>The list of color palettes has not changed.</td>
</tr>
<tr>
<td><a href="/constructor/help.peerColors">help.peerColors</a></td>
<td> </td>
<td>Contains info about multiple <a href="/api/colors">color palettes »</a>.</td>
</tr>
</tbody>
</table>
@ -104,14 +92,17 @@ help.peerColors…">
<tbody>
<tr>
<td><a href="/method/help.getPeerColors">help.getPeerColors</a></td>
<td>Get the set of <a href="/api/colors">accent color palettes »</a> that can be used for messages</td>
<td>Get the set of <a href="/api/colors">accent color palettes »</a> that can be used for message accents.</td>
</tr>
<tr>
<td><a href="/method/help.getPeerProfileColors">help.getPeerProfileColors</a></td>
<td>Get the set of <a href="/api/colors">accent color palettes »</a> that can be used for profiles</td>
<td>Get the set of <a href="/api/colors">accent color palettes »</a> that can be used in profile page backgrounds.</td>
</tr>
</tbody>
</table></div>
</table>
<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="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p></div>
</div>